var context = window.location.pathname.substring(0, window.location.pathname.indexOf('/jsp/'));
var urlHost = window.location.protocol + "//" + window.location.host + context + '/jsp/WAppServerPage.jsp';
var urlHostJsp = window.location.protocol + "//" + window.location.host + context + '/jsp';

//var requiredStr = "<img class=\"Icon\" src=\"../images/Icon.Warning.png\" /> Required";
var requiredStr = "<img class=\"\" src=\"../images/error_red.jpg\" /> Required";
var successStr = "<span class=\"SuccessMessage\" ><img src=\"../images/Icon.Correct2.gif\" /> Poll Updated</span>";


String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

String.prototype.convertAmpersand = function() {
	return this.replace(/&amp;/g,"&");
}

String.prototype.escapeQuote = function() {
	return this.replace(/"/g,"&quot;");
}

String.prototype.escapeAmpersand = function() {
	return this.replace(/&/g,"&amp;");
}

String.prototype.escapeHTML = function() {
	return this.escapeAmpersand().escapeQuote();
}

String.prototype.startsWith = function(str) {
	return (this.match("^"+str)==str)
}

String.prototype.endsWith = function(str) {
	return (this.match(str+"$")==str)
}

function hasClass(ele,cls) {
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function addClass(ele,cls) {
	if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}

function removeClass(ele,cls) {
	if (hasClass(ele,cls)) {
		var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg,' ');
	}
}

var cursorXPos;
var cursorYPos;
var screenXPos;
var screenYPos;
var dragObject;
var clickX;
var clickY;
var dropObject;
var dropObjectX;
var dropObjectY;

/*
if (window.Event) {
	document.captureEvents(Event.MOUSEMOVE);
}
*/
document.onmousemove = setCursorXY;
document.onmouseup = mouseUp;

function setCursorXY(e) {

	cursorXPos = (window.Event && e) ? e.pageX : event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
	cursorYPos = (window.Event && e) ? e.pageY : event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
	screenXPos = (window.Event && e) ? e.clientX : event.clientX;
	screenYPos = (window.Event && e) ? e.clientY : event.clientY;
	if (document.getElementById('XPos')) document.getElementById('XPos').value = cursorXPos;
	if (document.getElementById('YPos')) document.getElementById('YPos').value = cursorYPos; 
	if (dragObject) {
		if (!dragObject.noX) dragObject.style.left = (dragObject.originalX/1 + (cursorXPos-clickX)) + 'px'; 
		if (!dragObject.noY) dragObject.style.top = (dragObject.originalY/1 + (cursorYPos-clickY)) + 'px'; 
	}
}

function objMouseUp(sourceObj) {
	return false;	
}

function makeDraggable(item, returnToPos, moveItem, noX, noY){   

	if(!item) return;   
	
	if (moveItem) item.moveItem = moveItem;

	item.onmousedown = function(ev){   
		dragObject = (item.moveItem ? item.moveItem : this);
		addClass(dragObject, 'Dragged'); 
		dragObject.noX = noX;
		dragObject.noY = noY;
		dragObject.style.zIndex = 20;
		dragObject.originalX = dragObject.style.left.replace("px", "");
		if (dragObject.originalX == '') dragObject.originalX = 0;
		dragObject.originalY = dragObject.style.top.replace("px", "");
		if (dragObject.originalY == '') dragObject.originalY = 0; 
		clickX = cursorXPos;
		clickY = cursorYPos;
		if (returnToPos) dragObject.returnToPos = returnToPos;
		return false;   
	}   
}   

function makeDropable(item){

	if(!item) return;   

	item.objDropped = objDropped;  
}   

function mouseUp(e){   

	if (dragObject) {
		removeClass(dragObject, 'Dragged'); 
		dragObject.style.visibility='hidden'; 
		//dragObject.style.display='none';
		dropObject = document.elementFromPoint(screenXPos, screenYPos);
		dragObject.style.visibility='visible'; 
		//dragObject.style.display='';
		
		if (dragObject.returnToPos) {
			dragObject.style.top = dragObject.originalY + 'px'; 
			dragObject.style.left = dragObject.originalX + 'px'; 
		}
		
		var dropped = false;
		do {
			//alert(dropObject.id);
			if (dropObject.objDropped) {
				dropped = dropObject.objDropped(dragObject);
			}
		} while ((dropObject = dropObject.parentNode) && !dropped && dropObject.nodeType != 9)

		
		dragObject = null;   
	}
}   

function getSelectedText() {

	var txt = '';

	if (window.getSelection) {
        txt = window.getSelection();
    }
    else if (document.getSelection) {
        txt = document.getSelection();
    }
    else if (document.selection) {
        txt = document.selection.createRange().text;
    }
    else return '';

    return txt;
}

function getSelectionHTML() {

	var range = window.getSelection().getRangeAt(0);

	var startContainer = range.startContainer;
	
	return range.commonAncestorContainer.innerHTML;
	
	var spanNode = startContainer.ownerDocument.createElement("layer");

	var docfrag = range.extractContents();
	alert(docfrag);
	//spanNode.appendChild(docfrag);

	//range.insertNode(spanNode);

	var html = spanNode.innerHTML;
	
	
}


function getSelectInputOptions(selectArray, selectedValue, addBlank) {

	var html = '';
	if (addBlank) html += '<option value=""></option>\n';
	for (i = 0; i < selectArray.length; i++) {
		var element = selectArray[i];
		var elementValue = element[0];
		var elementLabel = (element.length > 1 ? element[1] : element[0]);
		html += '<option ' + (elementValue == selectedValue ? 'selected="selected"' : '') + 'value="' + elementValue + '">' + elementLabel + '</option>\n';
	}
	return html;
}

function deleteAllInList(selectInput) {
    selectInput.length = 0;
}

function addToList(selectInput, value, label, selectedValue) {

	var num = selectInput.options.length;
	if (selectedValue) {
		selectInput.options[num] = new Option(label, value, false, (selectedValue == value));
	}
	else {
		selectInput.options[num] = new Option(label, value);
	}
}

function addArrayToList(selectInput, array, addBlank, clear, selectedValue) {

	if (clear) deleteAllInList(selectInput)
	if (addBlank) addToList(selectInput, "", "");

	for (i = 0; i < array.length; i++) {
		var element = array[i];
		var elementValue = element[0];
		var elementLabel = (element.length > 1 ? element[1] : element[0]);

		addToList(selectInput, elementValue, elementLabel, selectedValue);
	}
}

function selectOption(obj, text, keyCode) {
    
    if (keyCode == 8) {
        text = text.substring(0, text.length-1);
    }
    else {
        text = text + String.fromCharCode(keyCode);
    }
    
    if (text != '') {
        var select = document.getElementById(obj);
        for (var i=0; i < select.options.length; i++) {
            //alert(select.options[i].value.toUpperCase().substring(0, text.length));
            if (text.toUpperCase() == select.options[i].value.toUpperCase().substring(0, text.length)) {
                select.options[i].selected = true;
                break;
            }
        }
    }
}

function getkey(e) {
    if (window.event)
        return window.event.keyCode;
    else if (e)
        return e.which;
    else
        return null;
}

function getDescription(array, value) {

	for (i = 0; i < array.length; i++) {
		var element = array[i];
		if (value == element[0])
			return element[1];
	}
	return '';
}


function deleteArrayItem(array, value) {

	for (i = 0; i < array.length; i++) {
		var element = array[i];
		if (element[0] == value) {
			array.splice(i, 1);
			return;
		}
	}
}

function deleteArrayObject(array, obj) {

	for (i = 0; i < array.length; i++) {
		if (array[i].id == obj.id) {
			array.splice(i, 1);
			return;
		}
	}
}

function addColumToRow(row, columnData, colClass, colWidth, colId, colSpan) {

	var column = row.insertCell(-1);
	if (colClass) column.className = colClass; 
	if (colWidth) column.style.width = colWidth;
	//column.style.verticalAlign = 'top';
	if (colId) column.id = colId; 
	if (colSpan) column.colSpan = colSpan; 
	setInnerHTML(column, columnData);
	return column;
}

function deleteRow(table, rowObject) {

	var i = rowObject.rowIndex;
	table.deleteRow(i);
}


function formatError(msg) {

	return "<span class=\"FormErrorMessage\" ><img src=\"../images/error_red.jpg\" /> " + msg + "</span>";
}

function formatSuccess(msg) {

	return "<span class=\"SuccessMessage\" ><img src=\"../images/success_green.jpg\" /> " + msg + "</span>";
}

function reloadWindow(url) {

	if (url) {
		window.location=url;
	}
	else {
		window.location=window.location.href;
	}
}
function closePopWin(winid) {

	var winObj = document.getElementById(winid);
	winObj.parentNode.style.display='none';
}

function showPopWin(windowName, dragable) {

	var scrollTop = ((window.pageYOffset) ? window.pageYOffset : ((document.body.parentElement) ? document.body.parentElement.scrollTop : 0));
	var scrollLeft = ((window.pageXOffset) ? window.pageXOffset : ((document.body.parentElement) ? document.body.parentElement.scrollLeft : 0));

	var divWin = document.getElementById(windowName);
	var divWinHeader = document.getElementById(windowName + 'Header');
	
	var alreadyOpen = (divWin.parentNode.style.display == 'block');
	if (!alreadyOpen) {
		divWin.parentNode.style.display='block';
		divWin.style.left = ((document.documentElement.clientWidth/2) - (divWin.clientWidth/2) + scrollLeft) + 'px';
		divWin.style.top = ((document.documentElement.clientHeight/3) + scrollTop) + 'px';
	}
	var divBackWin = getChildElement(divWin.parentNode, 1);
	divBackWin.style.width = document.body.clientWidth + 'px';
	divBackWin.style.height = document.body.clientHeight + 'px';

	if(dragable && divWinHeader) makeDraggable(divWinHeader, false, divWin);
}

function changePopWinTitle(windowName, fieldName) {

	var label = document.getElementById(windowName + 'WindowHeaderLabel');
	setInnerHTML(label, fieldName);
}

function getChildElement(parent, num) {
	
	var elementCount = 0;
	for (var x=0; x < parent.childNodes.length; x++) {
		var node = parent.childNodes[x];
		if (node.nodeType == 1) {
			elementCount++
			if (elementCount == num) return node; 
		}
	}
	return null;
}

function getNodeValue(obj, tag, num) {

	if (!num) num = 0;
	var nodes = obj.getElementsByTagName(tag);
	if (nodes.length > num) {
		var node = nodes[num].firstChild;
		//alert('Node:' + node);
		if (node) {
			//alert('NodeValue:' + node.nodeValue);
			return node.nodeValue;
		}
	}
	return '';
}

function getNode(obj, tag, num) {

	if (!num) num = 0;
	var nodes = obj.getElementsByTagName(tag);
	if (nodes.length > 0) {
		return nodes[num];
	}
	return null;
}

function AjaxReturn(obj) {

    var cType = obj.getResponseHeader("Content-Type");
    //alert(obj.responseText);
    if (cType.startsWith('text/xml')) {
    	this.response = obj.responseXML 
    	this.code = getNodeValue(obj.responseXML, "RC");
    	this.message = getNodeValue(obj.responseXML, "Message");
    } 
    else {
    	this.code = 0;
    	//this.code = obj.responseText.substring(0, obj.responseText.indexOf("\n"));
    	//this.response = obj.responseText.substring(obj.responseText.indexOf("\n") + 1).trim();
    	this.response = obj.responseText;
    }
}

function iFrameReturn(doc) {

	if (doc.XMLDocument) {
		this.response = doc.XMLDocument; 
    	this.code = getNodeValue(doc.XMLDocument, "RC");
    	this.message = getNodeValue(doc.XMLDocument, "Message");
	}
	else {
		this.response = doc; 
    	this.code = getNodeValue(doc, "RC");
    	this.message = getNodeValue(doc, "Message");
	}
}

function getValue(field, encode) {

	var value = "";

	if (!field) return value;
	
	//alert(field.type);
	
	switch(field.type) {
		case "text":
		  value = field.value;
		  break;

		case "select-one":
			if (field.selectedIndex >= 0)
				value = field.options[field.selectedIndex].value;
		  break;
		  
		case "select-multiple":
			
			for (var i = 0; i < field.options.length; i++) { 
				if (field.options[i].selected) {
					value = value + ',' + field.options[i].value;
				}
			}	 
			break;
		
		case "checkbox":
		
			value = (field.checked ? field.value : "");
			break;

		case "radio":

			for (var i=0; i < field.length; i++) {
		        if (field[i].checked) {
		            value = field.value;
		        }
		    }
			break;
		
		default:
		  value = field.value;
	}
	return (encode ? encodeURIComponent(value) : value);
}

function clearValue(field) {

	switch(field.type) {
		case "text":
			field.value = "";
		  break;
		case "select-one":
			field.selectedIndex = -1;
			break;
		case "checkbox":
			field.checked = false;
			break;
		case "file":
			//field.parentNode.innerHTML = field.parentNode.innerHTML;
			field.value = "";
			break;
		case "hidden":
			break;
		default:
			field.value = "";
	}
}

function getFormAction(actionDivId, transid, msg, clearForm, showButton) {

	var actionDiv = document.getElementById(actionDivId);
	//alert(actionDiv.id);
	actionDiv.fields = new Array();
	actionDiv.transid=transid;
	actionDiv.successMsg=msg;
	actionDiv.msgDiv = document.getElementById(actionDivId + ".Msg");
	actionDiv.clearForm=clearForm;
	actionDiv.showButton=showButton;
	return actionDiv;
}

function initForm(actionDiv, visible, name) {

	if (visible) {
		actionDiv.style.visibility="visible";
	}
	else {
		actionDiv.style.visibility="hidden";
	}
	if (name) actionDiv.name = name;
}

function initField(fieldid, required, actionDiv, replace) {

	var field = document.getElementById(fieldid);
	
	if (checkFieldExists(actionDiv, field)) {
		//if (replace) {
			//alert('Exists: ' + fieldid);
			destroyField(actionDiv, fieldid);
		//}
		//else return;
	}

	var fieldMsg = document.getElementById(fieldid + ".Msg");
	if (fieldMsg != null) field.msgDiv = fieldMsg;
	field.required = required;
	field.actionDiv = actionDiv;

	if (required && getValue(field) == "") {
		if (field.msgDiv) field.msgDiv.innerHTML = requiredStr;
	}

	field.actionDiv.fields[field.actionDiv.fields.length] = field;
}

function destroyField(actionDiv, fieldid) {

	var field = document.getElementById(fieldid);
	if (!field) return;

	//alert('Destroy: ' + fieldid)
	
	deleteArrayObject(actionDiv.fields, field);
	field.actionDiv = null;
}

function fieldOnChange(field) {

	if (field.required && field.value.trim() == "") {
		if (field.msgDiv) field.msgDiv.innerHTML = requiredStr;
	}
	else  {
		if (field.msgDiv) field.msgDiv.innerHTML = "";
		//alert(field.id)
		field.actionDiv.msgDiv.innerHTML="";
	} 

	checkEnable(field.actionDiv);
}

function checkEnable(div) {

	var enable = true;
	if (!div.showButton) {
		for (fieldNum=0; fieldNum < div.fields.length; fieldNum++) {
			var field = div.fields[fieldNum];
			if (field.required && field.value.trim() == "") enable = false;
		}
	}
	div.style.visibility=(enable ? "visible" : "hidden");
}

function checkFieldExists(div, newField) {

	for (fieldNum=0; fieldNum < div.fields.length; fieldNum++) {
		var field = div.fields[fieldNum];
		if (field.id == newField.id) return true;
	}
	return false;
}

function getParms(div) {

	var parms = "";
	for (fieldNum=0; fieldNum < div.fields.length; fieldNum++) {
		var field = div.fields[fieldNum];
		var fieldName = (field.name == "" ? field.id : field.name); 
		if (field.type == "select-multiple") {
			for (var i = 0; i < field.options.length; i++) { 
				if (field.options[i].selected) {
					parms += "&" +  fieldName + "=" + field.options[i].value;
				}
			}	 
		}
		else {
			parms += "&" +  fieldName + "=" + getValue(field, true);
		}
	}
	return parms;
}

function clearFields(div) {

	for (fieldNum=0; fieldNum < div.fields.length; fieldNum++) {
		var field = div.fields[fieldNum];
		clearValue(field); 
	}
}

function ajaxSubmit(actionDiv, callBack) {

	var transId = actionDiv.transid;
    var parms = "TransID=" + transId + getParms(actionDiv);

    ajaxCall(urlHost, parms, callBack, actionDiv);

    /*
    var results = new AjaxReturn(ajaxCall(urlHost, parms));
    if (results.code == 0) {
        if (typeof(callBack) == 'function') {
        	callBack(results.response);
        }
        else {
        	reloadWindow(callBack);
        }
    }
    else {
    	actionDiv.msgDiv.innerHTML = formatError(results.message);
    }
	*/
}

function ajaxCall(url, postParms, doFunc, actionDiv) {

	var post = (postParms==null ? false : true);
	var method = (post ? "POST" : "GET");
    var objXml;
   
    if (window.XMLHttpRequest) {
        objXml = new XMLHttpRequest();
        objXml.onreadystatechange= function() { 
            if (objXml.readyState==4) {
                if (objXml.status==200) {
            		ajaxCallBack(objXml, doFunc, actionDiv);
                }
            }
        }
        objXml.open(method, url, true);
        if (post) setPostHeaders(objXml, postParms);
        objXml.send(postParms);
    }
}

function ajaxCallBack(objXml, callBack, actionDiv) {

    var results = new AjaxReturn(objXml);
    if (results.code == 0) {
    	if (actionDiv && actionDiv.clearForm) clearFields(actionDiv);
        if (typeof(callBack) == 'function') {
        	callBack(results.response);
        }
        else {
        	reloadWindow(callBack);
        }
    }
    else if (results.code == 1) {
    	if (actionDiv) clearFields(actionDiv);
    	reloadWindow();
    }
    else {
    	if (actionDiv) {
    		actionDiv.msgDiv.innerHTML = formatError(results.message);
    	}
    	else {
    		alert(results.message);
    	}
    }	
}


function setPostHeaders(http, parms) {

	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http.setRequestHeader("Content-length", parms.length);
	http.setRequestHeader("Connection", "close");
}

function getY(oElement) {
	var iReturnValue = 0;
	while( oElement != null ) {
		iReturnValue += oElement.offsetTop;
		oElement = oElement.offsetParent;
	}
	return iReturnValue;
}

function getX(oElement) {
	var iReturnValue = 0;
	while( oElement != null ) {
		iReturnValue += oElement.offsetLeft;
		oElement = oElement.offsetParent;
	}
	return iReturnValue;
}


function setInnerHTML(obj, html) {

	obj.innerHTML = html;
	var scripts = obj.getElementsByTagName('script');
	//var newScripts = new Array();
	//var count = 0;

	//while (scripts.length > 0) {
	for (var count=0; count<scripts.length; count++) {
		var script = scripts[count];
		var newScript = document.createElement('script');
		newScript.type='text/javascript';
		newScript.text = script.text;
		//newScripts[count++] = newScript;
		//alert(obj.id);
		//obj.removeChild(script);
		try {
			obj.replaceChild(newScript, script);
		}
		catch(err) {
		  //alert(err);
		}
	}

	/*
	for (var count = 0; count < newScripts.length; count++) {
		var script = newScripts[count];
		obj.appendChild(script);
	}
	*/
}	

function toggleDisplay(id1, id2) {
	
	var obj1 = document.getElementById(id1);
	var obj2;
	if (id2) obj2 = document.getElementById(id2);
	
	if (obj1.style.display == 'none') {
		obj1.style.display='';
		if (id2) obj2.style.display='none';
	}
	else {
		if (id2) obj2.style.display='';
		obj1.style.display='none';
	}
}

function getTime() {

	return (new Date()).getTime();
}


function createAjaxPopUpWindow(name, header, actionLabel, transid, callback, successMsg, width, clearForm, showButton) {
	
	var html = '<div class="AjaxPopupWindowParent" > \n\
			<div class="AjaxPopupWindowBackground" ></div> \n\
	<div id="' + name + 'Window" class="AjaxPopupWindow" style="' + (width ? 'width:' + width + ';' : '') + '"> \n\
		<table style="width:100%; " cellpadding="3" cellspacing="0"> \n\
			<tr><td id="' + name + 'WindowHeader" class="AjaxPopupWindowHeader"> \n\
				<table style="width:100%;" cellspacing="0" cellpadding="0"> \n\
				<tr><td id="' + name + 'WindowHeaderLabel" style="text-align:left;">' + header + '</td> \n\
				<td style="text-align:right;"><span style="cursor:pointer;" onclick="closePopWin(\'' + name + 'Window\');">close[x]</span></td> \n\
				</tr></table> \n\
			</td></tr> \n\
			<tr><td><table style="width:100%" id="' + name + 'Table" > \n\
			</table></td></tr> \n\
			<tr> \n\
				<td style="text-align:left;"> \n\
					<span id="' + name + 'Actions" > \n\
						<button id="' + name + 'ActionButton" >' + actionLabel + '</button>&nbsp; \n\
					</span> \n\
					<span style="text-align:right;" id="' + name + 'Actions.Msg" ></span> \n\
				</td> \n\
			</tr> \n\
		</table> \n\
	</div> \n\
	</div>';
	
	document.write(html);

	var actionDiv = getFormAction(name + 'Actions', transid, successMsg, clearForm, showButton);
	initForm(actionDiv, false, name);

	var actionButton = document.getElementById(name + 'ActionButton');
	if (typeof(transid) == "function") {
		actionButton.onclick = function () {
			transid(this.parentNode);
		}
	}
	else {
		actionDiv.callback = callback;
		actionButton.onclick = function() { 
				ajaxSubmit(this.parentNode, this.parentNode.callback);
			}
	}
	
	return actionDiv;
}

function addAjaxWindowTextField(actionDiv, fieldid, required, fieldLabel, labelWidth, fieldWidth) {

	var table = document.getElementById(actionDiv.name + 'Table');

	var newRow = table.insertRow(table.rows.length);
	
	addColumToRow(newRow, fieldLabel + ":", null, labelWidth);
	var fieldContents = '<input name="' + fieldid + '" id="' + fieldid + '" type="text" onkeyup="fieldOnChange(this);" \
			style="' + (fieldWidth ? 'width:' + fieldWidth + ';' : '') + '" \
					/> \n\
			<span id="' + fieldid + '.Ext" style="text-align:left;"></span> \n\
			<span id="' + fieldid + '.Msg" class="FormErrorMessage"  style="text-align:left;"></span>';
	addColumToRow(newRow, fieldContents, null, null);
	
	initField(fieldid, required, actionDiv);
}

function addAjaxWindowCustomField(actionDiv, fieldid, contents, fieldLabel, labelWidth) {

	var table = document.getElementById(actionDiv.name + 'Table');

	var newRow = table.insertRow(table.rows.length);
	
	addColumToRow(newRow, fieldLabel + ":", null, labelWidth);
	addColumToRow(newRow, contents, null, null, fieldid);	
}

function addAjaxWindowSelectField(actionDiv, fieldid, required, fieldLabel, labelWidth, fieldWidth, selectArray, addBlank, selectedValue, onchange, multivalue) {

	var table = document.getElementById(actionDiv.name + 'Table');

	var newRow = table.insertRow(table.rows.length);
	
	addColumToRow(newRow, fieldLabel + ":", null, labelWidth);
	var fieldContents = '<select name="' + fieldid + '" id="' + fieldid + '" \
			' + (multivalue ? ' class="MultiSelect" multiple="multiple" size="' + multivalue + '"' : '') + ' \
			onchange="' + (onchange ? onchange : '') + 'fieldOnChange(this);" \
			onkeyup="' + (onchange ? onchange : '') + 'fieldOnChange(this);" \
			style="' + (fieldWidth ? 'width:' + fieldWidth + ';' : '') + '" \
			/> \n\
			> </select> \n\
			<span id="' + fieldid + '.Msg" class="FormErrorMessage"  style="text-align:left;"></span>';
	addColumToRow(newRow, fieldContents, null, null);

	addArrayToList(document.getElementById(fieldid), selectArray, addBlank, true, selectedValue);
	
	initField(fieldid, required, actionDiv);
}

function addAjaxWindowCheckField(actionDiv, fieldid, fieldLabel, labelWidth) {

	var table = document.getElementById(actionDiv.name + 'Table');

	var newRow = table.insertRow(table.rows.length);
	
	addColumToRow(newRow, fieldLabel + ":", null, labelWidth);
	var fieldContents = '<input name="' + fieldid + '" id="' + fieldid + '" type="checkbox" value="Y" " /> \n\
			<span id="' + fieldid + '.Msg" class="FormErrorMessage"  style="text-align:left;"></span>';
	addColumToRow(newRow, fieldContents, null, null);
	
	initField(fieldid, false, actionDiv);
}

function addAjaxWindowFileField(actionDiv, fieldid, required, fieldLabel, labelWidth, fieldWidth) {

	var table = document.getElementById(actionDiv.name + 'Table');

	var newRow = table.insertRow(table.rows.length);
	
	addColumToRow(newRow, fieldLabel + ":", null, labelWidth);
	var fieldContents = '<input class="FileInput" name="' + fieldid + '" id="' + fieldid + '" type="file" \
			onkeypress="return false;" onchange="fieldOnChange(this);" onkeyup="fieldOnChange(this);" \
			style="' + (fieldWidth ? 'width:' + fieldWidth + ';' : '') + '" /> \n\
			<span id="' + fieldid + '.Msg" class="FormErrorMessage"  style="text-align:left;"></span>';
	addColumToRow(newRow, fieldContents, null, null);
	
	initField(fieldid, required, actionDiv);
}


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;
}





























/*
function getPage(url) {
	return getPage(url, null);
}


function getPage(url, postParms) {

	var post = (postParms==null ? false : true);
	var method = (post ? "POST" : "GET");
    var objXml;
    var readPage = "";
   
    if (window.XMLHttpRequest) {
        objXml = new XMLHttpRequest();
        objXml.open(method, url, false);
        if (post) setPostHeaders(objXml, postParms);
        objXml.send(postParms);
        if (objXml.status==200) readPage = objXml.responseText;
        //alert("new");
    }
    else {
        objXml = new ActiveXObject("Microsoft.XMLHTTP");
        objXml.open(method, url, false);
        if (post) setPostHeaders(objXml, postParms);
        objXml.onreadystatechange=function() {
            if (objXml.readyState==4) {
            	if (objXml.status==200) readPage = objXml.responseText;
            }
        }
        objXml.send(postParms);
    }

    return readPage;
}

function getPageAsync(url, doFunc, id, postParms) {

	var post = (postParms==null ? false : true);
	var method = (post ? "POST" : "GET");
    var objXml;
   
    if (window.XMLHttpRequest) {
        objXml = new XMLHttpRequest();
        objXml.onreadystatechange= function() { 
            if (objXml.readyState==4)
                if (objXml.status==200)
                    doFunc(objXml, id);
        }
        objXml.open(method, url, true);
        if (post) setPostHeaders(objXml, postParms);
        objXml.send(postParms);
    }
    else {
        objXml = new ActiveXObject("Microsoft.XMLHTTP");
        objXml.open(method, url, true);
        if (post) setPostHeaders(objXml, postParms);
        objXml.onreadystatechange= function() { 
            if (objXml.readyState==4)
                if (objXml.status==200)
                    doFunc(objXml, id);
        }
        objXml.send(postParms);
    }
}
*/