﻿// This function shows / hides state and postal code if USA is not selected
function ShowHideDependencies(selectedCountry, isOnLoad) {
    if (selectedCountry != "" &&
		selectedCountry != "United States" &&
		selectedCountry != "Canada" &&
		selectedCountry != "Ireland" &&
		selectedCountry != "United Kingdom" &&
		selectedCountry != "France" &&
		selectedCountry != "France (European Territory)")
    {
    	// Disable validators
    	var tbValState = $("[id$='_RequiredFieldValidator7']");
    	tbValState = (tbValState.length == 0) ? $("[id$='_reqStateProv']") : tbValState;
    	if (tbValState.length > 0) {
    		ValidatorEnable(tbValState[0], false);
        }
        var tbValZip = $("[id$='_RequiredFieldValidator8']");
        tbValZip = (tbValZip.length == 0) ? $("[id$='_reqZip']") : tbValZip;
        if (tbValZip.length > 0) {
        	ValidatorEnable(tbValZip[0], false); 
        }

        // hide state and zip divs
        $("[id$='_hidStateProv']").val("");
        $('#divStateProvLabel').hide();
        $('#divStateProv').hide();
        $('#divZipLabel').hide();
        $('#divZip').hide();
        
    } else {
    
        // show state and zip divs
        $('#divStateProvLabel').show();
        $('#divStateProv').show();
        $('#divZipLabel').show();
        $('#divZip').show();

        // Enable state validators for US and Canada
        var tbValState = $("[id$='_RequiredFieldValidator7']");
        tbValState = (tbValState.length == 0) ? $("[id$='_reqStateProv']") : tbValState;
        if (tbValState.length > 0) {
            if (selectedCountry == "United States" || selectedCountry == "Canada") {
            	ValidatorEnable(tbValState[0], true);
            	// Populate Country-based States/Provinces
            	if (!isOnLoad && (isOnLoad != undefined)) {
            		getStatesProvinces(selectedCountry);
            	}
            } else {
				ValidatorEnable(tbValState[0], false);
				// hide state div
				$("[id$='_hidStateProv']").val("");
                $('#divStateProvLabel').hide();
                $('#divStateProv').hide();
            }
        }
        // Enable zip/postcode validators for all
        var tbValZip = $("[id$='_RequiredFieldValidator8']");
        tbValZip = (tbValZip.length == 0) ? $("[id$='_reqZip']") : tbValZip;
        if (tbValZip.length > 0) {
            ValidatorEnable(tbValZip[0], true); 
        }
    }
}

// Hide Country specific controls on PageLoad
function OnLoadShowHideDependencies() {
	var ddlCountry = $("[id$='_ddlCountry']");
	if (ddlCountry.length > 0) {
    	ShowHideDependencies(ddlCountry.val(), true);
    }
}

// Get rid of google toolbar yellow fields
if (window.attachEvent)
    window.attachEvent("onload", setListeners);

function setListeners() {
    inputList = document.getElementsByTagName("INPUT");
    for (i = 0; i < inputList.length; i++) {
        inputList[i].attachEvent("onpropertychange", restoreStyles);
        inputList[i].style.backgroundColor = "";
    }
    selectList = document.getElementsByTagName("SELECT");
    for (i = 0; i < selectList.length; i++) {
        selectList[i].attachEvent("onpropertychange", restoreStyles);
        selectList[i].style.backgroundColor = "";
    }
}

function restoreStyles() {
    if (event.srcElement.style.backgroundColor != "")
        event.srcElement.style.backgroundColor = "";
}

/* Multiline Text box max characters */

function CheckCount(text, length) {
    var maxlength = new Number(length); // Change number to your max length.
    if (text.value.length > maxlength) {
        text.value = text.value.substring(0, maxlength);
        alert(" Only " + maxlength + " characters allowed");
    }
}

/* Zip vs Postcode form label */

addOnloadEvent(ZipLabelCountryChangedFormLoad);

// Restore proper zip label on form load - works with form state persistance
function ZipLabelCountryChangedFormLoad() {
	var ddlCountry = $("[id$='_ddlCountry']");
	if (ddlCountry.length > 0) {
		ZipLabelCountryChanged(ddlCountry.val());
	}
}

// Update zip label
function ZipLabelCountryChanged(selectedCountry) {
    // Retrieve label span
    var labelZip = document.getElementById("lblZip");
    // Check for nulls
    if (labelZip != null) {
        // Display "Postcode" for Ireland and UK
        if (selectedCountry == "Ireland" || selectedCountry == "United Kingdom") {
            labelZip.innerHTML = "Postcode:";
        } else if (selectedCountry == "France" || selectedCountry == "France (European Territory)") {
			labelZip.innerHTML = "Code postal:";
		} else if (selectedCountry == "Germany") {
			labelZip.innerHTML = "PLZ:";
        } else {
            labelZip.innerHTML = "ZIP Code:";
        }
    }
}

// Add onload event without removing existing event handlers
function addOnloadEvent(fnc) {
    if (typeof window.addEventListener != "undefined") {
        window.addEventListener("load", fnc, false);
    } else if (typeof window.attachEvent != "undefined") {
        window.attachEvent("onload", fnc);
    } else {
        if (window.onload != null) {
            var oldOnload = window.onload;
            window.onload = function(e) {
                oldOnload(e);
                window[fnc]();
            };
        }
        else
            window.onload = fnc;
    }
}

// Populate Country-based States/Provinces
function getStatesProvinces(country) {
	// Target control
	var ddlStateProv = $("[id$='_ddlStateProv']");
	ddlStateProv.empty();

	// Retrieve list items from numaraFormData
	if (country == "United States") {
		var stateJson = numaraFormData.usStates;
	} else if (country == "Canada") {
		var stateJson = numaraFormData.canadaStates;
	} else {
		return;
	}

	// Populate list
	var options = [];
	for (var i = 0; i < stateJson.length; i++) {
		options.push('<option value="', stateJson[i].Value, '">', stateJson[i].Text, '</option>');
	}
	ddlStateProv.html(options.join(''));
}

// Server doesn't see updated list items from getStatesProvinces()
// Persist the selected list item in a hidden field
$(document).ready(function() {
	var ddlStateProv = $("[id$='_ddlStateProv']");
	var hidStateProv = $("[id$='_hidStateProv']");

	ddlStateProv.change(function() {
		hidStateProv.val(ddlStateProv.val());
	});
});