///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
//THIS CONTAINS COMMON APPLICATION LEVEL JAVASCRIPTS
///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// Copyright 2006-2007 javascript-array.com

var timeout	= 500;
var closetimer	= 0;
var ddmenuitem	= 0;

// open hidden layer
function mopen(id)
{	
	// cancel close timer
	mcancelclosetime();

	// close old layer
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';

	// get new layer and show it
	ddmenuitem = document.getElementById(id);
	ddmenuitem.style.visibility = 'visible';

}
// close showed layer
function mclose()
{
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';
}

// go close timer
function mclosetime()
{
	closetimer = window.setTimeout(mclose, timeout);
}

// cancel close timer
function mcancelclosetime()
{
	if(closetimer)
	{
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}

// close layer when click-out
document.onclick = mclose; 

// THIS IS A GENERIC CALLBACK METHOD TO CALL WHEN YOU WOULD LIKE TO REFRESH AN RB PAGE
// PASS IN THE RBID TO REFRESH THE PAGE
//JASTLE THIS SHOULD NOT BE IN THE GENERAL JS IT IS FOR THE RB
function callRBRefresh(r)
{
	refreshRBPage(r.fk_rbid);
}

function refreshRBPage(RBID){
	$('RBIDQ').value = RBID;
	$('VIEWABSEARCHANDSELECT').submit();
}

///////////////////////////////////////////////////////////////////////////////////////////////
//INIT THE GLOBAL SITE JS VARIABLES
pwdMinLength = 7; //Password Minimum Length for password creation
pwdInvalid = " "; // Invalid character is a space for user/pwd creation (indexOf)
userMinULength = 5; // Minimum userid length for new users
userMinNLength = 3; // Minimum name length for new users
eMailDomain = 'mortgagefirstinc.com'; // used for auto generation in user management pages
///////////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////////////
// SHORT ALERT 'a'

// CREATED: 2007-04-24
// DESC: JUST 'a', INSEAD OF SPELLING OUT ALERT ALL THE TIM

function a(thealert){
	alert(thealert);
}
///////////////////////////////////////////////////////////////////////////////////////////////

function submitenter(e)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;

if (keycode == 13)
   {
   myfield.form.submit();
   return false;
   }
else
   return true;
}

///////////////////////////////////////////////////////////////////////////////////////////////


// CALLED BY BODY- ONLOAD/UNLOAD TO CLEAR FORM VALUES TO INTIALLY SET VALUES (BY CODE). MOZILLA TENDS TO KEEP VALUES, EVEN WHEN WE DON'T WANT IT TO
function clearForms()
{
  var i;
  for (i = 0; (i < document.forms.length); i++) {
    document.forms[i].reset();
  }
}
///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// AUTHOUR: jra
// CREATED: 2004
// UPDATED: 2006-06 - CHANGED SO IT HAS TO BE SENT ID LITERAL AND THEN USED GETBY() -jra
// UPDATED: 2006-08-11 - ADDED TRY CATCH TO ALLOW EITHER LITERAL OR THE ELEMENT TO BE PASSED, STILL, THE ID SHOULD NOT BE PASSED AS A NON-LITERAL -jra
// THESE TWO FUNCTIONS CHANGE CELL COLOR FOR FORM FIELD ERROR CHECKING -jra
// MAKE SURE YOU PASS THE ID AS A STRING (LIKE 'MYCELLPHONECELLIDNAME') TO THE FUNCTIONS
function CC(thecell){
	$(thecell).style.backgroundColor = 'PINK';
	$(thecell).focus();
}	
function CB(thecell){
	$(thecell).style.backgroundColor = '';
}
///////////////////////////////////////////////////////////////////////////////////////////////
// ADDED CD TO CHANGE 'DIRTY' FORM FIELDS BBUCK 11 JUL 2006
function CD(thecell){
	$(thecell).style.backgroundColor = '#dfeaf4';
}
///////////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////////////
// PASSWORD CHECK EMAIL VALIDITY
// AUTHOUR: jra
// UPDATED: 2006-01-07
// DESCRIPTION: A standard email checker, makes sure it is abc@abc.net or abc@abc.uk format more or less
function emailCheck(email) {
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email)){
		//		alert("Thats a good one!");
		return true;
		} //else	//		alert("Thats a bad one!");
		return false;
	}
///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// CHECK ZIP CODE VALIDITY
// AUTHOUR: SMG
// UPDATED: 07-02-2007
// DESCRIPTION: A standard zip code checker - accounts for 5 or 5+4 zips
function validateZIP(vZip) {
	alert(vZip);
	var ValidChars = "0123456789-";
	var hyphencount = 0;
	
	//IF THE ZIP IS NOT 5 OR 10 CHARACTERS
	if (vZip.length!=5 && vZip.length!=10) {
		return false;
	}
	//CHECK TO SEE IF THE ZIP IS USING NUMBERS AND ONE HYPHEN ONLY
	for (var i=0; i < vZip.length; i++) {
		temp = "" + vZip.substring(i, i+1);
		if (temp == "-") hyphencount++;
		if (ValidChars.indexOf(temp) == "-1") {
			return false;
		}
		//CHECK FOR ONLY ONE HYPHEN
		if ((hyphencount > 1) || ((vZip.length==10) && ""+vZip.charAt(5)!="-")) {
			return false;
		}
	}
	return true;
}
///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// CHECK IF A VALUE IS A VALID 9 DIGIT ROUTING NUMBER
// AUTHOUR: SMG
// UPDATED: 07-03-2007
// DESCRIPTION: Checks if a value is a valid routing number. Returns true or false.
function isRoutingNum(sNum){
	var ValidChars = "0123456789";
	var Char;
	//IF THE ROUTING NUMBER IS NOT 9 CHARACTERS
	if (sNum.length != 9){
		return false;
	}
	for (i = 0; i < sNum.length; i++){
		Char = sNum.charAt(i); 
		if (ValidChars.indexOf(Char) == -1){
			return false;
		}
	}
	return true;
}
///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// CHECK IF A VALUE IS CURRENCY
// AUTHOUR: jra
// UPDATED: 2006-01-07
// DESCRIPTION: Checks if a value is a valid currency unit or number. Returns true or false.
function isCurrency(sText) {
   var ValidChars = "0123456789.$,";
   var isGood=true;
   var Char;
   for (i = 0; i < sText.length && isGood == true; i++) 
      {  
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         isGood = false; 
         }
      }
   return isGood; //= false or true
   }
///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// CHECK IF A VALUE IS AN INTEGER
// AUTHOUR: jra
// UPDATED: 2006-01-07
// DESCRIPTION: Checks if a value is a Integer, no decimal allowed. Returns true or false.
function isInteger(sText) {
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      {
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false; 
         }
      }
   return IsNumber; //= false or true
   }
///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// CHECK IF A VALUE IS AN NUMBER, DECIMAL ALLOWED
// AUTHOUR: jra
// UPDATED: 2006-01-07
// DESCRIPTION: Checks if a value is a number or float. Returns true or false.
function isNumber(sText) {
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      {  
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false; 
         }
      }
   return IsNumber; //= false or true
   }
  

///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// stripDollarSign(string)
// AUTHOUR: jra
// UPDATED: 2006-01-07
// DESCRIPTION: Strips out dollar signs and returns the string
function stripDollarSign(sText) {
re = /\$/gi; //pull out dollar signs
var string = sText;
newVal=string.replace(re, "");
re = /,/gi; //pull out commas
newVal=newVal.replace(re, "");
return newVal;
}
///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// checkRadioValues(object)
// AUTHOUR: jra
// UPDATED: 2006-08-18
// DESCRIPTION: CHECKS RADIO BUTTON ELEMENTS AND RETURNS THE CHECKED VALUE OR NULL
function checkRadioValues(f){
	// CHECK RADIO BUTTONS
	var theValue = null;
	for (i=0;i<f.length;i++){
		if (f[i].checked) {
			theValue = f[i].value;
			//alert(theValue);
			break;
		}
	}
	return theValue
}
///////////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////////////
// The famous $ buddy, modifed as needed
// MODAUTHOUR: jra
// CREATED: 2007-04-25
// DESCRIPTION: CHECKS WHATEVER YOU PASS IN (OBJECT OR LITERAL) AND RETURNS THE ELEMENT ID...
// YOU CAN ALSO PASS MULTIPLE ELEMENTS AND GET THEM BACK AS WELL

function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}
///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// toggleEL 
// MODAUTHOUR: jra
// CREATED: 2007-04-25
// DESCRIPTION: - pass in an element object or id string and it flips its visibility, dependent on the Dollar Buddy

function toggleEl(obj) {
	var el = $(obj);
	el.style.display = (el.style.display != 'none' ? 'none' : '' );
}
///////////////////////////////////////////////////////////////////////////////////////////////	
	

///////////////////////////////////////////////////////////////////////////////////////////////
// hideEL 
// MODAUTHOUR: jra
// CREATED: 2007-04-25
// DESCRIPTION: Pass in a list of elements to hide, all in one function! Cool!
function hideEl() {
	for ( var i=0; i < arguments.length; i++ ) {
		$(arguments[i]).style.display = 'none' ;
	}
}
///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// showEL 
// MODAUTHOUR: jra
// CREATED: 2007-04-25
// DESCRIPTION: Pass in a list of elements to show, all in one function! Cool!
function showEl() {
	for ( var i=0; i < arguments.length; i++ ) {
		$(arguments[i]).style.display = 'block' ;
	}
}
///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// getSelectedElements
// MODAUTHOUR: jra
// CREATED: 2007-06-29
// DESCRIPTION: LOOPS ACROSS SELECT ELEMENT AND RETURNS SELECTED VALUES
// RETURNS FOR BOTH MULTI OR SINGLE EVEN IF SINGLE-SELECT HAS NO OFFICIAL 'SELECTION'
	function getSelectedElements (elem){
		var i =0;		
		var q=',';
		var elemList ='';
		var elem = $(elem);
	
		for (var i = 0; i <elem.options.length; i++) {
			if (elem.options[i].selected) elemList+= (elem[i].value+',');
		}
		if(elemList.length != 0) {
			elemList=listClean(elemList);
		}
		if(elemList.length == 0) elemList = elem.value;//THIS CATCHES A VALUE IF IT IS NOT A MULTISELCT, AND NO SPECIFIC SELECT VALUE IS GIVEN, THE DISPLAYED VALUE WILL GO IN (ON SINGLE SELECT ONLY)
		return elemList;
	}
///////////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////////////
// listClean
// MODAUTHOUR: jra
// CREATED: 2007-06-29
// DESCRIPTION: REMOVES TRAILING DELIMITERS  IN A LIST
	function listClean (list, del){
		var list=list; //required
		var del=(del==null) ? ',' : del;//set to comma if not passed in
		
//		if(list.length != 0) {
//			list=list.split(del);
//			list=list.toString();
//			alert(list);
//		}
		
		
		if(list.length != 0) {
			if(list.lastIndexOf(del) == list.length-1) {//then the last char is the delimiter, strip it so we have a clean list
				list= list.substr(0,list.length-1);
			}
		}
		
		
		return list;
	}
///////////////////////////////////////////////////////////////////////////////////////////////






///////////////////////////////////////////////////////////////////////////////////////////////
// pass the element to collapse and the image to swap
function toggle(el, img)
{
	var theImg = $(img); // || null;
	var theEle = $(el);
	var minImg = '_images/_icons/minus.gif';
	var maxImg = '_images/_icons/plus.gif';

	if(theEle.style.display == 'none')
	{
		theEle.style.display = 'block';
		/*if(theImg != null)*/theImg.src = minImg;
	}
	else if(theEle.style.display == 'block')
	{
		theEle.style.display = 'none';
		/*if(theImg != null)*/theImg.src = maxImg;
	}
}
///////////////////////////////////////////////////////////////////////////////////////////////

// what is this function for? anyone? anyone? ANYONE? -jra
// PROBABLY USED IN MERS INTERFACE.... 
function check(field)
{
 var i;
 if (eval(field[0].checked))
 {
  for (i=0;i<field.length;i++)
    field[i].checked=true;
  LL(field); 
  return "Uncheck All";
 } 
 else
 { 
   for(i=0;i<field.length;i++)
     field[i].checked=false;
   UU(field); 
   return "Check All";
 } 
}

function LL(field){field.disabled=true;}
function UU(field){field.disabled=false;}



// validation - mask fields
// 
//Example onBlur="currencymask(this);"
//
//start
function currencymask(t)
{var patt = /(\d*)\.{1}(\d{0,2})-/;
var donepatt = /^(\d*)\.{1}(\d{2})$/;
var str = t.value;
var result;
if (!str.match(donepatt))
{result = str.match(patt);
if (result!= null)
{t.value = t.value.replace(/[^\d]/gi,'');
str = result[1] + '.' + result[2];
t.value = str;
}else{
if (t.value.match(/[^\d]/gi))
t.value = t.value.replace(/[^\d]/gi,'');}
}}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//added 4/3/07 Jastle

function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + '$' + num + '.' + cents);
}

///////////////////////////////////////////////////////////////////////////////////////////////
// AUTHOUR: WBROADHEAD, JASTLE
// CREATED:   07/24/2006
// DATE VALIDATE, CHECK THAT THE DATE IS WITH IN A SET RANGE, ALSO THAT THE DATE IS VALID

function validateDate(fld) {
	field = $(fld);
	CB(fld);
	if(fld.value != ''){
    var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
    var errorMessage = 'Please enter valid date as month, day, and four digit year.\nYou may use a slash, hyphen or period to separate the values.\nThe date must be a real date. 2-30-2000 would not be accepted.\nFormat mm/dd/yyyy.';
    if ((fld.value.match(RegExPattern)) && (fld.value!='')) {
        //alert('Date is OK');
        return true;
    } else {
		alert(errorMessage);
		fld.focus();
		CC(fld);
		//alert('Date is BAD'); 
		return false;
    } 
}
}


// END DATE VALIDATION
///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// AUTHOR: SMG
// CREATED:   06/27/2007
// FORM VALIDATION, VALIDATE FORM ELEMENTS IF USER CLICKES THE SAVE BUTTON
// ARGUMENTS:
//  - FORM NAME I.E. 'RESEARCH_PROPERTY'
//  - PATTERN1 TO SEARCH I.E. IF THE TARGET FORM ELEMENT IS CALLED mortgage1ORIGINATION, 'mortgage' WOULD BE THE PATTERN1
//  - TYPE TO VALIDATE I.E. 'date' (date is the only one defined so far)
//  - PATTERN2 ARRAY I.E. var patternArray = new Array('ORIGINATION','LASTPAYMENT','NEXTPAYMENT','FCDATE');
// MUST ADD THE FOLLOWING TO THE SAVE BUTTON CALL: if(validateAllForm('RESEARCH_PROPERTY', 'mortgage', 'date', patternArray) == true){ --- DO ANYTHING THAT NEEDS TO BE DONE, I.E. AJAX SAVE --- }else{}
// ADD CASE STATEMENTS IF NEEDED FOR EACH TYPE OF VALIDATION WITH VALIDATION CODE IN IT.
	
	function validateAllForm(formName, pattern1, type, pattern2){
		var formLength = $(formName).elements.length;
		//alert(formLength);
		
		var tempNum = 0;

		for(var valRBi = 0; valRBi < formLength; valRBi++){
			var strTemp = '';
			var strTemp = $(formName).elements[valRBi].id;
			var strTempVal = $(formName).elements[valRBi].value;
			//search for every form element that starts with pattern1
			if(strTemp.match(pattern1)){
				//----------------------------------------------
				//ADD FOR STATEMENTS AS NEEDED TO VALIDATE DIFFERENT TYPES OF FIELDS
				//----------------------------------------------
				switch(type){
					case 'date':
						for (var valRBj = 0; valRBj < pattern2.length; valRBj++)
						{
							if(strTemp.match(pattern2[valRBj])){
								//CALL VALIDATEDATE() IF STRING IS FOUND IN THE ID
								if(strTempVal == '' || validateDate($(strTemp)) == true){
									//IF IT IS BLANK OR A GOOD ADDRESS DO NOTHING
								}else{
									//IF IT IS A BAD ADDRESS
									tempNum = tempNum + 1;
								}
							}
						}
					break;
					case 'float':
						for (var valRBj = 0; valRBj < pattern2.length; valRBj++)
						{
							if(strTemp.match(pattern2[valRBj])){
								//CALL VALIDATEDATE() IF STRING IS FOUND IN THE ID
								if(strTempVal == '' || isNumber($(strTemp).value) == true){
									//IF IT IS BLANK OR A GOOD NUMBER DO NOTHING
								}else{
									//IF IT IS A BAD ADDRESS
									alert('Please enter a valid number. Please do not include commas in dollar amounts.');
									CC($(strTemp));
									$(strTemp).focus();
									tempNum = tempNum + 1;
								}
							}
						}
					break;
					case 'test':
						alert('testing...');
					break;
				}
			}
		}
		//IF ANY FIELD FAILS VALIDATION, RETURN A FALSE
		if(tempNum > 0){
			//alert('fail');
			return false;
		}else{
			//alert('success');
			return true;
		}
	}
// END RB FORM VALIDATION
///////////////////////////////////////////////////////////////////////////////////////////////

function phonemask(t)
{var patt1 = /(\d{3}).*(\d{3}).*(\d{4})/;
var patt2 = /^\((\d{3})\).(\d{3})-(\d{4})$/;
var str = t.value;
var result;
if (!str.match(patt2))
{result = str.match(patt1);
if (result!= null)
{t.value = t.value.replace(/[^\d]/gi,'');
str =   result[1] + '.' + result[2] + '.' + result[3];
t.value = str;
}else{
if (t.value.match(/[^\d]/gi))
t.value = t.value.replace(/[^\d]/gi,'');
}}}

function ssnmask(t)
{var patt = /(\d{3}).*(\d{2}).*(\d{4})/;
var donepatt = /^(\d{3})-(\d{2})-(\d{4})$/;
var str = t.value;
var result;
if (!str.match(donepatt))
{result = str.match(patt);
if (result!= null)
{t.value = t.value.replace(/[^\d]/gi,'');
str = result[1] + '-' + result[2] + '-' + result[3];
t.value = str;
}else{
if (t.value.match(/[^\d]/gi))
t.value = t.value.replace(/[^\d]/gi,'');
SSNValidation(t.value);
}
}}


//added 5/23/07

function SSNValidation(ssn) {
var matchArr = ssn.match(/^(\d{3})-?\d{2}-?\d{4}$/);
var numDashes = ssn.split('-').length - 1;
if (matchArr == null || numDashes == 1) {
alert('Invalid SSN. Must be 9 digits or in the form xxx-xx-xxxx.');
msg = "does not appear to be valid";

}
else 
if (parseInt(matchArr[1],10)==0) {
alert("Invalid SSN: SSN's can't start with 000.");
msg = "does not appear to be valid";
}


}
//*************************************

function intratemask(t)
{var patt = /(\d*)\.{1}(\d{0,3})-/;
var donepatt = /^(\d*)\.{1}(\d{3})$/;
var str = t.value;
var result;
if (!str.match(donepatt))
{result = str.match(patt);
if (result!= null)
{t.value = t.value.replace(/[^\d]/gi,'');
str = result[1] + '.' + result[2];
t.value = str;
}else{
if (t.value.match(/[^\d]/gi))
t.value = t.value.replace(/[^\d]/gi,'');}
}}
//end validation - mask

//start
function numbermask(fld, decSep, e) {
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;
if (whichCode == 13) return true;  // Enter
if (whichCode == 8) return true;  // Delete (Bug fixed)
key = String.fromCharCode(whichCode);  // Get key value from key code
if (strCheck.indexOf(key) == -1) return false;  // Not a valid key
len = fld.value.length;
for(i = 0; i < len; i++)
if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
aux = '';
for(; i < len; i++)
if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
aux += key;
len = aux.length;
if (len == 0) fld.value = '';
if (len == 1) fld.value = '0'+ decSep + '0' + aux;
if (len == 2) fld.value = '0'+ decSep + aux;
if (len > 2) {
aux2 = '';
for (j = 0, i = len - 3; i >= 0; i--) {
if (j == 3) {
aux2 ;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}
fld.value = '';
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
fld.value += aux2.charAt(i);
fld.value += decSep + aux.substr(len - 2, len);
}
return false;
}


function numericCheckAlert(field)
   //  check for valid numeric strings	
   {
   var strValidChars = "0123456789.-";
   var strChar;
   var blnResult = true;
    var ele = $(field);
   var strString = ele.value;
  	CD(ele);
   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
        CC(ele);
        ele.focus();
        alert(field.toUpperCase() + ' must be numeric');
         }
      }
 
   }
 function setPredictiveDspDiv(divID, parentID){
			var x = $(parentID).offsetLeft;
			var y = $(parentID).offsetTop + $(parentID).offsetHeight;
			var parent = $(parentID);
			while (parent.offsetParent) {
				parent = parent.offsetParent;
				x += parent.offsetLeft;
				y += parent.offsetTop;
			}
			var div = $(divID);
			div.style.fontFamily = "Verdana, Geneva, Arial, Helvetica, sans-serif";
			div.style.fontSize = "100%";
			div.style.padding = "4px";
			div.style.border = "1px solid black";
			div.style.position = "absolute";
			div.style.left = x + "px";
			div.style.top = (y - 130) + "px";
			div.style.zIndex = 10000;
  }
