// JavaScript Document

function wordCounter(field, maxWords)
{
	var wordArray = field.value.replace(/  /g, " ").split(" ");
	var numWords = wordArray.length;
	var textOutput = "";
	
	if (parseInt(numWords) >= parseInt(maxWords))
	{
		for (count = 0; count < maxWords; count++)
		{
			textOutput += wordArray[count] + " ";
		}
		field.value = textOutput;
	}

	return false;
}

function openWindow(currPage, winName, width, height)
{
	if (currPage != "")
	{
		useWidth = width;
		useHeight = height;
		
		if (useWidth == "" || useWidth == 0) { useWidth=640; }
		if (useHeight == "" || useHeight == 0) { useHeight=640; }
		
		style = "scrollbars=yes,menubar=no,height=" + useHeight + ",width=" + useWidth + ",resizable=yes,toolbar=no,location=no,status=yes";
		winObj = window.open(currPage, winName, style);

		if (winObj != null && winObj.focus != null)
		{
			winObj.focus();
		}
	}
}

function submitPopup(myform, height, width, scrollbars )
{
		if (! window.focus)return true;
		var d = new Date();
		
		windowname = d.getTime();
		window.open('', windowname, 'width=' + width + ',height=' + height +',left=400,top=100,status=yes,location=no,resizable=yes,scrollbars=' + scrollbars);
		myform.target=windowname;
		return true;
} 

function submitForm(formName)
{
	var currForm;
	
	eval("currForm = document." + formName);
	
	if (currForm && currForm.submit)
	{
		currForm.submit();
	}
	
	return;
}

function createDatePicker(formName, fieldName, yearScroller, timeComp)
{
	var calendarObj = new calendar2(document.forms[formName].elements[fieldName]);
	calendarObj.year_scroll = yearScroller;
	calendarObj.time_comp = timeComp;

	return calendarObj;
}

function confirmAndSubmitForm(formName, fromFldName, toFldName)
{
	var fromFld;
	var toFld;
	
	if (fromFldName != "" && toFldName != "")
	{	
		// get from and to date fields
		eval("fromFld = document.forms['" + formName + "'].elements['" + fromFldName + "'];");
		eval("toFld = document.forms['" + formName + "'].elements['" + toFldName + "'];");
		
		if (fromFld != null && toFld != null)
		{
			fromDate = new Date(fromFld.value);
			toDate = new Date(toFld.value);
	
			// if from date after to date, display error, else submit form
			if (fromDate > toDate)
			{
				alert("The 'to' date must be on or after the 'from' date.");
			}
			else
			{
				submitForm(formName);
			}
		}
	}

}

function isLeap(currYear)
{
	retValue = false;

	// any year divisible by 4 except those divisible by 100 but
	// not by 400 are leap years.
	if (currYear % 400 == 0)
	{
		retValue = true;
	}
	else if (currYear % 4 == 0)
	{
		retValue = true;
	}

	return retValue;
}

function isZip(fieldObject)
{
	var currForm;
	var countryObj;
	var countryText;

	currForm = fieldObject.form;
	countryObj = currForm.country;
	countryText = countryObj.options[countryObj.selectedIndex].text;

	fldValue = fieldObject.value;
	fldValue = fldValue.replace(/ /g, "");
	fldValue = fldValue.replace(/\./g, "");
	fldValue = fldValue.replace(/\+/g, "");
	fldValue = fldValue.replace(/\-/g, "");
	fldValue = fldValue.replace(/\)/g, "");
	fldValue = fldValue.replace(/\(/g, "");
	strlen = fldValue.length;

	fldTest = isNaN(fldValue);
	if (countryText != "United States" && countryText != "USA")
	{
		// do nothing
	}
	else if (fldValue == "")
	{
		fieldObject.value = "";
	}
	else if (fldValue != "" && ((strlen != 5 && strlen != 9)|| fldTest == true))
	{
		alert("Please enter the correct Zip Code.");
		fieldObject.value = "";
		fieldObject.select();
		fieldObject.focus();
	}
	else if (fldValue != "" && (strlen == 9 || fldTest ==true))
	{
		fieldObject.value = fldValue.substring(0,5) + "-" + fldValue.substring(5);
	}
			
}

function isZipOnly(fieldObject)
{
	fldValue = fieldObject.value;
	fldValue = fldValue.replace(/ /g, "");
	fldValue = fldValue.replace(/\./g, "");
	fldValue = fldValue.replace(/\+/g, "");
	fldValue = fldValue.replace(/\-/g, "");
	fldValue = fldValue.replace(/\)/g, "");
	fldValue = fldValue.replace(/\(/g, "");
	strlen = fldValue.length;

	fldTest = isNaN(fldValue);
	if (fldValue == "")
	{
		fieldObject.value = "";
	}
	else if (fldValue != "" && ((strlen != 5 && strlen != 9)|| fldTest == true))
	{
		alert("Please enter the correct Zip Code.");
		fieldObject.value = "";
		fieldObject.select();
		fieldObject.focus();
	}
	else if (fldValue != "" && (strlen == 9 || fldTest ==true))
	{
		fieldObject.value = fldValue.substring(0,5) + "-" + fldValue.substring(5);
	}
			
}

function isPhoneNumber(fieldObject)
{
	var currForm;
	var countryObj;
	var countryText;

	currForm = fieldObject.form;
	countryObj = currForm.country;
	countryText = countryObj.options[countryObj.selectedIndex].text;

	fldValue = fieldObject.value.replace(/ /g, "");
	fldValue = fldValue.replace(/\./g, "");
	fldValue = fldValue.replace(/\+/g, "");
	fldValue = fldValue.replace(/\-/g, "");
	fldValue = fldValue.replace(/\)/g, "");
	fldValue = fldValue.replace(/\(/g, "");
	strlen = fldValue.length;

	fldTest = isNaN(fldValue);
	if (countryText != "United States" && countryText != "USA")
	{
	}
	else if (fldValue == "")
	{
		fieldObject.value = "";
	}
	else if (fldValue != "" && (strlen != 10 || fldTest == true))
	{
		alert("Please enter a 10 digit number in xxx-xxx-xxxx format or leave blank.");
		fieldObject.value = "";
		fieldObject.select();
		fieldObject.focus();
	}
	else if (fldValue != "")
	{
		fieldObject.value = fldValue.substring(0,3) + "-" + fldValue.substring(3,6) + "-" + fldValue.substring(6);
	}
}

function checkPhoneNumber(fieldObject)
{
	var currForm;
	
	currForm = fieldObject.form;
	
	fldValue = fieldObject.value.replace(/ /g, "");
	fldValue = fldValue.replace(/\./g, "");
	fldValue = fldValue.replace(/\+/g, "");
	fldValue = fldValue.replace(/\-/g, "");
	fldValue = fldValue.replace(/\)/g, "");
	fldValue = fldValue.replace(/\(/g, "");
	strlen = fldValue.length;

	
	if (fldValue == "")
	{
		fieldObject.value = "";
	}
	else if (fldValue != "" && (strlen != 10 || fldTest == true))
	{
		alert("Please enter a 10 digit number in xxx-xxx-xxxx format or leave blank.");
		fieldObject.value = "";
		fieldObject.select();
		fieldObject.focus();
	}
	else if (fldValue != "")
	{
		fieldObject.value = fldValue.substring(0,3) + "-" + fldValue.substring(3,6) + "-" + fldValue.substring(6);
	}
}

function setRadioOn(fieldObject, fieldName, offset)
{
	var currForm;
	var currObj;
	//var countryText;

	currForm = fieldObject.form;
	eval("currObj = currForm." + fieldName);
	if (fieldObject.value.replace(/ /g, "") != "")
	{
		currObj[offset].checked = true;
	}
	else
	{
		currObj[offset].checked = false;
	}
}

function isNumeric(fieldObject)
{
	var fldValue;

	fldValue = fieldObject.value.replace(/ /g, "");
	fldValue = fldValue.replace(/\$/g, "");
	fldValue = fldValue.replace(/,/g, "");

	if (fldValue != "" && isNaN(parseFloat(fldValue)))
	{
		alert("Please enter a valid number.");
		fieldObject.value = "";
		fieldObject.select();
		fieldObject.focus();
	}
	else if (fldValue != "")
	{
		fieldObject.value = Math.round(fldValue * 100) / 100;
	}
}

function isEmail(fieldObject)
{
	var retValue = true;
	var fldValue = fieldObject.value;
	
	// return if no value entered
	if (fldValue == "")
	{
		return retValue;
	}
	
	//currPos1 = fldValue.indexOf(" ");
	currPos2 = fldValue.indexOf("@");

	fldTest = isNaN(fldValue);
	//if (currPos1 != -1 || currPos2 == -1)
	if (currPos2 == -1)
	{
		alert("Please enter a valid e-mail addresses.");
		fieldObject.value = "";
		retValue = false;
		if (fieldObject.select) { fieldObject.select(); }
		if (fieldObject.focus) { fieldObject.focus(); }
	}
	
	return retValue;
}

function isCardExpired(monthfield, yearField)
{
	var retValue = false;
	var month = monthfield.options[monthfield.selectedIndex].value;
	var year = yearField.options[yearField.selectedIndex].value;
	var expDateString = month.toString() + "/01/" + year.toString();
	
	expDate = new Date(expDateString);
	todayDate = new Date();
	
	if (expDate < todayDate)
	{
		retValue = true;
	}
	
	return retValue;
}

function isCCNumber(cardNumField, cardTypeField)
{
	var strlen;
	var ccNumValue;
	var ccTypeValue;

	retValue = true;

	ccTypeValue = cardTypeField.options[cardTypeField.selectedIndex].text;
	ccNumValue = cardNumField.value.replace(/ /g, "");
	ccNumValue = ccNumValue.replace(/\./g, "");
	ccNumValue = ccNumValue.replace(/\+/g, "");
	ccNumValue = ccNumValue.replace(/\-/g, "");
	ccNumValue = ccNumValue.replace(/\)/g, "");
	ccNumValue = ccNumValue.replace(/\(/g, "");
	strlen = ccNumValue.length;
	fldTest = isNaN(ccNumValue);

	if ((ccTypeValue == "Visa" || ccTypeValue == "MasterCard" || ccTypeValue == "Discover") && strlen != 16)
	{ 
		retValue = false;
	}
	else if (ccTypeValue == "American Express" && strlen != 15)
	{ 
		retValue = false;
	}

	if (ccTypeValue == "Visa" && ccNumValue.charAt(0) != "4")
	{
		retValue = false;
	}
	else if (ccTypeValue == "MasterCard" && ccNumValue.charAt(0) != "5")
	{
		retValue = false;
	}
	else if (ccTypeValue == "Discover" && ccNumValue.charAt(0) != "6")
	{
		retValue = false;
	}
	else if (ccTypeValue == "American Express" && ccNumValue.charAt(0) != "3")
	{
		retValue = false;
	}

	if (!retValue)
	{
		alert("Please enter a valid card number addresses.");
		cardNumField.value = "";
		retValue = false;
		if (cardNumField.select) { cardNumField.select(); }
		if (cardNumField.focus) { cardNumField.focus(); }
	}

	return retValue;
}

function isCVV2Number(cvvField)
{
	var strlen;
	var cvvValue;

	retValue = true;

	cvvValue = cvvField.value.replace(/ /g, "");
	cvvValue = cvvValue.replace(/\./g, "");
	cvvValue = cvvValue.replace(/\+/g, "");
	cvvValue = cvvValue.replace(/\-/g, "");
	cvvValue = cvvValue.replace(/\)/g, "");
	cvvValue = cvvValue.replace(/\(/g, "");
	strlen = cvvValue.length;
	fldTest = isNaN(cvvValue);

	//alert(ccTypeValue);
	//alert(ccNumValue);
	//alert(ccNumValue.charAt(0));
	//alert(strlen);

	if (strlen != 3 && strlen != 4)
	{ 
		retValue = false;
	}

	return retValue;

}

function isNumberOfLen(fieldObject, length, stripPuncuation)
{
	var retValue = true;
	var fldValue = fieldObject.value;

	// return if no value entered
	if (fldValue == "")
	{
		return retValue;
	}

	if (stripPuncuation)
	{
		fldValue = fldValue.replace(/ /g, "");
		fldValue = fldValue.replace(/\$/g, "");
		fldValue = fldValue.replace(/,/g, "");
		fldValue = fldValue.replace(/\./g, "");
		fldValue = fldValue.replace(/-/g, "");
		fldValue = fldValue.replace(/\(/g, "");
		fldValue = fldValue.replace(/\)/g, "");
	}
	
	/*
	if (fldValue != "" && isNaN(parseFloat(fldValue)))
	{
		alert("Please enter a valid number.");
		fieldObject.value = "";
		fieldObject.select();
		fieldObject.focus();
		retValue = false;
	}
	*/
	
	strlen = fldValue.length;
	if (strlen != length)
	{
		alert("Please enter a " + length + " digit number in xxx-xxx-xxxx format or leave blank.");
		//fieldObject.value = "";
		fieldObject.select();
		fieldObject.focus();
		retValue = false;		
	}
	
	return retValue;
}

function isFullDate(fieldObject)
{
	var retValue = true;
	var fldValue = fieldObject.value;
	
	if (fldValue != null)
	{
		// parse input into 3 parts
		currPos = fldValue.indexOf("/");
		mPart = fldValue.substr(0, currPos);		// month
		fldValue = fldValue.substr(currPos + 1);
	
		currPos = fldValue.indexOf("/");
		dPart = fldValue.substr(0, currPos);		// day
		fldValue = fldValue.substr(currPos + 1);
	
		yPart = fldValue;			// year
		
		if (parseInt(mPart) < 1 || 12 < parseInt(mPart) || parseInt(dPart) < 1 || 31 < parseInt(dPart) || parseInt(yPart) < 1900 || 2999 < parseInt(yPart))
		{
			alert("Enter the date in m/d/yyyy format\n(on or before 12/31/2999)");
			retValue = false;		
		}
	}
	else
	{
		retValue = false;
	}
	
	return retValue;
}

function isValidDate(fieldObject)
{
	var retValue = true;
	var fldValue = fieldObject.value;
	
	if (fldValue != null)
	{
		fldDate = new Date(fldValue);
		if (fldDate == "Invalid Date")
		{
			alert("Please enter a valid date using M/D/YYYY format.");
			retValue = false;
		}
	}
	
	return retValue;
}

function isBirthDate(fieldObject)
{
	var retValue = true;
	var fldValue = fieldObject.value;
	
	// parse input into 3 parts
	currPos = fldValue.indexOf("/");
	mPart = fldValue.substr(0, currPos);		// month
	fldValue = fldValue.substr(currPos + 1);

	currPos = fldValue.indexOf("/");
	dPart = fldValue.substr(0, currPos);		// day
	fldValue = fldValue.substr(currPos + 1);

	yPart = fldValue;							// year
	
	if (parseInt(mPart) < 1 || 12 < parseInt(mPart) || parseInt(dPart) < 1 || 31 < parseInt(dPart) || parseInt(yPart) < 1900 || 2999 < parseInt(yPart))
	{
		retValue = false;		
	}
	else		// valid DOB on or before today's date
	{
		bDate = new Date(fieldObject.value);
		todaysDate = new Date();
		
		if (bDate > todaysDate)
		{
			alert("Your date of birth must be on or before today's date");
			retValue = false;
		}
	}
	
	return retValue;
}


/***********************************************
* Bookmark site script- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/
/* Modified to support Opera */
function bookmarksite(title, url)
{
	if (window.sidebar)								// firefox
	{
		alert("firefox");
		window.sidebar.addPanel(title, url, "");
	}
	else if(window.opera && window.print)			// opera
	{
		alert("opera");
		var elem = document.createElement('a');
		elem.setAttribute('href',url);
		elem.setAttribute('title',title);
		elem.setAttribute('rel','sidebar');
		elem.click();
	}
	else if(document.all)							// ie
	{
		alert("others");
		window.external.AddFavorite(url, title);
	}
}

function a2ml(linkName)
{
	if (linkName == "" || document.getElementById == null || document.getElementById == "undefined")
	{
		return;
		// do nothing
	}
	
	// add selected link to list
	currLink = document.getElementById(linkName);
	currForm = document.getElementById("linkForm");
	linksList = document.getElementById("myLinks");
	linkLayer = document.getElementById("myLinkForm");
	htmlList = document.getElementById("htmlListText");

	if (currLink != null && currForm != null && linksList != null && linkLayer != null)
	{
		linkLayer.style.display = "block";
		currForm.style.display = "block";
		linksList.innerHTML = " &bull; " + currLink.text + "<br>" + linksList.innerHTML; 
		htmlList.value = "<a href='" + currLink.href + "' target=new>" + currLink.innerHTML + "</a>\n" + htmlList.value;
	}

}
