

// QueryString processing arrays
QueryString.keys = new Array();
QueryString.values = new Array();


/*****************************************************
	Procedure:		QueryString
	Author:			Cat Milea
	Created:		9/18/02
	Description:	This function gets querystring variable 
	              	from querystring array
*****************************************************/
function QueryString(key)
{
  var value = null;
  QueryString_Parse();
  if (QueryString.keys)
    for (var i = 0; i < QueryString.keys.length; i++)
    {
	    if (QueryString.keys[i] == key)
	    {
		    value = QueryString.values[i];
		    break;
	    }
    }
  return value;
}

/*****************************************************
	Procedure:		QueryString_Parse
	Author:			Cat Milea
	Created:		9/18/02
	Description:	This function parses querystring to get 
	              	name/value pairs.
*****************************************************/
function QueryString_Parse()
{
  var query = window.location.search.substring(1);
  var pairs = query.split("&");
  
  for (var i=0; i < pairs.length; i++)
  {
	  var pos = pairs[i].indexOf('=');
	  if (pos >= 0)
	  {
		  var argname = pairs[i].substring(0,pos);
		  var value = pairs[i].substring(pos+1);
		  QueryString.keys[QueryString.keys.length] = argname;
		  QueryString.values[QueryString.values.length] = value;		
	  }
  }
}


/**************************************************************************************
	Procedure:		Cookie Processing
	Author:			  http://www.quirksmode.org/js/cookies.html (found by Alex)
	Created:		  03/22/05
	Description:	Cookies - all u need to know about them
***************************************************************************************/
function createCookie(name, value, days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime() + (days*24*60*60*1000));
	  createCookieByDate(name, value, date);
	}
	else 
  	createCookieByDate(name, value, null);
}

function createCookieByDate(name, value, cDate)
{
	if (cDate)
	{
		var expires = "; expires=" + cDate.toGMTString();
	}
	else var expires = "";
	document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i = 0; i < ca.length; i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') 
			c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0) 
			return c.substring(nameEQ.length, c.length);
	}
	return null;
}

function eraseCookie(name)
{
	createCookie(name, "", -1);
}

/**************************************************************************************
	Procedure:		  randomRedirect
	Author:			  Alex Zlochevsky
	Created:		  07/03/06
	Description:	Randomly redirect amoung an infinite number of pages.
***************************************************************************************/

function randomRedirect(arUrls)
{
	var result = null;
	if (arUrls)
	{
		if (arUrls[0].length > 1)
		{
			var rnd = Math.round(100 * Math.random());
			var piece = Math.round(100 / arUrls.length);
			var sum = piece;
			for (var i = 0; i < arUrls.length - 1; i++)
			{
				if (rnd <= sum)
				{
					result = arUrls[i];
					break;
				}
                sum += piece;
			}
			if (!result)
			  result = arUrls[arUrls.length - 1];
	    }
	    else
	      result = arUrls[0];

	}
	return result;
}

function checkForm(form)
{
	var fname = form.firstName;
	var lname = form.lastName;
	var email = form.email;
    var phone = form.phone;
	var msg = '';
	var obj = null;

	if(fname.value == "" || lname.value == "")
	{
		msg += "- your name is empty.\n";
		obj = fname;
	}
	if(email.value == "")
	{
		msg += "- your email is empty.\n";
		if (!obj)
		  obj = email;
	}
	if(!checkEmail(email.value))
	{
		msg += "- your email address format is not correct.\n";
		if (!obj)
		  obj = email;
	}
	if(phone.value == "")
	{
		msg += "- your phone number is empty.\n";
		if (!obj)
		  obj = phone;
	}
	if (msg != '')
	{
	  alert('The following error(s) occurred:\n\n' + msg + '\nPlease correct and press the "send my request" button again.');
      if (obj)
  	    obj.focus();
  	  return false;
	}
}
/****************************************************************************

     * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),

     * http://javascript.internet.com

*****************************************************************************/

function checkEmail(emailStr) 
{
   if (emailStr.length == 0) 
   {
       return true;
   }

   var emailPat=/^(.+)@(.+)$/;
   var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
   var validChars="\[^\\s" + specialChars + "\]";
   var quotedUser="(\"[^\"]*\")";
   var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
   var atom=validChars + '+';
   var word="(" + atom + "|" + quotedUser + ")";
   var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
   var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
   var matchArray=emailStr.match(emailPat);
   if (matchArray == null) 
   {
       return false;
   }

   var user=matchArray[1];
   var domain=matchArray[2];

   if (user.match(userPat) == null) 
   {
       return false;
   }

   var IPArray = domain.match(ipDomainPat);
   if (IPArray != null) 
   {
       for (var i = 1; i <= 4; i++) 
       {
          if (IPArray[i] > 255) 
          {
            return false;
          }
       }
       return true;
   }
   var domainArray=domain.match(domainPat);
   if (domainArray == null) 
   {
       return false;
   }

   var atomPat=new RegExp(atom,"g");
   var domArr=domain.match(atomPat);
   var len=domArr.length;
   if ((domArr[domArr.length-1].length < 2) || (domArr[domArr.length-1].length > 3)) 
   {
       return false;
   }
   if (len < 2) 
   {
       return false;
   }
   return true;
}
    

/**************************************************************************************
	Procedure:		  clearDefault
	Author:			  Chris Jones
	Created:		  10/09/06
	Description:	Clears the default value of a text input.
***************************************************************************************/


	function clearDefault(el)
	{
	  if (el.defaultValue==el.value) 
		el.value = "";
	}
