var delivery='';

$(document).ready(function(){    
    
    $("input:[type=checkbox]").bind('change', function(){         
        online=false;
        campus=false;
        if($("input:[type=checkbox]:eq(0)").is(":checked") ){online=true;}
        if($("input:[type=checkbox]:eq(1)").is(":checked") ){campus=true;}
        if( campus && online ){ 
            delivery="both";
            document.getElementById("campus").value = "on";
            document.getElementById("online").value = "on";
            if (document.getElementById("Zip_Code").value == "0") {
                document.getElementById("Zip_Code").value = "";
                document.getElementById("Zip_Code").style.display = "";
                document.getElementById("Zip_Code_Label").style.display = "";
                document.getElementById("verifyZipCode").style.display = "";
//                document.getElementById("Subject_ID_Label").style.display = "block";
//                document.getElementById("Subject_ID").style.display = "block";
            }
        } else {
            if (!campus && !online) {
                delivery='none';
                document.getElementById("campus").value = "off";
                document.getElementById("online").value = "off";
                document.getElementById("Zip_Code").style.display = "none";
                document.getElementById("Zip_Code_Label").style.display = "none";
                document.getElementById("verifyZipCode").style.display = "none";
                //
//                document.getElementById("Subject_ID_Label").style.display = "none";
//                document.getElementById("Subject_ID").style.display = "none";
            } else {
                if (campus) {
                    delivery='campus';
                    document.getElementById("campus").value = "on";
                    document.getElementById("Zip_Code").style.display = "";
                    document.getElementById("Zip_Code_Label").style.display = "";
                    document.getElementById("verifyZipCode").style.display = "";
                } else if (!campus) {
                    document.getElementById("campus").value = "off";
                    document.getElementById("Zip_Code").style.display = "none";
                    document.getElementById("Zip_Code_Label").style.display = "none";
                    document.getElementById("verifyZipCode").style.display = "none";
                }
                if (online) {
                    delivery='online';
                    document.getElementById("online").value = "on";
                    document.getElementById("Zip_Code").value = "00000";
//                    document.getElementById("Subject_ID_Label").style.display = "block";
//                    document.getElementById("Subject_ID").style.display = "block";
                } else if (!online) {
                    document.getElementById("online").value = "off";
                    document.getElementById("Zip_Code").value = "";
                }
            }
        }
        showSubject();
        switch(delivery){
//            case('both'):
//                $('#zipcode').show();
//                break;
//            case('online'):
//                $('#zipcode').show();
////                $('#zipcode').hide();
//                break;
//            case('campus'):
//                $('#zipcode').show();
//                break;
//            case('none'):
//                $('#zipcode').show();
//                break;
        }
        
        //Reset Subjects
        getsubjects();
        
        //Reset Programs
        var selectProgram = $('#Program_ID');
        var optionsProgram = selectProgram.attr('options');
        $('option', selectProgram).remove();
        optionsProgram[optionsProgram.length] = new Option('select one', '');
        
        //Reset Degrees
        var selectDegree = $('#Degree_ID');
        var optionsDegree = selectDegree.attr('options');
        $('option', selectDegree).remove();
        optionsDegree[optionsDegree.length] = new Option('select one', '');
    });
    
    $('#Subject_ID').change(function() {getprograms();});    
    $('#Program_ID').change(function() {getdegree();});
    $('#step1').validate({
        rules: {
            Delivery_ID: 'required',
            Subject_ID: 'required',
            Program_ID: 'required',
            Degree_ID: 'required'
        }
    });
    
    $('#step2').validate({
        rules: {
            First_Name: 'required',
            Last_Name: 'required',
            Email: {email: true, required: true},
            Address: 'required',
            City: 'required',
            State_ID: 'required',
            Zip_Code: {minlength: 4, maxlength: 6, required: true, number: true},
            Home_Phone_1: {minlength: 3, maxlength: 3, required: true, number: true},
            Home_Phone_2: {minlength: 3, maxlength: 3, required: true, number: true},
            Home_Phone_3: {minlength: 4, maxlength: 4, required: true, number: true},
            Work_Phone_1: {minlength: 3, maxlength: 3, number: true},
            Work_Phone_2: {minlength: 3, maxlength: 3, number: true},
            Work_Phone_3: {minlength: 4, maxlength: 4, number: true}
        }
    });
    
     $('#step3').validate({
        rules: {
            Age_ID: 'required',
            Military_ID: 'required',
            Grad_Year_ID: 'required',
            EDU_Level_ID: 'required',
            Start_Frame_ID: 'required',
            Time_To_Call_ID: 'required'
        }
     });
});

function nuevoAjax()
{
    /* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
    lo que se puede copiar tal como esta aqui */
    var xmlhttp=false;
    try {
        // Creacion del objeto AJAX para navegadores no IE
        xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
        try {
            // Creacion del objet AJAX para IE
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        } catch(E) {
            if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
                xmlhttp=new XMLHttpRequest();
            }
        }
    }
    return xmlhttp;
}

function showSubject() {
    var online = document.getElementById('online').value;
    var zip = document.getElementById("zipCodeOK").value;
    var status = "none";
    if (online == "on" || zip == "1") {
        status = "block";
        getsubjects();
    } else {
        status = "none";
        document.getElementById("Error_Program_ID").style.display = status;
        document.getElementById("Program_ID_Label").style.display = status;
        document.getElementById("Program_ID").style.display = status;
        document.getElementById("Error_Degree_ID").style.display = status;
        document.getElementById("Degree_ID_Label").style.display = status;
        document.getElementById("Degree_ID").style.display = status;
    }
    document.getElementById("Subject_ID_Label").style.display = status;
    document.getElementById("Subject_ID").style.display = status;
}

function showProgram(flag) {
    var status = "block";
    if (flag) {
        status = "block";
    } else {
        status = "none";
    }
    document.getElementById("Program_ID_Label").style.display = status;
    document.getElementById("Program_ID").style.display = status;
    document.getElementById("Error_Program_ID").style.display = status;
}
function showDegree(flag) {
    var status = "block";
    if (flag) {
        status = "block";
    } else {
        status = "none";
    }
    document.getElementById("Degree_ID_Label").style.display = status;
    document.getElementById("Degree_ID").style.display = status;
    document.getElementById("Error_Degree_ID").style.display = status;
}

function verifyForm() {
    //validator
    var validator = true;
    //vars
    var campus = document.getElementById("campus").value;
    var online = document.getElementById("online").value;
    if (campus == "off" && online == "off") {
//        alert("aca1");
        validator = false;
        document.getElementById("Delivery_ID_error").style.display = "block";
    } else {
        document.getElementById("Delivery_ID_error").style.display = "none";
    }
    var zip = document.getElementById("Zip_Code").value;
    if (campus == "on" && (zip == "" || isNaN(zip))) {
        validator = false;
        document.getElementById("Error_Zip_Code").style.display = "block";
        document.getElementById("zipCodeOK").value = "0";
    } else {
        document.getElementById("Error_Zip_Code").style.display = "none";
    }
    var zipOK = document.getElementById("zipCodeOK").value;
    if (campus == "on" && zipOK == "0") {
//        alert("aca3");
        validator = false;
        document.getElementById("Error_Zip_Code").style.display = "block";
        document.getElementById("zipCodeOK").value = "0";
    } else {
        document.getElementById("Error_Zip_Code").style.display = "none";
    }
    var subject = document.getElementById('Subject_ID').value;
    if (subject == "-1") {
//        alert("aca4");
        validator = false;
        if (document.getElementById("Program_ID").style.display == "block") {
            document.getElementById("Error_Subject_ID").style.display = "block";
        }
    } else {
        document.getElementById("Error_Subject_ID").style.display = "none";
    }
    var program = document.getElementById('Program_ID').value;
    if (program == "-1") {
//        alert("aca5");
        validator = false;
        if (document.getElementById("Degree_ID").style.display == "block") {
            document.getElementById("Error_Program_ID").style.display = "block";
            showDegree(false);
        }
    } else {
        document.getElementById("Error_Program_ID").style.display = "none";
    }
    var degree = document.getElementById('Degree_ID').value;
    if (degree == "-1") {
//        alert("aca6");
        validator = false;
        document.getElementById("Error_Degree_ID").style.display = "block";
    } else {
        document.getElementById("Error_Degree_ID").style.display = "none";
    }
    //
//    alert(validator);
    if (validator) {
        document.getElementById("Image1").style.display = "block";
    } else {
        document.getElementById("Image1").style.display = "none";
    }
}

function verifyPhoneLength(id, length, idNext) {
    var inputValue = document.getElementById(id).value;
    var lengthInput = inputValue.length;
    if(lengthInput == length) {
        document.getElementById(idNext).focus();
    }
}

function verifySelectedSchools(){
    var total = document.getElementById("total");
    var selected = 0;
    for (var i = 0; i <= total; i++) {
        var checkbox = document.getElementById("SchoolOn_" + i);
        if (checkbox.value == "on") {
            selected += 1;
        }
    }
    var labelError = document.getElementById("Error_Schools");
    var submit = document.getElementById("Image1");
    if (selected > 4 || selected == 0) {
        labelError.style.display='block';
        submit.style.display='none';
    } else {
        labelError.style.display='none';
        submit.style.display='block';
    }
}

function getVerifyZipCodeByState() {
    var inputZip = document.getElementById("Zip_Code");
    var valueZip;
    if (inputZip == null) {
        valueZip = document.getElementById("ZipHidden").value;
    } else {
        valueZip = inputZip.value;
    }
    var selectState = document.getElementById("State_ID");
    var valueState = selectState.value;
    if (valueZip != "" && valueState != "") {
        var ajax=nuevoAjax();
        ajax.open("GET", "javascript/ajax.php?function=validateZipByState&Zip=" +
            valueZip + "&State=" + valueState, false);
        ajax.onreadystatechange=function() {
            if (ajax.readyState==4) {
                var info = ajax.responseText;
                var label = document.getElementById("Error_Zip_State");
                if (info) {
                    label.style.display='none';
                    document.getElementById("Image1").style.display = "block";
//                    document.getElementById("zipCodeOK").value = "1";
                } else {
                    label.style.display='block';
                    document.getElementById("Image1").style.display = "none";
//                    document.getElementById("zipCodeOK").value = "0";
                }
            }
        }
        ajax.send(null);
    }
}

function getVerifyZipCode() {
    var button = document.getElementById("verifyZipCode");
    button.value = "Loading...";
    var inputZip = document.getElementById("Zip_Code");
    var valueZip = inputZip.value;
    var ajax=nuevoAjax();
    if (valueZip != "" && !isNaN(valueZip)) {
        ajax.open("GET", "javascript/ajax.php?function=validateZip&ZipCode="+valueZip, false);
        ajax.onreadystatechange=function() {
            if (ajax.readyState==4) {
                var info = ajax.responseText;
                var label = document.getElementById("Error_Zip_Code");
                if (info) {
                    label.style.display='none';
                    document.getElementById("zipCodeOK").value = "1";
                } else {
                    label.style.display='block';
                    document.getElementById("zipCodeOK").value = "0";
                }
                showSubject();
            }
        }
        ajax.send(null);
    } else {
//        document.getElementById("Error_Zip_Code").style.display='block';
    }
    button.value = "OK";
}
function getsubjects() {
    var campus = document.getElementById("campus").value;
    var online = document.getElementById("online").value;
    var condition = "";
    var zip = "0";
    if (online == "on" && campus == "on") {
        condition = "1,2";
        zip = document.getElementById("Zip_Code").value;
    } else {
        if (online == "on") {
            condition = "1";
            document.getElementById("Zip_Code").value = "0";
            zip = "0";
        } else if (campus == "on") {
            condition = "2";
            zip = document.getElementById("Zip_Code").value;
        }
    }
    //start
    if (condition != "") {
        var select = document.getElementById('Subject_ID');
        var ajax=nuevoAjax();
        ajax.open("GET", "javascript/ajax.php?function=getSubjects&ZipCode="+zip+"&delivery="+condition, false);
        ajax.onreadystatechange=function() {
            if (ajax.readyState==1) {
                select.length=0;
                var nuevaOpcion=document.createElement("option");
                nuevaOpcion.value=0;
                nuevaOpcion.innerHTML="Cargando...";
                select.appendChild(nuevaOpcion);
            }
            if (ajax.readyState==4) {
                select.innerHTML = '';
                var info = ajax.responseText;
                var data = info.split(";");
                if (info != "") {
                    for (var i=0; i<data.length -1; i++) {
                        var dato = data[i].split(":");
                        if (!isNaN(dato[0])) {
                            var option = new Option(dato[1],dato[0]);
                            select.options[i] = option;
                        }
                    }
                }
                if (select.options.length == 1) {
                    document.getElementById("Subject_ID_Label").style.display = "none";
                    document.getElementById("Subject_ID").style.display = "none";
                    document.getElementById("Program_ID_Label").style.display = "none";
                    document.getElementById("Program_ID").style.display = "none";
                    document.getElementById("Degree_ID_Label").style.display = "none";
                    document.getElementById("Degree_ID").style.display = "none";
                }
            }
        }
        ajax.send(null);
    }
//    verifyForm();
}

function getprograms() {
    var selectPrograms = document.getElementById('Program_ID');
    var labelPrograms = document.getElementById('Program_ID_Label');
    var errorPrograms = document.getElementById('Program_ID');
    var selectSubjects = document.getElementById('Subject_ID');
    //
    if (selectSubjects.value == "-1") {
        showProgram(false);
        showDegree(false);
    } else if (selectPrograms.value == "-1") {
        showDegree(false);
    }
    //
    var zip = document.getElementById("Zip_Code").value;
    var condition = "";
    var campus = document.getElementById("campus").value;
    var online = document.getElementById("online").value;
    if (online == "on" && campus == "on") {
        condition = "1,2";
        zip = document.getElementById("Zip_Code").value;
    } else {
        if (online == "on") {
            condition = "1";
            document.getElementById("Zip_Code").value = "0";
            zip = "0";
        } else if (campus == "on") {
            condition = "2";
            zip = document.getElementById("Zip_Code").value;
        }
    }
    if (selectSubjects.value == "01") {
        selectPrograms.style.display = "none";
        labelPrograms.style.display = "none";
    } else {
        selectPrograms.style.display = "block";
        labelPrograms.style.display = "block";
        var subject = selectSubjects.value;
        //
        var ajax=nuevoAjax();
        ajax.open("GET", "javascript/ajax.php?function=getPrograms&subject=" + 
            subject + "&zip=" + zip + "&delivery="+condition, false);
        ajax.onreadystatechange=function() {
            if (ajax.readyState==1) {
                selectPrograms.length=0;
                var nuevaOpcion=document.createElement("option");
                nuevaOpcion.value=0;
                nuevaOpcion.innerHTML="Cargando...";
                selectPrograms.appendChild(nuevaOpcion);
            }
            if (ajax.readyState==4) {
                selectPrograms.innerHTML = '';
                var info = ajax.responseText;
                var data = info.split(";");
                if (info != "") {
                    for (var i=0; i<data.length -1; i++) {
                        var dato = data[i].split(":");
                        if (!isNaN(dato[0])) {
                            var option = new Option(dato[1],dato[0]);
                            selectPrograms.options[i] = option;
                        }
                    }
                }
                if (selectPrograms.options.length == 1) {
                    document.getElementById("Program_ID_Label").style.display = "none";
                    document.getElementById("Program_ID").style.display = "none";
                }
            }
        }
        ajax.send(null);
    }
    if(document.getElementById('Program_ID').value == "-1" && document.getElementById('Image1').style.display == "block") {
        verifyForm();
    }
}

function getdegree() {
    var selectSubjects = document.getElementById('Subject_ID');
    var selectPrograms = document.getElementById('Program_ID');
    var selectDegree = document.getElementById('Degree_ID');
    if (selectSubjects.value == "-1") {
        showProgram(false);
        showDegree(false);
    } else if (selectPrograms.value == "-1") {
        showDegree(false);
    }
    if (selectPrograms.value != "-1") {
        document.getElementById("Error_Program_ID").style.display = "none";
    }
    var labelDegree = document.getElementById('Degree_ID_Label');
    var zip = document.getElementById("Zip_Code").value;
    var condition = "";
    var campus = document.getElementById("campus").value;
    var online = document.getElementById("online").value;
    if (online == "on" && campus == "on") {
        condition = "1,2";
        zip = document.getElementById("Zip_Code").value;
    } else {
        if (online == "on") {
            condition = "1";
            document.getElementById("Zip_Code").value = "0";
            zip = "0";
        } else if (campus == "on") {
            condition = "2";
            zip = document.getElementById("Zip_Code").value;
        }
    }
    if (selectSubjects.value == "01") {
        selectDegree.style.display = "none";
        labelDegree.style.display = "none";
    } else {
        selectDegree.style.display = "block";
        labelDegree.style.display = "block";
        var subject = selectSubjects.value;
        var program = selectPrograms.value;
        //
        var ajax=nuevoAjax();
        ajax.open("GET", "javascript/ajax.php?function=getDegree&subject=" +
            subject + "&zip=" + zip + "&delivery=" + condition + "&program=" +
            program, false);
        ajax.onreadystatechange=function() {
            if (ajax.readyState==1) {
                selectDegree.length=0;
                var nuevaOpcion=document.createElement("option");
                nuevaOpcion.value=0;
                nuevaOpcion.innerHTML="Cargando...";
                selectDegree.appendChild(nuevaOpcion);
            }
            if (ajax.readyState==4) {
                selectDegree.innerHTML = '';
                var info = ajax.responseText;
                var data = info.split(";");
                if (info != "") {
                    for (var i=0; i<data.length -1; i++) {
                        var dato = data[i].split(":");
                        if (!isNaN(dato[0])) {
                            var option = new Option(dato[1],dato[0]);
                            selectDegree.options[i] = option;
                        }
                    }
                }
                if (selectPrograms.options.length == 1) {
                    document.getElementById("Degree_ID_Label").style.display = "none";
                    document.getElementById("Degree_ID").style.display = "none";
                }
            }
        }
        ajax.send(null);
    }
    if(document.getElementById('Degree_ID').value == "-1" && document.getElementById('Image1').style.display == "block") {
        verifyForm();
    }
//    verifyForm();
}

function getstates() {
     $.getJSON('app.php/states',
        function(data) {
            var selectState = $('#State_ID');
            var optionsState = selectState.attr('options');
            $.each(data.data, function(index, array) {
                optionsState[optionsState.length] = new Option(array['State_Display'], array['State_ID']);
            });
        }); 
};

function getages() {
     $.getJSON('app.php/ages',
        function(data) {
            var selectAge = $('#Age_ID');
            var optionsAge = selectAge.attr('options');
            $.each(data.data, function(index, array) {
                optionsAge[optionsAge.length] = new Option(array['Age_Display'], array['Age_ID']);
            });
        }); 
};

function getmilitaries() {
     $.getJSON('app.php/militaries',
        function(data) {
            var selectMilitary = $('#Military_ID');
            var optionsMilitary = selectMilitary.attr('options');
            $.each(data.data, function(index, array) {
                optionsMilitary[optionsMilitary.length] = new Option(array['Military_Display'], array['Military_ID']);
            });
        }); 
};

function getgradyear() {
     $.getJSON('app.php/gradyears',
        function(data) {
            var selectGradyear = $('#Grad_Year_ID');
            var optionsGradyear = selectGradyear.attr('options');
            $.each(data.data, function(index, array) {
                optionsGradyear[optionsGradyear.length] = new Option(array['Grad_Year_Display'], array['Grad_Year_ID']);
            });
        }); 
};

function getedulevels() {
     $.getJSON('app.php/edulevels',
        function(data) {
            var selectEdulevel = $('#EDU_Level_ID');
            var optionsEdulevel = selectEdulevel.attr('options');
            $.each(data.data, function(index, array) {
                optionsEdulevel[optionsEdulevel.length] = new Option(array['Edu_Level_Display'], array['Edu_Level_ID']);
            });
        }); 
};

function getstartframes() {
    $.getJSON('app.php/startframes',
        function(data) {
            var selectStartframe = $('#Start_Frame_ID');
            var optionsStartframe = selectStartframe.attr('options');
            $.each(data.data, function(index, array) {
                optionsStartframe[optionsStartframe.length] = new Option(array['Start_Frame_Display'], array['Start_Frame_ID']);
            });
        }); 
};

function gettimetocalls() {
    $.getJSON('app.php/timetocalls',
        function(data) {
            var selectTimecall = $('#Time_To_Call_ID');
            var optionsTimecall = selectTimecall.attr('options');
            $.each(data.data, function(index, array) {
                optionsTimecall[optionsTimecall.length] = new Option(array['Time_To_Call_Display'], array['Time_To_Call_ID']);
            });
        }); 
};

function init3() {
    getages();
    getmilitaries();
    getgradyear();
    getedulevels();
    getstartframes();
    gettimetocalls();
}
