//variables used to create object for keyboard entry validation
var keybYN = new keybEdit('yn','Valid values are \'Y\' or \'N\'.');
var keybNumeric = new keybEdit('1234567890','Only Numeric values are allowed in this field.');
var keybAlpha = new keybEdit('abcdefghijklmnopqrstuvwxyz ','This Field requires Alpha input only.');
var keybAlphaNumeric = new keybEdit('abcdefghijklmnopqrstuvwxyz1234567890 ','This Field requires Alpha-numeric input only.');
var keybDecimal = new keybEdit('1234567890.','Decimal input only.');
var keybDate =  new keybEdit('1234567890/','Date input only');
var keybSQL = new keybEdit('abcdefghijklmnopqrstuvwxyz1234567890!@#$^-_`~+\\[]{}:<>,./&\' ','Invalid Character Input');;
var keybYNNM = new keybEdit('yn');
var keybNumericNM = new keybEdit('1234567890');
var keybAlphaNM = new keybEdit('abcdefghijklmnopqrstuvwxyz ');
var keybAlphaNumericNM = new keybEdit('abcdefghijklmnopqrstuvwxyz 1234567890');
var keybDecimalNM = new keybEdit('1234567890.');
var keybDateNM = new keybEdit('1234567890/');
var keybSQLNM = new keybEdit('abcdefghijklmnopqrstuvwxyz1234567890!@#$^-_`~+\\[]{}:<>,./&\' ');
function keybEdit(strValid, strMsg) {
    var reWork = new RegExp('[a-z]','gi');		//	Regular expression\

    if(reWork.test(strValid))
        this.valid = strValid.toLowerCase() + strValid.toUpperCase();
    else
        this.valid = strValid;

    if((strMsg == null) || (typeof(strMsg) == 'undefined'))
        this.message = '';
    else
        this.message = strMsg;

    this.getValid = keybEditGetValid;
    this.getMessage = keybEditGetMessage;
    
    function keybEditGetValid() {
        return this.valid.toString();
    }
    
    function keybEditGetMessage() {
        return this.message;
    }
}
//this function uses the above opjects and variables for keyboard entry validation
// call with onkeypress='editKeyBoard(this,keybSQL)' event.
void function editKeyBoard(objForm, objKeyb) {
    strWork = objKeyb.getValid();
    strMsg = '';							// Error message
    blnValidChar = false;					// Valid character flag

    // Part 1: Validate input
    if(!blnValidChar)
        for(i=0;i < strWork.length;i++)
            if(window.event.keyCode == strWork.charCodeAt(i)) {
                blnValidChar = true;
                break;
            }

    // Part 2: Build error message
    if(!blnValidChar) {
        if(objKeyb.getMessage().toString().length != 0)
            alert('Error: ' + objKeyb.getMessage());
        window.event.returnValue = false;		// Clear invalid character
        objForm.focus();						// Set focus
    }
}
//this function will remove leading and trailing spaces
function trim(s){
	while (s.substring(0,1) == ' ')
	{
		s = s.substring(1,s.length); 
	}
	while (s.substring(s.length-1,s.length) == ' ')
	{
		s = s.substring(0,s.length-1);
	}
	return s;
} 

function createTabSeperator(name, width) {
	document.write("<table align='center' width='"+width+"' cellspacing='0' cellpadding='0' border='0'>" +
		"<tr>" +
			"<td align='center' valign='bottom' width='1%' background='/ASI/images/SUB-Group-tab_01.gif'><span class='tabSeperatorText'>"+name+"</span></td>" +
			"<td align='center' valign='bottom' width='98%' background='/ASI/images/SUB-Group-tab_02.gif'>&nbsp;</td>" +
			"<td align='left' valign='bottom' width='1%'><img src='/ASI/images/SUB-Group-tab_04.gif'></td>" +
		"</tr>" +
		"<tr>" +
			"<td align='right' valign='top' width='1%'><img src='/ASI/images/SUB-Group-tab_05.gif'></td>" +
			"<td align='center' valign='top' width='98%' background='/ASI/images/SUB-Group-tab_06.gif'>&nbsp;</td>" +
			"<td align='left' valign='top' width='1%'><img src='/ASI/images/SUB-Group-tab_08.gif'></td>" +	
		"</tr>" +
	"</table>");
}
function createFooter(width) {
	document.write("<table align='center' width='"+width+"' cellspacing='0' cellpadding='0' border='0'>" +
		"<tr>" +
			"<td align='right' valign='top' width='1%'><img src='/ASI/images/group-bottom_01.gif'></td>" +
			"<td align='center' valign='top' background='/ASI/images/group-bottom_02.gif' width='98%'>&nbsp;</td>" +
			"<td align='left' valign='top' width='1%'><img src='/ASI/images/group-bottom_04.gif'></td>" +
		"</tr>" +
	"</table>");
}
function createHeader(name, width) {
	document.write("<table align='center' width='"+width+"' border='0' cellspacing='0' cellpadding='0'>" +
		"<tr>" +
			"<td valign='bottom' align='right' width='1%'><img src='/ASI/images/Header_Left.gif'></td>" +
			"<td valign='middle' align='center' width='98%' background='/ASI/images/Header_Center.gif'><span class='headerText'>"+name+"</span></td>" +
			"<td valing='bottom' align='left' width='1%'><img src='/ASI/images/Header_Right.gif'></td>" +
		"</tr>" + 
	"</table>");
}
function createLineBreak(width) {
	document.write("<table width='"+width+"' cellspacing='0' cellpadding='0' border='0'>" +
		"<tr>" +
			"<td valign='bottom' align='right' width='1%'><img src='/ASI/images/left_divider.gif'></td>" +
			"<td valign='bottom' width='98%'><img src='/ASI/images/center_divider.gif' width='100%' height='11'></td>" +
			"<td valing='bottom' align='left' width='1%'><img src='/ASI/images/right_divider.gif'></td>" +
		"</tr>" +
	"</table>");
}
function createLargeButton(name, width, javascript) {
	document.write("<a class='button' onclick=\""+javascript+";return false;\" href=''>" +
		"<table width='"+width+"' border='0' cellspacing='0' cellpadding='0' onclick=\""+javascript+"\">" +
			"<tr>" +
				"<td valign='bottom' align='right' width='1%'><img src='/ASI/images/Larger_Button_Left.gif'></td>" +
				"<td valign='middle' align='center' width='98%' style='background-position:center' background='/ASI/images/Larger_Button_Center.gif'><span class='buttonText'>"+name+"</span></td>" +
				"<td valing='bottom' align='left' width='1%'><img src='/ASI/images/Larger_Button_Right.gif'></td>" +
			"</tr>" +
		"</table>" +
	"</a>");
}
function createSmallButton(name, width, javascript) {
		document.write("<a class='button' onclick=\""+javascript+";return false;\" href=''>" +
		"<table width='"+width+"' border='0' cellspacing='0' cellpadding='0' onclick=\""+javascript+"\">" +
			"<tr>" +
				"<td valign='bottom' align='right' width='1%'><img src='/ASI/images/smaller_button_Left.gif'></td>" +
				"<td valign='middle' align='center' width='98%' background='/ASI/images/smaller_button_Center.gif'><span class='buttonText'>"+name+"</span></td>" +
				"<td valing='bottom' align='left' width='1%'><img src='/ASI/images/smaller_button_Right.gif'></td>" +
			"</tr>" +
		"</table>" +
	"</a>");
	}
	/**
 * This method has dependency on NumberFormat154.js
 */
function formatAsCurrency(domObj, decimalPlace, event) {
	try {
		if (isNotValueChangingKeys(event) || domObj.value.length == 0) {
			return;
		} else {
			nf = new NumberFormat(domObj.value);
			nf.setPlaces(decimalPlace);
			domObj.value = "$" + nf.toFormatted();
		}			
	} catch (err) {
		var msg = "formatAsCurrency() - " + err + " " + err.message;
        msg += "\n\tDEBUG INFO:";
        msg += "\n\t\tdomObj.value.length = '" + domObj.value.length + "'";
        msg += "\n\t\tdomObj.value  = '" + domObj.value + "'";
        alert(msg);
	}
}

function isNotValueChangingKeys(e) {
	try {
		if (window.event == null) {
			return false;
		}
	    var ignoredKeys = new Array(9, 16, 17, 18, 19, 20, 33, 34, 35, 36, 37, 38, 39, 44, 45, 91, 145);
	    for (i = 0; i < ignoredKeys.length; i++) {
	        if (window.event == ignoredKeys[i]) {
	        	alert("here");
	            return true;
	        }
	    }
	    return false;
    } catch (err) {
    	var msg = "isNotValueChangingKeys() - " + err + " " + err.message;
        msg += "\n\tDEBUG INFO:";
        msg += "\n\t\twindow.event = '" + window.event + "'";
        alert(msg);
    }
}

// Set focus to the first non-hidden field in the form with the given id.
// Author: Ivan Yeh
function focusForm(formId) {
    var focused = false;
    var form = document.getElementById(formId);
    if (form == null) {
        return;
    }
    window.scroll(0, 0);
    for (i = 0; i < form.elements.length; i++) {
        elem = form.elements[i];
        if (elem.type != "hidden" && elem.style.display != "none" && elem.disabled != true) {
            elem.focus();
            focused = true;
            if (elem.type == "text") {
                elem.select();
            }
            break;
        }
    }
    
    // Try to focus on Submit button if cannot focus on any form elements.
    if (!focused) {
        focus(formId + ":submit");
    }
}

// empty all visible form input values
// Author: Ivan Yeh
function clearForm(formId) {
    var form = document.getElementById(formId);
    if (form == null) {
        return;
    }
    for (i = 0; i < form.elements.length; i++) {
        elem = form.elements[i];
        if (elem.type != "hidden" && elem.style.display != "none" && elem.disabled != true) {
        	elem.value = "";
        }
    }
    
    optionTags = document.getElementsByTagName("option");
    
    for (i = 0; i < optionTags.length; i++) {
    	elem = optionTags[i];
    	elem.selected = false;
    }
}
function printReceipt(url) {
	var newWin = window.open(url, "_print", "height=600, left=" + window.screenLeft + ", location=no, menubar=yes, resizable=no, scrollbars=yes, status=yes, titlebar=no, toolbar=no, top=" + window.screenTop + ", width=800");
	newWin.focus();
}