/**
 *  Zuken Reseller Selection
 *
 *  Used to create a list of resellers, based on target countries
 *  (managed in Sitecore), for the current item's LEADTRIGGER value.
 *
 *  Last update: 2008-06-16 {pf}
 */

//  Wait for DOM to load
$(document).ready( function() {    
   /* $("div[id$=preferredResellerRow]").css("display", "none");
    bindResellerCheck();*/
});


//  Find the 'Country' element in the current form and bind resellers
function bindResellerCheck() {
    
    //  Test for existence
    if ($('select[name$=ddlCountry]').length) {

        //  Check current selection (if any)

        checkResellerCountry($('select[name$=ddlCountry]').val());
        checkResellerState($('select[name$=ddlCountry]').val(), $('select[name$=ddlState]').val());
        
        //  Check selection on change
        $('select[name$=ddlCountry]').bind('change', function () {
            checkResellerCountry($('select[name$=ddlCountry]').val());
        });

        $('select[name$=ddlState]').bind('change', function () {
            checkResellerState($('select[name$=ddlCountry]').val(), $('select[name$=ddlState]').val());
            $("input[name$=hidState]").val($('select[name$=ddlState]').val());
        });
    }    
}


//  Establish if the selected country is one we're interested in
function checkResellerCountry(selectedCountryValue) {
    ShowStates(selectedCountryValue == "United States" || selectedCountryValue == "Canada");
    if ($('select[name$=ddlState]').val() != '') {
        SetStatesDropDown(selectedCountryValue, $('select[name$=ddlState] :selected').text());
    }
    var initReseller = null;
    
    if ($('select[name$=ddlPreferredReseller]').val() != '') {
        initReseller = $('select[name$=ddlPreferredReseller] :selected').text().split(': ')[1];
    }
    
    var hideResellers = true;

    if (selectedCountryValue != '') {
        
            for (var i = 0; i < resellerCountries.length; i++) {
                if (resellerCountries[i].countryValue == selectedCountryValue) {
                    listResellers($('select[name$=ddlCountry]').val(), null, initReseller, false);
                    hideResellers = false;
                }
            }
    }
    
    if (hideResellers) {
        hideResellersRow();
    }
}

function checkResellerState(selectedCountryValue, selectedStateValue) {       
    if ($('select[name$=ddlState]').val() != '') {
        var initReseller = $('select[name$=ddlPreferredReseller] :selected').text().split(': ')[1];
        for (var i = 0; i < resellerStates.length; i++) {
            if (selectedCountryValue == resellerStates[i].countryName) {
                for (var j = 0; j < resellerStates[i].states.length; j++) {                    
                    if (resellerStates[i].states[j].stateValue == $('select[name$=ddlState] :selected').val()) {
                        listResellers(selectedCountryValue, selectedStateValue, initReseller, true);
                        hideResellers = false;
                    }
                }
            }
        }
    }
}

function SelectedCountryHasStateDropDown(selectedCountry) {
    for (var i = 0; i < resellerStates.length; i++) {
        if (resellerStates[i].countryName == selectedCountry) {
            return true;
        }
    }

    return false;
}

function ShowStates(isUs) {
    var dropStyle = isUs ? "inline" : "none";
    var textStyle = isUs ? "none" : "inline";

    $('input[name$=txtState]').css("display", textStyle);
    $('select[name$=ddlState]').css("display", dropStyle);
}

function SetStatesDropDown(selectedCountryValue, selectedState) {
    if ($('div[id$=ddlState]').css("display") != "inline" || $('select[name$=ddlState]').title != selectedState) {

        $("select[name$=ddlState]").title = selectedState;
        $("select[name$=ddlState] options").remove();

        for (var i = 0; i < resellerStates.length; i++) {
            if (resellerStates[i].countryName == selectedCountryValue) {
                var stateOptions = '';

                //  Add null option if user is choosing preferred reseller for 1st time
                if (pleaseSelectStr != null) {
                    stateOptions += '<option value="">' + pleaseSelectStr + '</option>';
                }

                for (var j = 0; j < resellerStates[i].states.length; j++) {
                    stateOptions += '<option value="' + resellerStates[i].states[j].stateValue + '">' + resellerStates[i].states[j].stateName + '</option>';
                }
            }
        }

        $("select[name$=ddlState]").html(stateOptions);
        if (selectedState != null) {
            $("select[name$=ddlState]").val(selectedState);
        }
    }
}


function listResellers(selectedCountryValue, selectedState, selectedResellerValue, statesDropDown) {
    
    //  Check that '#preferredResellerRow' is hidden or '#preferredReseller' isn't already showing the selected country's resellers
    if ( $('div[id$=preferredResellerRow]').css("display") != "block" || $('select[name$=ddlPreferredReseller]').title != selectedCountryValue) {
        
        //  Only create the '#preferredReseller' element once
        if ( $('div[id$=preferredResellerRow]').css("display") != "block" ) {
            $('div[id$=preferredResellerRow]').css("display", "block");
            $('select[name$=ddlPreferredReseller]').attr("class", "required");
        }
        //  ...otherwise retitle and strip out the existing options
        else {
            $("select[name$=ddlPreferredReseller]").title = selectedCountryValue;
            $("select[name$=ddlPreferredReseller] options").remove();
        }
        
        //  Iterate over JSON object of current resellers and list as options
        var resellerOptions = '';
        
        pleaseSelectStr = window.pleaseSelectStr || null;
        
        //  Add null option if user is choosing preferred reseller for 1st time
        if ( pleaseSelectStr != null ) {
            resellerOptions += '<option value="">' + pleaseSelectStr + '</option>';
        }
        if (statesDropDown) {
            for (var i = 0; i < resellerStates.length; i++) {
                if (resellerStates[i].countryName == selectedCountryValue) {
                    for (var j = 0; j < resellerStates[i].states.length; j++) {
                        if (resellerStates[i].states[j].stateValue == selectedState) {
                            if (resellerStates[i].states[j].stateResellers.length > 0) {
                                for (var r = 0; r < resellerStates[i].states[j].stateResellers.length; r++) {
                                    resellerOptions += '<option value="' + resellerStates[i].states[j].stateResellers[r].resellerValue + '">' + resellerStates[i].states[j].stateResellers[r].resellerName + '</option>';
                                }
                            } else { hideResellersRow(); }
                        }
                    }
                }
            }
        } else {

            for (var i = 0; i < resellerCountries.length; i++) {
                if (resellerCountries[i].countryValue == selectedCountryValue) {
                    for (var r = 0; r < resellerCountries[i].countryResellers.length; r++) {
                        resellerOptions += '<option value="' + resellerCountries[i].countryResellers[r].resellerValue + '">' + resellerCountries[i].countryResellers[r].resellerName + '</option>';
                    }
                }
            }
        }
        
        $("select[name$=ddlPreferredReseller]").html(resellerOptions);
        
        if (selectedResellerValue != null) {
            $("select[name$=ddlPreferredReseller]").val(selectedResellerValue);
        }

        if ($("input[name$=hidState]").val() != '') {
            alert("setting");
            $("select[name$=dllState]").val($("input[name$=hidState]").val());
        }
    }
    
}


//  Hide the reseller list and remove its required status
function hideResellersRow() {
    //  Hide row from user
    $("div[id$=preferredResellerRow]").css("display", "none");
    //  Remove JS validation trigger
    $("select[name$=ddlPreferredReseller]").attr("class", "");
    //  Strip out existing options
    $("select[name$=ddlPreferredReseller] options").remove();
    //  Add null option to pass server-side validation
    $("select[name$=ddlPreferredReseller]").html('<option value=""></option>');
}

