//RegExp for e-mail address validation
re1 = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})$/;

//RegExp for web address validation
re5 = /^[Ww]{3}\.\S+\.\S+$/;

//RegExp for simple address validation - no PO Box addresses
re4 = /^.*[Pp]{1}[\. ]*[Oo]{1}[\. ]*[Bb]{1}[Oo]{1}[Xx]{1}.*$/;

//RegExp for zip codes
re2 = /^\d{5}$/;

//RegExp for names
re3 = /^[a-zA-Z].*$/;

//RegExp for phone numbers (currently not in use)
//re3 = /^\(?\d{3}([-\. /]|(\)|\) ))?\d{3}[-\. ]?\d{4}$/;


function IsNumeric(val)
{
	//Uses a Regular Expression to determine if a string represents a numeric value

	reNum = /^\d+[\.]?\d*$/;

    if (reNum.test(val))
    	return true;
    else
		return false;
}

function IsDate(month, day, year){
	var retVal = false;

	var nMonth = new Number(month);
	var nDay = new Number(day);
	var nYear = new Number(year);
	var isLeapYear = false;
	var strMonths30 = "4, 6, 9, 11";
	var strMonths31 = "1, 3, 5, 7, 8, 10, 12";
	var dt = new Date();
	var isDayValid = false;
	var isStep1Valid = false;

	//STEP 1: Confirm that the month, day and year components are valid
	if(!nMonth.NaN && ((nMonth >= 1) && (nMonth <= 12))){
		if(!nDay.NaN && ((nDay >= 1) && (nDay <= 31))){
			if(!nYear.NaN && ((nYear >= 1900) && (nYear < dt.getFullYear()))){

				//STEP 2: Confirm that the day provided is appropriate for the given month
				if(nMonth == 2){
					isLeapYear = !(nYear % 4) ? true : false;

					if(isLeapYear)
						isDayValid = nDay <= 29 ? true : false;
					else
						isDayValid = nDay <= 28 ? true : false;
				}
				else if(strMonths30.indexOf(nMonth.toString()) >= 0)
					isDayValid = nDay <= 30 ? true : false;
				else if(strMonths31.indexOf(nMonth.toString()) >= 0)
					isDayValid = nDay <= 31 ? true : false;
				else
					isDayValid = false;
			}
		}
	}

	retVal = isDayValid;

	return retVal;
}

function writeDays()
{
	htmlText = "\n<select name='selDay' id='selDay' class='stdForm'>\n";
          htmlText += "\n<option value='0'>dd</option>";

    for(x = 1; x <= 31; x++)
    {
    	if (x < 10)
        	strVal = "0" + x;
    	else
        	strVal = x;

    	htmlText += "<option value='" + x + "'>" + strVal + "</option>\n";
    }

    htmlText += "</select>";

    return htmlText;
}

function writeMonths()
{
	htmlText = "\n<select name='selMonth' id='selMonth' class='stdForm'>\n";
          htmlText += "\n<option value='0'>mm</option>";

    for(x = 1; x <= 12; x++)
    {
    	if (x < 10)
        	strVal = "0" + x;
        else
        	strVal = x;

    	htmlText += "<option value='" + x + "'>" + strVal + "</option>\n";
    }

    htmlText += "</select>";

    return htmlText;
}

function writeYears(maxYear, minYear, order)
{
	//Determine the range of years to include in the DDL (18 - 100)
	htmlText = "\n<select name='selYear' id='selYear' class='stdForm'>\n";
          htmlText += "\n<option value='0'>yyyy</option>";

	if(order == "DESC"){
		for(x = maxYear; x >= minYear; x--)
			htmlText += "<option value='" + x + "'>" + x + "</option>\n";
	}
	else{
		for(x = minYear; x <= maxYear; x++)
			htmlText += "<option value='" + x + "'>" + x + "</option>\n";
	}

    htmlText += "</select>";

    return htmlText;
}

function setBkgColor(objectID,strColor)
{
 	document.getElementById(objectID).style.backgroundColor = strColor;
}

function selectDDLOptionByValue(ddlName,selectValue)
{
	//Locates a DDL option by "value" and selects it

    if(document.getElementById(ddlName))
    {
    	ddlOptions = document.getElementById(ddlName);

        for (x = 0; x < ddlOptions.length; x++)
        {
        	if(ddlOptions.options[x].value == selectValue)
            {
            	ddlOptions.options[x].selected = true;
                break;
            }
        }
    }
}

function selectDDLOptionByText(ddlName,selectText)
{
	//Locates a DDL option by its "text" string and selects it
    if(document.getElementById(ddlName))
    {
        ddlOptions = document.getElementById(ddlName);

        for (x = 0; x < ddlOptions.length; x++)
        {
        	if(ddlOptions.options[x].text == selectText)
            {
            	ddlOptions.options[x].selected = true;
                break;
            }
        }
    }
}

function writeNumberedOptions(startVal, endVal, skipVal, textBefore, textAfter)
{
	//Writes <option> tags for lists that use a range of sequential numbers as values
    /*
    	startVal	- The starting number to include in the option list
        endVal 		- The last number to include in the option list
        skipVal     - Specified the increment amount between each number
        textBefore	- The displayable text to print before the number
        textAfter	- The displayable text to display after the number
    */
	var htmlText = "\n";

    for(x = startVal; x <= endVal; x += skipVal)
    {
    	if (x < 10)
        	strVal = "0" + x;
        else
        	strVal = x;

    	htmlText += "<option value='" + strVal + "'>" + textBefore + strVal + textAfter + "</option>\n";
    }

    return htmlText;
}

//Preloader Code

    function MM_swapImgRestore() { //v3.0
      var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
    }
    function MM_preloadImages() { //v3.0
      var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
    }

    function MM_findObj(n, d) { //v4.01
      var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
      if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
      for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
      if(!x && d.getElementById) x=d.getElementById(n); return x;
    }

    function MM_swapImage() { //v3.0
      var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
       if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
    }
