//  Common functions 

function _CF_onError(form_object, input_object, object_value, error_message) {
	alert(error_message);
       	return false;	
    }

function _CF_checknumber(object_value) {
    //Returns true if value is a number or is NULL
    //otherwise returns false	
    if (object_value.length == 0)
        return true;
    //Returns true if value is a number defined as
    //   having an optional leading + or -.
    //   having at most 1 decimal point.
    //   otherwise containing only the characters 0-9.
	var start_format = " .+-0123456789";
	var number_format = " .0123456789";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;
    //The first character can be + - .  blank or a digit.
	check_char = start_format.indexOf(object_value.charAt(0))
    //Was it a decimal?
	if (check_char == 1)
	    decimal = true;
	else if (check_char < 1)
		return false;
 	//Remaining characters can be only . or a digit, but only one decimal.
	for (var i = 1; i < object_value.length; i++) {
		check_char = number_format.indexOf(object_value.charAt(i))
		if (check_char < 0)
			return false;
		else if (check_char == 1) {
			if (decimal)		// Second decimal.
				return false;
			else
				decimal = true;
		}
		else if (check_char == 0) {
			if (decimal || digits)	
				trailing_blank = true;
        // ignore leading blanks
		}
	        else if (trailing_blank)
			return false;
		else
			digits = true;
	}	
    //All tests passed, so...
    return true
    }

function  _CF_checkActualrowCount(_CF_this) {
    if  (!_CF_checknumber(_CF_this.actualChargePayExecuting.value)) {
        if  (!_CF_onError(_CF_this, _CF_this.actualChargePayExecuting, _CF_this.actualChargePayExecuting.value, "The ACTUAL value can only be entered as a number.\nPlease remove other characters such as commas (,) and try again.\n\nYou can only enter numbers, the plus sign (+), minus sign (-) and decimal point(.).")) {
            return false; 
            }
        }
    return true;
    }

//  Toggles checkboxes; Usage: <a href="javascript:void(0);" onclick="checkAll(document.getElementById('uploadResults'), 'payMe', true);" class="pickSm">All</a>
function checkAll(formId, cName, check ) {
    for (i=0,n=formId.elements.length;i<n;i++)
        if (formId.elements[i].className.indexOf(cName) !=-1)
            formId.elements[i].checked = check;			
}

function printIt() {
	self.print();
	}
	
// trim code from http://www.apriori-it.co.uk/Trim.asp
function trim(trimValue) {
  		if(trimValue.length < 1) {
			    return "";
		    }
		trimValue = RTrim(trimValue);
		trimValue = LTrim(trimValue);
		if(trimValue == "") {
			    return "";
		    }
		else {
			    return trimValue;
		    }
	} // end function trim
	
function RTrim(valueTrim) {
		var w_space = String.fromCharCode(32);
		var v_length = valueTrim.length;
		var strTemp = "";
		
		if(v_length < 0) {
			    return "";
		    }
		
		var iTemp = v_length -1;
  		while(iTemp > -1) {
				if(valueTrim.charAt(iTemp) == w_space) {
					}
			    else {
						strTemp = valueTrim.substring(0,iTemp +1);
						break;
					}
				iTemp = iTemp-1;
			} //End While

		return strTemp;
	} //End Function

function LTrim(trimVal)	{
		var w_space = String.fromCharCode(32);

		if(v_length < 1)
			{
				return "";
			}

		var v_length = trimVal.length;
		var strTemp = "";
		var iTemp = 0;

		while(iTemp < v_length)
			{
			if(trimVal.charAt(iTemp) == w_space)
				{
				}
					else
				{
					strTemp = trimVal.substring(iTemp,v_length);
					break;
				}
			iTemp = iTemp + 1;
			} //End While
		return strTemp;
	} //End Function 
  	
function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}
function rezise(ctrl,wdth) {
		document.ctrl.size.width = wdth;
		document.isDirty = True;
	}

function isNumeric(x) {
		var RegExp = /^(-)?(\d*)(\.?)(\d*)$/;
		var result = x.match(RegExp);
		return result;
	}

function mthName(num) {
	var months = new Array(13);
  	months[1]  = "January";
	months[2]  = "February";
    months[3]  = "March";
    months[4]  = "April";
    months[5]  = "May";
    months[6]  = "June";
    months[7]  = "July";
    months[8]  = "August";
    months[9]  = "September";
    months[10] = "October";
    months[11] = "November";
    months[12] = "December";
	return months[mth];
}
// questionable if these are used
function oXL(txt) {
	   	var xl = new ActiveXObject("Excel.Application");
		xl.caption = txt;
		return xl;
	}

function addWS(xla,tmp) {
	   	var xlw = xla.Workbooks.Add(tmp);
		return xlw;
	}
	
function saveWS(xlw,fln) {
	   	// Sub SaveAs([ByVal Filename], [ByVal FileFormat], [ByVal Password], 
	   	//	[ByVal WriteResPassword],[ByVal ReadOnlyRecommended], 
	   	//	[ByVal CreateBackup], [ByVal AccessMode As XlSaveAsAccessMode = xlNoChange], 
	   	//	[ByVal ConflictResolution], [ByVal AddToMru], [ByVal TextCodepage], 
	   	//	[ByVal TextVisualLayout], [ByVal Local])
		// FileFormat = xlWorkbookNormal; ConflictResolution = xlLocalSessionChanges;
	   	xlw.SaveAs(fln,-4143,'', '',False, False,1, 2,True,0, 1,1);
	}
	
function shoNames(xlw, hed)	{
		xln = xlw.Names;
		for (fld = 1; xln.Count; fld = fld + 1) {
			alert(xln[fld]);
			alert(listGetAt(heading.columnlist,fld));
		;			
		}

	}	

// for use with textarea to count remaining letters, detect tab or enter
function addEvent(obj, evType, fn) { 
	if (obj.addEventListener) { 
    		obj.addEventListener(evType, fn, true); 
	    	return true; 
		}
	else if (obj.attachEvent) { 
    		var r = obj.attachEvent("on"+evType, fn); 
	    	return r; 
 		} 
	else { 
	    	return false; 
		} 
} 

function oninputfocus(e) { 
		/* Cookie-cutter code to find the source of the event */ 
		if (typeof e == 'undefined') { 
			   var e = window.event; 
			} 
		var source; 
		if (typeof e.target != 'undefined') { 
				source = e.target; 
			} 
		else if (typeof e.srcElement != 'undefined') { 
				source = e.srcElement; 
			}
		else { 
			   return; 
			} 
		/* End cookie-cutter code */ 
		
		source.style.border='2px solid #000'; 
	}
	 
function oninputblur(e) { 
		/* Cookie-cutter code to find the source of the event */ 
		if (typeof e == 'undefined') { 
		   		var e = window.event; 
		 	} 
		var source; 
		if (typeof e.target != 'undefined') { 
				source = e.target; 
			}
		else if (typeof e.srcElement != 'undefined') { 
				source = e.srcElement; 
			} 
		else { 
		   		return; 
			} 
		/* End cookie-cutter code */ 
		
		source.style.border='2px solid #ccc'; 
	} 

function textCounter(field, countfield, maxlimit) {
		if (field.value.length > maxlimit) 
			field.value = field.value.substring(0, maxlimit);
		else 
			countfield.value = maxlimit - field.value.length;
	}

// Original:  Volker Schubert (js@volker-schubert.de)
function checkCR(evt) {
		var evt  = (evt) ? evt : ((event) ? event : null);
	    var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);

	    if (((evt.keyCode == 13) || (evt.keyCode == 9)) && (node.type=="textarea"))	{
				node.form.submit();
				return false;
			}
	}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
// usage:
// var myEls = getElementsByClass('myClass');
// for ( i=0;i<myEls.length;i++ ) {
// //do stuff here with myEls[i]
// }