/**
 * Copyright (C) 2002-2003, CodeHouse.com. All rights reserved.
 * CodeHouse(TM) is a registered trademark.
 *
 * THIS SOURCE CODE MAY BE USED FREELY PROVIDED THAT
 * IT IS NOT MODIFIED OR DISTRIBUTED, AND IT IS USED
 * ON A PUBLICLY ACCESSIBLE INTERNET WEB SITE.
 *
 * Script Name: Cool Redirect
 *
 * You can obtain this script at http://www.codehouse.com
 */

function coolRedirect(url, msg)
{
   var TARG_ID = "countDown";
   var DEF_MSG = "Times up...";

   if( ! msg ) { msg = DEF_MSG; }
   if( ! url ) { throw new Error('You didn\'t include the "url" parameter'); }
   var e = document.getElementById(TARG_ID);

   if( ! e )
   {
      throw new Error('"COOL_REDIRECT" element id not found');
   }

   var cTicks = parseInt(e.innerHTML);

   var timer = setInterval(function()
   {
      if( cTicks )
      {
         e.innerHTML = --cTicks;
      }
      else
      {
         clearInterval(timer);
         document.body.innerHTML = msg;
         location = url;	  
      }

   }, 1000);
}

//=== JW
function pop_window( url, width, height )
{
	var w = screen.width;
	var h = screen.height;
	var leftPos = (w-width)/2;
	var topPos = (h-height)/2;
	win		= window.open( url,'','width='+width+',height='+height+',top='+topPos+',left='+leftPos+',resizable=no,scrollbars=no,menubar=no,toolbar=no,directories=no,location=no,status=no');
}

//=== FORM VALIDATION FUNCTIONS ===============================================

function trim(str)
{
	return str.replace(/^\s+|\s+$/g, '');
}

function isNumeric(sText)
{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}

   
function formValidateNumeric( elem, elemImg, minLen, maxLen, required, styleOK, styleERR, errMsg, formSubmit )
{
	alert();
	var numericExpression = /^[0-9-\s]+$/;
	if ( elem.value.match( numericExpression ) )
	{
		if ( ( elem.value.length > minLen ) && ( elem.value.length < maxLen ) )
		{ return formSubmit; }
		else
		{
			return false;
		}
	}
	else
	{
		if ( required )
		{
			return false;
		}
		else { return formSubmit; }
	}
}

function formValidateAlpha( elem, elemImg, minLen, maxLen, required, styleOK, styleERR, errMsg, formSubmit )
{
	var alphaExp = /^[a-zA-Z-'\s]+$/;
	if ( elem.value.match( alphaExp ) )
	{
		if ( ( elem.value.length > minLen ) && ( elem.value.length < maxLen ) )
		{ return formSubmit; }
		else
		{
			return false;
		}
	}
	else
	{
		if ( required )
		{
			return false;
		}
		else { return formSubmit; }
	}
}

function formValidateNotEmpty( elem, elemImg, minLen, maxLen, required, styleOK, styleERR, errMsg, formSubmit )
{
	if ( elem.value.length != 0 )
	{
		if ( ( elem.value.length > minLen ) && ( elem.value.length < maxLen ) )
		{ return formSubmit; }
		else
		{
			return false;
		}
	}
	else
	{
		if ( required )
		{
			return false;
		}
		else { return formSubmit; }
	}
}

function consecutiveNumbers( numberString )
{
	var retval = false;
	var consecutiveExp = /000000/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /111111/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /222222/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /333333/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /444444/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /555555/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /666666/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /777777/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /888888/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /999999/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	return retval;
}

function formValidateAlphaNumeric( elem, elemImg, minLen, maxLen, required, styleOK, styleERR, errMsg, formSubmit )
{
	var alphaExp = /^[0-9a-zA-Z-\s\/]+$/;
	if ( elem.value.match( alphaExp ) )
	{
		if ( ( elem.value.length > minLen ) && ( elem.value.length < maxLen ) )
		{ return formSubmit; }
		else
		{
			alert( errMsg );
			return false;
		}
	}
	else
	{
		if ( required )
		{
			alert( errMsg );
			return false;
		}
		else { return formSubmit;  }
	}
}

function formValidateMobileNumber( elem, elemImg, minLen, maxLen, required, styleOK, styleERR, errMsg, formSubmit )
{
	var alphaExp = /^[0-9a-zA-Z-\s\/]+$/;
	var mobilePrefixExp = /\b04/;
	if ( elem.value.match( alphaExp ) )
	{
	if ( ( elem.value.length > minLen ) && ( elem.value.length < maxLen ) && ( consecutiveNumbers(elem.value) == false ) && ( elem.value.match(mobilePrefixExp) == '04' ) && (isNumeric(elem.value) == true) )
		{
			return formSubmit;
		}
		else
		{
			alert(errMsg);
			return false;
		}
	}
	else
	{
		if ( required )
		{
			alert(errMsg); 
			return false;
		}
		else { return formSubmit;  }
	}

}

function formValidatePhoneNumber( phoneElem, phoneElemImg, phoneACElem, required, StyleOK, styleERR, errMsg,formSubmit )
{
	var isEmptyPhoneNumber = false;
	var isEmptyPhoneAC = false;
	var isValidPhoneNumber = true;
	var isValidPhoneAC = true;
	var isBothEmpty = false;
	if ( phoneElem.value == '') { isEmptyPhoneNumber = true; }
	if ( phoneACElem.value == '') { isEmptyPhoneAC = true; }
	if ( isEmptyPhoneNumber && isEmptyPhoneAC ) { isBothEmpty = true; }
	if ( phoneElem.value.length != 8 ) { isValidPhoneNumber = false;  }
	if ( isNumeric(phoneElem.value) == false ) {isValidPhoneNumber = false;  } // match numeric
	if ( consecutiveNumbers(phoneElem.value) == true ) {isValidPhoneNumber = false;  }
	if ( phoneACElem.value == '') { isEmptyPhoneAC = true; }
	if ( phoneACElem.value.length != 2) { isValidPhoneAC = false; }
	if ( phoneACElem.value.charAt(0) != '0' ) { isValidPhoneAC = false; } // area code must start with '0'
	if ( ((isValidPhoneNumber == true) && (isValidPhoneAC == true)) || (isBothEmpty == true) )
		{
			eval('document.lead.'+phoneElemImg+'_img.src = "images/mandatory.gif";');
			return formSubmit;
		}
		else
		{
			eval('document.lead.'+phoneElemImg+'_img.src = "images/mandatory_failed.gif";');
			return false;
		}
}

function formValidateEmail( elem, elemImg, required, styleOK, styleERR, errMsg, formSubmit )
{
	var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	if( elem.value.match( emailExp ) )
	{ return formSubmit; }
	else
	{
		if ( required )
		{
			alert( errMsg );
			return false;
		}
		else { return formSubmit; }
	}
}

function formValidatePrice( elem, elemImg, minLen, maxLen, required, styleOK, styleERR, errMsg )
{
	var numericExpression = /^$([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(\.[0-9]{1,2})?/; // /^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/;
	if ( elem.value.match( numericExpression ) )
	{
		if ( ( elem.value.length > minLen ) && ( elem.value.length < maxLen ) )
		{
			eval('document.lead.'+elemImg+'_img.src = "images/mandatory.gif";');
 			return formSubmit;
		}
		else
		{
			eval('document.lead.'+elemImg+'_img.src = "images/mandatory_failed.gif";');
			return false;
		}
	}
	else
	{
		if ( required )
		{
			eval('document.lead.'+elemImg+'_img.src = "images/mandatory_failed.gif";');
			return false;
		}
		else { return formSubmit; }
	}
}

function formValidatesSelect( elem, elemImg, defaultOption, required, styleOK, styleERR, errMsg, formSubmit )
{
	if ( required )
	{
	//	alert( 'elem.selectedIndex = '+ elem.selectedIndex );
		if ( elem.selectedIndex == defaultOption )
		{
			alert( errMsg );
			return false;
		}
		else { return formSubmit; }
	}
	else { return formSubmit; }
}

function formValidatesChecked( elem, elemImg, defaultOption, required, styleOK, styleERR, errMsg, formSubmit )
{
	if ( required )
	{
		if ( !elem.checked )
		{
		//	alert( errMsg );
			return false;
		}
		else { return formSubmit; }
	}
	else { return formSubmit; }
}

