 //Start Global Variable declaration
  var iMaxLength=21; // This variable is used to assign value to maxlength attribute of phone number textbox
 //End Global Variable declaration
function CalculateGridTextTotalCondo(gridname)
{
	//Calculates the total of all TextBox values in a grid column
	//TextBoxTotalAmount = The textbox on aspx page to display total
	//    hRowCount = Add to codebehind-Datagrid1.DataBind() hRowCount.Value = YourDataTable.Rows.Count
 
	var grid = document.getElementById(gridname); 
	var len = grid.rows.length; 
	var nm;
	var ctrlamt;
	var maxvalue;
	var bCompare = true;
	var x; 
	var hTotal = document.getElementById("hTotalAmount");
	var hTotalCh = document.getElementById("hTotalCharges");
	var total;
	total=0;
	var ctrltotal = document.getElementById("lblTotalAmount");
	for (x = 2; x<=len; x++)
	{     
		nm = gridname + "__ctl" + x + "_Amount";
		if (document.getElementById(nm) == null) 
		{
		     nm = gridname + "_ctl0" + x + "_Amount";
		     if (document.getElementById(nm) == null) 
					nm = gridname + "_ctl" + x + "_Amount";
		}	
		ctrlamt = parseNum(document.getElementById(nm),2);    
		if (ctrlamt=='') ctrlamt = '0.00';
		if (ValidFloat(document.getElementById(nm),2)==true)
		{
			maxvalue =grid.rows[x-1].cells[4].innerHTML 									
 			maxvalue =trim(maxvalue.replace("$",""));
			maxvalue =trim(maxvalue.replace(",",""));
			maxvalue =trim(maxvalue.replace("(","-"));  //Replace opening brace by - sign
			maxvalue =trim(maxvalue.replace(")",""));			
			if (parseFloat(maxvalue)<= parseFloat("0"))
			{
				if (parseFloat(ctrlamt) > parseFloat("0"))
				{
					alert('The subscription amount may be between '+ maxvalue +' and 0.00.');
					document.getElementById(nm).select();
					return false;
				}
				else if ((parseFloat(ctrlamt) < parseFloat("0")) && (parseFloat(ctrlamt) < parseFloat(maxvalue)))
				{
					alert('The subscription amount may be between '+ maxvalue +' and 0.00.');
					document.getElementById(nm).select();
					return false;
				}
				else
				{
					//ctrltotal = document.getElementById("lblTotalAmount");      
					hTotal = document.getElementById("hTotalAmount");					
					total = parseFloat(total) + parseFloat(ctrlamt);					
					hTotal.value = total;    
					FormatNumber(hTotal);
					//ctrltotal.innerHTML = hTotal.value;
				}
				if (parseFloat(ctrlamt) != parseFloat(maxvalue))
				{
					bCompare = false;
				}
			}		
			else if (parseFloat(maxvalue)> parseFloat("0"))
			{
 				if (parseFloat(ctrlamt) < parseFloat("0"))
				{
					alert('The amount paid should not be less than 0.00.');
					document.getElementById(nm).select();
					return false;
				}
				else if ((parseFloat(ctrlamt) > parseFloat("0")) && (parseFloat(ctrlamt) > parseFloat(maxvalue)))
				{
 					alert('The amount paid should not exceed ' + maxvalue +'.');
					document.getElementById(nm).select();
					return false;
				}
				else
				{
					//ctrltotal = document.getElementById("lblTotalAmount");      
					hTotal = document.getElementById("hTotalAmount");					
					total = parseFloat(total) + parseFloat(ctrlamt);					
					hTotal.value = total;    
					FormatNumber(hTotal);
					//ctrltotal.innerHTML = hTotal.value;
				}
				if (parseFloat(ctrlamt) != parseFloat(maxvalue))
				{
					bCompare = false;
				}
			}						
		}	
		else
		{
			alert('Please enter valid amount.');
			document.getElementById(nm).select();
			return false;
		}
	}
	
	if (hTotalCh !=	null)
	{
		if (document.getElementById('TxtTotalPayment') != null)
		{			
			if (parseFloat(total) == parseFloat(hTotalCh.value) && bCompare == true)
			{
			   document.getElementById('TxtTotalPayment').disabled = false;
			   if (document.getElementById('TxtExtraAmount') != null)
			   {
			   	document.getElementById('TxtExtraAmount').disabled = false;
			   	document.getElementById('TxtTotalPayment').value = parseFloat(parseNum(document.getElementById('TxtExtraAmount'),2) + parseFloat(hTotalCh.value));	
			   }
			   else
			   {
			   	document.getElementById('TxtTotalPayment').value = parseFloat(hTotalCh.value);
			   	document.getElementById('TxtTotalPayment').disabled = true;
			   }
			   FormatNumber(document.getElementById('TxtTotalPayment'),2);		   	   
			}
			else
			{
			   if (document.getElementById('TxtExtraAmount') != null)
			   {
			   	document.getElementById('TxtExtraAmount').disabled = true;
			   	document.getElementById('TxtExtraAmount').value = '0.00';
			   }			   
			   document.getElementById('TxtTotalPayment').value = parseFloat(total);
			   FormatNumber(document.getElementById('TxtTotalPayment'),2);				   
			}	
		}
	}	
	return true;
}

function CalculateGridTextTotalMozila(gridname)
{
	//Calculates the total of all TextBox values in a grid column
	//TextBoxTotalAmount = The textbox on aspx page to display total
	//    hRowCount = Add to codebehind-Datagrid1.DataBind() hRowCount.Value = YourDataTable.Rows.Count  
   	var grid = document.getElementById(gridname); 
	var len = grid.rows.length; 
	var nm;
	var ctrlamt;
	var maxvalue;
	var bCompare = true;
	var x; 	
 	var hTotal = document.getElementById("hTotalAmount"); 	
	var hTotalCh = document.getElementById("hTotalCharges");
	var hExtraAmt = document.getElementById('TxtExtraAmount').value;
	var hTotalCredit = 0;
	var total;
	total=0;
	var ctrltotal = document.getElementById("lblTotalAmount");
	for (x = 2; x<=len; x++)
	{     
		nm = gridname + "__ctl" + x + "_Amount"; 
		if (document.getElementById(nm) == null) 
		{
		     nm = gridname + "_ctl0" + x + "_Amount";
		     if (document.getElementById(nm) == null) 
			nm = gridname + "_ctl" + x + "_Amount";
		}   
		ctrlamt = parseNum(document.getElementById(nm),2);    		
		if (ctrlamt=='') ctrlamt = '0.00';
		if (ValidFloat(document.getElementById(nm),2)==true)
		{
			maxvalue =grid.rows[x-1].cells[3].innerHTML 									
			maxvalue =trim(maxvalue.replace("$",""));
			maxvalue =trim(maxvalue.replace(",",""));			
			maxvalue =trim(maxvalue.replace("(","-"));  //Replace opening brace by - sign
			maxvalue =trim(maxvalue.replace(")",""));			
			if (parseFloat(maxvalue)<= parseFloat("0"))
			{
				if (parseFloat(ctrlamt) > parseFloat("0"))
				{
					alert('The subscription amount may be between '+ maxvalue +' and 0.00.');
					document.getElementById(nm).select();
					return false;
				}
				else if ((parseFloat(ctrlamt) < parseFloat("0")) && (parseFloat(ctrlamt) < parseFloat(maxvalue)))
				{
					alert('The subscription amount may be between '+ maxvalue +' and 0.00.');
					document.getElementById(nm).select();
					return false;
				}
				else
				{
					//ctrltotal = document.getElementById("lblTotalAmount");  
					if (parseFloat(ctrlamt) < 0) hTotalCredit = hTotalCredit + parseFloat(ctrlamt); 
					hTotal = document.getElementById("hTotalAmount");					
					total = parseFloat(total) + parseFloat(ctrlamt);					
					hTotal.value = total;    
					FormatNumber(hTotal);
					//ctrltotal.innerHTML = hTotal.value;
				}
				if (parseFloat(ctrlamt) != parseFloat(maxvalue))
				{
					bCompare = false;
				}				
			}		
			else if (parseFloat(maxvalue)> parseFloat("0"))
			{
				if (parseFloat(ctrlamt) < parseFloat("0"))
				{
					alert('The amount paid should not be less than 0.00.');
					document.getElementById(nm).select();
					return false;
				}
				else if ((parseFloat(ctrlamt) > parseFloat("0")) && (parseFloat(ctrlamt) > parseFloat(maxvalue)))
				{
					alert('The amount paid should not exceed ' + maxvalue +'.');
					document.getElementById(nm).select();
					return false;
				}
				else
				{
					//ctrltotal = document.getElementById("lblTotalAmount");      
					if (parseFloat(ctrlamt) < 0) hTotalCredit = hTotalCredit + parseFloat(ctrlamt); 
					hTotal = document.getElementById("hTotalAmount");					
					total = parseFloat(total) + parseFloat(ctrlamt);					
					hTotal.value = total;    
					FormatNumber(hTotal);
					//ctrltotal.innerHTML = hTotal.value;
				}
				if (parseFloat(ctrlamt) != parseFloat(maxvalue))
				{
					bCompare = false;
				}				
			}						
		}	
		else
		{
			alert('Please enter valid amount.');
			document.getElementById(nm).select();
			return false;
		}		
	}
     if (hExtraAmt > 0 )
        {
        	if ((hTotal.value < 0) || ( hTotalCh.value <=0))
        	{
        		document.getElementById('TxtTotalPayment').value = FormatNumber(parseFloat(hExtraAmt));
        		
        	}
        	else
        	{
        	     	document.getElementById('TxtTotalPayment').value = parseFloat(hTotal.value) + parseFloat(hExtraAmt);
        	     	hTotal.value = parseFloat(hTotal.value) + parseFloat(hExtraAmt);
        	}
        	
        }
        
	if (document.getElementById('TxtTotalPayment').value < 0)
		{
			if (hTotalCredit != 0)
			{
				alert('You have an outstanding credit on of $' + Math.abs(hTotalCredit) + ' on your account that will be applied against your outstanding charge. Please make sure that the total payment amount is not less than zero.');
			}
			else
			{
				alert('The total payment amount should not be less than 0.00.');
			}
			//alert(parseInt(hTotalCredit));
			return false;
		}

	if (hTotalCh !=	null && hTotalCh > 0)
	{			
		if (document.getElementById('TxtTotalPayment') != null)
		{
			if (parseFloat(total) == parseFloat(hTotalCh.value) && bCompare == true)
			{			   
			   document.getElementById('TxtTotalPayment').disabled = false;	
			   if (document.getElementById('TxtExtraAmount') != null)
			   {
			   	//document.getElementById('TxtExtraAmount').disabled = false;
			   	document.getElementById('TxtTotalPayment').value = parseFloat(parseNum(document.getElementById('TxtExtraAmount'),2) + parseFloat(hTotalCh.value));
			   }
			   else
			   {
			   	document.getElementById('TxtTotalPayment').value = parseFloat(hTotalCh.value);
			   	document.getElementById('TxtTotalPayment').disabled = true;
			   }
			   FormatNumber(document.getElementById('TxtTotalPayment'),2);		   	   	   	   
			}
			else
			{				
			   if (document.getElementById('TxtExtraAmount') != null)
			   {
			   //	document.getElementById('TxtExtraAmount').disabled = true;
			   //	document.getElementById('TxtExtraAmount').value = '0.00';			   			   			   		   
			   }
			   document.getElementById('TxtTotalPayment').value = parseFloat(total) + parseFloat(hExtraAmount);			   
			   FormatNumber(document.getElementById('TxtTotalPayment'),2);			   
			}
		}
	}
	return true;
}

function CalculateGridTextTotalRecurringMozila(gridname)
{
	//Calculates the total of all TextBox values in a grid column
	//TextBoxTotalAmount = The textbox on aspx page to display total
	//    hRowCount = Add to codebehind-Datagrid1.DataBind() hRowCount.Value = YourDataTable.Rows.Count
 	 
   	var grid = document.getElementById(gridname); 
     	var len = grid.rows.length; 
     	var nm;
	var ctrlamt;
	var maxvalue;
	var x; 
	var chk;
 
	for (x = 2; x<=len; x++)	
	{     
		nm = gridname + "__ctl" + x + "_Amount";
		if (document.getElementById(nm) == null) 
		{
		     nm = gridname + "_ctl" + x + "_Amount";
		     if (document.getElementById(nm) == null)
		     	nm = gridname + "_ctl0" + x + "_Amount";
		}
		ctrlamt = parseNum(document.getElementById(nm),2);    
		if (ctrlamt=='') ctrlamt = 0;

		if (ValidFloat(document.getElementById(nm),2)==true)
		{
			str1 = grid.rows[x-1].cells[2].innerHTML			
			str1 =trim(str1.replace("$",""));
			str1 =trim(str1.replace(",",""));
			str1 =trim(str1.replace("(","-"));//Replace opening brace by - sign
			str1 =trim(str1.replace(")",""));			
			
			str2 = grid.rows[x-1].cells[3].innerHTML						
			str2 =trim(str2.replace("$",""));
			str2 =trim(str2.replace(",",""));
			str2 =trim(str2.replace("(","-"));//Replace opening brace by - sign
			str2 =trim(str2.replace(")",""));
			
			maxvalue = parseFloat(str1) - parseFloat(str2)
			maxvalue = maxvalue.toFixed(2)
			if (maxvalue<=0) 
			{
				if (ctrlamt > 0)
				{
					alert('The amount paid should not exceed 0.00.');
					document.getElementById(nm).select();
					return false;
				}
				else if (ctrlamt < 0 && ctrlamt < maxvalue)
				{
					alert('The subscription amount may be between '+ maxvalue +' and 0.00.');
					document.getElementById(nm).select();
					return false;
				}				
			}
			else if (maxvalue>0)
			{
				if (ctrlamt < 0)
				{
					alert('The amount paid should not be less than 0.00.');
					document.getElementById(nm).select();
					return false;
				}
				else if (ctrlamt > 0 && ctrlamt > maxvalue)
				{
					alert('The amount paid should not exceed ' + maxvalue +'.');
					document.getElementById(nm).select();
					return false;
				}
			}
		}
		else
		{
			alert('Please enter valid amount.');
			document.getElementById(nm).select();
			return false;
		}
	}
	return true;
}

function ValidFloat(numObj, iDigits, iMin, iMax)
{


	var sTest = numObj.value;

  if (iMin == undefined) {iMin = -100000000000}
  if (iMax == undefined) {iMax = 100000000000}
	iDigits = (iDigits == null) ? 10 : iDigits;

	/* test if number is valid currency format */
	if (Empty(sTest)) { return true; }
	if (! isValidMoneyFormat(sTest, iDigits))
	{
		return false;
	}

	/* get number back as US format without thousand separator */
	sTest = parseNum(numObj, iDigits);

	if (! ValidMinMax(sTest, iMin, iMax))
	{
		return false;
	}

	return true;
}

function ValidIntMozila(numObj)
{
	var sTest = numObj.value;
	var sGUID = GetCookie("bEuroNum");
	var sPattern;
	var bTemp = false;
	
	
	
	/* check for numbers like 123 */
	var re = new RegExp("^(-\\d)?\\d*$");
	bTemp = (re.test(sTest)) ? true : bTemp;
	
	/* check for numbers like 1,234 and -123,456,789 */
	sPattern = (sGUID == "true") ? "^-?\\d{1,3}(\\.\\d{3})*$" : "^-?\\d{1,3}(\\,\\d{3})*$";
	re.compile(sPattern);
	bTemp = (re.test(sTest)) ? true : bTemp;
	
	
	if (! bTemp)
	{
		return false;
	}
	
	return true;

}



function ValidateSSN2Mozila(num) {
  dashes = 0;
  ssn = num.value.toUpperCase();
  if (Empty(ssn)) return "";
	if (((ssn.charAt(0) < "a") || (ssn.charAt(0) > "z")) && ((ssn.charAt(0) < "A") || (ssn.charAt(0) > "Z")) && ((ssn.charAt(0) < "0") || (ssn.charAt(0) > "9"))) {
    return false;
	};
  for (var i = 0; (i < ssn.length); i++) {
    if (i != 0) {
  		if (((ssn.charAt(i) < "0") || (ssn.charAt(i) > "9")) && (ssn.charAt(i) != "-")) return false;
  	};
    if (ssn.charAt(i) == "-") {
      dashes = dashes + 1;
		};
	}; 
  if (dashes > 2) return false;
  if (dashes == 1) {
	  if ((ssn.charAt(0) < "0") || (ssn.charAt(0) > "9")) {
      return false;
	};
  
};

	ssntotallength =ssn.length - dashes;


	 if (ssntotallength !=9)  return false;
	 
	if (ssn.length != (9 + dashes))  return false;
	
	 
		
  if (ssn.length == 9) {
    ssn = ssn.substring(0, 3) + "-" + ssn.substring(3, 5) + "-" + ssn.substring(5, 9);
  };  
  if (ssn.substring(3, 4) != '-' || ssn.substring(6, 7) != '-')  return false;
  num.value = ssn;
  return true;
}



function ValidatePhoneMozila(txtFieldName, PhoneNum) {
  var sPhoneNum = "";
  var sNewPhoneNum = "";
  var sOrigPhoneNum = PhoneNum.value;
   var sGUID = GetCookie("BINTERNATIONAL");
  
  
 
  if (sGUID == "true") {return}
  if (Empty(PhoneNum.value))
  {
   PhoneNum.value = "";
   return true;
  }
   
  if (txtFieldName == '') {txtFieldName = PhoneNum.name}
  /* --loop through to get just the numbers and not special characters */
  for (var i = 0; i <= PhoneNum.value.length; i++) {
    if ((PhoneNum.value.charAt(i) >= "0") && (PhoneNum.value.charAt(i) <= "9")) {
      sPhoneNum = sPhoneNum  + PhoneNum.value.charAt(i);
    }
  }
  if ((sPhoneNum != "") && (sPhoneNum.length >= 10)) {
    if (sPhoneNum.substring(7,15) == "") {
      sNewPhoneNum = sPhoneNum.substring(0, 3) + "-" + sPhoneNum.substring(3, 7);
    }
    else
    {
      sNewPhoneNum = '(' + sPhoneNum.substring(0, 3) + ') ' + sPhoneNum.substring(3, 6) + "-" + sPhoneNum.substring(6, 10);
      if (sPhoneNum.substring(10, 15) != "") { sNewPhoneNum = sNewPhoneNum + " x" + sPhoneNum.substring(10, 15); }
    }
  }
  else  /* Display error message */
  {
  	
  	
      return false;
  }

 return true;
}

function ValidatePhoneCustom(txtFieldName, PhoneNum) {
  var sPhoneNum = "";
  var sNewPhoneNum = "";
  var sOrigPhoneNum = PhoneNum.value;
   var sGUID = GetCookie("BINTERNATIONAL");
  if (sGUID == "true") {return}
  if (Empty(PhoneNum.value))
  {
   PhoneNum.value = "";
   return true;
  }
  if (txtFieldName == '') {txtFieldName = PhoneNum.name}
  /* --loop through to get just the numbers and not special characters */
  for (var i = 0; i <= PhoneNum.value.length; i++) {
    if ((PhoneNum.value.charAt(i) >= "0") && (PhoneNum.value.charAt(i) <= "9")) {
      sPhoneNum = sPhoneNum  + PhoneNum.value.charAt(i);
    }
  }
  if ((sPhoneNum != "") && (sPhoneNum.length >= 10)) {
    if (sPhoneNum.substring(7,15) == "") {
      sNewPhoneNum = sPhoneNum.substring(0, 3) + "-" + sPhoneNum.substring(3, 7);
    }
    else
    {
      sNewPhoneNum = '(' + sPhoneNum.substring(0, 3) + ') ' + sPhoneNum.substring(3, 6) + "-" + sPhoneNum.substring(6, 10);
      if (sPhoneNum.substring(10, 15) != "") { sNewPhoneNum = sNewPhoneNum + " x" + sPhoneNum.substring(10, 15); }
    }
  }
  else  /* Display error message */
  {
      return errormsg(PhoneNum, "Please enter telephone number in (xxx) xxx-xxxx format.");
  }

  document.forms[0].elements[txtFieldName].value = sNewPhoneNum;

  //if (sOrigPhoneNum != sNewPhoneNum) { gotChange(); }
}

function FormatPhoneNumCustom(txtFieldName, PhoneNum) 
{
  var sPhoneNum = "";
  var sNewPhoneNum = "";
  var sOrigPhoneNum = PhoneNum.value;
   var sGUID = GetCookie("BINTERNATIONAL");
  if (sGUID == "true") {return}
  if (Empty(PhoneNum.value)) 
  {
  	PhoneNum.value = "";
  	return true;
  }
  if (txtFieldName == '') {txtFieldName = PhoneNum.name}
  /* --loop through to get just the numbers and not special characters */
  for (var i = 0; i <= PhoneNum.value.length; i++) {
    if ((PhoneNum.value.charAt(i) >= "0") && (PhoneNum.value.charAt(i) <= "9")) {
      sPhoneNum = sPhoneNum  + PhoneNum.value.charAt(i);
    }
  }
  if (sPhoneNum != "") {
    if (sPhoneNum.substring(7,15) == "") { 
      sNewPhoneNum = sPhoneNum.substring(0, 3) + "-" + sPhoneNum.substring(3, 7);
    }
    else
    {
      sNewPhoneNum = '(' + sPhoneNum.substring(0, 3) + ') ' + sPhoneNum.substring(3, 6) + "-" + sPhoneNum.substring(6, 10);
      if (sPhoneNum.substring(10, 15) != "") { sNewPhoneNum = sNewPhoneNum + " x" + sPhoneNum.substring(10, 14); }
    }
  }
  else  /* Display error message */
  {    
      return error(PhoneNum, "Please enter phone number as 10 digits or (NNN) NNN-NNNN with an additional optional extension as xNNNN.");  
  }

  document.forms[0].elements[txtFieldName].value = sNewPhoneNum;

  //if (sOrigPhoneNum != sNewPhoneNum) { gotChange(); }
}

function errormsg(elem, text, bSelect) {
// display the first error
   var ss;

   if (typeof(text)  == "undefined") { window.alert("Undefined error."); this.select()}
   window.alert(text);
   return "false";
   if (typeof(elem)  == "undefined") {return}
   if (elem == "n"){return}
   if (elem.disabled == true) {return}
   if (bSelect != "false") {
      if (bSelect != "combo") {
        try {
         document.forms[0].elements[elem.name].focus();
         document.forms[0].elements[elem.name].select();
       }
       catch (any) { }
      }
   };
   errorfound = true;
}			
			
function ValidateZip(obj)
		{
			
			if(trim(obj.value)==""){return true;}
			if(obj.value.length!=5)
			{alert('Please enter a valid zip code.');obj.focus();return false;}
			else{return true;}

		}

function FormatPhoneNum1(txtFieldName, PhoneNum,altMsg) {
  var sPhoneNum = "";
  var sNewPhoneNum = "";
  var ctr;
  if(trim(PhoneNum.value)==""){return true;}
  for(ctr=0;ctr<PhoneNum.value.length;ctr++)
	{	
		if((PhoneNum.value.charAt(ctr) >= "0") && (PhoneNum.value.charAt(ctr) <= "9")) {}
		else 
		{	if(PhoneNum.value.search("-")==-1) {ctr=ctr+1; alert(altMsg);PhoneNum.focus();PhoneNum.value="";return false;}
		}
	}
	
	if(PhoneNum.value.search("-")==-1)
	{	if(ctr!=10){alert(altMsg);PhoneNum.focus();PhoneNum.value="";return false;}}
	else
	{if(ctr<14){alert(altMsg);PhoneNum.focus();PhoneNum.value="";return false;}}

	var sOrigPhoneNum = PhoneNum.value;
	var sGUID = GetCookie("BINTERNATIONAL");
	if (sGUID == "true") {return false;}
	if (Empty(PhoneNum.value)) 
	{
  		PhoneNum.value = "";
	  	return false;
	}
	if (txtFieldName == '') {txtFieldName = PhoneNum.name}
	/* --loop through to get just the numbers and not special characters */
  	for (var i = 0; i <= PhoneNum.value.length; i++) 
	{
		if ((PhoneNum.value.charAt(i) >= "0") && (PhoneNum.value.charAt(i) <= "9")) 
		{	sPhoneNum = sPhoneNum  + PhoneNum.value.charAt(i);  }
	}
	if (sPhoneNum != "") 
	{
		if (sPhoneNum.substring(7,15) == "") 
		{   sNewPhoneNum = sPhoneNum.substring(0, 3) + "-" + sPhoneNum.substring(3, 7); }
	        else
		{
		      sNewPhoneNum = '(' + sPhoneNum.substring(0, 3) + ') ' + sPhoneNum.substring(3, 6) + "-" + sPhoneNum.substring(6, 10);
		      if (sPhoneNum.substring(10, 15) != "") { sNewPhoneNum = sNewPhoneNum + " x" + sPhoneNum.substring(10, 15);}
    		}
	}
	

  document.forms[0].elements[txtFieldName].value = sNewPhoneNum;
  return true;
  
}


function checkBirthDate(DOB)
{
	if (DOB.value=='') return true;
	var curDate =new Date();
	var dtofBirth= new Date(DOB.value);
	if(dtofBirth>curDate)
	{
		alert('Please enter a date of birth less than the current date.');
		DOB.focus();
		return false;
	}

	diff  = new Date();
			
	diff.setTime(Math.abs(dtofBirth.getTime() - curDate.getTime()));
	timediff = diff.getTime();
	days = Math.floor(timediff / (1000 * 60 * 60 * 24)); 			
	yrs= Math.floor(days/365);
				
	days = days - yrs/4; // minus leap year
	yrs = Math.floor(days/365);
	if (yrs>=18)
	{				
		return true;
	}
	else
	{
		alert('The applicant must be more than 18 years old.');
		DOB.focus();
		return false;
	}					
}

function CalculateGridTextTotal(c, maxvalue, gridname)
{
//Calculates the total of all TextBox values in a grid column
//TextBoxTotalAmount = The textbox on aspx page to display total
//	   hRowCount = Add to codebehind-Datagrid1.DataBind() hRowCount.Value = YourDataTable.Rows.Count
	var bCompare = true;
	var sTest;	
	sTest = parseNum(c,2);
	if (ValidCurrency(c))
	{
		FormatNumber(c);		
		maxvalue = maxvalue.toFixed(2);		
		if (parseFloat(maxvalue) <= parseFloat('0')) 
		{	
			if (sTest > 0)
			{
				alert('The amount paid should not exceed 0.00');
				c.select();
				return false;
			}
			else if (sTest < 0 && sTest < maxvalue)
			{
				alert('The subscription amount may be between '+ maxvalue +' and 0.00');
				c.select();
				return false;
			}
			if (parseFloat(sTest) != parseFloat(maxvalue))
			{
				bCompare = false;
			}
		}
		else if (maxvalue>0)
		{
			if (sTest < 0)
			{
				alert('The amount paid should not be less than 0.00.');
				c.select();
				return false;
			}
			else if (sTest > 0 && sTest > maxvalue)
			{
				alert('The amount paid should not exceed ' + maxvalue +'.');
				c.select();
				return false;
			}
			if (parseFloat(sTest) != parseFloat(maxvalue))
			{
				bCompare = false;
			}
		}		
		var ctrltotal;
		var hTotal;
		var ctrlamt;
		var hTotalCredit = 0;
		var hExtraAmount = 0;
		var nm;
		var total;
		var rowCount;
		total=0;			
		rowCount = 2;

		var grid = document.getElementById(gridname);
      		var rowCount = grid.rows.length;

		ctrltotal = document.getElementById("lblTotalAmount");      		
		hTotal = document.getElementById("hTotalAmount")
		hTotalCh = document.getElementById("hTotalCharges");		
		hExtraAmount = document.getElementById("TxtExtraAmount").value;
		if (hExtraAmount=='') hExtraAmount = '0.00';
		
		for (var x = 2; x<=rowCount; x++)
		{     
			nm = gridname + "__ctl" + x + "_Amount";			
			if (document.getElementById(nm) == null) 
			{
				nm = gridname + "_ctl0" + x + "_Amount";
				if (document.getElementById(nm) == null) 
					nm = gridname + "_ctl" + x + "_Amount";
			}						
			ctrlamt = parseNum(document.getElementById(nm),2); //trim(document.getElementById(nm).value);    			
			if (ctrlamt=='') ctrlamt = '0.00';
			if (ValidFloat(document.getElementById(nm),2)==true)
			{				
				if (parseFloat(ctrlamt) < 0) hTotalCredit = hTotalCredit + parseFloat(ctrlamt); 
				total = parseFloat(total) + parseFloat(ctrlamt);				
				hTotal.value = total.toFixed(2);				
				//FormatNumber(hTotal);				
				//ctrltotal.innerHTML = hTotal.value;				
				
			}
		}
		document.getElementById('hGridTotalCharges').value = parseFloat(hTotal.value);
		if (hTotal.value < 0)
		{
			document.getElementById('TxtTotalPayment').value = parseFloat(hTotal.value);
			if (hTotalCredit != 0)
			{
				alert('You have an outstanding credit on of $' + Math.abs(hTotalCredit) + ' on your account that will be applied against your outstanding charge. If you wish to make a partial payment for the selected charge, please make sure that the total payment amount is not less than zero.');
				c.value=maxvalue;
			}
			else
			{
				alert('The total payment amount should not be less than 0.00.');
			}
			
			//alert(parseInt(hTotalCredit));
			c.select();
			return false;
		}
			
		if (hTotalCh !=	null && hTotalCh.value > 0)
		{
			if (document.getElementById('TxtTotalPayment') != null)
			{
				if (parseFloat(total) == parseFloat(hTotalCh.value) && bCompare == true )
				{				   
				   document.getElementById('TxtTotalPayment').disabled = false;
				   if (document.getElementById('TxtExtraAmount') != null)
				   {
				   	//document.getElementById('TxtExtraAmount').disabled = false;
				   	document.getElementById('TxtTotalPayment').value = parseFloat(parseNum(document.getElementById('TxtExtraAmount'),2) + parseFloat(hTotalCh.value));				  	
				   }
				   else
				   {
				   	document.getElementById('TxtTotalPayment').value = parseFloat(hTotalCh.value);
				   	document.getElementById('TxtTotalPayment').disabled = true;
				   }
				   FormatNumber(document.getElementById('TxtTotalPayment'),2);
				}
				else
				{
				if (document.getElementById('TxtExtraAmount') != null)
				   {
					//document.getElementById('TxtExtraAmount').disabled = true;
				   	//document.getElementById('TxtExtraAmount').value = '0.00';
				   }				   
				   document.getElementById('TxtTotalPayment').disabled = true;				   
				   document.getElementById('TxtTotalPayment').value =  parseFloat(total) + parseFloat(hExtraAmount);
				   FormatNumber(document.getElementById('TxtTotalPayment'),2);				   
				}
			}
		}
	}
	else
		return false;
}

function CalculateGridTextTotalRecurring(c, maxvalue, gridname)
{
//Calculates the total of all TextBox values in a grid column
//TextBoxTotalAmount = The textbox on aspx page to display total
//	   hRowCount = Add to codebehind-Datagrid1.DataBind() hRowCount.Value = YourDataTable.Rows.Count
	var bCompare = true;
	var sTest;	
	sTest = parseNum(c,2);
	if (ValidCurrency(c))
	{
		FormatNumber(c);		
		maxvalue = maxvalue.toFixed(2);		
		if (parseFloat(maxvalue) <= parseFloat('0')) 
		{	
			if (sTest > 0)
			{
				alert('The amount paid should not exceed 0.00');
				c.select();
				return false;
			}
			else if (sTest < 0 && sTest < maxvalue)
			{
				alert('The subscription amount may be between '+ maxvalue +' and 0.00');
				c.select();
				return false;
			}
			if (parseFloat(sTest) != parseFloat(maxvalue))
			{
				bCompare = false;
			}
		}
		else if (maxvalue>0)
		{
			if (sTest < 0)
			{
				alert('The amount paid should not be less than 0.00.');
				c.select();
				return false;
			}
			else if (sTest > 0 && sTest > maxvalue)
			{
				alert('The amount paid should not exceed ' + maxvalue +'.');
				c.select();
				return false;
			}
			if (parseFloat(sTest) != parseFloat(maxvalue))
			{
				bCompare = false;
			}
		}		
		var ctrltotal;
		var hTotal;
		var ctrlamt;
		var nm;
		var total;
		var rowCount;
		var conveince;
		var conveinceFee;
		total=0;			
		rowCount = 2;

		var grid = document.getElementById(gridname);
      		var rowCount = grid.rows.length;

		ctrltotal = document.getElementById("lblTotalAmount");      		
		hTotal = document.getElementById("hTotalAmount")
		hTotalCh = document.getElementById("hTotalCharges");		
		conveince=document.getElementById("lblConvenience").innerHTML;
		conveinceFee=parseFloat(trim(conveince.replace("$","")));
		var i;
		i=0;
		for (var x = 2; x<=rowCount; x++)
		{     
			nm = gridname + "__ctl" + x + "_Amount";
			ctrlamt = parseNum(document.getElementById(nm),2); //trim(document.getElementById(nm).value);    			
			if (ctrlamt=='') ctrlamt = '0.00';
			if (ValidFloat(document.getElementById(nm),2)==true)
			{				
				total = parseFloat(total) + parseFloat(ctrlamt);
				if((total!= 0 && i==0) && !(isNaN(parseFloat(conveinceFee)))) 
					{
					total= total + parseFloat(conveinceFee);
					i=1;
					}				
				hTotal.value = total.toFixed(2);				
				FormatNumber(hTotal);				
				//ctrltotal.innerHTML = hTotal.value;				
				
			}
		}
		if (rowCount > 1)
		{		
		var ctTortal = hTotal.value;			
		if (parseFloat(total) < 0)
		{			
			ctTortal = trim(ctTortal.replace("-",""));			
			ctTortal = '($' + ctTortal + ')';			
			ctrltotal.innerHTML = ctTortal;
		}
		else
		{
			ctTortal = '$' + hTotal.value;
			ctrltotal.innerHTML = ctTortal;
		}  
		}    				
		if (hTotalCh !=	null)
		{
			if (document.getElementById('TxtTotalPayment') != null)
			{
				if (parseFloat(total) == parseFloat(hTotalCh.value) && bCompare == true )
				{				   
				   document.getElementById('TxtTotalPayment').disabled = false;
				   if (document.getElementById('TxtExtraAmount') != null)
				   {
				   	document.getElementById('TxtExtraAmount').disabled = false;
				   	document.getElementById('TxtTotalPayment').value = parseFloat(parseNum(document.getElementById('TxtExtraAmount'),2) + parseFloat(hTotalCh.value));				  	
				   }
				   else
				   {
				   	document.getElementById('TxtTotalPayment').value = parseFloat(hTotalCh.value);
				   	document.getElementById('TxtTotalPayment').disabled = true;
				   }
				   FormatNumber(document.getElementById('TxtTotalPayment'),2);
				}
				else
				{
				if (document.getElementById('TxtExtraAmount') != null)
				   {
					document.getElementById('TxtExtraAmount').disabled = true;
				   	document.getElementById('TxtExtraAmount').value = '0.00';
				   }				   
				   document.getElementById('TxtTotalPayment').disabled = true;				   
				   document.getElementById('TxtTotalPayment').value =  parseFloat(total);
				   FormatNumber(document.getElementById('TxtTotalPayment'),2);				   
				}
			}
		}
	}
	else
		return false;
}

function SetConvenienceFeeDetailsForRecurringRoommate(totAmount)
{
    totAmount = parseFloat(totAmount)
    var breakpoints = document.getElementById("hConvFeeBreakpoints").value;
    var feecaption = document.getElementById("hConvenienceFeeCaption").value;
        
    if (breakpoints == "")
    {        
        return;
    }
    var a = new Array();
    a = breakpoints.split("^");
    
    var b = a[0].split("-")		        
    var retamt = b[0];
    	    
    for (i=0; i<=2; i++)
    {	        
        b = a[i].split("-")		        
        var amt1 = b[0];
        var brpt1 = b[1];
        
        b = a[i+1].split("-")
        amt2 = b[0]
                
        if (brpt1>0 && totAmount>=brpt1)
    		retamt = amt2;
    }
    if (parseFloat(retamt) > 0)
    	lblMessageRCProcessingFee.innerHTML = feecaption + " of $"+ retamt +" will be charged on each payment transaction.";    
}

function ValidCurrency(numObj, iMin, iMax)
{	
	var sTest = numObj.value;
	iMin = (iMin == null) ? -1000000000 : iMin;
	iMax = (iMax == null) ?  1000000000 : iMax;
	/* test if number is valid currency format */
	if (Empty(sTest)) {return true;}
	if (! isValidMoneyFormat(sTest, 2))
	{
		error(numObj, "Invalid number.");
		return false;
	}			
	/* get number back as US format without thousand separator */
	sTest = parseNum(numObj, 2);

	/* test if number is within min and max limits */
	if (! ValidMinMax(sTest, iMin, iMax))
	{
		error(numObj, "Invalid number.");
		return false;
	}
	
	numObj.value = sTest;
	//FormatNumber(numObj);
	return true;
}
	function isValidMoneyFormat(sTest, iDigits)
		{
			var sGUID = GetCookie("bEuroNum");
			var sPattern;
			var bTemp = false;
			
			/* check for numbers like 123 and -123.45 */
			sPattern = (sGUID == "true") ? "^-?\\d*\\,?\\d{0," + iDigits + "}$" : "^-?\\d*\\.?\\d{0," + iDigits + "}$";
			var re = new RegExp(sPattern);
			bTemp = (re.test(sTest)) ? true : bTemp;
			
			/* check for numbers like 1,234 and -123,456,789.01 */
			sPattern = (sGUID == "true") ? "^-?\\d{1,3}(\\.\\d{3})*(\\,\\d{0," + iDigits + "})?$" : "^-?\\d{1,3}(\\,\\d{3})*(\\.\\d{0," + iDigits + "})?$";
			re.compile(sPattern);
			bTemp = (re.test(sTest)) ? true : bTemp;
			
			/* last check. Special case sTest="-" */
			bTemp = (sTest == "-") ? false : bTemp;
				
			return bTemp;
		}
		function parseNum(numObj, iDigits)
		{
			/* strips commas out of numbers, does a parseFloat on it. */
			
			var sTemp = numObj.value;
			iDigits = (iDigits == null) ? 2 : iDigits;
			
			if ((! isValidMoneyFormat(sTemp, iDigits)) || (sTemp == ""))
			{
				/* NOTE that "return false;" actually is the same as "return 0;" */
				return false;
			}
			
			var sGUID = GetCookie("bEuroNum");
			var sThousandSep = (sGUID == "true") ? "\\." : ",";
			var re = new RegExp(sThousandSep, "g");
			sTemp = sTemp.replace(re, "");
			
			/* special considerations for european numbers */
			sTemp = (sGUID == "true") ? sTemp.replace(",", ".") : sTemp;

			return parseFloat(sTemp);
		}
		function ValidMinMax(num, mini, maxi) {

        if (Empty(num)) {return true;}                
        return ((num >= mini) && (num <= maxi))
}
// CC Functions
function isValidCreditCard(typeobj,ccnumobj) 
{      
var ccnum;
ccnum=ccnumobj.value;
type=typeobj.value;

    if (ccnum=='')
 {
  alert('Please enter a valid credit card number.');
  return false;
 }
 
    /*if (ccnum == '5264685317004560') 
    {
     alert('Credit Card No is invalid!');
     return false;
    }*/
 
    if (type == "Visa") 
    {
 // Visa: length 16, prefix 4, dashes optional.
  var re = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/;
   } 
   else if (type == "MC") 
   {  
      // Mastercard: length 16, prefix 51-55, dashes optional.
      var re = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
   } 
   else if (type == "Discover") 
   {
      // Discover: length 16, prefix 6011, dashes optional.
      var re = /^6011-?\d{4}-?\d{4}-?\d{4}$/;
   } 
   else if (type == "Amex") 
   {
      // American Express: length 15, prefix 34 or 37.
      var re = /^3[4,7]\d{13}$/;
   } 
   else if (type == "Diners") {
      // Diners: length 14, prefix 30, 36, or 38.
      var re = /^3[0,6,8]\d{12}$/;      
   }
   else
   {
   alert("Please select a valid credit card type.");
   return false;
   }
   
   if (!re.test(ccnum)) {
   //alert(document.forms[0].cmbCardType_DropDownList.options[document.forms[0].cmbCardType_DropDownList.selectedIndex].text);
   alert('The credit card number ' + ccnum + ' is not valid for the Card Type ' + (type) + '!');
  
    ccnumobj.select();
     ccnumobj.focus();
    return false;
   }
   // Remove all dashes for the checksum checks to eliminate negative numbers
   ccnum = ccnum.split("-").join("");
   // Checksum ("Mod 10")
   // Add even digits in even length strings or odd digits in odd length strings.
   var checksum = 0;

   for (var i=(2-(ccnum.length % 2)); i<=ccnum.length; i+=2) 
   {
 checksum += parseInt(ccnum.charAt(i-1));
   }

   // Analyze odd digits in even length strings or even digits in odd length strings.

   for (var i=(ccnum.length % 2) + 1; i<ccnum.length; i+=2) {

      var digit = parseInt(ccnum.charAt(i-1)) * 2;

      if (digit < 10) { checksum += digit; } else { checksum += (digit-9); }

   }

   if ((checksum % 10) == 0) 
   {
    //SaveClick();
 
    return true;
   }
   else
   {
   alert('The Credit Card No ' + ccnum + ' is not valid for the Card Type ' + (type) + '!');
    return false; 
   }
  
}
   
   
 function CheckAmount()
      { 
        return CheckCreditCardType();
       
  }
//End CC Functions
function ValidInt(numObj)
{
	var sTest = numObj.value;
	var sGUID = GetCookie("bEuroNum");
	var sPattern;
	var bTemp = false;
	
	/* check for numbers like 123 */
	var re = new RegExp("^(-\\d)?\\d*$");
	bTemp = (re.test(sTest)) ? true : bTemp;
	
	/* check for numbers like 1,234 and -123,456,789 */
	sPattern = (sGUID == "true") ? "^-?\\d{1,3}(\\.\\d{3})*$" : "^-?\\d{1,3}(\\,\\d{3})*$";
	re.compile(sPattern);
	bTemp = (re.test(sTest)) ? true : bTemp;
	if (! bTemp)
	{
		error(numObj, "Invalid number");
		return bTemp;
	}
	return bTemp;

}
function ValidIntCustom(numObj)
{
	var sTest = numObj.value;
	var sGUID = GetCookie("bEuroNum");
	var sPattern;
	var bTemp = false;
	
	/* check for numbers like 123 */
	var re = new RegExp("^(-\\d)?\\d*$");
	bTemp = (re.test(sTest)) ? true : bTemp;
	
	/* check for numbers like 1,234 and -123,456,789 */
	sPattern = (sGUID == "true") ? "^-?\\d{1,3}(\\.\\d{3})*$" : "^-?\\d{1,3}(\\,\\d{3})*$";
	re.compile(sPattern);
	bTemp = (re.test(sTest)) ? true : bTemp;
	if (! bTemp)
	{
		//error(numObj, "Invalid number");
		alert("Invalid number");
		numObj.value='';
		return bTemp;
	}
	return bTemp;

}

function isValidInteger(sTest)
{
	var sGUID = GetCookie("bEuroNum");
	var sPattern;
	var bTemp = false;

	/* check for numbers like 123 and -123.45 */
	sPattern = (sGUID == "true") ? "^-?\\d*$" : "^-?\\d*$";
	var re = new RegExp(sPattern);
	bTemp = (re.test(sTest)) ? true : bTemp;

	/* check for numbers like 1,234 and -123,456,789.01 */
	sPattern = (sGUID == "true") ? "^-?\\d{1,3}(\\.\\d{3})*$" : "^-?\\d{1,3}(\\,\\d{3})*$";
	re.compile(sPattern);
	bTemp = (re.test(sTest)) ? true : bTemp;

	/* last check. Special case sTest="-" */
	bTemp = (sTest == "-") ? false : bTemp;

	return bTemp;
}

function FormatNumber(numObj)
{
	/* called from ValidateCurrency
	   2100    -> 2,100.00
	   2100.   -> 2,100.00
	   2100.1  -> 2,100.10
	   2100.10 -> 2,100.10

	   This function always assume an US number format (. dot as decimal separator) as input
	*/

	var sTemp = numObj.value;
	var sNoDecimals = GetCookie("bNoDecimals");

	var sDigits = "00";

	/* strip thousand separators */
	var re = new RegExp("\\,", "g");
	sTemp = sTemp.replace(re, "");

	/* test for decimal part */
	re.compile("^(-?\\d*)\\.(\\d{0,2})");
	if (re.test(sTemp))
	{
		sTemp = ((RegExp.$1 == "-") || (RegExp.$1 == "")) ? RegExp.$1 + "0" : RegExp.$1;
		sDigits = (RegExp.$2 + sDigits).substr(0,2);
	}

	var sGUID = GetCookie("bEuroNum");
	var sThousandSep = (sGUID == "true") ? "." : ",";
	var sFractionSep = (sGUID == "true") ? "," : ".";

	/* put in thousand separators */
	re.compile("(-?\\d+)(\\d{3})");
	while (re.test(sTemp))
	{
		sTemp = sTemp.replace(re, "$1" + sThousandSep + "$2");
	}

	/* put everything together again */
	if (sNoDecimals == "true") {sDigits = ""; sFractionSep = "";}
	if (trim(sTemp) == '') sTemp = '0';
	numObj.value = sTemp + sFractionSep + sDigits;

	return;
}

function ValidateSSN2(num) {
  dashes = 0;
  ssn = num.value.toUpperCase();
  if (Empty(ssn)) return "";
	if (((ssn.charAt(0) < "a") || (ssn.charAt(0) > "z")) && ((ssn.charAt(0) < "A") || (ssn.charAt(0) > "Z")) && ((ssn.charAt(0) < "0") || (ssn.charAt(0) > "9"))) {
    return error(num, "Please enter a valid Social Security Number");
	};
  for (var i = 0; (i < ssn.length); i++) {
    if (i != 0) {
  		if (((ssn.charAt(i) < "0") || (ssn.charAt(i) > "9")) && (ssn.charAt(i) != "-")) return error(num, "Please enter a valid Social Security Number.");
  	};
    if (ssn.charAt(i) == "-") {
      dashes = dashes + 1;
		};
	}; 
  if (dashes > 2) return error(ssn,"Please enter a valid Social Security Number.",false);
  if (dashes == 1) {
	  if ((ssn.charAt(0) < "0") || (ssn.charAt(0) > "9")) {
      return error(num, "Please enter a valid Social Security Number");
	};
  
  };
	if (ssn.length != (9 + dashes)) return error(num, "Please enter a valid Social Security Number.", false);
		
  if (ssn.length == 9) {
    ssn = ssn.substring(0, 3) + "-" + ssn.substring(3, 5) + "-" + ssn.substring(5, 9);
  };  

  if (ssn.substring(3, 4) != '-' || ssn.substring(6, 7) != '-') 
  	return error(num, "Please enter a valid Social Security Number");
  num.value = ssn;
  return ssn;
}














function ReverseString2(sIn)
{
	/* Given a string, return a string where the characters are reversed.
	
	   Ex: sIn = "abcde" return "edcba"
	 */
	var sOut = "";
	
	for (var i = 0; i < sIn.length; i++)
	{
		sOut = sIn.charAt(i) + sOut;
	}
	
	return sOut;
}

function GetDecimalSeperator2(sCurrencyFormat)
{
	var re = new RegExp("i([^id]+)d", "i");
	return ( re.test(sCurrencyFormat) ) ? RegExp.$1 : "";
}


function GetDecimalCount2(sCurrencyFormat)
{
	var re = new RegExp("[^d](d+)$", "i");
	return ( re.test(sCurrencyFormat) ) ? RegExp.$1.length: 0;
}



function GetCurrencyFormat2(sCurrencyFormat)
{
	/* Return the time format string stored in the cookie CurrencyFormat */
	
	/*var sCurrencyFormat = GetSubCookie("Culture", "CurrencyFormat");*/
	
	if (sCurrencyFormat == null)
	{
		sCurrencyFormat = "";
	}
	
	return (sCurrencyFormat == "") ? "iii,iii,iii,iii,iii,iii.dd": sCurrencyFormat;
}



function FormatCurrency2(myCurrency, sCurrencyFormat)
{
	/* Given a valid number format it according to the currency format stored in the db for the user. Ex: "iii,iii,iii,iii,iii.dd". */
	 
	sCurrencyFormat = GetCurrencyFormat2(sCurrencyFormat);
	var iMaxDecimals = parseInt(GetDecimalCount2(sCurrencyFormat));
	
	myCurrency = ( Math.round(myCurrency * Math.pow(10, iMaxDecimals)) / Math.pow(10, iMaxDecimals) ).toFixed(iMaxDecimals);
	var sCurrency = new String(myCurrency);
	var sNegative = (sCurrency.indexOf("-") == 0) ? "-" : "";
	
	sCurrencyFormat = ReverseString2(sCurrencyFormat);
	sCurrency = ReverseString2(sCurrency);
	
	var re = new RegExp("[di]");
	for (var i = 0; i < sCurrency.length; i++)
	{
		if (sCurrency.charAt(i) != ".")
		{
			sCurrencyFormat = sCurrencyFormat.replace(re, sCurrency.charAt(i));
		}
	}
	
	re = new RegExp("(\\d)[^\\d]+$");
	sCurrencyFormat = sCurrencyFormat.replace(re, "$1");
	
	return sNegative + ReverseString2(sCurrencyFormat);
}




function IsValidCurrency2(sCurrency, sCurrencyFormat)
{
	/* Given a string, validate that it is in a valid format. If it is, return a number. if not, return null.
	   
	   Valid formats are:
	   		The format stored in the db for this user. Ex: "iii,iii,iii,iii,iii.dd"  or:
	   		1234
	   		1234.56		: Note that the correct decimal seperator must be used
	 */
	
	var testCurrency = new String(sCurrency);
	var bValidCurrency = false;
	
	if ( testCurrency.indexOf("-", 0) == 0 )
	{
		testCurrency = testCurrency.substring(1, testCurrency.length - 1);
	}
	
	/* First check if we match the users selected time format */
	sCurrencyFormat = GetCurrencyFormat2(sCurrencyFormat);
	var sDecimalSeperator = GetDecimalSeperator2(sCurrencyFormat);
	var iMaxDecimals = GetDecimalCount2(sCurrencyFormat);
	
	var re = new RegExp("\\d", "ig");
	testCurrency = testCurrency.replace(re, "i");
	
	if (sDecimalSeperator != "")
	{
		re = new RegExp("(\\" + sDecimalSeperator + ")(i*)i(d*)$");
		while ( re.test(testCurrency) )
		{
			testCurrency = testCurrency.replace(re, "$1$2d$3");
		}
		
		var iDecimals = GetDecimalCount2(testCurrency);
		
		if (iDecimals < iMaxDecimals && testCurrency.indexOf(sDecimalSeperator) == -1)
		{
			testCurrency += sDecimalSeperator;
		}
		
		for (var i = iDecimals; i < iMaxDecimals; i++)
		{
			testCurrency += "d";
		}
	}
	
	if ( testCurrency == sCurrencyFormat.substring(sCurrencyFormat.length - testCurrency.length, sCurrencyFormat.length) )
	{
		bValidCurrency = true;
	}

	testCurrency = new String(sCurrency);
	if (sDecimalSeperator != "")
	{
		re = new RegExp("\\" + sDecimalSeperator);
		testCurrency = testCurrency.replace(re, ".");
	}
	
	if ( ! bValidCurrency )
	{
		re = new RegExp("^-?\\d*\\.\\d{0," + iMaxDecimals + "}$");
		if ( re.test(testCurrency) )
		{
			bValidCurrency = true;
		}
		
		re = new RegExp("^-?\\d+$");
		if ( ! bValidCurrency && ! re.test(testCurrency) )
		{
			return null;
		}
	}
	
	testCurrency = new String(sCurrency);
	if (sDecimalSeperator != "")
	{
		re = new RegExp("\\" + sDecimalSeperator);
		testCurrency = testCurrency.replace(re, "D");
	}
	
	re = new RegExp("[^-D\\d]", "g");
	testCurrency = testCurrency.replace(re, "");
	re = new RegExp("D", "g");
	testCurrency = testCurrency.replace(re, ".");
	
	return parseFloat(testCurrency);
}

function ValidateCurrency3(objCurrency, iMin, iMax, sCurrencyFormat)
{
	/* Given an html form element that supposedly holds a currency value, check that the amount entered is valid and format it according to
	   the format stored in the db for the user. Ex: "iii,iii,iii,iii,iii.dd".
	   
	   If amount entered is not valid, an error msg. is dsiplayed.
	 */
	var sCurrency = new String( trim(objCurrency.value) );
	
	if ( Empty(sCurrency) )		{ return true; }
	
	var myCurrency = IsValidCurrency2(sCurrency, sCurrencyFormat);
	if (myCurrency == null)
	{
		return error(objCurrency, "Invalid currency format");
	}
	
	iMin = (iMin == null) ? -1000000000000 : iMin;
	iMax = (iMax == null) ?  1000000000000 : iMax;
	if (! ValidMinMax(myCurrency, iMin, iMax))
	{
		return error(objCurrency, "Expected amount in the range of " + iMin + " to " + iMax);
	}
	
	objCurrency.value = FormatCurrency2(myCurrency);
	
	/* Range checking */
	if ( typeof(objCurrency.rangeStartId) != "undefined")
	{
		// I'm the end amount of the range.
		var startTextBox = document.all(objCurrency.rangeStartId);
		var startAmount;
		var endAmount;
		
		if (startTextBox.value != "") {startAmount = IsValidCurrency2(startTextBox.value, sCurrencyFormat);}
		if (objCurrency.value != "")  {endAmount   = myCurrency;}
		
		// If the amounts aren't in order, show error message.
		if (endAmount < startAmount) {error(objCurrency, "End amount must be greater than start amount."); objCurrency.value = startTextBox.value; SetInitialFocus(objCurrency); return false;}
		
		// If the amount date is blank, set it to the end amount.
		else if (isNaN(startAmount) || startTextBox.value == "") {startTextBox.value = objCurrency.value; SetInitialFocus(endTextBox);}
		
		// If I'm blank, set me to the start amount
		else if (isNaN(endAmount)) {objCurrency.value = startTextBox.value;}
	}
	else if ( typeof(objCurrency.rangeEndId) != "undefined")
	{
		// I'm the start amount of the range.
		var endTextBox = document.all(objCurrency.rangeEndId);
		var startAmount;
		var endAmount;
		
		if (objCurrency.value != "") {startAmount = myCurrency;}
		if (endTextBox.value != "")  {endAmount   = IsValidCurrency2(endTextBox.value, sCurrencyFormat);}
		    
		// If the amounts aren't in order, show error message.
		if (startAmount > endAmount) {error(objCurrency, "Start amount must be less than end amount."); objCurrency.value = ""; SetInitialFocus(objCurrency); return false;}
		
		// If the end amount is blank, set it to the start amount.
		else if (isNaN(endAmount)) {endTextBox.value = objCurrency.value; SetInitialFocus(endTextBox); endTextBox.select();}
		
		// If I'm blank, set me to the end amount to blank.
		else if (isNaN(startAmount)) {endTextBox.value = "";}
	}
	
	return true;
}




/* ******************************************************** */
/*            Date validation and formatting for Portal     */
/* ******************************************************** */


function DateFormatToRegExReplacement2(sDateFormat)
{
	/* Replace a date format (as it is returned from function GetDateFormat) into a RegEx replacement string
	   If sDateFormat is "{MM}/{dd}/{yyyy}", this function will return "<month>{MM}</month>/<days>{dd}</days>/<year>{yyyy}</year>",
	   which can be used in "someString.replace(re, ourReturnValue)"
	 */
	
	var re = new RegExp("(\\{M{2}\\})", "i");
	sDateFormat = sDateFormat.replace(re, "<month>$1</month>");
	
	re = new RegExp("(\\{d{2}\\})", "i");
	sDateFormat = sDateFormat.replace(re, "<days>$1</days>");
	
	re = new RegExp("(\\{y{2,4}\\})", "i");
	sDateFormat = sDateFormat.replace(re, "<year>$1</year>");
	
	for (var i = 1; i <= 3; i++)
	{
		re = new RegExp("\\{[Mdy]{2,4}\\}", "i");
		sDateFormat = sDateFormat.replace(re, "\$" + i);
	}
	
	return sDateFormat;
}

function DateFormatToRegExPattern2(sDateFormat, bMatchFullPattern)
{
	/* Replace a date format (as it is returned from function GetDateFormat2) into a RegEx pattern
	   If sDateFormat is "{MM}/{dd}/{yyyy}", this function will return "\\d{2})/\\d{2})/\\d{2,4})",
	   which can be used to instantiate a new RegEx object.
	   
	   If bMatchFullPattern is set and true, we will generate a pattern with both numbers and special (separation) characters
	 */
	
	var re;
	
	if (bMatchFullPattern == null)
	{
		bMatchFullPattern = false;
	}
	
	if (bMatchFullPattern)
	{
		re = new RegExp("\\{M{2}\\}", "i");
		sDateFormat = sDateFormat.replace(re, "(\\d{1,2})");
		
		re = new RegExp("\\{d{2}\\}", "i");
		sDateFormat = sDateFormat.replace(re, "(\\d{1,2})");
		
		re = new RegExp("\\{y{2,4}\\}", "i");
		sDateFormat = sDateFormat.replace(re, "(\\d{2,4})");
	}
	else
	{
		re = new RegExp("\\{M{1,2}\\}", "i");
		sDateFormat = sDateFormat.replace(re, "(\\d{2})");
		
		re = new RegExp("\\{d{1,2}\\}", "i");
		sDateFormat = sDateFormat.replace(re, "(\\d{2})");
		
		re = new RegExp("\\{y{2,4}\\}", "i");
		sDateFormat = sDateFormat.replace(re, "(\\d{2,4})");
		
		re = new RegExp("([- /])", "ig");
		sDateFormat = sDateFormat.replace(re, "$1?");
	}
	
	return sDateFormat
}


function GetDateFormat2(sDateFormat)
{
	/* Return the date format string stored in the cookie DateFormat */
	
	/*var sDateFormat = GetSubCookie("Culture", "DateFormat");*/
	
	if (sDateFormat == null)
	{
		sDateFormat = "";
	}
	
	var re = new RegExp("(M{2}|d{2}|y{2,4})", "g");
	sDateFormat = sDateFormat.replace(re, "{$1}");
	
	return (sDateFormat == "") ? "{MM}/{dd}/{yyyy}": sDateFormat;
}

function GetYearMonthDays2(sDate, sDateFormat)
{
	/* Given a string, try to find a match that contains year, month and days.
	   Return an array: arrayDate["year"], arrayDate["month"] and arrayDate["days"]. Return null if no match is found.
	   
	   Valid formats are:
	   		The format stored in the db for this user. Ex: "MM/dd/yyyy"  or "dd-MM/2005"  or:
	   		01212005
	   		01/21/2005
	   		012105			:	We will assume 01/21/2005
	   		01/21/05		:	We will assume 01/21/2005
	 */
	 
	var arrayDate = new Array(3);
	
	/* First check if we match the users selected time format */
	sDateFormat = GetDateFormat2(sDateFormat);
	
	var re = new RegExp("[^\\d]", "i");
	var sDateFormatRegExPattern = ( re.test(sDate) ) ? DateFormatToRegExPattern2(sDateFormat, true) : DateFormatToRegExPattern2(sDateFormat, false);
	
	var sDateFormatRegExReplacement = DateFormatToRegExReplacement2(sDateFormat);
	
	var re = new RegExp("^" + sDateFormatRegExPattern + "$", "i");
	
	if ( ! re.test(sDate) )
	{
		/* No match, so user must have entered invalid format. */
		return null;
	}
	else
	{
		sDate = sDate.replace(re, sDateFormatRegExReplacement);
		
		re = new RegExp("<month>(\\d{1,2})</month>", "i");
		arrayDate["month"] = (re.test(sDate)) ? parseInt(RegExp.$1, 10) - 1 : -1;
		
		re = new RegExp("<days>(\\d{1,2})</days>", "i");
		arrayDate["date"] = (re.test(sDate)) ? parseInt(RegExp.$1, 10) : -1;
		
		re = new RegExp("<year>(\\d{2,4})</year>", "i");
		arrayDate["year"] = (re.test(sDate)) ? parseInt(RegExp.$1, 10) : -1;
	}
	
	if ( arrayDate["year"] < 1000 )
	{
		/* If the user typed in a two digit year, do some smarts to figure out what year was meant */
		arrayDate["year"] += (arrayDate["year"] >= 80) ? 1900 : 2000;
	}
	
	return arrayDate;
}


function FormatDate2(myDate, sDateFormat)
{
	/* Given a Date object return a string with month, date, year, formatted as stored in the db for this user. Ex: "MM/dd/yyyy"  or "dd-MM/yyyy"
	*/
	
	if ( myDate == null ) { return "" }
	
	var dtFormat = new Date(myDate);
	if ( isNaN(dtFormat) ) { return "" }
	
	sDateFormat = GetDateFormat2(sDateFormat);
	
	sDateFormat = sDateFormat.replace("{MM}", LeftPad( (dtFormat.getMonth() + 1).toString(), "0", 2));
	sDateFormat = sDateFormat.replace("{dd}", LeftPad(dtFormat.getDate().toString(), "0", 2));
	sDateFormat = sDateFormat.replace("{yyyy}", dtFormat.getFullYear().toString());
	
	return sDateFormat;
}

function IsValidDate2(sDate, sDateFormat)
{
	/* Given a string, validate if the string holds a valid date.
	   Return a Date object if date is valid format and the display value can be translated into a valid date object. Otherwise return null.
	 */
	
	var arrayDate = GetYearMonthDays2(sDate, sDateFormat);
	if (arrayDate == null)
	{
		return null;
	}
	
	var dtTest = new Date(arrayDate["year"], arrayDate["month"], arrayDate["date"]);
	
	if (dtTest.getFullYear() != arrayDate["year"])  { return null }
	if (dtTest.getMonth()    != arrayDate["month"]) { return null }
	if (dtTest.getDate()     != arrayDate["date"])  { return null }
	
	return dtTest;
}

function ValidateDate3(objDate, sDateFormat)
{
	/* Given an html form element that supposedly holds a date value, check that the time entered is valid and format it according to
	   the format stored in the db for the user. Ex: "MM/dd/yyyy".
	   
	   If date entered is not valid, an "Invalid Date" error msg. is dsiplayed.
	 */
	 /*debugger;*/
	
	var sDate = new String( trim(objDate.value) );
	
	if ( Empty(sDate) )
	{
		return true;
	}
	
	var myDate = IsValidDate2(sDate, sDateFormat)
	if (myDate == null)
	{
		return error(objDate, "Invalid date format");
	}
	
	objDate.value = FormatDate2(myDate, sDateFormat);
	
	/* Range checking */
	if ( typeof(objDate.rangeStartId) != "undefined")
	{
		// I'm the end date of the range.
		var startTextBox = document.all(objDate.rangeStartId);
		var startDate;
		var endDate;
		
		if (startTextBox.value != "") {startDate = IsValidDate2(startTextBox.value, sDateFormat);}
		if (objDate.value != "")      {endDate   = myDate;}
		
		// If the dates aren't in order, show error message.
		if (endDate < startDate) {error(objDate, "End date must be after start date."); objDate.value = startTextBox.value; SetInitialFocus(objDate); return false;}
		
		// If the start date is blank, set it to the end date.
		else if (isNaN(startDate) || startTextBox.value == "") {startTextBox.value = objDate.value; SetInitialFocus(endTextBox);}
		
		// If I'm blank, set me to the start date value
		else if (isNaN(endDate)) {objDate.value = startTextBox.value;}
	}
	else if ( typeof(objDate.rangeEndId) != "undefined")
	{
		// I'm the start date of the range.
		var endTextBox = document.all(objDate.rangeEndId);
		var startDate;
		var endDate;
		
		if (objDate.value != "")    {startDate = myDate;}
		if (endTextBox.value != "") {endDate   = IsValidDate2(endTextBox.value, sDateFormat);}
		    
		// If the dates aren't in order, show error message.
		if (startDate > endDate) {error(objDate, "Start date must be before end date."); objDate.value = ""; SetInitialFocus(objDate); return false;}
		
		// If the end date is blank, set it to the start date.
		else if (isNaN(endDate)) {endTextBox.value = objDate.value; SetInitialFocus(endTextBox); endTextBox.select();}
		
		// If I'm blank, set me to the end date to blank.
		else if (isNaN(startDate)) {endTextBox.value = "";}
	}
	
	return true;
}



function ValidateDt(obj)
{
	if (obj.value!="Move-In-Date")
	{
		//alert(obj)
		obj.isDay=true;
		if (!ValidateDate(obj)) 
		{
			return;
		}
		checkdates();
	}	
}


function checkdates()
{
	//var dCur = new Date(document.all.CurDate.value)
	var mydate = new Date();
	var dCur = new Date(mydate.getYear(),mydate.getMonth(),mydate.getDate());
	var dUser = new Date(document.all.Preferred_MoveIn.value); 
	if(dUser<dCur)
	{
		alert("Date prior to today's date not allowed.");
		document.all.Preferred_MoveIn.value = "";
		document.all.Preferred_MoveIn.focus();
	}
}


function ValidateDate(obj)
/*  if optional property .isDay is true, input must be:
    mm/dd/yy
    mm/dd/yyyy
    m/d/yy
    m/d/yyyy
    mm/d/yy
    mm/d/yyyy
    m/dd/yy
    m/dd/yyyy
    mmddyy
    mmddyyyy
  otherwise, input must be:
    mm/yy
    mm/yyyy
    yyyy/mm
    m/yy
    m/yyyy
    yyyy/m
    mmyy
    mmyyyy
    yyyymm
  "/" is the only valid seperator
  These are the only known valid inputs. Others might work
  but don't count on it (isn't this enough?)
*/
{
  var ilen;
  var sout;
  var yy, mm, dd;
  var tmp;
  var inumsep;
  var imonth, iyear, iday;
  var serr;
  var isep1, isep2;  //holds position of "/"
  var imstart, imlen;
  var idstart, idlen;
  var iystart, iylen;
  var bJapan
  
  var ss = new String(obj.value);
  var d = new Date();
  var m = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
    var window = 50;  //year cutoff when yy is passed in (i.e. 49 = 2049, 50 = 1950)
//alert(obj)
        var sGUID = GetCookie("bEuroDate");
        var sJAPAN = GetCookie("bJapanDate");
         obj.isDay=true; //CHANGE BY AJIT
    if (sGUID == "true") {bEuro = true}
    else                 {bEuro = false}

    if (sJAPAN == "true") {bJapan = true}


  ilen = ss.length;
  iday = 0;  //in case is never gets set below
  
  // check for required field

  if( typeof(obj.isRequired) == "undefined"){
    obj.isRequired = false;   // default not required
  }



  if (ilen == 0) {return true;}

  // check for .isDay
  if( typeof(obj.isDay) == "undefined"){
    obj.isDay = false;      // default to not expecting days - month & year only
                           
  }

  //set error message
  if (bEuro == false) {
    if (obj.isDay) {serr = "Please enter date in mm/dd/yyyy format."}
    else {serr = "Please enter date in mm/yyyy format."}
  }
  else {
    if (obj.isDay) {serr = "Please enter date in dd/mm/yyyy format."} 
    else {serr = "Please enter date in mm/yyyy format."}
  }

  if (bJapan == true) {
    if (obj.isDay) {serr = "Please enter date in yyyy/mm/dd format."}
    else {serr = "Please enter date in yyyy/mm format."}
  }     
  

  // all chars must be numeric or "/"
  inumsep = 0
  for( var i = 0; i < ilen; i++){
    tmp = ss.charAt(i);
    if (tmp == '/') {
      inumsep = inumsep + 1;
      if (inumsep == 1) {isep1 = i}
      else if (inumsep == 2) {isep2 = i}
    }
     if (tmp == '-')
     {
     	inumsep=1;
    }
  }

  //check for valid number of "/"
     if (obj.isDay && inumsep > 2) {error(obj, serr); return false;}
     else if (!obj.isDay && inumsep > 1) {error(obj, serr); return false;}
     else if (obj.isDay && inumsep==1) {error(obj, serr); return false;}

  if (bJapan != true) {
     //check for valid placement of "/"
     if (inumsep > 0) {
        if (isep1 != 1 && isep1 != 2 && isep1 != 5) {error(obj, serr); return false;}
     }
     if (inumsep > 1) {
        if (isep2 != 3 && isep2 != 4 && isep2 != 5) {error(obj, serr); return false;}
      }
  }
  else
  {
     //check for valid placement of "/"
     if (inumsep > 0) {
        if (isep1 != 2 && isep1 != 4) {error(obj, serr); return false;}
     }
     if (inumsep > 1) {
        if (isep2 != 4 && isep2 != 5 && isep2 != 6 && isep2 != 7) {error(obj, serr); return false;}
      }  	
  }  	      


  //set start and length of month, day and year
  if (inumsep == 0) {
    if (ilen == 4) {
      imstart = 0; imlen = 2;
      iystart = 2; iylen = 2;
      if (bJapan == true) {
      	iystart = 0; iylen = 2;
      	imstart = 2; imlen = 2;      	
      }
    }
    else if (ilen == 6 && obj.isDay) {
      imstart = 0; imlen = 2;
      idstart = 2; idlen = 2;
      iystart = 4; iylen = 2;
      if (bJapan == true) {
      	iystart = 0; iylen = 2;
      	imstart = 2; imlen = 2;
      	idstart = 4; idlen = 2;
      }
    }  
    else if (ilen == 6 && !obj.isDay) {
      imstart = 0; imlen = 2;
      iystart = 2; iylen = 4;
      if (bJapan == true) {
      	iystart = 0; iylen = 4;
      	imstart = 4; imlen = 2;      	
      }
    }  
    else if (ilen == 8) {
      imstart = 0; imlen = 2;
      idstart = 2; idlen = 2;
      iystart = 4; iylen = 4;
      if (bJapan == true) {
      	iystart = 0; iylen = 4;
      	imstart = 4; imlen = 2;
      	idstart = 6; idlen = 2;
      }     
    }
  }
  else if (inumsep == 1) {
    imstart = 0; imlen = isep1;
    iystart = isep1  + 1; iylen = ilen - isep1 - 1;
    if (bJapan == true) {
      iystart = 0; iylen = isep1;
      imstart = isep1  + 1; imlen = ilen - isep1 - 1;
    }  	
  }
  else if (inumsep == 2) {
    imstart = 0; imlen = isep1;
    idstart = isep1  + 1; idlen = isep2 - isep1 - 1;
    iystart = isep2 + 1; iylen = ilen - isep2 - 1;
    if (bJapan == true) {
      iystart = 0; imlen = isep1;
      imstart = isep1  + 1; idlen = isep2 - isep1 - 1;
      idstart = isep2 + 1; iylen = ilen - isep2 - 1;
    }
  }

  if (obj.isDay != false) {
  if (bEuro==true && obj.isDay.toUpperCase() == 'TRUE') {
    //switch it all around
    ii = imstart;
    ij = imlen;
    imstart = idstart;
    imlen = idlen;
    idstart = ii;
    idlen = ij;
  }
}

  if (obj.isDay != false) {
  if (bJapan==true && obj.isDay.toUpperCase() == 'TRUE') {
    //switch it all around
    if (inumsep == 2) {
    	iystart = 0; iylen = isep1;
    	imstart = isep1  + 1; imlen = isep2 - isep1 - 1;
    	idstart = isep2 + 1; idlen = ilen - isep2 - 1;
    }
  }
  }


  imonth = parseInt(ss.substr(imstart, imlen), 10);  //10 param sets to base 10 (default is 8!)
                 //without it, "08" and "09" returned 0
  iyear = parseInt(ss.substr(iystart, iylen), 10);
  if (obj.isDay) { iday = parseInt(ss.substr(idstart, idlen), 10) }

  if (isNaN(imonth) || isNaN(iyear) || isNaN(iday)) {error(obj, serr); return false;}

  if (obj.isDay) {serr = "Date out of range."} else {serr = "Please enter date in mm/yy format."}
  if (iylen != 4 && iylen != 2) {error(obj, serr); return false;}
  if (imlen != 1 && imlen != 2) {error(obj, serr); return false;}
  if (obj.isDay) {
  if (idlen != 1 && idlen != 2) {error(obj, serr); return false;}
    }

  if (imonth < 1 || imonth > 12) {error(obj, serr); return false;}
  if (iylen == 4 && (iyear < 1875 || iyear > 2199)) {error(obj, serr); return false;}
  //SA052802  change year range lower limit from 1900 to 1875 for affordable tenants birthdates
  //MRB	      change year range upper limit from 2100 to 2199 for leases in good old England
  if (iylen == 2 && (iyear < 0 || iyear > 99)) {error(obj, serr); return false;}
  if ( (obj.isDay) && (iday < 1 || iday > 31) ) {error(obj, serr); return false;}




  mm = imonth;
  mm = mm > 9 ? mm : "0" + mm.toString();
  dd = iday;
  dd = dd > 9 ? dd : "0" + dd.toString();
  yy = iyear;
  yy = yy > 9 ? yy : "0" + yy.toString();

    if (iyear < 1000) {
    if (parseInt(yy) < window ) {yy = "20" + yy }
    else { yy = "19" +  yy }
    iyear = parseInt(yy)
  }


  //30 days hath November...
  if ((imonth == 1) || (imonth == 3) || (imonth == 5) || (imonth == 7) || (imonth == 8) || (imonth == 10) || (imonth == 12)) {
      if (iday > 31) {error(obj, serr); return false;}
  }
  else if ((imonth == 4) || (imonth == 6) || (imonth == 9) || (imonth == 11) ) {
      if (iday > 30) {error(obj, serr); return false;}
  }
  else if (imonth == 2) {
      //leap year, every 4 years, except centuries that are not evenly
      //divisible by 100
      imod = iyear % 4
      imod2 = iyear % 100
      if (imod == 0 && ( (imod2 != 0) || (iyear % 400 == 0) )) {  
        if (iday > 29) {error(obj, serr); return false;}
      }
      else {
        if (iday > 28) {error(obj, serr); return false;}
      }
  }

if (bEuro == true) {
    if( obj.isDay){
      sout = dd + "/" + mm + "/" + yy;
    }
    else{
      sout = mm + "/" + yy;
    }
}
else {
    if( obj.isDay){
      sout = mm + "/" + dd + "/" + yy;
    }
    else{
      sout = mm + "/" + yy;
    }

}

if (bJapan == true) {
    if( obj.isDay){
      sout = yy + "/" + mm + "/" + dd;
    }
    else{
      sout = yyyy + "/" + mm;
    }
}

  obj.value = sout;
  return true;
}

///////////////////////
function ValidateDateCustom(obj)

{
  var ilen;
  var sout;
  var yy, mm, dd;
  var tmp;
  var inumsep;
  var imonth, iyear, iday;
  var serr;
  var isep1, isep2;  //holds position of "/"
  var imstart, imlen;
  var idstart, idlen;
  var iystart, iylen;
  var bJapan
  
  var ss = new String(obj.value);
  var d = new Date();
  var m = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
    var window = 50;  //year cutoff when yy is passed in (i.e. 49 = 2049, 50 = 1950)
//alert(obj)
        var sGUID = GetCookie("bEuroDate");
        var sJAPAN = GetCookie("bJapanDate");
         obj.isDay=true; //CHANGE BY AJIT
    if (sGUID == "true") {bEuro = true}
    else                 {bEuro = false}

    if (sJAPAN == "true") {bJapan = true}


  ilen = ss.length;
  iday = 0;  //in case is never gets set below
  
  // check for required field

  if( typeof(obj.isRequired) == "undefined"){
    obj.isRequired = false;   // default not required
  }



  if (ilen == 0) {return true;}

  // check for .isDay
  if( typeof(obj.isDay) == "undefined"){
    obj.isDay = false;      // default to not expecting days - month & year only
                           
  }

  //set error message
  if (bEuro == false) {
    if (obj.isDay) {serr = "Please enter date in mm/dd/yyyy format."}
    else {serr = "Please enter date in mm/yyyy format."}
  }
  else {
    if (obj.isDay) {serr = "Please enter date in dd/mm/yyyy format."} 
    else {serr = "Please enter date in mm/yyyy format."}
  }

  if (bJapan == true) {
    if (obj.isDay) {serr = "Please enter date in yyyy/mm/dd format."}
    else {serr = "Please enter date in yyyy/mm format."}
  }     
  

  // all chars must be numeric or "/"
  inumsep = 0
  for( var i = 0; i < ilen; i++){
    tmp = ss.charAt(i);
    if (tmp == '/') {
      inumsep = inumsep + 1;
      if (inumsep == 1) {isep1 = i}
      else if (inumsep == 2) {isep2 = i}
    }
     if (tmp == '-')
     {
     	inumsep=1;
    }
  }

  //check for valid number of "/"
     if (obj.isDay && inumsep > 2) {alert(serr);obj.value=''; return false;}
     else if (!obj.isDay && inumsep > 1) {alert(serr);obj.value=''; return false;}
     else if (obj.isDay && inumsep==1) {alert(serr); obj.value='';return false;}

  if (bJapan != true) {
     //check for valid placement of "/"
     if (inumsep > 0) {
        if (isep1 != 1 && isep1 != 2 && isep1 != 5) {alert(serr);obj.value=''; return false;}
     }
     if (inumsep > 1) {
        if (isep2 != 3 && isep2 != 4 && isep2 != 5) {alert(serr);obj.value=''; return false;}
      }
  }
  else
  {
     //check for valid placement of "/"
     if (inumsep > 0) {
        if (isep1 != 2 && isep1 != 4) {alert(serr); obj.value='';return false;}
     }
     if (inumsep > 1) {
        if (isep2 != 4 && isep2 != 5 && isep2 != 6 && isep2 != 7) {alert(serr);obj.value=''; return false;}
      }  	
  }  	      


  //set start and length of month, day and year
  if (inumsep == 0) {
    if (ilen == 4) {
      imstart = 0; imlen = 2;
      iystart = 2; iylen = 2;
      if (bJapan == true) {
      	iystart = 0; iylen = 2;
      	imstart = 2; imlen = 2;      	
      }
    }
    else if (ilen == 6 && obj.isDay) {
      imstart = 0; imlen = 2;
      idstart = 2; idlen = 2;
      iystart = 4; iylen = 2;
      if (bJapan == true) {
      	iystart = 0; iylen = 2;
      	imstart = 2; imlen = 2;
      	idstart = 4; idlen = 2;
      }
    }  
    else if (ilen == 6 && !obj.isDay) {
      imstart = 0; imlen = 2;
      iystart = 2; iylen = 4;
      if (bJapan == true) {
      	iystart = 0; iylen = 4;
      	imstart = 4; imlen = 2;      	
      }
    }  
    else if (ilen == 8) {
      imstart = 0; imlen = 2;
      idstart = 2; idlen = 2;
      iystart = 4; iylen = 4;
      if (bJapan == true) {
      	iystart = 0; iylen = 4;
      	imstart = 4; imlen = 2;
      	idstart = 6; idlen = 2;
      }     
    }
  }
  else if (inumsep == 1) {
    imstart = 0; imlen = isep1;
    iystart = isep1  + 1; iylen = ilen - isep1 - 1;
    if (bJapan == true) {
      iystart = 0; iylen = isep1;
      imstart = isep1  + 1; imlen = ilen - isep1 - 1;
    }  	
  }
  else if (inumsep == 2) {
    imstart = 0; imlen = isep1;
    idstart = isep1  + 1; idlen = isep2 - isep1 - 1;
    iystart = isep2 + 1; iylen = ilen - isep2 - 1;
    if (bJapan == true) {
      iystart = 0; imlen = isep1;
      imstart = isep1  + 1; idlen = isep2 - isep1 - 1;
      idstart = isep2 + 1; iylen = ilen - isep2 - 1;
    }
  }

  if (obj.isDay != false) {
  if (bEuro==true && obj.isDay.toUpperCase() == 'TRUE') {
    //switch it all around
    ii = imstart;
    ij = imlen;
    imstart = idstart;
    imlen = idlen;
    idstart = ii;
    idlen = ij;
  }
}

  if (obj.isDay != false) {
  if (bJapan==true && obj.isDay.toUpperCase() == 'TRUE') {
    //switch it all around
    if (inumsep == 2) {
    	iystart = 0; iylen = isep1;
    	imstart = isep1  + 1; imlen = isep2 - isep1 - 1;
    	idstart = isep2 + 1; idlen = ilen - isep2 - 1;
    }
  }
  }


  imonth = parseInt(ss.substr(imstart, imlen), 10);  //10 param sets to base 10 (default is 8!)
                 //without it, "08" and "09" returned 0
  iyear = parseInt(ss.substr(iystart, iylen), 10);
  if (obj.isDay) { iday = parseInt(ss.substr(idstart, idlen), 10) }

  if (isNaN(imonth) || isNaN(iyear) || isNaN(iday)) {alert(serr);obj.value=''; return false;}

  if (obj.isDay) {serr = "Date out of range."} else {serr = "Please enter date in mm/yy format."}
  if (iylen != 4 && iylen != 2) {alert(serr);obj.value=''; return false;}
  if (imlen != 1 && imlen != 2) {alert(serr); obj.value='';return false;}
  if (obj.isDay) {
  if (idlen != 1 && idlen != 2) {alert(serr); obj.value='';return false;}
    }

  if (imonth < 1 || imonth > 12) {alert(serr); obj.value='';return false;}
  if (iylen == 4 && (iyear < 1875 || iyear > 2199)) {alert(serr);obj.value=''; return false;}
  //SA052802  change year range lower limit from 1900 to 1875 for affordable tenants birthdates
  //MRB	      change year range upper limit from 2100 to 2199 for leases in good old England
  if (iylen == 2 && (iyear < 0 || iyear > 99)) {alert(serr); obj.value='';return false;}
  if ( (obj.isDay) && (iday < 1 || iday > 31) ) {alert(serr); obj.value='';return false;}




  mm = imonth;
  mm = mm > 9 ? mm : "0" + mm.toString();
  dd = iday;
  dd = dd > 9 ? dd : "0" + dd.toString();
  yy = iyear;
  yy = yy > 9 ? yy : "0" + yy.toString();

    if (iyear < 1000) {
    if (parseInt(yy) < window ) {yy = "20" + yy }
    else { yy = "19" +  yy }
    iyear = parseInt(yy)
  }


  //30 days hath November...
  if ((imonth == 1) || (imonth == 3) || (imonth == 5) || (imonth == 7) || (imonth == 8) || (imonth == 10) || (imonth == 12)) {
      if (iday > 31) {alert(serr);obj.value=''; return false;}
  }
  else if ((imonth == 4) || (imonth == 6) || (imonth == 9) || (imonth == 11) ) {
      if (iday > 30) {alert(serr);obj.value=''; return false;}
  }
  else if (imonth == 2) {
      //leap year, every 4 years, except centuries that are not evenly
      //divisible by 100
      imod = iyear % 4
      imod2 = iyear % 100
      if (imod == 0 && ( (imod2 != 0) || (iyear % 400 == 0) )) {  
        if (iday > 29) {alert(serr); obj.value='';return false;}
      }
      else {
        if (iday > 28) {alert(serr); obj.value='';return false;}
      }
  }

if (bEuro == true) {
    if( obj.isDay){
      sout = dd + "/" + mm + "/" + yy;
    }
    else{
      sout = mm + "/" + yy;
    }
}
else {
    if( obj.isDay){
      sout = mm + "/" + dd + "/" + yy;
    }
    else{
      sout = mm + "/" + yy;
    }

}

if (bJapan == true) {
    if( obj.isDay){
      sout = yy + "/" + mm + "/" + dd;
    }
    else{
      sout = yyyy + "/" + mm;
    }
}

  obj.value = sout;
  return true;
}
// Create validate Year

function ValidYear(obj) {
    var ss = new String(obj.value);   //converts object to string
    var ilen = ss.length;
    var iyear;
    var serr = "Invalid Year";
    var min = 1875;
    var max = 2100;
    var window = 50

    if (Empty(obj.value)) { return true; }
    if (ilen != 4 && ilen != 2) {
        error(obj, serr);
        return false;
    }
    for (var i = 0; i < ilen; i++) {
        if ((ss.charAt(i) < "0") || (ss.charAt(i) > "9")) {
            error(num, serr);
            return false;
        }
    }
    iyear = parseInt(ss, 10);
    if (ilen == 2) {
        if (iyear < window) {
            iyear = 2000 + iyear;
        }
        else {
            iyear = 1900 + iyear;
        }
    }
    else if (iyear < min || iyear > max) {
        error(obj, serr);
        return false;
    }
    obj.value = iyear.toString();
    return true;
}

// Create a cookie with the specified name and value.
function SetCookie(sName, sValue)
{
//  document.cookie = sName + "=" + escape(sValue) + ";";
  var d = new Date();
  d.setFullYear(d.getFullYear()+1);
  document.cookie=sName+"="+escape(sValue)+";"+"expires="+d+"; path=/";
}

function GetCookie(sCookie)
{
  // cookies are separated by semicolons
  var aCookie = document.cookie.split(";");
  for (var i=0; i < aCookie.length; i++)
  {
    // a name/value pair (a crumb) is separated by an equal sign
    var aCrumb = aCookie[i].split("=");
    if (sCookie.replace(" ", "") == unescape(aCrumb[0].replace(" ", "")))
      return unescape(aCrumb[1]);
  }

  return null;
}

////////////////


function FormatPhoneNum(txtFieldName, PhoneNum) {

  var sPhoneNum = "";
  var sNewPhoneNum = "";
  var sOrigPhoneNum = PhoneNum.value;
   var sGUID = GetCookie("BINTERNATIONAL");
  
   
   if (sGUID)
   {
   	if (sGUID == "true") {return};
   }
  
  if (Empty(PhoneNum.value)) 
  {
  	PhoneNum.value = "";
  	return true;
  }
  if (txtFieldName == '') {txtFieldName = PhoneNum.name}
  /* --loop through to get just the numbers and not special characters */
  for (var i = 0; i <= PhoneNum.value.length; i++) {
    if ((PhoneNum.value.charAt(i) >= "0") && (PhoneNum.value.charAt(i) <= "9")) {
      sPhoneNum = sPhoneNum  + PhoneNum.value.charAt(i);
    }
  }
  if (sPhoneNum != "") {
    if (sPhoneNum.substring(7,15) == "") { 
      sNewPhoneNum = sPhoneNum.substring(0, 3) + "-" + sPhoneNum.substring(3, 7);
    }
    else
    {
      sNewPhoneNum = '(' + sPhoneNum.substring(0, 3) + ') ' + sPhoneNum.substring(3, 6) + "-" + sPhoneNum.substring(6, 10);
      if (sPhoneNum.substring(10, 15) != "") { sNewPhoneNum = sNewPhoneNum + " x" + sPhoneNum.substring(10, 15); }
    }
  }
  else  /* Display error message */
  {    
     return error(PhoneNum, "Please enter phone number as 10 digits or (NNN) NNN-NNNN with an additional optional extension as xNNNNN.");  
   }

  document.forms[0].elements[txtFieldName].value = sNewPhoneNum;
  return true;
  //if (sOrigPhoneNum != sNewPhoneNum) { gotChange(); }
}


//////////////////////


function FT_FinalTest() {

  var InputCollection = document.getElementsByTagName("INPUT")
  for (i = 0; i < InputCollection.length; i++) {

      if (InputCollection[i].getAttribute("mandatory") == "true" && InputCollection[i].value == "") 
      {
	        if(InputCollection[i].getAttribute("mandatorymessage")==null)
	        {
	        	error(InputCollection[i], "Field may not be blank"); return false;
		}
		else
		{
	        	error(InputCollection[i], InputCollection[i].getAttribute("mandatorymessage")); return false;
		}
      }
  }
  
  var SelectCollection = document.getElementsByTagName("SELECT")
  for (i = 0; i < SelectCollection.length; i++) {
      if (SelectCollection[i].getAttribute("mandatory") == "true") {
          if (SelectCollection[i].type == "select-multiple") {
            var bb = false;
            for (j=0; j < SelectCollection[i].options.length; j++) {        	
            	if (SelectCollection[i].options[j].selected == true && SelectCollection[i].options[j].text != "") {
            		bb = true
            		break
            	}
            }
            if (bb == false) {error(SelectCollection[i], 'Field may not be blank'); return false}
          }
          else {          
             var dd = SelectCollection[i];
             if ( dd.options[dd.options.selectedIndex].text == "" ) {error(SelectCollection[i], 'Field may not be blank'); return false}
          }      
      }    
  }
  var TextAreaCollection = document.getElementsByTagName("TEXTAREA")

  for (i = 0; i < TextAreaCollection.length; i++) {
  
      if (TextAreaCollection[i].getAttribute("mandatory") == "true" && TextAreaCollection[i].value == "") {
        error(TextAreaCollection[i], 'Field may not be blank'); return false;
      }
  }
  return true;
 
}

function ValidateEmail(email) {
		
	bFlag=true;
	var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|\s/; // invalid
	var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,4})(\]?)$/; // valid
	var str = email.value;
	if(str == ""){return bFlag;}
	var separater=",";
	
	for (i = 0; i < email.value.length; i++) 
			{
				seq = email.value.charAt(i);
				if(separater.indexOf(seq)>-1 ) 
				{
					  alert('Please separate multiple addresses with a semicolon (;).');
				      email.focus();
					  email.select();
					  bFlag=false;
					  return bFlag;
				}
	
			}
	var emailaddrs = str.split(";");
	
	for (var i=0; i < emailaddrs.length; i++) {

	  if (!reg1.test(emailaddrs[i]) && reg2.test(emailaddrs[i])) {}
		else {
		  alert("\"" + emailaddrs[i] + "\" is an invalid e-mail address.");
		  email.focus();
		  email.select();
		  bFlag=false;
		  return bFlag;
		}
	}
	
	return bFlag;
}
function validatePassword(obj)
			{
			
				var lower_even = "abcdefghijklmnopqrstuvwxyz";
				var upper = lower_even.toUpperCase();
				var numbers = "0123456789";
				var isAlpha=false;
				var isNumeric=false;
				var isUpper=false;
				var isSpecial=false;
				var validLength=true;
				var ValidStartChar=true;
				var i;
			
			if (obj.value!='')
			{
					for (i = 0; i < obj.value.length; i++) 
					{
						
						seq = obj.value.charAt(i);
																
						if (lower_even.indexOf(seq) > -1) isAlpha=true;
								
						if (numbers.indexOf(seq) > -1) isNumeric =true;
							
						if (upper.indexOf(seq) > -1) isUpper =true;
						
						
					}
								
					if (obj.value.length < 6) validLength=false;
												
					if (isAlpha != true || isUpper !=true || isNumeric != true || validLength!= true)
					{
						if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1)
						{
							alert('** Password must be at least 6 characters, must contain one uppercase character, one lowercase character and one numeric character **');
						}
						else
						{
							alert('** Password must be at least 6 characters, must contain one uppercase character,\none lowercase character and one numeric character **');
						}
						
						obj.select();
						return false;
					}
			}
					
					return true;
			}	
// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

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 trim(s)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not a whitespace, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (c != " ") returnString += c;
    }
    return returnString;
}
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++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
var bracket=3
strPhone=trim(strPhone)
if(strPhone.indexOf("+")>1) return false
if(strPhone.indexOf("-")!=-1)bracket=bracket+1
if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)return false
var brchr=strPhone.indexOf("(")
if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")return false
if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function ValidatePhone(Phone){
	//var Phone=document.frmSample.txtPhone
	
	bFlag=true;
	
	var sPhoneNum = "";
	 for (var i = 0; i <= Phone.value.length; i++) {
	    if ((Phone.value.charAt(i) >= "0") && (Phone.value.charAt(i) <= "9")) {
	      sPhoneNum = sPhoneNum  + Phone.value.charAt(i);
	    }
	  }
	//alert(sPhoneNum);
	if ((sPhoneNum==null)||(sPhoneNum=="")){
		alert("Please enter a valid telephone number.")
		Phone.focus();
		bFlag=false;
		return bFlag
	}
	
	if (checkInternationalPhone(sPhoneNum)==false){
		alert("Please enter a valid telephone number.")
	//	Phone.value=""
		Phone.focus();
		bFlag=false;
		return bFlag
	}
	else
	{
		FormatPhoneNum(Phone.name,Phone);
		return bFlag;
	}
	

 }


function ClearFieldValue(elm,svalue)
{ 
	if (elm.value == svalue) 
	{
		elm.value = '';
	}
}

function SetFieldValue(elm,svalue)
{ 
	if (elm.value == "") 
	{
		elm.value = svalue;
	}
}

//Curreny Validation
function CurrencyValidation(numObj)
  {
	var str = numObj.value;
	var charset="$0123456789.,";
	for ( var i=0; i<str.length; i++ )
		{
			if ( charset.indexOf(str.substr(i,1)) < 0 )
			{
				return false;
			}		
  		}
  	return true;
}
////////////


//////////////////////CORP SEARCH STARTS

function InitializeTimer(iSec)
{
    // Set the length of the timer, in seconds
    secs = iSec
    StopTheClock()
    StartTheTimer()
    
}

function StopTheClock()
{
    if(timerRunning)
    clearTimeout(timerID)
    timerRunning = false
}

function StartTheTimer()
{
    if (secs==0)
    {
        StopTheClock()
        self.status = ""
        fillCombo();
        if(document.getElementById("Submit") != null)
        {document.getElementById("Submit").disabled=false;}
    }
    else
    {
	if(document.getElementById("Submit") != null)
        {document.getElementById("Submit").disabled=true;}
        self.status = "Processing... (" + secs + " second)";
        secs = secs - 1
        timerRunning = true
        timerID = self.setTimeout("StartTheTimer()", delay)
    }
}


function stateChangeHandler() 
{ 
	//readyState of 4 or 'complete' represents that data has been returned 
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){ 
		//Gather the results from the callback 
		var str = xmlHttp.responseText; 
		strResponse = str; 
	} 
} 

// XMLHttp send GET request 
function xmlHttp_Get(xmlhttp, url) { 
	xmlhttp.open('GET', url, true); 
	xmlhttp.send(null); 
} 

function GetXmlHttpObject(handler) { 
	var objXmlHttp = null;    //Holds the local xmlHTTP object instance 

	//Depending on the browser, try to create the xmlHttp object 
	if (is_ie){ 
		//The object to create depends on version of IE 
		//If it isn't ie5, then default to the Msxml2.XMLHTTP object 
		var strObjName = (is_ie5) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'; 
     
		//Attempt to create the object 
		try{ 
			objXmlHttp = new ActiveXObject(strObjName); 
			objXmlHttp.onreadystatechange = handler; 
		} 
		catch(e){ 
		//Object creation errored 
			alert('IE detected, but object could not be created. Verify that active scripting and activeX controls are enabled'); 
			return; 
		} 
	} 
	else if (is_opera){ 
		//Opera has some issues with xmlHttp object functionality 
		alert('Opera detected. The page may not behave as expected.'); 
		return; 
	} 
	else{ 
		// Mozilla | Netscape | Safari 
		objXmlHttp = new XMLHttpRequest(); 
		objXmlHttp.onload = handler; 
		objXmlHttp.onerror = handler; 
	} 
 
	//Return the instantiated object 
	return objXmlHttp; 
} 

//////////////////////CORP SEARCH ENDS

///ACH Transit Number Validation
function validTransit(obj) 
{  
  ss = obj.value;
  
  if (ss.length == 0) return true;
  /* Comented, since Portal supports only US file format.  
  if (ACHSetup.BACHCANADA.value == "-1" || ACHSetup.BACHCANADA.value == "True")
  {  	
   validLength(obj, "Transit number", 5);
    validNumber(obj);
  }
  else  
  */
  {   
    if (!validLength2(obj, "Bank Routing number", 9)) {return}
    if (!validNumber(obj)) {return}
    if (!Mod10Validation(obj.value)) {    	
    	sMsg = 'This bank routing number is not valid.\r\r'
    	sMsg = sMsg + 'Click OK to keep this bank routing number. Incorrect bank routing numbers will result in transaction failure.\r\r'
    	sMsg = sMsg + 'Click Cancel to enter the bank routing number again.';
    	

    	bOK = confirm(sMsg); 	
    	if (bOK) 
    	{
    		//user chose to ignore Mod10 warning, do nothing
    		return true;
    	}
    	else {  
    		obj.focus();                                         
    		obj.select();
    		return false;
    	}    
    }
    else
    	return true;
  }
}
function validNumber(obj) {  
  ss = obj.value;
  var iLen = ss.length;                                                                                                       
  for (var i = 0; i < iLen; i++)                               
  {                                                          
    if ((ss.charAt(i) < "0") || (ss.charAt(i) > "9"))
    {                                                      
      alert("Invalid number");                          
      obj.focus();                                         
      obj.select(); 
      return false;                                        
      break;
    }                                                      
  }                
  return true;                                                                                                         
}

function validLength2(obj, sField, iExactLen) 
{  
  ss = obj.value;
  var iLen = ss.length;
  if (iLen > 0 && iLen != iExactLen)
  {                                                                                                 
      alert(sField + " must be " + iExactLen + " digits.");  
      obj.focus();
      obj.select();  
      return false;                                
  }                
  else {
      return true;
  }                                                                                                         
}
function Mod10Validation(sAcctNum) {
	var iAmount;
	iAmount = 0;
	for (var i = 0; i < sAcctNum.length; i += 3) {
		iAmount = iAmount + parseInt(sAcctNum.charAt(i), 10) * 3;
		iAmount = iAmount + parseInt(sAcctNum.charAt(i + 1), 10) * 7;
		iAmount = iAmount + parseInt(sAcctNum.charAt(i + 2), 10);
	}
	if (iAmount != 0 && iAmount % 10 == 0){
	  return true;
	} 
	else {
		return false;
	}
}

///This function validates CVV code against Card Type
function ValidateCVV(ddl, Obj)
{	
	CType = ddl.options[ddl.selectedIndex].value;
			
	if (CType == 'Amex')	
	{	
	        if (Obj.value.length != 4)	
	        {	
	                    alert('CVV Code should be of 4 digits.');	
	                    Obj.select();	
	                    Obj.focus();	
	                    return false;
	        }
	}	
	else	
	{	
	        if (Obj.value.length != 3)
	        {	
	                    alert('CVV Code should be of 3 digits.');	
	                    Obj.select();	
	                    Obj.focus();	
	                    return false;	
	        }	
	}
	return true;	
}

	function CalculateTotalPayment(txtExtraAmt)
		{
			var totalCharges = parseNum(document.getElementById('hTotalCharges'),2) 
			var totalAmount = document.getElementById('lblTotalAmount').innerHTML;
			var gridtotalpayment = document.getElementById('hGridTotalCharges').value;
			totalAmount = trim(totalAmount.replace("$",""));
			totalAmount = trim(totalAmount.replace("(","-"));
			totalAmount = trim(totalAmount.replace(")",""));
			totalAmount = trim(totalAmount.replace(",",""));					
			totalAmount = parseFloat(totalAmount);
			
			if (totalCharges == '') totalCharges = '0.00';
			if (totalAmount == '') totalAmount = '0.00';			
			if (gridtotalpayment == '') gridtotalpayment = '0.00';			
										
			if (ValidCurrency(txtExtraAmt))
			{				
				FormatNumber(txtExtraAmt);
				if (trim(txtExtraAmt.value) == '') txtExtraAmt.value='0.00';
				
				if (parseNum(txtExtraAmt,2) < parseFloat('0.00'))					
				{
					alert('Extra Amount may not be less than zero.')
					txtExtraAmt.select();
					return false;
				}
			
				if (ValidFloat(txtExtraAmt,2)==true)
				{
					if (gridtotalpayment < totalCharges && gridtotalpayment > 0)
					{
					       	document.getElementById('TxtTotalPayment').value = parseNum(txtExtraAmt,2) + parseFloat(gridtotalpayment); 
						document.getElementById("hTotalAmount").value = document.getElementById('TxtTotalPayment').value; 
						FormatNumber(document.getElementById('TxtTotalPayment'));
						return true;	
					}
					
					if (totalCharges == totalAmount )
					{
						if (gridtotalpayment > 0)
						{
							document.getElementById('TxtTotalPayment').value = parseNum(txtExtraAmt,2) + parseFloat(totalAmount); 
							document.getElementById("hTotalAmount").value = document.getElementById('TxtTotalPayment').value; 
							FormatNumber(document.getElementById('TxtTotalPayment'));
							return true;							
						}
						else
						{
							document.getElementById('TxtTotalPayment').value = parseNum(txtExtraAmt,2); 
							document.getElementById("hTotalAmount").value = document.getElementById('TxtTotalPayment').value; 
							FormatNumber(document.getElementById('TxtTotalPayment'));
							return true;							
						}
												
					}
					if (totalCharges == 0 )
					{
					       	document.getElementById('TxtTotalPayment').value = parseNum(txtExtraAmt,2); 
						document.getElementById("hTotalAmount").value = document.getElementById('TxtTotalPayment').value; 
						FormatNumber(document.getElementById('TxtTotalPayment'));
						return true;	
					}
				}
			}
		}
		
				
		function CalculateExtraAmount(txtTotalPay)
		{	
			var totalCharges = parseNum(document.getElementById('hTotalCharges'),2)
			var totalAmount = document.getElementById('lblTotalAmount').innerHTML;
			var gridtotalpayment = document.getElementById('hGridTotalCharges').value;
			totalAmount = trim(totalAmount.replace("$",""));
			totalAmount = trim(totalAmount.replace("(","-"));
			totalAmount = trim(totalAmount.replace(")",""));
			totalAmount = trim(totalAmount.replace(",",""));					
			totalAmount = parseFloat(totalAmount);
			document.getElementById("hTotalAmount").value = txtTotalPay.value;
			var isPartial = document.getElementById("hIsPartial").value
			
			if (totalCharges == '') totalCharges = '0.00';
			if (totalAmount == '') totalAmount = '0.00';	
			
			if (ValidCurrency(txtTotalPay))
			{				
				FormatNumber(txtTotalPay);
				if (trim(txtTotalPay.value) == '') txtTotalPay.value='0.00';
				
				if (parseNum(txtTotalPay,2) < parseFloat('0.00'))					
				{
					alert('Total Payment amount may not be less than zero.')
					txtTotalPay.select();
					return false;
				}
			
				if (ValidFloat(txtTotalPay,2)==true)
				{
					if (gridtotalpayment < totalCharges && gridtotalpayment > 0 )
					{
					       	document.getElementById('TxtTotalPayment').value = parseNum(txtExtraAmt,2) + parseFloat(gridtotalpayment); 
						document.getElementById("hTotalAmount").value = document.getElementById('TxtTotalPayment').value; 
						FormatNumber(document.getElementById('TxtTotalPayment'));
						return true;	
					}
					
					if (totalCharges == totalAmount && gridtotalpayment > 0)
					{
						if (parseNum(txtTotalPay,2) < parseFloat(totalCharges))
						{	
							if (isPartial == 1)														
								alert('Total Payment amount should be greater than or equal to Total Charges. \rIf processing a partial payment, please enter the correct payment amount in the Amount to Pay fields.')
							else
								alert('Total Payment amount should be greater than or equal to Total Charges.')
							txtTotalPay.select();				    
							return false;
						}
						else
						{
							if (document.getElementById('TxtExtraAmount') != null)
							{
								var extraAmount;
								extraAmount = parseNum(txtTotalPay,2) - parseFloat(totalAmount);
								document.getElementById('TxtExtraAmount').value = extraAmount.toFixed(2);
								FormatNumber(document.getElementById('TxtExtraAmount'));
							}
							return true;
						}							
					}
					if (totalCharges == 0 )
					{
					       	var extraAmount;
						extraAmount = parseNum(txtTotalPay,2);
						document.getElementById('TxtExtraAmount').value = extraAmount.toFixed(2);
						FormatNumber(document.getElementById('TxtExtraAmount'));	
					}
				}
			}
			
		}
		
		function fnShowMonthlyCharges(pg,isPopup)
		{	
			var sparam = 'toolbar=no,resizable=1,location=no,scrollbars=yes,height=350,width=600,alwaysraised=yes';
			a =	window.open('../Pages/PortalCommonAutomaticMonthlyPayment.aspx?Pagegroup='+pg+'&popup='+isPopup,'Monthly_Charges',sparam)			
			return false;			
		} 
