﻿
//mobile detection
(function (a) { jQuery.browser.mobile = /android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4)) })(navigator.userAgent || navigator.vendor || window.opera);
//caret
﻿(function(k,e,i,j){k.fn.caret=function(b,l){var a,c,f=this[0],d=k.browser.msie;if(typeof b==="object"&&typeof b.start==="number"&&typeof b.end==="number"){a=b.start;c=b.end}else if(typeof b==="number"&&typeof l==="number"){a=b;c=l}else if(typeof b==="string")if((a=f.value.indexOf(b))>-1)c=a+b[e];else a=null;else if(Object.prototype.toString.call(b)==="[object RegExp]"){b=b.exec(f.value);if(b!=null){a=b.index;c=a+b[0][e]}}if(typeof a!="undefined"){if(d){d=this[0].createTextRange();d.collapse(true);
d.moveStart("character",a);d.moveEnd("character",c-a);d.select()}else{this[0].selectionStart=a;this[0].selectionEnd=c}this[0].focus();return this}else{if(d){c=document.selection;if(this[0].tagName.toLowerCase()!="textarea"){d=this.val();a=c[i]()[j]();a.moveEnd("character",d[e]);var g=a.text==""?d[e]:d.lastIndexOf(a.text);a=c[i]()[j]();a.moveStart("character",-d[e]);var h=a.text[e]}else{a=c[i]();c=a[j]();c.moveToElementText(this[0]);c.setEndPoint("EndToEnd",a);g=c.text[e]-a.text[e];h=g+a.text[e]}}else{g=
f.selectionStart;h=f.selectionEnd}a=f.value.substring(g,h);return{start:g,end:h,text:a,replace:function(m){return f.value.substring(0,g)+m+f.value.substring(h,f.value[e])}}}}})(jQuery,"length","createRange","duplicate");

var setDefaultProgram = true;

$(document).ready(function () {
    // populate grad year ddl
    $(".form").find("select[name='GraduationYear']").each(function () {
        var gy = $(this);

        var optionGY = $(document.createElement("option"));
        optionGY.attr("value", "No high school - I am 19 or older");
        if (window.location.host.toLowerCase().indexOf("collegecdi") != -1) {
            optionGY.text("Pas de diplôme - 19 ans et plus");
        }
        else {
            optionGY.text("No highschool - 19 yrs or older");
        }
        gy.append(optionGY);

        // year values
        for (var i = 0; i < 30; i++) {
            var year = ((new Date).getFullYear() + 2 - i).toString();
            optionGY = $(document.createElement("option"));
            optionGY.attr("value", year);
            optionGY.text(year);
            gy.append(optionGY);
        }

        // 'other' option
        optionGY = $(document.createElement("option"));
        optionGY.attr("value", "1984");
        if (window.location.host.toLowerCase().indexOf("collegecdi") != -1) {
            optionGY.text("Autres");
        }
        else {
            optionGY.text("Other");
        }
        gy.append(optionGY);

    });

    // populate country ddl
    $(".form").find("select[name='Country'],select[name='Citizenship'],select[name='HighSchool1Country'],select[name='PostSecSchool1Country'],select[name='PostSecSchool2Country'],select[name='PostSecSchool3Country']").each(function () {

        var country = $(this);
        var form = $(this).parent().parent().parent();

        if ($.browser.opera && country.attr("name") == "Country") {
            form.find("select[name='Country'] option").remove();

            var opCountry = $(document.createElement("option"));
            opCountry.attr("value", "CA");
            opCountry.text("Canada");
            country.append(opCountry);
        }
        else {
            var optionTop = $(document.createElement("option"));
            optionTop.attr("value", "CA");
            optionTop.text("Canada");
            country.append(optionTop);

            if (window.location.host.toLowerCase().indexOf("collegecdi") != -1) {
                optionTop = $(document.createElement("option"));
                optionTop.attr("value", "MA");
                optionTop.text("Maroc");
                country.append(optionTop);
            }

            $.ajax({
                type: "get",
                url: "/WebServices/BrandProvider.asmx/GetCountries",
                dataType: "xml",
                success: function (xml) {

                    $(xml).find("row").each(function () {
                        var option = $(document.createElement("option"));
                        option.attr("value", $(this).find("value").text());
                        option.text($(this).find("name").text());
                        country.append(option);
                    });

                },
                error: function () {
                    //alert("Problem...");
                }
            });
        }
    });

    // apply country/campus interaction
    if (window.location.host.toLowerCase().indexOf("ucan") == -1) {
        $(".divRequestInformation,.divShortForm,.divlpForm,.divlpFormRSVPforSession,.divlpVendor").find(".form").find(".divCampus").hide();

        $(".divRequestInformation,.divShortForm,.divlpForm,.divlpFormRSVPforSession,.divlpVendor").find(".form").find("select[name='Country']").each(function () {
            $(this).change(function () {
                var form = $(this).parent().parent().parent();
                if ($(this).val() == "CA") {
                    form.find(".divCampus").hide();
                    //refresh program list
                    form.find("select[name='Campus']").val("");
                    getProgramDDL(form);
                }
                else {
                    form.find(".divCampus").show();
                    getCampusDDL(form);
                }
                manageLabels(form);
            });
        });
    }










    $(".divShortForm,.divRequestInformation,.divlpForm,.divlpFormRSVPforSession,.divlpVendor").find(".form").each(function () {
        var form = $(this);
        // disable all fields except country by default
        if (form.find("select[name='Country']").length > 0) {
            form.find(".field").attr("disabled", true);
            form.find("select[name='Country']").attr("disabled", false);
        }
    });

    $(".divlpFormRSVPforSession").find(".form").each(function () {
        var form = $(this);

        form.find("select[name='RSVPForASession']").attr("disabled", false);
        form.find("input[name='SessionDate']").attr("disabled", false);

    });


    //if (!$.browser.mobile) {
    // disable all fields except country by default
    /*
    $(".divShortForm,.divRequestInformation,.divlpForm,.divlpFormRSVPforSession,.divlpVendor").find(".form").find(".field").attr("disabled", true);
    $(".divShortForm,.divRequestInformation,.divlpForm,.divlpFormRSVPforSession,.divlpVendor").find(".form").find("select[name='Country']").attr("disabled", false);



    $(".divlpFormRSVPforSession").find(".form").find("select[name='RSVPForASession']").attr("disabled", false);
    $(".divlpFormRSVPforSession").find(".form").find("input[name='SessionDate']").attr("disabled", false);
    */
    //}



    // attach refresh label
    $(".divRequestInformation,.divlpForm,.divlpFormRSVPforSession,.divlpVendor").each(function () {
        manageLabels($(this).find(".form"));
    });

    // fill campus and program ddls on page load
    $(".form").each(function () {
        if ($(this).find("select[name='Program']").length > 0) {
            getProgramDDL($(this));
        }
        if ($(this).find("select[name='Campus']").length > 0) {
            getCampusDDL($(this));
        }
    });

    // bind campus onchange
    $(".form").find("select[name='Campus']").each(function () {
        $(this).change(function () {
            getProgramDDL($(this).parent().parent().parent());
        });
    });

    // bind program onchange
    $(".form").find("select[name='Program']").each(function () {
        $(this).change(function () {
            getCampusDDL($(this).parent().parent().parent());
        });
    });

    // rsvp for session interaction
    $(".divlpFormRSVPforSession").find(".form").find("select[name='RSVPForASession']").change(function () {
        var form = $(this).parent().parent().parent();
        if ($(this).val() != "") {
            form.find(".divSessionDate").show();
        }
        else {
            form.find(".divSessionDate").hide();
        }
    });
    

    // country change trigger
    $(".divRequestInformation,.divShortForm,.divlpForm,.divlpFormRSVPforSession,.divlpVendor").find(".form").find("select[name='Country']").change(function () {
        changeCountry($(this).parent().parent().parent());
    });


    $(".divRequestInformation,.divShortForm,.divlpForm,.divlpFormRSVPforSession,.divlpVendor").find(".form").each(function () {
        var form = $(this);
        form.find("select[name='Country']").val(form.find("input[name='defaultCountry']").val());

        if ($.browser.mobile) {
            form.find(".divCountry").hide();

            if (form.find("select[name='Country']").val() == "") {
                form.find("select[name='Country']").val("CA");
            }

            form.find(".divAddress").hide();
            form.find(".divCity").hide();
            
            form.find(".divGraduationYear").hide();
            form.find("select[name='GraduationYear']").val(((new Date).getFullYear() - 1).toString());
        }

        changeCountry(form);
    });

    // default program value
    //$(".divRequestInformation,.divShortForm,.divlpForm,.divlpFormRSVPforSession,.divlpVendor").find(".form").find("select[name='Program']").val($(".divRequestInformation,.divShortForm,.divlpForm,.divlpFormRSVPforSession,.divlpVendor").find(".form").find("input[name='defaultProgram']").val());
    //alert($(".divRequestInformation,.divShortForm,.divlpForm,.divlpFormRSVPforSession,.divlpVendor").find(".form").find("input[name='defaultProgram']").val());
    //alert('t');

});

function preventSubmission(form) {
    if (form.parent().attr("class") == "divRequestInformation" || form.parent().attr("class") == "divShortForm" || form.parent().attr("class") == "divlpForm" || form.parent().attr("class") == "divlpFormRSVPforSession" || form.parent().attr("class") == "divlpVendor") {
        if (form.find("input[name='lastHourSubmissions']").val() == "3") {
            if (window.location.host.toLowerCase().indexOf("collegecdi") != -1) {
                alert("Vous avez déjà soumis vos informations.");
            }
            else {
                alert("You have already submitted your information.");
            }
            return true;
        }
    }
    return false;
}

function changeCountry(form) {

    var country = form.find("select[name='Country']");
    
    // handle phone, postal code
    if (country.val() == "CA") {

        //    <input class="field inputPhone" name="Phone" type="text">
        form.find(".divBoxPhone").find("[name=Phone]").bind({
            keydown: function (event) {

                var kCode = (event.keyCode ? event.keyCode : event.which);

                var newVal = $(this).val();

                var inputStart = $(this).caret().start;
                var inputEnd = $(this).caret().end;

                var outputStart = inputStart;
                var outputEnd = inputEnd;

                if (kCode == 8) {

                    if (inputStart == inputEnd && inputStart > 0) {
                        newVal = [newVal.slice(0, inputStart - 1), newVal.slice(inputStart)].join("");

                        outputStart = inputStart - 1;
                        outputEnd = outputStart;
                    }
                    else if (inputEnd > inputStart) {
                        newVal = [newVal.slice(0, inputStart), newVal.slice(inputEnd)].join("");

                        outputStart = inputStart;
                        outputEnd = outputStart;
                    }


                    newVal = newVal.replace(/-/g, "");
                    if (newVal.length > 3 && newVal[3] != '-') {
                        newVal = [newVal.slice(0, 3), newVal.slice(3)].join("-");
                    }
                    if (newVal.length > 7 && newVal[7] != '-') {
                        newVal = [newVal.slice(0, 7), newVal.slice(7)].join("-");
                    }


                    $(this).val(newVal).caret({ start: outputStart, end: outputEnd });

                    return false;
                }
                else if (kCode == 46) {

                    if (inputStart == inputEnd && newVal.length > inputStart) {
                        newVal = [newVal.slice(0, inputStart), newVal.slice(inputStart + 1)].join("");

                        outputStart = inputStart;
                        outputEnd = outputStart;
                    }
                    else if (inputEnd > inputStart) {
                        newVal = [newVal.slice(0, inputStart), newVal.slice(inputEnd)].join("");

                        outputStart = inputStart;
                        outputEnd = outputStart;
                    }

                    newVal = newVal.replace(/-/g, "");
                    if (newVal.length > 3 && newVal[3] != '-') {
                        newVal = [newVal.slice(0, 3), newVal.slice(3)].join("-");
                    }
                    if (newVal.length > 7 && newVal[7] != '-') {
                        newVal = [newVal.slice(0, 7), newVal.slice(7)].join("-");
                    }


                    $(this).val(newVal).caret({ start: outputStart, end: outputEnd });

                    return false;
                }
            },
            keypress: function (event) {
                var kCode = (event.keyCode ? event.keyCode : event.which);

                var newVal = $(this).val();

                var inputStart = $(this).caret().start;
                var inputEnd = $(this).caret().end;

                var outputStart = inputStart;
                var outputEnd = inputEnd;

                if (kCode == 9) {

                }
                else if (kCode >= 48 && kCode <= 57 && $(this).val().length < 12) {

                    var outputStart = inputStart;

                    outputStart++;

                    newVal = [newVal.slice(0, inputStart), newVal.slice(inputStart)].join(String.fromCharCode(kCode));

                    newVal = newVal.replace(/-/g, "");

                    if (newVal.length > 3 && newVal[3] != '-') {
                        newVal = [newVal.slice(0, 3), newVal.slice(3)].join("-");
                        if (inputStart == 3) {
                            outputStart++;
                        }
                    }
                    if (newVal.length > 7 && newVal[7] != '-') {
                        newVal = [newVal.slice(0, 7), newVal.slice(7)].join("-");
                        if (inputStart == 7) {
                            outputStart++;
                        }
                    }

                    outputEnd = outputStart;

                    $(this).val(newVal).caret({ start: outputStart, end: outputEnd });

                    return false;
                }
                else if (kCode == 35 || kCode == 36 || kCode == 37 || kCode == 39) {

                }
                else {
                    return false;
                }
            },
            paste: function (event) {
                return false;
            },
            cut: function (event) {
                return false;
            }
        });


        form.find(".divBoxPostalZipCode").find("[name=PostalZipCode]").bind({
            keydown: function (event) {

                var kCode = (event.keyCode ? event.keyCode : event.which);

                var newVal = $(this).val();

                var inputStart = $(this).caret().start;
                var inputEnd = $(this).caret().end;

                var outputStart = inputStart;
                var outputEnd = inputEnd;

                if (kCode == 8) {
                    if (inputStart == inputEnd && inputStart > 0) {
                        newVal = [newVal.slice(0, inputStart - 1), newVal.slice(inputStart)].join("");

                        outputStart = inputStart - 1;
                        outputEnd = outputStart;
                    }
                    else if (inputEnd > inputStart) {
                        newVal = [newVal.slice(0, inputStart), newVal.slice(inputEnd)].join("");

                        outputStart = inputStart;
                        outputEnd = outputStart;
                    }


                    newVal = newVal.replace(/ /g, "");

                    if (newVal.length > 3 && newVal[3] != ' ') {
                        newVal = [newVal.slice(0, 3), newVal.slice(3)].join(" ");
                    }

                    $(this).val(newVal).caret({ start: outputStart, end: outputEnd });

                    return false;
                }
                else if (kCode == 46) {

                    if (inputStart == inputEnd && newVal.length > inputStart) {
                        newVal = [newVal.slice(0, inputStart), newVal.slice(inputStart + 1)].join("");

                        outputStart = inputStart;
                        outputEnd = outputStart;
                    }
                    else if (inputEnd > inputStart) {
                        newVal = [newVal.slice(0, inputStart), newVal.slice(inputEnd)].join("");

                        outputStart = inputStart;
                        outputEnd = outputStart;
                    }

                    newVal = newVal.replace(/ /g, "");
                    if (newVal.length > 3 && newVal[3] != ' ') {
                        newVal = [newVal.slice(0, 3), newVal.slice(3)].join(" ");
                    }

                    $(this).val(newVal).caret({ start: outputStart, end: outputEnd });

                    return false;
                }
            },
            keypress: function (event) {
                var kCode = (event.keyCode ? event.keyCode : event.which);

                //alert(kCode);

                var newVal = $(this).val();

                var inputStart = $(this).caret().start;
                var inputEnd = $(this).caret().end;

                var outputStart = inputStart;
                var outputEnd = inputEnd;

                if (kCode == 9) {

                }
                else if ((kCode >= 48 && kCode <= 57 || kCode >= 65 && kCode <= 90 || kCode >= 97 && kCode <= 122) && $(this).val().length < 7) {

                    var outputStart = inputStart;

                    outputStart++;

                    newVal = [newVal.slice(0, inputStart), newVal.slice(inputStart)].join(String.fromCharCode(kCode));

                    newVal = newVal.replace(/ /g, "");

                    if (newVal.length > 3 && newVal[3] != ' ') {
                        newVal = [newVal.slice(0, 3), newVal.slice(3)].join(" ");
                        if (inputStart == 3) {
                            outputStart++;
                        }
                    }

                    outputEnd = outputStart;

                    $(this).val(newVal).caret({ start: outputStart, end: outputEnd });

                    return false;
                }
                else if (kCode == 35 || kCode == 36 || kCode == 37 || kCode == 39) {

                }
                else {
                    return false;
                }
            },
            paste: function (event) {
                return false;
            },
            cut: function (event) {
                return false;
            },
            keyup: function (event) {
                var firstChar = $(this).val().trim().charAt(0).toLowerCase();

                if (window.location.host.toLowerCase().indexOf("reeves") != -1 && firstChar == 't') {
                    form.find(".divCampus").hide();
                    // refresh programs
                    form.find("select[name='Campus']").val("");
                    getProgramDDL(form);
                }
                else if (window.location.host.toLowerCase().indexOf("vcc") != -1 && firstChar == 'v') {
                    form.find(".divCampus").hide();
                    // refresh programs
                    form.find("select[name='Campus']").val("");
                    getProgramDDL(form);
                }
                else if (window.location.host.toLowerCase().indexOf("cdi") != -1 && (firstChar == 'g' || firstChar == 'h' || firstChar == 'v' || firstChar == 'j' || firstChar == 'r' || firstChar == 't' || firstChar == 'p' || firstChar == 'n' || firstChar == 'm' || firstChar == 'l' || firstChar == 'k' || firstChar == 's' || firstChar == 'e' || firstChar == 'c' || firstChar == 'b' || firstChar == 'a' || firstChar == 'y' || firstChar == 'x')) {
                    form.find(".divCampus").hide();
                    // refresh programs
                    form.find("select[name='Campus']").val("");
                    getProgramDDL(form);
                }
                else if (firstChar != '') {
                    form.find(".divCampus").show();
                }

                manageLabels(form);
            }
        });
        
        var fPhone = form.find(".divPhone").find("[name=Phone]").val();
        var fPhoneNew = "";
        for (var i = 0; i <= fPhone.length; i++) {
            if (!isNaN(fPhone[i])) {
                fPhoneNew = fPhoneNew + fPhone[i];
                if (fPhoneNew.length == 10) {
                    break;
                }
            }
        }
        
        if (fPhoneNew.length > 3 && fPhoneNew[3] != '-') {
            fPhoneNew = [fPhoneNew.slice(0, 3), fPhoneNew.slice(3)].join("-");
        }
        if (fPhoneNew.length > 7 && fPhoneNew[7] != '-') {
            fPhoneNew = [fPhoneNew.slice(0, 7), fPhoneNew.slice(7)].join("-");
        }
        
        form.find(".divPhone").find("[name=Phone]").val(fPhoneNew);
        form.find(".divPostalZipCode").find("[name=PostalZipCode]").val("");
        form.find(".divPhone").find("[name=regex]").val("^[1-9][0-9]{2}-[1-9]{1}[0-9]{2}-[0-9]{4}$");
        form.find(".divPostalZipCode").find("[name=regex]").val("^[abceghjklmnprstvxyABCEGHJKLMNPRSTVXY][0-9][abceghjklmnprstvwxyzABCEGHJKLMNPRSTVWXYZ]");
        form.find(".divPostalZipCode").find("[name=PostalZipCode]").css("text-transform", "uppercase");
    }
    else {
        form.find(".divPhone").find("[name=Phone]").unbind();
        form.find(".divPhone").find("[name=regex]").val("");
        form.find(".divPostalZipCode").find("[name=PostalZipCode]").unbind();
        form.find(".divPostalZipCode").find("[name=PostalZipCode]").css("text-transform", "none");
        form.find(".divPostalZipCode").find("[name=regex]").val("");
    }

    // handle rsvp for a session
    if (country.val() != "") {
        form.find(".field").attr("disabled", false);
    }
    else {
        form.find(".field").attr("disabled", true);
        country.attr("disabled", false);
        form.find("select[name='RSVPForASession']").attr("disabled", false);
        form.find("input[name='SessionDate']").attr("disabled", false);
    }
}


// populate campus ddl
function getCampusDDL(form) {
    var campus = form.find("select[name='Campus']");
    var program = form.find("select[name='Program']");
    var selectedValue = campus.val();
    var url = "/GeneratedControls/EMINATACampusDDL.aspx";
    if (program.length > 0 && program.val() != "") {
        url += "?programId=" + program.val();
    }

    $.ajax({
        type: "get",
        url: url,
        dataType: "xml",
        success: function (xml) {
            if ($(xml).find("optgroup").length > 0) {

                // remove all current items from ddl except default value
                form.find("select[name='Campus'] option").remove();
                form.find("select[name='Campus'] optgroup").remove();
                var defaultOptionText = "- Select Campus -";
                if (window.location.host.toLowerCase().indexOf("collegecdi") != -1) {
                    defaultOptionText = "- Choisir un campus -";
                }
                var defaultOption = $(document.createElement("option"));
                defaultOption.attr("value", "");
                defaultOption.text(defaultOptionText);
                campus.append(defaultOption);

                $(xml).find("optgroup").each(function () {
                    var optgroup = $(document.createElement("optgroup"));
                    optgroup.attr("label", $(this).attr("label"));
                    $(this).find("option").each(function () {
                        var option = $(document.createElement("option"));
                        option.attr("value", $(this).attr("value"));
                        option.text($(this).text());
                        if ($(this).attr("value") == selectedValue) {
                            option.attr("selected", "selected");
                        }
                        optgroup.append(option);
                    });
                    campus.append(optgroup);
                });
            }
        }
    });
}

// populate program ddl
function getProgramDDL(form) {
    var campus = form.find("select[name='Campus']");
    var program = form.find("select[name='Program']");
    var selectedValue = program.val();
    var url = "/GeneratedControls/EMINATAProgramDDL.aspx";
    if (campus.length > 0 && campus.val() != "") {
        url += "?campusId=" + campus.val();
    }
    if (form.find("[name=FormName]").val() == "Application") {
        if (url.indexOf("?") != -1) {
            url += "&type=application";
        }
        else {
            url += "?type=application";
        }
    }

    //alert(url);

    $.ajax({
        type: "get",
        url: url,
        dataType: "xml",
        success: function (xml) {

            if ($(xml).find("option").length > 0) {
                
                // remove all current items from ddl except default value
                form.find("select[name='Program'] option").remove();
                form.find("select[name='Program'] optgroup").remove();

                var defaultOptionText = "- Select Program -";
                if (window.location.host.toLowerCase().indexOf("collegecdi") != -1) {
                    defaultOptionText = "- Choisir un programme -";
                }
                var defaultOption = $(document.createElement("option"));
                defaultOption.attr("value", "");
                defaultOption.text(defaultOptionText);
                program.append(defaultOption);

                if ($(xml).find("optgroup").length > 0) {
                    $(xml).find("optgroup").each(function () {
                        var optgroup = $(document.createElement("optgroup"));
                        optgroup.attr("label", $(this).attr("label"));
                        $(this).find("option").each(function () {
                            var option = $(document.createElement("option"));
                            option.attr("value", $(this).attr("value"));
                            option.text($(this).text());
                            if ($(this).attr("value") == selectedValue) {
                                option.attr("selected", "selected");
                            }
                            optgroup.append(option);
                        });
                        program.append(optgroup);
                    });
                }
                else {
                    $(xml).find("option").each(function () {
                        var option = $(document.createElement("option"));
                        option.attr("value", $(this).attr("value"));
                        option.text($(this).text());
                        if ($(this).attr("value") == selectedValue) {
                            option.attr("selected", "selected");
                        }
                        program.append(option);
                    });
                }

                if (setDefaultProgram && form.find("input[name='defaultProgram']").val() != "") {
                    //set to default program on initial load and then clear the flag
                    program.val(form.find("input[name='defaultProgram']").val());
                    setDefaultProgram = false;
                    //form.find("input[name='defaultProgram']").val("");
                }

            }
        }
    });
}

// refresh campus and program ddls
function refreshList(form) {
    form.find("select[name='Program']").val("");
    form.find("select[name='Campus']").val("");

    getProgramDDL(form);
    getCampusDDL(form);
}

// manage refresh labels
function manageLabels(form) {
    if (form.find(".divProgram:visible").length > 0 && form.find(".divCampus:visible").length > 0) {
        var refreshMessage = "Refresh";
        if (window.location.host.toLowerCase().indexOf("collegecdi") != -1) {
            refreshMessage = "Actualiser";
        }
        form.find(".divCaptionCampus").find(".label").html("<a href='javascript: void(0);' onclick='refreshList($(this).parent().parent().parent().parent());'>" + refreshMessage + "</a>");
        form.find(".divCaptionProgram").find(".label").html("<a href='javascript: void(0);' onclick='refreshList($(this).parent().parent().parent().parent());'>" + refreshMessage + "</a>");
    }
    else {
        form.find(".divCaptionCampus").find(".label").html("");
        form.find(".divCaptionProgram").find(".label").html("");
    }
}
