﻿// JavaScript Document
var isUploading = false;

function initialize() {
    // Initialize the form after an error        
    $('.office:checked').each(function (i) {
        $('#' + this.id + '_permit').show();
    });

    $('.software:checked').each(function (i) {
        $('#' + this.id + '_level').show();
    });
    switchLanguage(document.getElementById('english'));

    showRegistrationNumber();
    showOpenField();
    roll_button();
}

function submitAttachment(input_name) {
    if ($('#' + input_name).val() != '') {
        isUploading = true;
        document.forms['attachments'].submit();
        $('#' + input_name + '_loader').show();
    }
    else {
        alert('please select a file');
    }
}

function uploadCallback(ret) {
    isUploading = false;

    if (ret) {

        if (ret.code == 1) {
            //show delete button
            $('#' + ret.input + '_loader').hide();
            $('#' + ret.input + '_attach').hide();
            $('#' + ret.input + '_remove').show();
            $('#' + ret.input).attr('disabled', 'disabled');
        }
        else {
            //todo: show error in a div near the correponding file input
            alert(ret.msg);
        }
    }
    else {
        alert("error: no return statement");
    }
}

function removeAttachment(input_name) {
    if (input_name) {
        $.ajax({
            type: "GET",
            url: remUrl + "&input_name=" + input_name,

            success: function (data) {
                if (data == 1) {
                    $('#' + input_name).removeAttr('disabled');
                    $('#' + input_name).val('');
                    $('#' + input_name + '_attach').show();
                    $('#' + input_name + '_remove').hide();
                }
                else {
                    alert('error');
                }
            }
        });
    }
}


function roll_button() {
    $('.button')
		.hover(
			function () {
			    $(this).addClass('button_roll');
			},
			function () {
			    $(this).removeClass('button_roll');
			});
}


function submitForm() {
    checkFields();

    if (!isUploading) {
        document.forms['commentForm'].submit();
    }
    else {
        alert('Please wait while uploading');
    }
}



function checkFields() {
    $('#applied_offices').val(getOffices());
    $('#languages').val(getLanguages());
    $('#softwares').val(getSoftwares());
    $('#usersoftware').val(getUserSoftware());
    $('#educations').val(getEducations());
}

function switchPermit(elem) {
    var office = elem.id;
    if (elem.checked) {
        $('#' + office + '_permit').show();
    } else {
        $('#' + office + '_permit').hide();
    }
    doResize();
}

function switchSoftware(elem) {
    var software_id = elem.id;
    if (elem.checked) {
        $('#' + software_id + '_level').show();
    } else {
        $('#' + software_id + '_level').hide();
    }
    doResize();
}

function switchLanguage(elem) {
    if (elem.checked) {
        $('#language_level_default').show();
    } else {
        $('#language_level_default').hide();
    }
    doResize();
}

function addLanguage() {
    if ($('.language_item').length < 5) {
        $('#language_list').append('<div class="language_item">' + $('#newlanguagetemplate').html() + '</div>');
    }
    doResize();
}

function addSoftware() {
    $('#software_list').append('<div class="software_item">' + $('#newsoftwaretemplate').html() + '</div>');
    doResize();
}

function addEducation() {
    if ($('.education').length < 4) {
        $('#education_list').append('<div class="education">' + $('#education_form').html() + '</div>');
    }
    doResize();
}

function getOffices() {
    var offices_parameter = '';

    $('.office:checked').each(function (i) {
        //get the stuff here
        var input_id = this.id;
        var input_value = $(this).attr('value');
        var radio_groupname = "." + input_id + "_permit_group";
        var val = $(radio_groupname + ":checked").val();
        offices_parameter += '{id:' + input_value + ',hasPermit:' + val + '},';
    });

    offices_parameter = offices_parameter.substring(0, offices_parameter.length - 1);

    return offices_parameter;
}

function getLanguages(defaultId) {
    var languages_parameter = '{id:' + defaultLanguageId + ',spoken:' + $('#level_spoken_english').val() + ',written:' + $('#level_written_english').val() + '},';
    $('.language_item').each(function (i) {
        var languageVal = $(this).children('.selected_language').val();
        var languageSpokenVal = $(this).children('.selected_language_spoken').val();
        var languageWrittenVal = $(this).children('.selected_language_written').val();
        languages_parameter += '{id:' + languageVal + ',spoken:' + languageSpokenVal + ',written:' + languageWrittenVal + '},';
    });


    languages_parameter = languages_parameter.substring(0, languages_parameter.length - 1);
    return languages_parameter;
}


function getSoftwares() {
    var software_parameter = '';
    $('.software:checked').each(function (i) {
        var input_id = this.id;
        var input_value = $(this).attr('value');
        var val = $('#' + input_id + '_level').children('select').val();
        software_parameter += '{software:' + input_value + ',level:' + val + '},';
    });
    software_parameter = software_parameter.substring(0, software_parameter.length - 1);
    return software_parameter;
}

function getUserSoftware() {
    var software = '';
    $('.software_item').each(function (i) {
        var softwareText = $(this).children('.software_text').val();
        var softwareLevel = $(this).children('.software_level').val();
        software += '{software:' + softwareText + ',level:' + softwareLevel + '},';
    });
    software = software.substring(0, software.length - 1);
    return software;
}

function getEducations() {
    var educations_parameter = '';
    $('.education').each(function (i) {
        var institute = $(this).children().children('.institute').val();
        var city = $(this).children().children('.city').val();
        var level = $(this).children().children('.level').val();
        var field = $(this).children().children('.field').val();
        var graduation_year = $(this).children().children('.graduation_year').val();
        var graduation_month = $(this).children().children('.graduation_month').val();

        if (institute != '')
            educations_parameter += '{name:' + institute + ',city:' + city + ',level:' + level + ',field:' + field + ',graduation_year:' + graduation_year + ',graduation_month:' + graduation_month + '},';
    });

    educations_parameter = educations_parameter.substring(0, educations_parameter.length - 1);
    return educations_parameter;
}

function doCancel() {
    if (confirm("Are you sure you want to cancel your application ? All information will be lost.")) {
        location.href = 'index.php?option=com_jobs&Itemid=22';
    }
}

function showRegistrationNumber() {
    var val = $("input[name='job_app_before']:checked").val();
    if (val == 1) {
        $('#registration_field').show();
    } else {
        $('#registration_field').hide();
    }
    doResize();
}

function showOpenField() {
    var val = $("#apply_for").val();
    if (val == -2) {
        $('#open_field').show();
    } else {
        $('#open_field').hide();
    }
    doResize();
}
