﻿var isControlValidated = true;
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g, "");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/, "");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/, "");
}

var focusControl;
//Make ErrorMsgControl to empty.
function MakeErrMsgCtrlEmtpy(psMsgControlName) {
	var psMsgControl = window.document.getElementById(psMsgControlName);
	psMsgControl.innerHTML = "<span>Error(s)</span><ul></ul>";
	focusControl = null;
}
function SetErrMsgCtrlVisibility(psMsgControlName, isVisible) {
	var psMsgControl = window.document.getElementById(psMsgControlName);
	psMsgControl.style.display = isVisible ? "" : "none";
}
//Make ErrorMsgControl to empty.
function MakeErrMsgCtrlEmtpy_New(psMsgControlName) {
	var psMsgControl = window.document.getElementById(psMsgControlName);
	psMsgControl.innerHTML = "<div class=\"DvErrorMsg\"></div>";
	focusControl = null;
}



function IsEmpty(controlName) {
	var isBlank = false;
	var control = window.document.getElementById(controlName);
	var value = control.value.Trim();
	if (value == null || value == "") {
		isBlank = true;
		isControlValidated = false;
	}
	return isBlank;
}

function SetErrorMessage(controlName, errorClass, errorMessage) {
	var control = window.document.getElementById(controlName);
	control.className = errorClass;
	control.value = errorMessage;
}




//For Validation of blank field and field with only spaces
//poControlType=[0:textbox, radiobutton, checkbox, dropdownlist; 1:radiobuttonlist; 2:checkboxlist] 
//excludeZero=1:consider zero(0) value as null;
//displayError=true
// isParentVisibilityCheck: If error control not visible then make parent control visible and make the focus
function ValidateNull(poControlName, poControlType, psMessage, psMsgControlName, displayError, excludeZero, isParentVisibilityCheck) {
	var str = " ";
	var count = 0;
	var string;
	var maxLength;
	var psMsgControl = window.document.getElementById(psMsgControlName);
	var isValid = true;
	//alert(poControl.value.Trim());
	if (poControlType == 0) {
		var poControl = window.document.getElementById(poControlName);
		string = poControl.value.Trim();
	}
	else if (poControlType == 1) //radiobuttonlist
	{
		string = GetRadioListData(poControlName);
	}
	else if (poControlType == 2) //checkboxlist
	{
		string = GetCheckboxListData(poControlName);
	}
	else if (poControlType == 3) // Listboxlist
	{
		string = GetListboxData(poControlName);
	}
	if ((excludeZero == 1) && (string == "0")) {
		isValid = false;
	}
	else if ((string == null) || (string == "")) {
		isValid = false;
	}
	else {
		maxLength = string.length;
		while (count < maxLength) {
			if (string == str) {
				poControl.value = "";
				isValid = false;
				break;
			}
			else {
				str += " ";
				count++;
			}
		}
	}
	if (!isValid) {
		if (displayError == undefined || displayError == true) {
			if (focusControl == null && poControl != undefined) {
				focusControl = poControl;
				if (isParentVisibilityCheck) {
					if (focusControl.parentNode) {
						focusControl.parentNode.style.display = "";
						focusControl.parentNode.style.visibility = "visible";

						focusControl.style.display = "";
						focusControl.style.visibility = "visible";
					}
				}

				if (focusControl.style.visibility == "visible") {
					if (focusControl.type == "text")
						focusControl.select();
					else
						focusControl.focus();
				}
			}
			AddErrorMessage(psMsgControl, psMessage);
		}
		return false
	}
	return true;
}
//// Validates maxlength 
function ValidateLength(poControlName, psLength, psMessage, psMsgControlName) {
	var poControl = window.document.getElementById(poControlName);
	var psMsgControl = window.document.getElementById(psMsgControlName);

	var lsLength = poControl.value.length
	if (lsLength > psLength) {
		isControlValidated = false;
		AddErrorMessage(psMsgControl, psMessage);
		if (focusControl == null) {
			focusControl = poControl;
			focusControl.focus();
		}
		return false;
	}
}

function ValidateMultiLength(poControlName, psLength, psSeperator, psMessage, psMsgControlName) {
	var poControl = document.getElementById(poControlName);
	var psMsgControl = document.getElementById(psMsgControlName);
	var valueArray = poControl.value.split(psSeperator);
	for (var i = 0; i < valueArray.length; i++) {
		var strValue = valueArray[i];
		strValue = strValue.trim();
		if (strValue.length > psLength) {
			isControlValidated = false;
			AddErrorMessage(psMsgControl, psMessage);
			if (focusControl == null && poControl != undefined) {
				focusControl = poControl;
				focusControl.focus();
			}
			return false;
		}
	}
}

//Validates minimum length 
function ValidateMinLength(poControlName, psLength, psMessage, psMsgControlName) {
	var poControl = window.document.getElementById(poControlName);
	var psMsgControl = window.document.getElementById(psMsgControlName);
	var lsLength = poControl.value.length
	if (lsLength < psLength) {
		isControlValidated = false;
		AddErrorMessage(psMsgControl, psMessage);
		if (focusControl == null && poControl != undefined) {
			focusControl = poControl;
			focusControl.focus();
		}
		return false;
	}
}

function ValidateRTENull(poControlName, psMessage, psMsgControlName) {
	var psMsgControl = window.document.getElementById(psMsgControlName);
	var lsLength = document.forms[0].elements[poControlName].value.length;
	if (lsLength == 0) {
		isControlValidated = false;
		AddErrorMessage(psMsgControl, psMessage);
		return false;
	}
}

function ValidateRTELength(poControlName, psLength, psMessage, psMsgControlName) {
	var psMsgControl = window.document.getElementById(psMsgControlName);
	var lsLength = document.forms[0].elements[poControlName].value.length;
	if (lsLength > psLength) {
		isControlValidated = false;
		AddErrorMessage(psMsgControl, psMessage);
		return false;
	}
}

function ValidateUrl(poControlName, psMessage, psMsgControlName) {
	var UrlId = window.document.getElementById(poControlName);
	var psMsgControl = window.document.getElementById(psMsgControlName);
	var j = new RegExp();
	j.compile("^(((ht|f)tp(s?))\://)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk|co|in|pk)(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\;\?\\\\+&%\$#\=~_\-]+))*$");
	if (UrlId.value != '') {
		if (!j.test(UrlId.value)) {
			var psMsgControl = window.document.getElementById(psMsgControlName);
			isControlValidated = false;
			AddErrorMessage(psMsgControl, psMessage);
			if (focusControl == null) {
				focusControl = UrlId;
				focusControl.focus();
			}
			return false;
		}
	}
	return true;
}

// To Check Valid Url 
function ValidUrl(poControlName, psMessage, psMsgControlName) {
	var Url = document.getElementById(poControlName);
	if (Url.value.match(/^((http|https|ftp)\:\/\/)?\w+([\.\-]\w+)*\.\w{2,4}(\:\d+)*([\/\.\-\?\&\%\#\=]\w+)*\/?$/i)
    || Url.value.match(/^mailto\:\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w{2,4}$/i)) {
		return true;
	}
	else {
		var psMsgControl = window.document.getElementById(psMsgControlName);
		isControlValidated = false;
		AddErrorMessage(psMsgControl, psMessage);
		if (focusControl == null) {
			focusControl = Url;
			focusControl.focus();
		}
		return false;
	}
}

function textCounter(field, maxlimit, countfield) {
	field = document.getElementById(field);
	if (field.value.length > maxlimit) // if too long...trim it!
	{
		field.value = field.value.substring(0, maxlimit);
	}
	else if (countfield) {
		countfield = document.getElementById(countfield);
		if (countfield.value)
			countfield.value = maxlimit - field.value.length;
		else if (countfield.innerHTML)
			countfield.innerHTML = maxlimit - field.value.length;
	}
}


function wordCounter(field, maxlimit, countfield) {
	field = document.getElementById(field);
	//var words = field.value.split(' ');
	var words = field.value.split(/\s/);
	/*var fullStr = field.value + " ";
	var initial_whitespace_rExp = /^[^A-Za-z0-9]+/gi;
	var left_trimmedStr = fullStr.replace(initial_whitespace_rExp, "");
	var non_alphanumerics_rExp = rExp = /[^A-Za-z0-9]+/gi;
	var cleanedStr = left_trimmedStr.replace(non_alphanumerics_rExp, " ");
	var splitString = cleanedStr.split(" ");
	var words = splitString.length -1;*/

	if (words.length > maxlimit) // if too long...trim it!
	{
		alert('Maximum words allowed are 100..');
		//field  = document.getElementById(field).disabled = true;
		//field.value = field.value.substring(0, maxlimit);
	}
	else if (countfield) {
		countfield = document.getElementById(countfield);
		countfield.value = maxlimit - words.length;
		//field  = document.getElementById(field).disabled = false;
	}
}
// ---------------------------------------------------------------
//function AddErrorMessage(psMsgControl, psMessage)
//{

//   isControlValidated = false;

//   var msgContainerControl = psMsgControl;
//   for(var i = 0; i < 3; i ++ )
//   {
//      if(msgContainerControl.className == 'DvMsgContainer')
//      break;
//      if(msgContainerControl.parentNode)
//      msgContainerControl = msgContainerControl.parentNode;
//   }
//   var lastDiv;
//   var counterDiv = msgContainerControl;
//   var nestingLevel = 0;
//   while(true)
//   {
//      for(var i = 0; i < counterDiv.childNodes.length;
//      i ++ )
//      {
//         var node = counterDiv.childNodes[i];
//         if(node.tagName == "DIV")
//         {
//            lastDiv = node;
//            break;
//         }
//      }
//      if( ! lastDiv)
//      break;
//      counterDiv = lastDiv;
//      lastDiv = undefined;
//   }
//   if(counterDiv) psMsgControl = counterDiv;
//   

//   var error;
//   if(psMsgControl.innerHTML.length == 0)
//   {
//      psMsgControl.innerHTML = "<span>Error</span>";
//   }
//   if ( (psMsgControl.innerHTML.indexOf('<UL>') != - 1) || (psMsgControl.innerHTML.indexOf('<ul>') != - 1))
//   {
//      error = psMsgControl.innerHTML;
//      error = error.replace('</UL>', '');
//      error = error.replace('</ul>', '');
//      error = error.replace('<UL>', '');
//      error = error.replace('<ul>', '');
//      psMsgControl.innerHTML = error;
//   }
//   psMsgControl.innerHTML += '<li>' + psMessage + '</li>';
//   // psMessage

//   if(psMsgControl.innerHTML.indexOf('</span>') != - 1)
//   error = psMsgControl.innerHTML.replace('Error</span>', 'Error</span><UL>');
//   else
//   error = psMsgControl.innerHTML.replace('Error</SPAN>', 'Error</SPAN><UL>');
//   error = error + '</UL>';

//   psMsgControl.innerHTML = error;

//   // code to bring focus on the error message added by Shahnawaz Panhalkar [03 May]

//   if(msgContainerControl)
//   {
//      if(msgContainerControl.childNodes.length > 0)
//      {
//         if(msgContainerControl.childNodes[0].tagName != "A")
//         {
//            msgContainerControl.innerHTML = "<A id='e'></A>" + msgContainerControl.innerHTML;
//         }
//         msgContainerControl.style.display = 'block';
//      }
//   }
//};
// ---------------------------------------------------------------
function AddErrorMessage(psMsgControl, psMessage) {
	isControlValidated = false;
	var msgContainerControl = psMsgControl;
	for (var i = 0; i < 3; i++) {
		if (msgContainerControl.className == 'DvMsgContainer') break;
		if (msgContainerControl.parentNode)
			msgContainerControl = msgContainerControl.parentNode;
	}
	var leftPart = "";
	var rightPath = "";
	if (psMsgControl.innerHTML.indexOf('</ul>') > 0) {
		leftPart = psMsgControl.innerHTML.substring(0, psMsgControl.innerHTML.indexOf('</ul>'));
		rightPath = psMsgControl.innerHTML.substring(psMsgControl.innerHTML.indexOf('</ul>'), psMsgControl.innerHTML.length);
		psMsgControl.innerHTML += "<ul><li>" + psMessage + "</li></ul>";
	}
	else {
		psMsgControl.innerHTML += "<ul><li>" + psMessage + "</li></ul>";
	}
	//code to bring focus on the error message added by Shahnawaz Panhalkar [03 May]
	if (msgContainerControl) {
		if (msgContainerControl.childNodes.length > 0) {
			if (msgContainerControl.childNodes[0].tagName != "A") {
				msgContainerControl.innerHTML = "<A id='e'></A>" + msgContainerControl.innerHTML;
			}
			msgContainerControl.style.display = 'block';
		}
	}
}

function IsValidNumber(poControlName, psMessage, psMsgControlName) {
	var ctrlId = window.document.getElementById(poControlName);
	var ctrlValue = ctrlId.value;
	var psMsgControl = window.document.getElementById(psMsgControlName);
	if (ctrlValue != '') {
		if (isNaN(ctrlValue)) {
			isControlValidated = false;
			AddErrorMessage(psMsgControl, psMessage);
			if (focusControl == null) {
				focusControl = ctrlId;
			}
			return false;
		}
	}
	return true;
}
//Function used to get date difference in years
function days_between(fromDate, toDate) {
	// The number of milliseconds in one day
	var year = 1000 * 60 * 60 * 24 * 365;

	// Convert both dates to milliseconds
	var date1_ms = toDate.getTime();
	var date2_ms = fromDate.getTime();

	// Calculate the difference in milliseconds
	var difference_ms = date1_ms - date2_ms;

	// Convert back to days and return
	return Math.round(difference_ms / year)
}

String.prototype.Trim = function() { return this.replace(/^\s+|\s+$/, ''); };

function CompareValues(psFirstControl, psSecondControl, psMessage, psMsgControlName) {
	var firstValue = window.document.getElementById(psFirstControl).value;
	var secondValue = window.document.getElementById(psSecondControl).value;
	firstValue = firstValue.ltrim();
	secondValue = secondValue.ltrim();
	if (firstValue.Trim() != secondValue.Trim()) {
		var psMsgControl = window.document.getElementById(psMsgControlName);
		AddErrorMessage(psMsgControl, psMessage);
		if (focusControl == null) {
			focusControl = window.document.getElementById(psSecondControl);
			focusControl.focus();
		}
		return false;
	}
	return true;

}
function IsValidUserName(psUserName, psMessage, psMsgControlName) {
	var EmailRegExp = /^([a-zA-Z0-9_\-])+$/;
	var poControl = window.document.getElementById(psUserName);
	sEmailAddressToValidate = poControl.value;
	if (!EmailRegExp.test(sEmailAddressToValidate.trim())) {
		var psMsgControl = window.document.getElementById(psMsgControlName);
		AddErrorMessage(psMsgControl, psMessage);
		if (focusControl == null && poControl != undefined) {
			focusControl = poControl;
			focusControl.focus();
		}
		return false;
	}
	else
		return true;
}

function IsValidEMail(psEmail) {
	var EmailRegExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/;
	var poControl = window.document.getElementById(psEmail);
	sEmailAddressToValidate = poControl.value;
	if (!EmailRegExp.test(sEmailAddressToValidate.Trim())) {
		return false;
	}
	else {
		return true;
	}
}

///This function is addded by mehul
function IsValidEmailAddress(psEmail, psMessage, psMsgControlName) {
	var EmailRegExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/;
	var poControl = window.document.getElementById(psEmail);
	sEmailAddressToValidate = poControl.value;
	if (!EmailRegExp.test(sEmailAddressToValidate.trim())) {
		var psMsgControl = window.document.getElementById(psMsgControlName);
		AddErrorMessage(psMsgControl, psMessage);
		if (focusControl == null && poControl != undefined) {
			focusControl = poControl;
			focusControl.focus();
		}
		return false;
	}
	else
		return true;
}

function ValidateEmailAddress(psEmailControl, psMessage, psMsgControlName) {

	var EmailRegExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/;
	var emailID = window.document.getElementById(psEmailControl);
	var strAddrs = emailID.value
	var j = strAddrs.indexOf(",");
	if (strAddrs.indexOf(",") == -1) {
		if (!EmailRegExp.test(emailID.value.trim())) {
			var psMsgControl = window.document.getElementById(psMsgControlName);
			AddErrorMessage(psMsgControl, psMessage);
			if (focusControl == null && emailID != undefined) {
				focusControl = emailID;
				focusControl.focus();
			}
			return false;
		}
	}
	else {
		strAddrs = strAddrs + ",";
		var validatedEmailAddrs = "";
		var strAddr;
		var i = 0;
		while (j >= 0) {
			strAddr = strAddrs.substr(i, j);
			strAddr = strAddr.trim();

			if (strAddr.length > 0) {
				if (!EmailRegExp.test(strAddr)) {
					var psMsgControl = window.document.getElementById(psMsgControlName);
					AddErrorMessage(psMsgControl, psMessage);
					if (focusControl == null && emailID != undefined) {
						focusControl = emailID;
						focusControl.focus();
					}
					return false;
				}
				if (validatedEmailAddrs.length > 0) validatedEmailAddrs = validatedEmailAddrs + ", ";
				validatedEmailAddrs = validatedEmailAddrs + strAddr;
			}
			strAddrs = strAddrs.substr(j + 1, strAddrs.length);
			j = strAddrs.indexOf(",");
		}
		emailID.value = validatedEmailAddrs;
	}
}

function CheckDuplicateString(commaSeperatedString) {
	var stringArray = commaSeperatedString.split(',');
	for (var i = 0; i < stringArray.length; i++) {
		for (var j = i + 1; j < stringArray.length; j++) {
			if (stringArray[i].trim() == stringArray[j].trim()) {
				return false;
			}
		}
	}
	return true;
}

function CheckUSZipCode(psPostalCode, psMessage, psMsgControlName) {
	var txtZipControl = document.getElementById(psPostalCode).value;
	var psMsgControl = window.document.getElementById(psMsgControlName);
	if (txtZipControl != "") {
		if (txtZipControl.length == 5) {
			if (isNaN(txtZipControl)) {
				AddErrorMessage(psMsgControl, psMessage);
				return false;
			}
			else {
				return true;
			}
		}
		else {
			AddErrorMessage(psMsgControl, psMessage);
			return false;
		}
	}
}

function CheckPostalCode(psCountry, psPostalCode, psMessage, psMsgControlName) {
	var zipControl = document.getElementById(psPostalCode);
	var txtZipControl = zipControl.value;
	var psMsgControl = window.document.getElementById(psMsgControlName);
	if (txtZipControl != "") {
		var drpCtryControl = window.document.getElementById(psCountry).value;
		if (drpCtryControl == '248') {
			if (txtZipControl.length == 5) {
				if (isNaN(txtZipControl)) {
					AddErrorMessage(psMsgControl, psMessage);
					if (focusControl == null && zipControl != undefined) {
						focusControl = zipControl;
						focusControl.focus();
					}
					return false;
				}
				else {
					return true;
				}
			}
			else {
				AddErrorMessage(psMsgControl, psMessage);
				if (focusControl == null && zipControl != undefined) {
					focusControl = zipControl;
					focusControl.focus();
				}
				return false;
			}
		}
		else if (drpCtryControl == '40') {
			if (txtZipControl.length == 7) {
				if (txtZipControl.indexOf(' ') != 3) {
					AddErrorMessage(psMsgControl, psMessage);
					if (focusControl == null && zipControl != undefined) {
						focusControl = zipControl;
						focusControl.focus();
					}
					return false;
				}
				else {
					return true;
				}
			}
			else {
				AddErrorMessage(psMsgControl, psMessage);
				if (focusControl == null && zipControl != undefined) {
					focusControl = zipControl;
					focusControl.focus();
				}
				return false;
			}
		}
		else {
			if (!IsValidAlphaNumeric(txtZipControl)) {
				AddErrorMessage(psMsgControl, psMessage);
				if (focusControl == null && zipControl != undefined) {
					focusControl = zipControl;
					focusControl.focus();
				}
				return false;
			}
			else {
				return true;
			}
		}
	}
}

// Declaring valid date character, minimum year and maximum year
var dtCh = "/";
var minYear = 1900;
var maxYear = 2100;

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 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++) {
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1) returnString += c;
	}
	return returnString;
}

function daysInFebruary(year) {
	// February has 29 days in any year evenly divisible by four,
	// EXCEPT for centurial years which are not also divisible by 400.
	return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i == 4 || i == 6 || i == 9 || i == 11) { this[i] = 30 }
		if (i == 2) { this[i] = 29 }
	}
	return this
}

function isDate(dtStr) {
	var daysInMonth = DaysArray(12)
	var pos1 = dtStr.indexOf(dtCh)
	var pos2 = dtStr.indexOf(dtCh, pos1 + 1)
	var strMonth = dtStr.substring(0, pos1)
	var strDay = dtStr.substring(pos1 + 1, pos2)
	var strYear = dtStr.substring(pos2 + 1)
	strYr = strYear
	if (strDay.charAt(0) == "0" && strDay.length > 1) strDay = strDay.substring(1)
	if (strMonth.charAt(0) == "0" && strMonth.length > 1) strMonth = strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0) == "0" && strYr.length > 1) strYr = strYr.substring(1)
	}
	month = parseInt(strMonth)
	day = parseInt(strDay)
	year = parseInt(strYr)
	if (pos1 == -1 || pos2 == -1) {
		return false
	}
	if (strMonth.length < 1 || month < 1 || month > 12) {
		return false
	}
	if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
		return false
	}
	if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
		return false
	}
	if (dtStr.indexOf(dtCh, pos2 + 1) != -1 || isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
		return false
	}
	return true
}
function ValidateHTML(poControlName) {
	var ctrl = window.document.getElementById(poControlName);
	var ctrlValue = ctrl.value;
	if ((ctrlValue.indexOf('<') > -1) || (ctrlValue.indexOf('>') > -1)) {
		return false;
	}
	else {
		return true;
	}
}

////Dipti
//Validate whether control contains HTML Tag or not. Only for Textbox or Text Area by passing its Id.
function ValidateHtmlTags(poControlName, psMessage, psMsgControlName, AddError) {
	var ctrl = window.document.getElementById(poControlName);
	var ctrlValue = ctrl.value;
	if ((ctrlValue.indexOf('<') > -1) || (ctrlValue.indexOf('>') > -1)) {
		var psMsgControl = window.document.getElementById(psMsgControlName);
		if (AddError == undefined || (AddError)) {
			AddErrorMessage(psMsgControl, psMessage);
			if (focusControl == null && ctrl != undefined) {
				focusControl = ctrl;
			}
			checkHTML = false;
		}
		return false;
	}
	return true;
}

function ValidateWhiteSpaceAlphabat(poControlName, psMessage, psMsgControlName) {
	var iChars = "abcdefghijklmnopqrstuvwxyz";
	var ctrl = window.document.getElementById(poControlName);
	var ctrlValue = ctrl.value.toLowerCase().replace(/\s+/g, "");

	for (var i = 0; i < ctrlValue.length; i++) {
		if (iChars.indexOf(ctrlValue.charAt(i)) == -1) {
			var psMsgControl = window.document.getElementById(psMsgControlName);
			AddErrorMessage(psMsgControl, psMessage);
			if (focusControl == null && ctrl != undefined) {
				focusControl = ctrl;
			}
			return false;
		}
	}
}

function ValidateAlphabat(poControlName, psMessage, psMsgControlName, excludeChar) {
	var ctrl = window.document.getElementById(poControlName);
	var ctrlValue = ctrl.value;
	ctrlValue = ctrlValue.toLowerCase();
	var iChars = "abcdefghijklmnopqrstuvwxyz";
	if (excludeChar) {
		for (var j = 0; j < excludeChar.length; j++) {
			ctrlValue = ctrlValue.replace(excludeChar[j], '');	
		}
	}
	for (var i = 0; i < ctrlValue.length; i++) {
		if (iChars.indexOf(ctrlValue.charAt(i)) == -1) {
			var psMsgControl = window.document.getElementById(psMsgControlName);
			AddErrorMessage(psMsgControl, psMessage);
			if (focusControl == null && ctrl != undefined) {
				focusControl = ctrl;
			}
			return false;
		}
	}
}


//Validate whether control contains Special Chars (restricted - !@#$%^&*()+=-[]\\\';,./{}|\":<>?)
function ValidateSpecialChar(poControlName, psMessage, psMsgControlName, excludeChar) {
	var ctrl = window.document.getElementById(poControlName);
	var ctrlValue = ctrl.value;
	//var iChars = "@#$%^&*()+=-[] \\\';,/{}|\":<>";
	var iChars = "@#$%^*()+=[]\\{}|<>;\"/, ";
	if (excludeChar) {
		iChars = iChars.replace(excludeChar, '');
	}
	for (var i = 0; i < ctrlValue.length; i++) {
		if (iChars.indexOf(ctrlValue.charAt(i)) != -1) {
			var psMsgControl = window.document.getElementById(psMsgControlName);
			AddErrorMessage(psMsgControl, psMessage);
			if (focusControl == null && ctrl != undefined) {
				focusControl = ctrl;
			}
			return false;
		}
	}
}

//Validates Phone No - 0123456789-+ ()
function ValidatePhoneNumber(poControlName, psMessage, psMsgControlName) {
	var ctrl = window.document.getElementById(poControlName);
	var ctrlValue = ctrl.value;
	var validChars = "0123456789+ ()";
	for (var i = 0; i < ctrlValue.length; i++) {
		if (validChars.indexOf(ctrlValue.substring(i, i + 1)) < 0) {
			var psMsgControl = window.document.getElementById(psMsgControlName);
			AddErrorMessage(psMsgControl, psMessage);
			if (focusControl == null && ctrl != undefined) {
				focusControl = ctrl;
			}
			return false;
		}
	}
	return true;
}

function IsValidPhoneNumber(ctrlValue) {
	var validChars = "0123456789-+ ()";
	for (var i = 0; i < ctrlValue.length; i++) {
		if (validChars.indexOf(ctrlValue.substring(i, i + 1)) < 0) {
			isControlValidated = false;
			return false;
		}
	}
	return true;
}

function IsValidAlphaNumeric(ctrlValue) {
	var validChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
	for (var i = 0; i < ctrlValue.length; i++) {
		if (validChars.indexOf(ctrlValue.substring(i, i + 1)) < 0) {
			isControlValidated = false;
			return false;
		}
	}
	return true;
}

function IsValidAlphabat(ctrlValue) {
	var validChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ";
	for (var i = 0; i < ctrlValue.length; i++) {
		if (validChars.indexOf(ctrlValue.substring(i, i + 1)) < 0) {
			isControlValidated = false;
			return false;
		}
	}
	return true;
}
function CheckPostalCodeAtAdmin(psCountry, psPostalCode, psMessage, psMsgControlName) {
	var zipControl = document.getElementById(psPostalCode);
	var txtZipControl = zipControl.value;

	var psMsgControl = window.document.getElementById(psMsgControlName);
	if (txtZipControl != "") {
		var drpCtryControl = window.document.getElementById(psCountry).value;
		if (drpCtryControl == '248') {
			if (txtZipControl.length == 5) {
				if (isNaN(txtZipControl)) {
					psMsgControl.innerHTML += "<li>" + psMessage + "</li>";
					isControlValidated = false;
					return false;
				}
				else {
					return true;
				}
			}
			else {
				psMsgControl.innerHTML += "<li>" + psMessage + "</li>";
				isControlValidated = false;
				return false;
			}
		}
		else if (drpCtryControl == '40') {
			if (txtZipControl.length == 7) {
				if (txtZipControl.indexOf(' ') != 3) {
					psMsgControl.innerHTML += "<li>" + psMessage + "</li>";
					isControlValidated = false;
					return false;
				}
				else {
					return true;
				}
			}
			else {
				psMsgControl.innerHTML += "<li>" + psMessage + "</li>";
				isControlValidated = false;
				return false;
			}
		}
		else {
			if (!IsValidAlphaNumeric(txtZipControl)) {
				psMsgControl.innerHTML += "<li>" + psMessage + "</li>";
				isControlValidated = false;
				return false;
			}
			else {
				return true;
			}
		}
	}
}
function ValidateMultiLengthAdmin(poControlName, psLength, psSeperator, psMessage, psMsgControlName) {
	var poControl = document.getElementById(poControlName);
	var psMsgControl = document.getElementById(psMsgControlName);
	var valueArray = poControl.value.split(psSeperator);
	for (var i = 0; i < valueArray.length; i++) {
		var strValue = valueArray[i];
		strValue = strValue.trim();
		if (strValue.length > psLength) {
			isControlValidated = false;
			psMsgControl.innerHTML += '<li>' + psMessage + '</li> ';
			isControlValidated = false;
			return false;
		}
	}
}
function ValidateHtmlTagsAdmin(poControlName, psMessage, psMsgControlName, AddError) {
	var ctrl = window.document.getElementById(poControlName);
	var ctrlValue = ctrl.value;
	if ((ctrlValue.indexOf('<') > -1) || (ctrlValue.indexOf('>') > -1)) {
		var psMsgControl = window.document.getElementById(psMsgControlName);
		var psMsgControl = window.document.getElementById(psMsgControlName);
		psMsgControl.innerHTML += '<li>' + psMessage + '</li> ';
		isControlValidated = false;
		return false;
	}
	return true;
}

function ValidateHtmlChar(poControlName, psMessage, psMsgControlName, isParentVisibilityCheck) {
	var focusControl = window.document.getElementById(poControlName);
	var psMsgControl = window.document.getElementById(psMsgControlName);

	var ctrlValue = focusControl.value;
	var iChars = "&<>";
	var isValid = true;

	for (var i = 0; i < ctrlValue.length; i++) {
		if (iChars.indexOf(ctrlValue.charAt(i)) != -1)
			isValid = false;
	}

	if (!isValid) {
		if (focusControl) {
			if (isParentVisibilityCheck) {
				if (focusControl.parentNode) {
					focusControl.parentNode.style.display = "";
					focusControl.parentNode.style.visibility = "visible";

					focusControl.style.display = "";
					focusControl.style.visibility = "visible";
				}
			}

			if (focusControl.style.visibility == "visible") {
				if (focusControl.type == "text")
					focusControl.select();
				else
					focusControl.focus();
			}
		}

		AddErrorMessage(psMsgControl, psMessage);
		return false;
	}
	return true;
}

function ValidateSpecialCharAdmin(poControlName, psMessage, psMsgControlName, excludeChar) {
	var ctrl = window.document.getElementById(poControlName);
	var ctrlValue = ctrl.value;
	//var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
	var iChars = "&@#$%^*()+[]\\\{}<>"//Modified by VVBABU as per Client Requirement 
	if (excludeChar) {
		for (var idx = 0; idx < excludeChar.toString().length; idx++) {
			iChars = iChars.replace(excludeChar[idx], '');
		}
	}
	for (var i = 0; i < ctrlValue.length; i++) {
		if (iChars.indexOf(ctrlValue.charAt(i)) != -1) {
			var psMsgControl = window.document.getElementById(psMsgControlName);
			psMsgControl.innerHTML += '<li>' + psMessage + '</li> ';
			isControlValidated = false;
			return false;
		}
	}
}
function ValidateLengthAdmin(poControlName, psLength, psMessage, psMsgControlName) {
	var poControl = window.document.getElementById(poControlName);
	var psMsgControl = window.document.getElementById(psMsgControlName);
	var lsLength = poControl.value.length
	if (lsLength > psLength) {
		isControlValidated = false;
		psMsgControl.innerHTML += '<li>' + psMessage + '</li>';
		psMsgControl.style.display = '';
		return false;
	}
}
function ValidateNullAdmin(poControlName, poControlType, psMessage, psMsgControlName, displayError, excludeZero) {
	var str = " ";
	var count = 0;
	var string;
	var maxLength;
	var psMsgControl = window.document.getElementById(psMsgControlName);
	var isValid = true;

	if (poControlType == 0) {
		var poControl = window.document.getElementById(poControlName);
		string = poControl.value.Trim();
	}
	else if (poControlType == 1) //radiobuttonlist
	{
		string = GetRadioListData(poControlName);
	}
	else if (poControlType == 2) //checkboxlist
	{
		string = GetCheckboxListData(poControlName);
	}
	else if (poControlType == 3) // Listboxlist
	{
		string = GetListboxData(poControlName);
	}

	if ((excludeZero == 1) && (string == "0")) {
		isValid = false;
	}
	else if ((string == null) || (string == "")) {
		isValid = false;
	}
	else {
		maxLength = string.length;
		while (count < maxLength) {
			if (string == str) {
				poControl.value = "";
				isValid = false;
				break;
			}
			else {
				str += " ";
				count++;
			}
		}
	}

	if (!isValid) {
		if (displayError == undefined || displayError == true) {
			isControlValidated = false;
			psMsgControl.innerHTML += '<li>' + psMessage + '</li>';
			psMsgControl.style.display = '';
		}
		return false
	}

	return true;
}

function IsValidNumberAdmin(poControlName, psMessage, psMsgControlName) {
	var ctrlId = window.document.getElementById(poControlName);
	var ctrlValue = ctrlId.value;
	var psMsgControl = window.document.getElementById(psMsgControlName);
	if (ctrlValue != '') {
		if (isNaN(ctrlValue)) {
			alert('test');
			isControlValidated = false;
			psMsgControl.innerHTML += "<li>" + psMessage + "</li>";
			return false;
		}
	}
	return true;
}
function ValidateRTELengthAdmin(poControlName, psLength, psMessage, psMsgControlName) {
	var psMsgControl = window.document.getElementById(psMsgControlName);
	var lsLength = document.forms[0].elements[poControlName].value.length;
	if (lsLength > psLength) {
		isControlValidated = false;
		psMsgControl.innerHTML += '<li>' + psMessage + '</li>';
		return false;
	}
}
function ValidateUrlAdmin(poControlName, psMessage, psMsgControlName) {
	var UrlId = window.document.getElementById(poControlName);
	var psMsgControl = window.document.getElementById(psMsgControlName);
	var j = new RegExp();
	j.compile("^(((ht|f)tp(s?))\://)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk|co|in)(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\;\?\\\\+&%\$#\=~_\-]+))*$");
	if (UrlId.value != '') {
		if (!j.test(UrlId.value)) {
			var psMsgControl = window.document.getElementById(psMsgControlName);
			isControlValidated = false;
			psMsgControl.innerHTML += '<li>' + psMessage + '</li>';
			return false;
		}
	}
	return true;
}
function CompairValuesAdmin(psFirstControl, psSecondControl, psMessage, psMsgControlName) {
	var firstValue = window.document.getElementById(psFirstControl).value;
	var secondValue = window.document.getElementById(psSecondControl).value;
	firstValue = firstValue.ltrim();
	secondValue = secondValue.ltrim();
	if (firstValue.Trim() != secondValue.Trim()) {
		var psMsgControl = window.document.getElementById(psMsgControlName);
		psMsgControl.innerHTML += '<li>' + psMessage + '</li>';
		isControlValidated = false;
		return false;
	}
	return true;
}
function ValidateMinLengthAdmin(poControlName, psLength, psMessage, psMsgControlName) {
	var poControl = window.document.getElementById(poControlName);
	var psMsgControl = window.document.getElementById(psMsgControlName);
	var lsLength = poControl.value.length
	if (lsLength < psLength) {
		isControlValidated = false;
		psMsgControl.innerHTML += '<li>' + psMessage + '</li>';
		return false;
	}
}
function ValidUrlAdmin(poControlName, psMessage, psMsgControlName) {
	var Url = document.getElementById(poControlName);
	if (Url.value.match(/^((http|https|ftp)\:\/\/)?\w+([\.\-]\w+)*\.\w{2,4}(\:\d+)*([\/\.\-\?\&\%\#\=]\w+)*\/?$/i)
    || Url.value.match(/^mailto\:\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w{2,4}$/i)) {
		return true;
	}
	else {
		var psMsgControl = window.document.getElementById(psMsgControlName);
		isControlValidated = false;
		psMsgControl.innerHTML += '<li>' + psMessage + '</li>'; //psMessage + "<br>"; 
		return false;
	}
}


function GetRadioListData(rListControlName) {
	var ret = null;
	var rControls = window.document.getElementsByName(rListControlName);
	for (var i = 0; i < rControls.length; i++) {
		if (rControls[i].type == 'radio' && rControls[i].checked == true) {
			return rControls[i].value;
		}
	}
	if (rListControlName.indexOf('_') > 0) {
		rListControlName = ReplaceString(rListControlName, '_', '$');
		ret = GetRadioListData(rListControlName);
	}
	return ret;
}

//Get the selected Checkbox from the checkbox list of Asp.Net checkboxlist control.
function GetCheckboxListData(cListControlName) {
	var chkControls = window.document.getElementsByName(cListControlName);
	if (chkControls.length <= 1) {
		chkControls = window.document.getElementsByTagName("input");
	}
	var chkControlsValue = null;

	for (var i = 0; i < chkControls.length; i++) {
		if (chkControls[i].type == 'checkbox' && chkControls[i].id.indexOf(cListControlName) >= 0 && chkControls[i].checked == true) {
			var chkValue = chkControls[i].name.substring(cListControlName.length + 1)
			if (chkControlsValue == null)
			{ chkControlsValue = chkValue; }
			else
			{ chkControlsValue += ',' + chkValue; }
		}
	}
	return chkControlsValue;
}

//Get the selected Checkbox from the checkbox list of Asp.Net checkboxlist control.
function GetCheckboxListValues(cListControlName) {
	var chkControls = window.document.getElementsByName(cListControlName);
	if (chkControls.length <= 1) {
		chkControls = window.document.getElementsByTagName("input");
	}
	var chkControlsValue = null;
	for (var i = 0; i < chkControls.length; i++) {
		if (chkControls[i].type == 'checkbox' && chkControls[i].name.indexOf(cListControlName) >= 0 && chkControls[i].checked == true) {
			var chkValue = chkControls[i].value;
			if (chkControlsValue == null) {
				chkControlsValue = chkValue;
			}
			else {
				chkControlsValue += ',' + chkValue;
			}
		}
	}
	return chkControlsValue;
}

//Get the selected Checkbox from the collection of Checkboxes that are not asp.net controls.
//Note: Name of all checkboxes will be the same.
function GetCheckboxListDataByName(cListControlName) {
	var chkControls = window.document.getElementsByName(cListControlName);
	var chkControlsValue = null;
	for (var i = 0; i < chkControls.length; i++) {
		if (chkControls[i].checked == true) {
			var chkValue = chkControls[i].value;
			if (chkControlsValue == null) {
				chkControlsValue = chkValue;
			}
			else {
				chkControlsValue += ',' + chkValue;
			}
		}
	}
	return chkControlsValue;
}
//Get the value from the dropdown list.
function GetDropDownData(drpControlName) {
	var drpControl = window.document.getElementById(drpControlName);
	var drpControlValue = null;
	if (drpControl.type == 'select-one') {
		drpControlValue = drpControl.value;
	}
	return drpControlValue;
}

function GetListboxData(cListControlName) {
	var lstControl = window.document.getElementById(cListControlName);
	var lstControlsValue = null;
	if (lstControl != null) {
		for (i = 0; i < lstControl.options.length; i++) {
			if (lstControlsValue == null) {
				lstControlsValue = lstControl.options[i].value;
			}
			else {
				lstControlsValue += ',' + lstControl.options[i].value;
			}
		}
	}
	return lstControlsValue;
}

//Opening a new window Starts Here
var win = null;
function NewWindow(mypage, myname, w, h, scroll, resize) {
	var winl = (window.screen.width - w) / 2;
	var wint = (window.screen.height - h) / 2;
	var settings = 'height=' + h + ',';
	settings += 'width=' + w + ',';
	settings += 'top=' + wint + ',';
	settings += 'left=' + winl + ',';
	settings += 'scrollbars=' + scroll + ',';
	settings += 'resizable=' + resize + '';
	win = window.open(mypage, myname, settings);
	if (parseInt(navigator.appVersion) >= 4) {
		win.window.focus();
	}
}
//Check or Uncheck the Check boxes having the given name
function CheckUnCheckAll(ctrl, chkControlName) {
	var chkCtrls = window.document.getElementsByName(chkControlName);
	if (chkCtrls != null) {
		for (var i = 0; i < chkCtrls.length; i++) {
			chkCtrls[i].checked = ctrl.checked;
		}
	}
	return true;
}

function UnCheckHeader(ctrl, chkControlName) {
	if (ctrl.checked == false) {
		var chkCtrls = window.document.getElementById(chkControlName);
		if (chkCtrls != null) {
			if (chkCtrls.checked == true) {
				chkCtrls.checked = false;
			}
		}
	}
}

//Recursive function to replace All searchText with replaceText from content.
function ReplaceString(content, searchText, replaceText) {
	content = content.replace(searchText, replaceText)
	if (content.indexOf(searchText) > -1) {
		content = ReplaceString(content, searchText, replaceText);
	}
	return content;
}

//Function used to check - uncheck rows in gridview
function CheckAllDataGridCheckBoxes(aspCheckBoxID, selectAllId, chkControlId) {
	checkVal = document.getElementById(selectAllId);
	if (chkControlId) {
		chkControlId = document.getElementById(chkControlId);
		if (!chkControlId.checked) {
			checkVal.checked = false;
			return;
		}
		return;
	}

	checkVal = checkVal.checked;
	re = new RegExp(aspCheckBoxID + '$')  //generated control name starts with a colon
	for (i = 0; i < document.forms[0].elements.length; i++) {
		elm = document.forms[0].elements[i];
		if (elm.type == 'checkbox') {
			if (re.test(elm.name)) {
				elm.checked = checkVal;
			}
		}
	}
}

//Check whether records are selected to delete or not
function CheckDataGridToDelete(aspCheckBoxID, msgDelete, msgSelect) {
	var count = 0;
	re = new RegExp(aspCheckBoxID + '$')  //generated control name starts with a colon
	for (i = 0; i < document.forms[0].elements.length; i++) {
		elm = document.forms[0].elements[i];
		if (elm.type == 'checkbox') {
			if (re.test(elm.name)) {
				if (elm.checked == true) {
					count = 1;
				}
			}
		}
	}
	if (count == 1)
		if (confirm(msgDelete))
		return true;
	else
		return false;
	else
		alert(msgSelect);
	return false;
}
function CheckNotEmpty(poControlName) {
	var poControl = window.document.getElementById(poControlName);
	if (poControl.value == "")
		return false;
	else
		return true;
}
function Form_KeyPress(event, target, validateFunction) {
	var sourceElement = event.srcElement;
	if (!sourceElement) sourceElement = event.target;
	if (event.keyCode == 13 &&
            !(sourceElement &&
                    (sourceElement.tagName.toLowerCase() == "textarea" ||
                    sourceElement.tagName.toLowerCase() == "select" ||
                    sourceElement.tagName.toLowerCase() == "a" ||
                    sourceElement.type == "submit" ||
                    sourceElement.type == "reset" ||
                    sourceElement.type == "file" ||
                    sourceElement.type == "image")
            )
    ) {
		var defaultButton = document.getElementById(target);
		if (defaultButton && typeof (defaultButton.click) != "undefined") {
			event.cancelBubble = true;
			if (event.stopPropagation) {
				event.stopPropagation();
			}
			if (validateFunction != undefined) {
				if (validateFunction()) {
					__doPostBack(target, '');
				}
			}
			return false;
		}
	}
	return true;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


/*============================================================================*/

/*

This routine checks the credit card number. The following checks are made:

1. A number has been provided
2. The number is a right length for the card
3. The number has an appropriate prefix for the card
4. The number has a valid modulus 10 number check digit if required

If the validation fails an error is reported.

The structure of credit card formats was gleaned from a variety of sources on 
the web, although the best is probably on Wikepedia ("Credit card number"):

http://en.wikipedia.org/wiki/Credit_card_number

Parameters:
cardnumber           number on the card
cardname             name of card as defined in the card list below

Author:     John Gardner
Date:       1st November 2003
Updated:    26th Feb. 2005      Additional cards added by request
Updated:    27th Nov. 2006      Additional cards added from Wikipedia
Updated:    18th Jan. 2008      Additional cards added from Wikipedia

*/

/*
If a credit card number is invalid, an error reason is loaded into the 
global ccErrorNo variable. This can be be used to index into the global error  
string array to report the reason to the user if required:
   
e.g. if (!checkCreditCard (number, name) alert (ccErrors(ccErrorNo);
*/

var ccErrorNo = 0;
var ccErrors = new Array()

ccErrors[0] = "Unknown card type";
ccErrors[1] = "No card number provided";
ccErrors[2] = "Credit card number is in invalid format";
ccErrors[3] = "Credit card number is invalid";
ccErrors[4] = "Credit card number has an inappropriate number of digits";

function checkCreditCard(cardnumber, cardname) {

	// Array to hold the permitted card characteristics
	var cards = new Array();

	// Define the cards we support. You may add addtional card types.

	//  Name:      As in the selection box of the form - must be same as user's
	//  Length:    List of possible valid lengths of the card number for the card
	//  prefixes:  List of possible prefixes for the card
	//  checkdigit Boolean to say whether there is a check digit

	cards[0] = { name: "Visa",
		length: "13,16",
		prefixes: "4",
		checkdigit: true
	};
	cards[1] = { name: "MasterCard",
		length: "16",
		prefixes: "51,52,53,54,55",
		checkdigit: true
	};
	cards[2] = { name: "DinersClub",
		length: "14,16",
		prefixes: "300,301,302,303,304,305,36,38,55",
		checkdigit: true
	};
	cards[3] = { name: "CarteBlanche",
		length: "14",
		prefixes: "300,301,302,303,304,305,36,38",
		checkdigit: true
	};
	cards[4] = { name: "AmEx",
		length: "15",
		prefixes: "34,37",
		checkdigit: true
	};
	cards[5] = { name: "Discover",
		length: "16",
		prefixes: "6011,650",
		checkdigit: true
	};
	cards[6] = { name: "JCB",
		length: "15,16",
		prefixes: "3,1800,2131",
		checkdigit: true
	};
	cards[7] = { name: "enRoute",
		length: "15",
		prefixes: "2014,2149",
		checkdigit: true
	};
	cards[8] = { name: "Solo",
		length: "16,18,19",
		prefixes: "6334, 6767",
		checkdigit: true
	};
	cards[9] = { name: "Switch",
		length: "16,18,19",
		prefixes: "4903,4905,4911,4936,564182,633110,6333,6759",
		checkdigit: true
	};
	cards[10] = { name: "Maestro",
		length: "16,18",
		prefixes: "5020,6",
		checkdigit: true
	};
	cards[11] = { name: "VisaElectron",
		length: "16",
		prefixes: "417500,4917,4913",
		checkdigit: true
	};

	// Establish card type
	var cardType = -1;
	for (var i = 0; i < cards.length; i++) {

		// See if it is this card (ignoring the case of the string)
		if (cardname.toLowerCase() == cards[i].name.toLowerCase()) {
			cardType = i;
			break;
		}
	}

	// If card type not found, report an error
	if (cardType == -1) {
		ccErrorNo = 0;
		return false;
	}

	// Ensure that the user has provided a credit card number
	if (cardnumber.length == 0) {
		ccErrorNo = 1;
		return false;
	}

	// Now remove any spaces from the credit card number
	cardnumber = cardnumber.replace(/\s/g, "");

	// Check that the number is numeric
	var cardNo = cardnumber
	var cardexp = /^[0-9]{13,19}$/;
	if (!cardexp.exec(cardNo)) {
		ccErrorNo = 2;
		return false;
	}

	// Now check the modulus 10 check digit - if required
	if (cards[cardType].checkdigit) {
		var checksum = 0;                                  // running checksum total
		var mychar = "";                                   // next char to process
		var j = 1;                                         // takes value of 1 or 2

		// Process each digit one by one starting at the right
		var calc;
		for (i = cardNo.length - 1; i >= 0; i--) {

			// Extract the next digit and multiply by 1 or 2 on alternative digits.
			calc = Number(cardNo.charAt(i)) * j;

			// If the result is in two digits add 1 to the checksum total
			if (calc > 9) {
				checksum = checksum + 1;
				calc = calc - 10;
			}

			// Add the units element to the checksum total
			checksum = checksum + calc;

			// Switch the value of j
			if (j == 1) { j = 2 } else { j = 1 };
		}

		// All done - if checksum is divisible by 10, it is a valid modulus 10.
		// If not, report an error.
		if (checksum % 10 != 0) {
			ccErrorNo = 3;
			return false;
		}
	}

	// The following are the card-specific checks we undertake.
	var LengthValid = false;
	var PrefixValid = false;
	var undefined;

	// We use these for holding the valid lengths and prefixes of a card type
	var prefix = new Array();
	var lengths = new Array();

	// Load an array with the valid prefixes for this card
	prefix = cards[cardType].prefixes.split(",");

	// Now see if any of them match what we have in the card number
	for (i = 0; i < prefix.length; i++) {
		var exp = new RegExp("^" + prefix[i]);
		if (exp.test(cardNo)) PrefixValid = true;
	}

	// If it isn't a valid prefix there's no point at looking at the length
	if (!PrefixValid) {
		ccErrorNo = 3;
		return false;
	}

	// See if the length is valid for this card
	lengths = cards[cardType].length.split(",");
	for (j = 0; j < lengths.length; j++) {
		if (cardNo.length == lengths[j]) LengthValid = true;
	}

	// See if all is OK by seeing if the length was valid. We only check the 
	// length if all else was hunky dory.
	if (!LengthValid) {
		ccErrorNo = 4;
		return false;
	};

	// The credit card is in the required format.
	return true;
}

/*============================================================================*/


/////////////////////////////////////////

function ValidateExpDate() {


}

function CompareDates(startDate, EndDate) {
	var StartDate = new Date(startDate);
	var EndDate = new Date(EndDate);

	if (EndDate < StartDate) {
		return false;
	}
	else
		return true;
}

/////////////////////////////////////////
/// function used to validate email address.
function validateEmailAddress(emailaddress) {
	var goodemail = emailaddress.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/gi)

	if (goodemail) {
		good = true;
		return true;
	}
	else {
		good = false;
		return false;
	}
}

var ImageTypes = {
	'.gif': 1,
	'.jpg': 1,
	'.jpeg': 1,
	'.png': 1,
	'.bmp': 1
};

function ValidateImageTypes(poControlName, psMessage, psMsgControlName) {
	var poControl = document.getElementById(poControlName);
	if (poControl) {
		var re = /\..+$/;
		var ext = poControl.value.substring(poControl.value.toString().lastIndexOf(".")).toLowerCase();
		if (ImageTypes[ext])
			return true;
		else {
			var psMsgControl = window.document.getElementById(psMsgControlName);
			if (psMsgControl)
				psMsgControl.innerHTML += '<li>' + psMessage + '</li> ';
			isControlValidated = false;
			return false;
		}
	}
	else {
		var psMsgControl = window.document.getElementById(psMsgControlName);
		if (psMsgControl)
			psMsgControl.innerHTML += '<li>' + psMessage + '</li> ';
		isControlValidated = false;
		return false;
	}
}
