﻿//============================================================
//Version:  1.0.1
//============================================================

function CaptchaChange(idBase, field, captchaPath) {
    var curdate = new Date();
	
	if (captchaPath != null && captchaPath != '')
	{
	    captchaPath += "/";
	}
	else
	{
	    captchaPath = "";
	}
    document.getElementById(idBase + field).src = captchaPath + "Captcha.aspx?f=" + field + "&d=" + curdate.getMinutes() + curdate.getSeconds() + curdate.getMilliseconds();
}

function DropDownList_GetSelectedValue(id)
{
    var input = document.getElementById(id);
    var selOpt = input.selectedIndex;
    
    if (selOpt > -1)
    {
        return input.options[selOpt].value;
    }
    else
    {     
        return "";
    }
}

function FormHasChanged(form, includeHidden)
{
	var changed;

	for (var i = 0; i < form.length; i++)
	{
		switch (form.elements[i].type)
		{
			case "checkbox":    
				changed = FormHasChanged_Checkbox(form.elements[i]); 
				break;
			case "hidden":
			    if (includeHidden)
			    {
			        changed = FormHasChanged_Text(form.elements[i]);
                }
                break;
			case "radio":    
				changed = FormHasChanged_Radio(form.elements[i]); 
				break;			
			case "select-multiple":                
				changed = FormHasChanged_SelectMulti(form.elements[i]);            
				break;
			case "select-one":                
				changed = FormHasChanged_SelectOne(form.elements[i]);            
				break;
			case "text":
				changed = FormHasChanged_Text(form.elements[i]);
				break;			
			case "textarea":    
				changed = FormHasChanged_Text(form.elements[i]); 
				break;
		}                  
		if (changed)
		{
			return true;
		}
	}	
	return false;
}

function FormHasChanged_Checkbox(checkBox) 
{
	return !(checkBox.checked == checkBox.defaultChecked);
}

function FormHasChanged_Radio(radioButton) 
{
	return !(radioButton.checked == radioButton.defaultChecked);
}

function FormHasChanged_SelectMulti(selectbox)
{
	for (var i = 0; i < selectbox.options.length; i++) 
	{
		if (selectbox.options[i].selected != selectbox.options[i].defaultSelected) 
		{
			return true;
		}
	}
	return false;
}  

function FormHasChanged_SelectOne(selectbox) 
{
    var defaultIndex = -1;

    for (var i = 0; i < selectbox.options.length; i++) 
	{
		if (selectbox.options[i].defaultSelected)
		{
			defaultIndex = i;
        	break;
    	}
	}
	if (selectbox.size <= 1) 
	{
		if (selectbox.selectedIndex == 0 && defaultIndex == -1)
		{
			return false;
		}
		return !(selectbox.selectedIndex == defaultIndex);
	}  
	else 
	{
		return !(selectbox.selectedIndex == defaultIndex);
	}
}

function FormHasChanged_Text(textBox)  
{
	return !(textBox.value == textBox.defaultValue);
}

function FocusStyle(field, focus)
{
    if (field.className.indexOf("_Error") == -1)
	{
	    if (focus)
	    {	    
	        field.className += "_Focus";
	        if (field.options == false)
	        {
	            field.select();
	        }
	    }
	    else
	    {
		    field.className = field.className.substr(0, field.className.length - 6);
	    }
	}
}

function FormatNumber(input, dec, enforceDecPlaces)
{
    input.value = FormatNumberValue(input.value, dec, enforceDecPlaces);    
}

function FormatNumberValue(value, dec, enforceDecPlaces)
{
    var valueStr = value.toString();

    if (valueStr.length > 0)
    {
        if (isNaN(valueStr) == false)
        {
	        if (dec > 0 && valueStr.indexOf(".") > -1)
	        {
		        var iniLen = 4 + dec;
		        
		        value = parseFloat(valueStr).toFixed(dec);		        
	        }
	        else
	        {
		        var iniLen = 3;
		        
		        value = parseInt(valueStr, 10);		        
	        }
	        if (enforceDecPlaces && dec > 0)
	        {
	            var decNeeded = 0;
	            var decPos = valueStr.indexOf(".");
	            
	            if (decPos == -1)
	            {
	                decNeeded = dec;
	            }
	            else
	            {
	                var decStr = valueStr.substr(decPos + 1, valueStr.length - decPos);
	                
	                if (decStr.length < dec)
	                {
	                    decNeeded = dec - decStr.length;
	                }
	            }
	            if (decNeeded > 0)
	            {
	                if (decPos == -1)
	                {
	                    valueStr += ".";
	                }
	                for (var i = 1; i <= decNeeded; i++)
	                {
	                    valueStr += "0";
	                }
	            }
	        }
	        if (value >= 1000)
	        {
		        //Value is at least 1000 so need to insert commas
		        var start = valueStr.length - iniLen;
		        var output = valueStr.substr(start, iniLen); //grab numbers in the hundreds and decimal places if applicable

		        for (var i = start - 1; i >= 0; i = i - 3)
		        {			
			        if (i > 1)
			        {
				        output = valueStr.substr(i - 2, 3) + "," + output;
			        }
			        else
			        {
				        output = valueStr.substr(0, i + 1) + "," + output;
			        }
		        }
		        if (enforceDecPlaces == false && output.indexOf(".") > -1)
		        {
		            for (var i = output.length - 1; i >= 0; i--)
		            {
		                if (output.substr(i, 1) != "0")
		                {
		                    output = output.substr(0, i + 1);
		                    break;
		                }
		            }
		            if (output.substr(output.length - 1, 1) == ".")
	                {
	                    output = output.substr(0, output.length - 1);
	                }
		        }
    		    
		        return output;
	        }
	    }
    }
	
	return valueStr;
}

function IgnoreEnter(e)
{
    //Prevents ENTER key from triggering a form submission
    //onKeyPress="return IgnoreEnter(event)"
    var key;

    if (window.event)
    {
        key = window.event.keyCode; //IE
    }
    else
    {
        key = e.which; //firefox
    }
    
    return (key != 13);
}

function NMADropDown_Button_Click(elmBaseId)
{
    var button = document.getElementById(elmBaseId + "_Button");
    
    if (button.state == "open")
    {
        document.getElementById(elmBaseId + "_DropDown").style.display = "none";
        button.state = "closed";
    }
    else
    {
        var displayPosDim = new ElementPosDim(elmBaseId + "_Input");
        
        if (button.iFrameSrc.length > 0)
        {
            if (button.iFrameLoaded != "true")
            {
                document.getElementById(elmBaseId + "_IFrame").src = button.iFrameSrc;
                button.iFrameLoaded = "true";
            }
        }
        DisplayElmRelToElm(elmBaseId + "_DropDown", displayPosDim, true, "left", "bottom", 0, -1);
        button.state = "open";
    }
}

function NMADropDown_Button_Focus(elmBaseId, focus)
{
    var elm = document.getElementById(elmBaseId + "_Input");
    
    if (elm.className != "NMADropDown_Input_Error")
    {
        if (focus)
        {
            document.getElementById(elmBaseId + "_Input").className = "NMADropDown_Input_Focus";
        }
        else
        {
            document.getElementById(elmBaseId + "_Input").className = "NMADropDown_Input";
        }
    }
}

function NMADropDown_CheckError(errDivId, elmBaseId)
{
    var elm = document.getElementById(errDivId);

    if (elm != null)
    {
        if (elm.innerHTML != "")
        {
            document.getElementById(elmBaseId + "_Input").className = "NMADropDown_Input_Error";
        }
    }
}

function NMADropDown_Input_Click(elmBaseId)
{
    document.getElementById(elmBaseId + "_Button").focus();
    NMADropDown_Button_Click(elmBaseId);
}

function NMADropDown_Value_Click(elmBaseId, value, text)
{
    var button = document.getElementById(elmBaseId + "_Button");

    document.getElementById(elmBaseId).value = value;
    document.getElementById(elmBaseId + "_Text").innerHTML = text;
    document.getElementById(elmBaseId + "_DropDown").style.display = "none";
    document.getElementById(elmBaseId + "_Button").state = "closed";
}

function RadioList_Clear(radioList)
{
    if (radioList)
    {
        for (var i = 0; i < radioList.length; i++)
        {
            if (radioList[i].checked)
            {
               radioList[i].checked = false;
               break;
            } 
        }
    }
}

function RadioList_GetSelectedValue(input)
{            
    for (var i = 0; i < input.length; i++)
    {
        if (input[i].checked)
        {
            return input[i].value;
        }
    }
    return "";
}

function RegExpCheck(value, pattern, global, caseSensitive)
{
    var regExp = new RegExp(pattern);
    
    regExp.global = global;
    regExp.ignoreCase = caseSensitive;
    
    return regExp.test(value);
}

function RemoveNumberFormat(input)
{
    var value = input.value;
    
	value = value.replace(/,/g, "");
	value = value.replace(/\$/g, "");
	input.value = value;
}

function ValidateConfirmField(confirmVal, srcVal)
{
    if (confirmVal.length > 0)
    {
        if (confirmVal == srcVal)
        {
            return 1;
        }
        else
        {            
            return -2;
        }
    }
    else
    {
        return -1;
    }
}

function ValidateCountry_IsCanada(country)
{
    var countryLw = country.toLowerCase();
    
    if (countryLw == "ca" || countryLw == "canada")
    {
        return true;
    }
    else
    {
        return false;
    }        
}

function ValidateCountry_IsUSA(country)
{
    var countryLw = country.toLowerCase();
    
    if (countryLw == "us" || countryLw == "usa" || countryLw.substr(0, 13) == "united states")
    {
        return true;
    }
    else
    {
        return false;
    }        
}

function ValidationDisplay(result, input, className, errClassName, errDisplayId, errMsg1, errMsg2)
{
    //TextBox and validation flag
    if (result < 0)
    {
        input.className = errClassName;        
    }
    else
    {
        input.className = className;
    }
    ValidationDisplayErrorMsg(result, errDisplayId, errMsg1, errMsg2);
}

function ValidationDisplayErrorMsg(result, errDisplayId, errMsg1, errMsg2)
{
    if (errDisplayId.length > 0)
    {
        if (result < 0)
        {
            if (result == -1)
            {
                document.getElementById(errDisplayId).innerHTML = errMsg1;
            }
            else
            {
                document.getElementById(errDisplayId).innerHTML = errMsg2;
            }
            document.getElementById(errDisplayId).style.display = "block";
        }
        else
        {
            document.getElementById(errDisplayId).innerHTML = "";
            document.getElementById(errDisplayId).style.display = "none";
        }
    }
}


function ValidateDropDownList(id, mandatory)
{
    value = DropDownList_GetSelectedValue(id);
    if (value.length > 0)
    {
        return 1;
    }
    else
    {
        return ValidateMandatory(mandatory);
    }
}

function ValidateEmail(email, mandatory)
{
    if (email.length > 0)
    {
        //Email address present so validate
        var pattern = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";

        if (RegExpCheck(email, pattern, true, false))
        {
            return 1;
        }
        else
        {
            //Email address is not valid
            return -2;
        }
    }
    else
    {
        return ValidateMandatory(mandatory);
    }
}
        
function ValidateMandatory(mandatory)
{
    if (mandatory)
    {
        return -1;
    }
    else
    {
        return 1;
    }
}

function ValidateNumeric(value, mandatory, intOnly)
{
    if (value.length > 0)
    {
        if (isNaN(value) == false)
        {
            if (intOnly == false || value.indexOf(".") == -1)
            {
                return 1;
            } 
        }
        
        return -2;
    }
    else
    {
        return ValidateMandatory(mandatory);
    }
}

function ValidatePhone(phone, mandatory, country)
{
    if (phone.length > 0)
    {
        //Phone/fax number specified so validate
        var phoneNumber = phone.replace(/\.+/g, "");
        
        phoneNumber = phoneNumber.replace(/-+/g, "");
        phoneNumber = phoneNumber.replace(/\s+/g, "");
        phoneNumber = phoneNumber.replace(/\(+/g, "");
        phoneNumber = phoneNumber.replace(/\)+/g, "");
        if (isNaN(phoneNumber) == false)
        {
            if (ValidateCountry_IsCanada(country) || ValidateCountry_IsUSA(country))
            {
                if (phoneNumber.length == 10)
                {
                    return 1;
                }
            }
            else if (phoneNumber.length <= 20)
            {
                return 1;
            }
        }
        
        return -2;
    }
    else
    {
        return ValidateMandatory(mandatory);
    }
}

function ValidatePostalCode(pc, mandatory, country)
{
    if (pc.length > 0)
    {
        if (country == "" || ValidateCountry_IsCanada(country))
        {
            var postalCode = pc.toLowerCase().replace(/\s+/g, "");

            if (postalCode.length == 6)
            {
                if (RegExpCheck(postalCode, "^[a-z][0-9][a-z][0-9][a-z][0-9]$", true, false))
                {
                    return 1;
                }
            }
        }
        
        return -2;
    }
    else
    {
        return ValidateMandatory(mandatory);
    }            
}

function ValidatePostalZipCode(pcZip, mandatory, country)
{
    var ret = ValidatePostalCode(pcZip, mandatory, country);

    if (ret < 0)
    {
        ret = ValidateZipCode(pcZip, mandatory, country);
    }

    return ret;
}

function ValidateStrongPassword(pwd)
{
    if (pwd.length > 0)
    {        
        if (pwd.length >= 8 && pwd.length <= 20)
        {
            if (RegExpCheck(pwd, "^.*[a-z].*$", true, true))
            {
                if (RegExpCheck(pwd, "^.*[A-Z].*$", true, true))
                {
                    if (RegExpCheck(pwd, "^.*[0-9].*$", true, true))
                    {
                        //Contains at least one number character
                        var pattern = "^.*[`\\-=\\[\\]\\\\;',\\./~!@#\\$%\\^&\\*\\(\\)_\\+{}\\|:\"<>\\?].*$";

                        if (RegExpCheck(pwd, pattern, true, true))
                        {
                            return 1;
                        }
                    }
                }
            }
        }

        return -2;
    }
    else
    {
        return -1;
    }
}

function ValidateText(text, mandatory, minLen, maxLen)
{
    if (text.length > 0)
    {
        if (text.length >= minLen && (maxLen == 0 || text.length <= maxLen))
        {
            return 1;
        }
        else
        {
            return -2;
        }
    }
    else
    {
        return ValidateMandatory(mandatory);
    }
}

function ValidateZipCode(zip, mandatory, country)
{
    if (zip.length > 0)
    {
        if (country == "" || ValidateCountry_IsUSA(country))
        {
            var zipCode = zip.toLowerCase();

            if (zipCode.length == 5 || zipCode.length == 10)
            {
                var regExp = new RegExp("^\\d{5}(-\\d{4})?$");
                
                regExp.global = true;
                regExp.ignoreCase = true;
                if (regExp.test(zipCode))
                {
                    return 1;
                }                        
            }
        }

        return -2;
    }
    else
    {
        return ValidateMandatory(mandatory);
    }
}