
var RegisterMain = {

    init : function(event, data) {
        //console.log("RegisterMain : init");
        $("#txtFirstLang").change(function(event){RegisterMain.removeLanguageOption(event.target.name,$("#"+event.target.name+" option:selected").val());});
        $("#txtFourthLang").change(function(event){RegisterMain.removeLanguageOption(event.target.name,$("#"+event.target.name+" option:selected").val());});
        $("#txtSecondLang").change(RegisterMain.onSelectChange);
        $("#txtLearningLang").change(RegisterMain.onSelectChange);
        $("#multipleLangError").hide();

        RegisterMain.applyLanguageListChanges();
        RegisterMain.prepareDob(PageConfig.minAgeAllowed);
        $(".cal_btn").bind('click', function(e) {$("#txtDateOfBirth").click();});

        $("#whyLangNeeded a").click(RegisterMain.showLang);
        $("#btnClose").click(RegisterMain.showLang);

		$('#btnResetRegDetails').click(function(){$('#registrationForm').clearForm(); $('.fieldErrorMsg').hide(); return false;});
    },

    destruct : function(event, data) {
		//console.log("RegisterMain : init");
        $("#txtFirstLang, #txtFourthLang, #txtSecondLang, #txtLearningLang").unbind('change');
        $(".cal_btn, #txtDateOfBirth").unbind('click');
        
        $("#whyLangNeeded a").unbind('click');
        $("#btnClose").unbind('click');
    },

    showLang : function(){
	   $("#pupProvideLang").toggleClass('active');
       return false;
   },

    applyLanguageListChanges : function(){

        selectLanguageFlag = 0;

        var sourceElements = new Array('txtFirstLang','txtSecondLang','txtThirdLang','txtFourthLang','txtLearningLang','txtLearningLang2');

        $.each(sourceElements,function( intIndex, objValue ){
            RegisterMain.removeLanguageOption(objValue,$('#'+objValue+" option:selected").val());
        });
    },

    onSelectChange : function(event) {

        if(event.target.selectedIndex != 0) {

            selectedVal = $("#"+event.target.name+" option:selected").val();
            switch(event.target.name) {
                case "txtSecondLang"    :RegisterMain.processLangChange(event, "#secondaryLang3", "secondaryLang4" );break;
                case "txtThirdLang"     :RegisterMain.processLangChange(event, "#secondaryLang4");break;
                case "txtLearningLang"  :RegisterMain.processLangChange(event, "#learningLang2");break;
            }
            RegisterMain.removeLanguageOption(event.target.name,selectedVal);
        }
    },

    selectLanguageCount : 0,
    listsSelected : new Array(),
    removeLanguageOption : function(sourceElementId,optionValue) {

        var sourceElements = new Array('txtFirstLang','txtSecondLang','txtThirdLang','txtFourthLang','txtLearningLang','txtLearningLang2');

        RegisterMain.listsSelected[RegisterMain.selectLanguageCount++] = sourceElementId;

        $.each(sourceElements,function( intIndex, objValue ){
            if(sourceElementId != objValue && jQuery.inArray(sourceElementId, RegisterMain.listsSelected) != -1){
                $("#"+objValue+" option[value='"+optionValue+"']").addClass('previouslySelected');
            }
        });
    },

    processLangChange : function(event, target, registerHandler) {

        $(target).addClass("active");
        $("#"+event.target.name).unbind("change");//unregister the handler

        if(registerHandler != undefined ) {
            $(target+" select").change(RegisterMain.onSelectChange);//Register a handler for the target select.
        }
    },

    prepareDob : function(minAgeAllowed) {
        if(!minAgeAllowed || minAgeAllowed == null || minAgeAllowed == undefined)
            throw new Error('Provide minimum age to prepare date of birth. Given ' + minAgeAllowed);

        var d = new Date();

        d.setFullYear(d.getFullYear()-minAgeAllowed);
        var chosen   = (d.getMonth()+1) + '/' + d.getDate() + '/' + d.getFullYear();
        var end      = 12 + '/' + 12 + '/' + d.getFullYear();
        d.setFullYear((d.getFullYear()+minAgeAllowed)-90);
        var start   =   1 + '/' +  1 + '/' + d.getFullYear();
        
        $("#txtDateOfBirth").simpleDatepicker({chosendate: chosen, startdate: start, enddate: end});        
    }
}
 

$(document).bindEx('ready.register_main', function(evt,data){RegisterMain.init(evt,data)});