﻿// JScript File
// Create arrays containing country states
// Note: These arrays could be created dynamically
var arrCountries, arrCountriesName, arrUS, arrCA
arrUS = ["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL",
"GA", "GU", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA",
"ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV",
"NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA",
"PR", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VI", "VA",
"WA", "WV", "WI", "WY",
"-- Armed Forces --", "AA", "AE", "AP"]
arrCA = ["AB", "BC", "MB", "NB", "NL", "NT", "NS", "NU", "ON", "PE", "QC","SK","YT"]
arrCountries =[arrUS, arrCA]
arrCountriesName = ["US", "CA"]


// Function to handle dynamically altering the contents of the State List box
function updateStates(theForm, newDisplay)
{ 
    var CountrySelect, StateSelect, NumEntries, i
    CountrySelect = theForm.Countries
    StateSelect = theForm.States

    // Delete all entries in the cities list box
    for (i = StateSelect.length; i > 0; i--)
    {
        StateSelect.options[i-1] = null
    }

    // Add comment option to State List box
    StateSelect.options[0] = new Option("-- Select --",-1)

    // If state is selected add its cities to the City List box
    if (newDisplay >= 0) 
    {
        NumEntries = arrCountries[newDisplay].length
        for (i = 0; i < NumEntries; i++) 
        {
            StateSelect.options[i+1] = new Option((arrCountries[newDisplay])[i],(arrCountries[newDisplay])[i])
        }
    }
    StateSelect.selected = -1
}

function showResult(theForm)
{ 
    var CountrySelect, StateSelect
    CountrySelect = theForm.Countries
    StateSelect = theForm.States
//    alert(arrCountriesName[CountrySelect.value]);
//    alert(StateSelect.value);
    theForm.StateHiddenField.value = StateSelect.value;
    theForm.CountryHiddenField.value = arrCountriesName[CountrySelect.value];
}

function Validate()
{
    document.getElementById('JavascriptValidator').IsValid = false;
    if(ValidateCompanyInput())
    {
        // 'JavascriptValidator' is a MS validator that we manually set to true or false
        // stop allow or stop poastbacks
        document.getElementById('JavascriptValidator').IsValid = true;
        document.getElementById('Valid').value = ">";
    }
    return false;
}


var obj;

// Creates the XMLHTTP Request object
function getXMLHTTPRequest()
{
	var xRequest=null;
	if (window.XMLHttpRequest)
	{
		xRequest = new XMLHttpRequest();
	}
	else if (typeof ActiveXObject != "undefined")
	{
		xRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xRequest;
}

// Performs a GET to our saveXML.aspx web page with the required variables
function ValidateCompanyInput()
{
    var returnVal = true;
		
	obj=getXMLHTTPRequest();
	if (obj!=null)
	{

	    var companynameID = 'CompanyTextBox'
	    var usernameID = 'UserNameTextBox';
	    var emailaddressID = 'EmailAddressTextBox';
	    var companynameValidatorID = 'CompanyTextBoxValidator';
	    var usernameValidatorID = 'UserNameTextBoxValidator';
	    var emailaddressValidatorID = 'EmailAddressTextBoxValidator';
	    var companyname = "";
	    var username = "";
	    var emailaddress = "";
	    var usernamePresent = false;
	    
	    if(document.getElementById(companynameID) != null)
	    {
	        companyname = document.getElementById(companynameID).value;
	    }
	    
	    if(document.getElementById(usernameID) != null)
	    {
    	    username = document.getElementById(usernameID).value;
    	    usernamePresent = true;
    	}
    	
	    if(document.getElementById(emailaddressID) != null)
	    {
    	    emailaddress = document.getElementById(emailaddressID).value;
    	}
    	
		if(companyname == '' || companyname == null)
		    return false;
		if(emailaddress == '' || emailaddress == null)
		    return false;
	    
	    var emailaddressS = emailaddress;
		obj.onreadystatechange = processResponse;
		if(usernamePresent)
		{
		    obj.open("GET","ValidateNewCompanyInput.aspx?CompanyName=" + companyname + "&Username=" + username + "&EmailAddress=" + emailaddress,false);
		}
		else
		{
		    obj.open("GET","ValidateNewCompanyInput.aspx?CompanyName=" + companyname + "&EmailAddress=" + emailaddress,false);
		}
		obj.send(null);
		
		var answers = obj.responseText.split(',');
		
//		alert(answers);
		
		if(usernamePresent)
		{
    		companyname = answers[0];
	    	username = answers[1];
		    emailaddress = answers[2];
		    
	        if(username == '' || username == null)
	        {
	            display(usernameValidatorID);
	            var usernameValidator = document.getElementById(usernameValidatorID);
	            usernameValidator.innerText = 'Username already in use. Please choose another.';
                document.getElementById(usernameID).value = '';
                returnVal = false;
	        }
		}
		else
		{
    		companyname = answers[0];
		    emailaddress = answers[1];
		}
		
		if(companyname == '' || companyname == null)
		{
		    display(companynameValidatorID);
		    var companyValidator = document.getElementById(companynameValidatorID);
		    companyValidator.innerText = 'Company name already in use. Please choose another.';
            document.getElementById(companynameID).value = '';
            returnVal = false;
		}
		
		// Check valid email address
		if(emailaddressS == "")
		{
		    display(emailaddressValidatorID);
		    var emailaddressValidator = document.getElementById(emailaddressValidatorID);
		    emailaddressValidator.innerText = 'Email address is required';
            returnVal = false;
		}
		else if(emailaddress == '' || emailaddress == null)
		{
//		    display(emailaddressValidatorID);
//		    var emailaddressValidator = document.getElementById(emailaddressValidatorID);
//		    emailaddressValidator.innerText = 'Email address already in use. Please choose another.';
//            document.getElementById(emailaddressID).value = '';
//            returnVal = false;
		}
		else if(!emailcheck(emailaddressS))
		{
		    display(emailaddressValidatorID);
		    var emailaddressValidator = document.getElementById(emailaddressValidatorID);
		    emailaddressValidator.innerText = 'Invalid email address';
            returnVal = false;
		}
		
	    var statesID = 'States';
	    var states = document.getElementById(statesID).value;
	    if(states != null)
	    {
	        var statesValidatorLabelID = 'StatesValidatorLabel';
    	    
	        if(states == -1)
	        {
	            display(statesValidatorLabelID);
	            returnVal = false;
	        }
	        else
	        {
	            hide(statesValidatorLabelID);
	        }
	    }
	    
	    var countriesID = 'Countries';
	    var countries = document.getElementById(countriesID).value;
	    if(countries != null)
	    {
	        var countriesValidatorLabelID = 'CountryValidatorLabel';
    	    
	        if(countries == -1)
	        {
	            display(countriesValidatorLabelID);
	            returnVal = false;
	        }
	        else
	        {
	            hide(countriesValidatorLabelID);
	        }
	    }
	}
	return returnVal;
}

function ValidateChangedContactInfo()
{
    document.getElementById('JavascriptValidator').IsValid = false;
    if(ValidateChangedContactInfoInput())
    {
        // 'JavascriptValidator' is a MS validator that we manually set to true or false
        // stop allow or stop poastbacks
        document.getElementById('JavascriptValidator').IsValid = true;
        document.getElementById('Valid').value = ">";
    }
    return false;
}

function ValidateChangedContactInfoInput()
{
    var returnVal = true;
		
	obj=getXMLHTTPRequest();
	if (obj!=null)
	{

	    var companynameID = 'CompanyTextBox'
	    var usernameID = 'UserNameTextBox';
	    var emailaddressID = 'EmailAddressTextBox';
	    var companynameValidatorID = 'CompanyTextBoxValidator';
	    var usernameValidatorID = 'UserNameTextBoxValidator';
	    var emailaddressValidatorID = 'EmailAddressTextBoxValidator';
	    var companyname = "";
	    var username = "";
	    var emailaddress = "";
	    var usernamePresent = false;
	    
	    if(document.getElementById(companynameID) != null)
	    {
	        companyname = document.getElementById(companynameID).value;
	    }
	    
	    if(document.getElementById(usernameID) != null)
	    {
    	    username = document.getElementById(usernameID).value;
    	    usernamePresent = true;
    	}
    	
	    if(document.getElementById(emailaddressID) != null)
	    {
    	    emailaddress = document.getElementById(emailaddressID).value;
    	}
	    
	    var emailaddressS = emailaddress;
		obj.onreadystatechange = processResponse;
		if(usernamePresent)
		{
		    obj.open("GET","ValidateChangedCompanyInput.aspx?CompanyName=" + companyname + "&Username=" + username + "&EmailAddress=" + emailaddress,false);
		}
		else
		{
		    obj.open("GET","ValidateChangedCompanyInput.aspx?CompanyName=" + companyname + "&EmailAddress=" + emailaddress,false);
		}
		obj.send(null);
		
		var answers = obj.responseText.split(',');
		
		if(usernamePresent)
		{
    		companyname = answers[0];
	    	username = answers[1];
		    emailaddress = answers[2];
		    
	        if(username == '' || username == null)
	        {
	            display(usernameValidatorID);
	            var usernameValidator = document.getElementById(usernameValidatorID);
	            usernameValidator.innerText = 'Please choose another.';
                document.getElementById(usernameID).value = '';
                returnVal = false;
	        }
		}
		else
		{
    		companyname = answers[0];
		    emailaddress = answers[1];
		}
		
		if(companyname == '' || companyname == null)
		{
		    display(companynameValidatorID);
		    var companyValidator = document.getElementById(companynameValidatorID);
		    companyValidator.innerText = 'Please choose another.';
            document.getElementById(companynameID).value = '';
            returnVal = false;
		}
		
		// Check valid email address
		if(emailaddressS == "")
		{
		    display(emailaddressValidatorID);
		    var emailaddressValidator = document.getElementById(emailaddressValidatorID);
		    emailaddressValidator.innerText = 'Email address is required';
            returnVal = false;
		}
		else if(emailaddress == '' || emailaddress == null)
		{
		    display(emailaddressValidatorID);
		    var emailaddressValidator = document.getElementById(emailaddressValidatorID);
		    emailaddressValidator.innerText = 'Please choose another.';
            document.getElementById(emailaddressID).value = '';
            returnVal = false;
		}
		else if(!emailcheck(emailaddressS))
		{
		    display(emailaddressValidatorID);
		    var emailaddressValidator = document.getElementById(emailaddressValidatorID);
		    emailaddressValidator.innerText = 'Invalid email address';
            returnVal = false;
		}
		
	    var statesID = 'States';
	    var states = document.getElementById(statesID).value;
	    if(states != null)
	    {
	        var statesValidatorLabelID = 'StatesValidatorLabel';
    	    
	        if(states == -1)
	        {
	            display(statesValidatorLabelID);
	            returnVal = false;
	        }
	        else
	        {
	            hide(statesValidatorLabelID);
	        }
	    }
	    
	    var countriesID = 'Countries';
	    var countries = document.getElementById(countriesID).value;
	    if(countries != null)
	    {
	        var countriesValidatorLabelID = 'CountryValidatorLabel';
    	    
	        if(countries == -1)
	        {
	            display(countriesValidatorLabelID);
	            returnVal = false;
	        }
	        else
	        {
	            hide(countriesValidatorLabelID);
	        }
	    }
	}
	return returnVal;
}

function ValidateNewUser()
{
    document.getElementById('JavascriptValidator').IsValid = false;
    if(ValidateNewUserInput())
    {
        // 'JavascriptValidator' is a MS validator that we manually set to true or false
        // stop allow or stop poastbacks
        document.getElementById('JavascriptValidator').IsValid = true;
        document.getElementById('Valid').value = ">";
        return true;
    }
    return false;
}

function ValidateNewUserInput()
{
    var returnVal = true;
		
	obj=getXMLHTTPRequest();
	if (obj!=null)
	{

	    var usernameID = 'UserNameTextBox';
	    var usernameValidatorID = 'UserNameTextBoxValidator';
	    var username = "";
	    
	    if(document.getElementById(usernameID) != null)
	    {
    	    username = document.getElementById(usernameID).value;
    	}
    	
		obj.onreadystatechange = processResponse;
        obj.open("GET","ValidateNewUserInput.aspx?Username=" + username,false);
		obj.send(null);
		
		username = obj.responseText;
		
        if(username == '' || username == null)
        {
            display(usernameValidatorID);
            var usernameValidator = document.getElementById(usernameValidatorID);
            usernameValidator.innerText = 'Please choose another.';
            document.getElementById(usernameID).value = '';
            returnVal = false;
        }
        else
        {
            var checkBox = document.getElementById('AgreeToTermsOfUseCheckBox');
    
            if(checkBox.checked == true)
                return true;
        
            alert("Please read the terms or service agreement and check the box.");
    
            return false;
        }
	}
	return returnVal;
}

function ValidateChangeUser()
{
    document.getElementById('JavascriptValidator').IsValid = false;
    if(ValidateNewUserInput())
    {
        // 'JavascriptValidator' is a MS validator that we manually set to true or false
        // stop allow or stop poastbacks
        document.getElementById('JavascriptValidator').IsValid = true;
        document.getElementById('Valid').value = ">";
        return true;
    }
    return false;
}

function ValidateChangeUserInput()
{
    var returnVal = true;
		
	obj=getXMLHTTPRequest();
	if (obj!=null)
	{

	    var usernameID = 'UserNameTextBox';
	    var usernameValidatorID = 'UserNameTextBoxValidator';
	    var username = "";
	    
	    if(document.getElementById(usernameID) != null)
	    {
    	    username = document.getElementById(usernameID).value;
    	}
    	
		obj.onreadystatechange = processResponse;
        obj.open("GET","ValidateNewUserInput.aspx?Username=" + username,false);
		obj.send(null);
		
		username = obj.responseText;
		
        if(username == '' || username == null)
        {
            display(usernameValidatorID);
            var usernameValidator = document.getElementById(usernameValidatorID);
            usernameValidator.innerText = 'Please choose another.';
            document.getElementById(usernameID).value = '';
            returnVal = false;
        }
	}
	return returnVal;
}


// Performs a GET to our saveXML.aspx web page with the required variables
function ValidateOldPassword()
{
    var returnVal = true;
		
	obj=getXMLHTTPRequest();
	if (obj!=null)
	{
	    var OldPasswordTextBoxValidatorID = 'OldPasswordTextBoxValidator';
	    var typedOldPassword = document.getElementById('OldPasswordTextBox').value;
	    var userID = document.getElementById('UserIDHiddenField').value;
	    
	    if(typedOldPassword == null || typedOldPassword == "")
	    {
		    var companyValidator = document.getElementById('OldPasswordTextBoxValidator');
		    companyValidator.value = 'Please enter the current password';
            return false;
	    }
	    
		obj.onreadystatechange = processResponse;
		obj.open("GET","ValidateOldPassword.aspx?UserID=" + userID + "&Password=" + typedOldPassword,false);
		obj.send(null);
		
		var password = obj.responseText;
		
		if(password == '' || password == null)
		{
		    display('OldPasswordTextBoxValidator');
		    var companyValidator = document.getElementById('OldPasswordTextBoxValidator');
		    companyValidator.innerText = 'Incorrect password';
            returnVal = false;
		}
		
		if(document.getElementById('NewPasswordTextBox').value != document.getElementById('NewPasswordTextBox1').value)
		{
		    display('PasswordMisMatchLabelValidator');
            returnVal = false;
		}
	}

    document.getElementById('JavascriptValidator').IsValid = false;
    if(	returnVal)
    {
        // 'JavascriptValidator' is a MS validator that we manually set to true or false
        // stop allow or stop poastbacks
        document.getElementById('JavascriptValidator').IsValid = true;
        document.getElementById('Valid').value = "!";
    }
	
	return returnVal;
}

/**
 * DHTML email validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */

function emailcheck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    return false
		 }

 		 return true					
	}
	
	
// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}
function trim(s)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not a whitespace, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (c != " ") returnString += c;
    }
    return returnString;
}
function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone)
{
    var bracket=3
    strPhone=trim(strPhone)
    if(strPhone.indexOf("+")>1) return false
    if(strPhone.indexOf("-")!=-1)bracket=bracket+1
    if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)return false
    var brchr=strPhone.indexOf("(")
    if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")return false
    if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false
    s=stripCharsInBag(strPhone,validWorldPhoneChars);
    return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function display(element) {
    if (document.layers && document.layers[element] != null)
        document.layers[element].visibility = 'visible';
    else if (document.all)
        document.all[element].style.visibility = 'visible';
}
function hide(element) {
    if (document.layers && document.layers[element] != null)
        document.layers[element].visibility = 'hidden';
    else if (document.all)
        document.all[element].style.visibility = 'hidden';
}

// Process the HTTP Response when it is complete
function processResponse()
{
	if (obj.readyState == 4)
	{
		if (obj.status == 200)
		{
//	        alert("got ajax request");
			var retval=obj.responseText;
			if (document.getElementById("messageData")!=null)
			{
//				document.getElementById("messageData").innerHTML = retval;
			}
			else
			{
//				alert("Error retrieving data!");
			}
		}
	}
}

function updateAccountListBox(theForm, companyID)
{
    document.getElementById('CompanyIDHiddenField').value  = companyID;
    document.getElementById('EditContactButtonID').disabled = false;
    document.getElementById('ChangePasswordButtonID').disabled = false;
    document.getElementById('EditBillingButtonID').disabled = false;
    document.getElementById('RemoveAccountButtonID').disabled = false;
}


function InitStateAndCountry(state,country)
{
    if(country != "")
    {
        var i;
        for(i = 0;i < arrCountriesName.length;i++)
        {
            if(country == arrCountriesName[i])
            {
                theForm.Countries.SelectedIndex = i + 1;
                selectedCountryIndex = i;
            }
        }
        theForm.Countries.options[theForm.Countries.SelectedIndex].selected = true;
        updateStates(theForm,0);
        
        theForm.States.SelectedIndex = -1;
        
        if(state != "")
        {
            for(i = 0;i < arrCountries[selectedCountryIndex].length;i++)
            {
                if(state == ((arrCountries[selectedCountryIndex])[i]))
                {
                    theForm.States.SelectedIndex = i + 1;
                    break;
                }
            }
            if(theForm.States.SelectedIndex >= 0)
                theForm.States.options[theForm.States.SelectedIndex].selected = true;
        }
    }
}

function RefreshParent()
{
    window.parent.location.href = window.parent.location.href;
}


