//*******************************************************************************************************
// Some Scripts are from JavaScript & DHTML Cookbook (O'Reilly)
// Script modified by Alex
//*******************************************************************************************************
var dialog
//*******************************************************************************************************
// Misc functions from dhtmlAPI.js
// packArrayIntoSingle(Array)
//           - some function returns an array. i.e.arr[0] = 'a1', arr[1] = 'a2', arr[1] = 'a3'.  so, it
//             will return "a1,a2,a3", finally we submit this string through a hidden field
//
// Misc functions from CommonAPI.js
// toWingDateFormat(date)
//           - 23/12/2004 as param date, which will return a string 2004-12-23
// toDDMMYYYYDateFormat(date)
//			 - 2004-02-03 17:35:0000 or 2004-02-03 as param date, which will return a string 03/02/2004
// returnURL(wingURL)
//           - i.e. returnURL (%{link to="/processCGI.cgi?A=1&B=2"} ) and that will return
//             http://localhost:8080/HMS/processCGI.cgi?A=1&B=2"
// isEMailAddr(elem)
//           - i.e. isEMailAddr(form.inputbox1)
// isNumber(elem)
//           - i.e. isNumber(form.inputbox1)
// autoTab(field, limit, next, evt) 
//           - field -> i.e. form.inputBox1
//           - limit -> i.e. 4 .. 4 characters is allowed to input
//           - next  -> next element you want to tab to
//           - evt   -> usually work with onkeyup
// checkDate2(InputTextElem)
//           - validate the date with format dd/mm/yyyy
//
// Debug :
// printArray(myArray)
//           - i.e. to print out a list of array
//********************************************************************************************************

//********************************************************************************************************
// Table functions
// changeTRColor(tr)
//            - to change colour when mouse is over or clicked on the table row ...  i.e. <TR class="odd">
//              or <TR class="even">
// selectAllTR(table_id)
//            - to select all rows in a table
// clearAllTR(table_id)
//            - to clear all selection in a table
// moveTR(table_src_id, table_des_id)
//            - to move selected table row(s) from one(src) to another(des)
// moveAllTR(table_src_id, table_des_id)
//            - to move all table rows from one(src) to another(des)
// getSelectedPkFields(table_id)
//            - to get all selected key values in array format .... attribute "PkField" will be use a value 
//              storage... i.e.<TR PkField="rec1">....</TR> <TR PkField="rec2">....</TR>
// getSelectedTableValueAt(tableid, colNum)
//			  - to get table value from the selected row and the colNum is the column Number of the
//				current position.
//********************************************************************************************************

//********************************************************************************************************
//	Combo Box
//  moveSelectBox(source, target)
//            - move selected options from source select box to target select box
//  moveAllSelectBox(source, target)
//            - move all options from source select box to taget select box
//  sortSelectBox(select_id, order)
//            - sort all options where order is "desc" or "asc"
//  getSelectBoxValues(select_id)
//            - return an array of selected option values from a select box
//  getAllSelectBoxValues(select_id)
//			  - return an array of option values regardless of whether it is selected
//*******************************************************************************************************

//*******************************************************************************************************
// Enable or Disable Component
// justEnable(ids) 
//            - i.e. justEnable('a1;a2;a3').. i.e.<input id="a1" type="text"><input id="a2" type="text">
// justDisable(ids)
//            - i.e. justDisable('a1;a2;a3')
//*******************************************************************************************************

//***********************************************************************************************
//	MSSQL Date function converter
//  getSQLHour(sqlDateStr)
//            - return integral part of hour from sql date str getSQLHour("1992-9-9 13:01:00.0")
//              will return 13
//  getSQLMintue(sqlDateStr)
//  getSQLSecond(sqlDateStr)
//  getSQLDay(sqlDateStr)
//  getSQLMonth(sqlDateStr)
//  getSQLYear(sqlDateStr)
//***********************************************************************************************

function refreshMenu() {
	parent.toolbar.location='pages/pProtectedCommon/toolbar.page?mode=noframe';
	parent.menu.location='pages/pProtectedCommon/menu.page?mode=noframe';
}

function openMasterDetailDialog(MainWnd, wingURL) {
	var w = 445, h = 380;

	if (document.all) {
	   /* the following is only available after onLoad */
	   w = document.body.clientWidth;
	   h = document.body.clientHeight;
	}
	else if (document.layers) {
	   w = window.innerWidth;
	   h = window.innerHeight;
	}

	var searchString = wingURL.substring(wingURL.indexOf("?") + 1, wingURL.length)
      
    var pairs = searchString.split("&")
    var colWidth = 100
    var numOfRec = 2;
    var pairsLength=pairs.length;
    for (var i=0;i<pairsLength;i++){
    	if (pairs[i].split("=")[0] == "colWidth") {   		
    		colWidth = parseInt(pairs[i].split("=")[1], 10)    	
    	}
    	if (pairs[i].split("=")[0] == "txt_field_mask_names") {   		
    		numOfRec = pairs[i].split("=")[1].split(",").length   	
    	}
     }

	var popW = numOfRec * colWidth + 40, popH = 390;

	if (numOfRec < 3)
		popW = 320
	var leftPos = (w-popW)/2, topPos = (h-popH)/2;

    // var result = window.showModelessDialog(returnURL(wingURL) + '&colWidth=' + colWidth  + '&' + Math.random(), MainWnd, "dialogWidth:350px; dialogHeight:300px; center:yes; status:no ; help:no");
	var re = new RegExp ('&nbsp;', 'gi') ;
    if (window.childWindow && !window.childWindow.closed) {
    	window.childWindow.location = returnURL(wingURL).replace(re, '%20')  + '&mode=noframe&colWidth=' + colWidth  + '&' + Math.random();
    	window.childWindow.focus();
    }else{
    	window.childWindow = window.open(returnURL(wingURL).replace(re, '%20')  + '&mode=noframe&colWidth=' + colWidth  + '&' + Math.random(), "", "width=" + popW + "px  , height=" + popH   + "px , left=" +leftPos +",top="+topPos+",toolbar=no,status=no, resizable=1,scrollbars=1");
    }
}

function openSQLDetailDialog(MainWnd, wingURL, l_numOfRec) {
    height = 400
	width = 600
	
	var url = returnURL(wingURL)
	var searchString = url.substring(url.indexOf("?") + 1, url.length)
    var pairs = searchString.split("&")
    var colWidth = 80
    
    if (l_numOfRec == null)
		numOfRec = 2
    else
		numOfRec = l_numOfRec
        
    var pairsLength=pairs.length;
    for (var i=0;i<pairsLength;i++){
    	if (pairs[i].split("=")[0] == "colWidth") {   		
    		colWidth = parseInt(pairs[i].split("=")[1], 10)    	
    	}
    	if (pairs[i].split("=")[0] == "txt_field_mask_names") {   		
    		numOfRec = pairs[i].split("=")[1].split(",").length   	
    	}
    }
    
    width = (colWidth * numOfRec) + 28
  
	if (document.all) {
	   /* the following is only available after onLoad */
	   w = document.body.clientWidth;
	   h = document.body.clientHeight;
	}else if (document.layers) {
	   w = window.innerWidth;
	   h = window.innerHeight;
	}

	var popW = width, popH = height;
	var leftPos = (w-popW)/2, topPos = (h-popH)/2;
	var re = new RegExp ('&nbsp;', 'gi') ;

    if (window.childWindow && !window.childWindow.closed) {
    	window.childWindow.location = returnURL(wingURL).replace(re, '%20')  + '&mode=noframe&colWidth=' + colWidth  + '&' + Math.random();
    	window.childWindow.focus();
    } else
		window.childWindow = window.open(url.replace(re, '%20') + '&mode=noframe&' + Math.random(), "", "width=" + width + "px  , height=" + height   + "px , left=" +leftPos +",top="+topPos+",toolbar=no,status=no, resizable=1,scrollbars=1");	
}

function OpenChildWindow(wingURL,param1,param2){

    if (window.childWindow && !window.childWindow.closed) {
    	//window.childWindow.location = wingURL;
    	window.childWindow.focus();
    } else
		window.childWindow = window.open(wingURL,param1,param2);	
}

function CheckDialog(){
	if (window.childWindow && !window.childWindow.closed) {
		return true;
	}else{
		return false;
	}
}

// Global variables
var isCSS, isW3C, isIE4, isNN4, isIE6CSS;

// Initialize upon load to let all browsers establish content objects
function initDHTMLAPI( ) {
    if (document.images) {
        isCSS = (document.body && document.body.style) ? true : false;
        isW3C = (isCSS && document.getElementById) ? true : false;
        isIE4 = (isCSS && document.all) ? true : false;
        isNN4 = (document.layers) ? true : false;
        isIE6CSS = (document.compatMode && document.compatMode.indexOf("CSS1") >= 0) ? 
            true : false;
    }
}

// Set event handler to initialize API
window.onload = initDHTMLAPI;
   
// Seek nested NN4 layer from string name
function seekLayer(doc, name) {
    var theObj;
    var docLayersLength=doc.layers.length;
    for (var i = 0; i < docLayersLength; i++) {
        if (doc.layers[i].name == name) {
            theObj = doc.layers[i];
            break;
        }
        // dive into nested layers if necessary
        if (doc.layers[i].document.layers.length > 0) {
            theObj = seekLayer(document.layers[i].document, name);
        }
    }
    return theObj;
}
   
// Convert object name string or object reference
// into a valid element object reference
function getRawObject(obj) {
    var theObj;
     
    if (typeof obj == "string") {
        if (isW3C) {
            theObj = document.getElementById(obj);
            
        } else if (isIE4) {
            theObj = document.all(obj);
        } else if (isNN4) {
            theObj = seekLayer(document, obj);
        }
    }else{
        // pass through object reference
        theObj = obj;
    }
    return theObj;
}

function getRawObjectFromDoc(docObject, obj) {
    var theObj;
    
    if (typeof obj == "string") {
        if (isW3C){
            theObj = docObject.getElementById(obj);
        }else if (isIE4){
            theObj = docObject.all(obj);
        }else if (isNN4){
            theObj = seekLayer(docObject, obj);
        }
    }else{
        // pass through object reference
        theObj = obj;
    }
    return theObj;
}

// Convert object name string or object reference
// into a valid style (or NN4 layer) reference
function getObject(obj) {
    var theObj = getRawObject(obj);
    if (theObj && isCSS) {
        theObj = theObj.style;
    }
    return theObj;
}
   
// Position an object at a specific pixel coordinate
function shiftTo(obj, x, y) {
    var theObj = getObject(obj);
    if (theObj) {
        if (isCSS) {
            // equalize incorrect numeric value type
            var units = (typeof theObj.left == "string") ? "px" : 0;
            theObj.left = x + units;
            theObj.top = y + units;
        } else if (isNN4) {
            theObj.moveTo(x,y)
        }
    }
}
   
// Move an object by x and/or y pixels
function shiftBy(obj, deltaX, deltaY) {
    var theObj = getObject(obj);
    if (theObj) {
        if (isCSS) {
            // equalize incorrect numeric value type
            var units = (typeof theObj.left == "string") ? "px" : 0;
            theObj.left = getObjectLeft(obj) + deltaX + units;
            theObj.top = getObjectTop(obj) + deltaY + units;
        } else if (isNN4) {
            theObj.moveBy(deltaX, deltaY);
        }
    }
}
   
// Set the z-order of an object
function setZIndex(obj, zOrder) {
    var theObj = getObject(obj);
    if (theObj) {
        theObj.zIndex = zOrder;
    }
}
   
// Set the background color of an object
function setBGColor(obj, color) {
    var theObj = getObject(obj);
    if (theObj) {
        if (isNN4) {
            theObj.bgColor = color;
        } else if (isCSS) {
            theObj.backgroundColor = color;
        }
    }
}
   
// Set the visibility of an object to visible
function show(obj) {
    var theObj = getObject(obj);
    if (theObj) {
        theObj.visibility = "visible";
    }
}
   
// Set the visibility of an object to hidden
function hide(obj) {
    var theObj = getObject(obj);
    if (theObj) {
        theObj.visibility = "hidden";
    }
}
   
// Retrieve the x coordinate of a positionable object
function getObjectLeft(obj)  {
    var elem = getRawObject(obj);
    var result = 0;
    if (document.defaultView) {
        var style = document.defaultView;
        var cssDecl = style.getComputedStyle(elem, "");
        result = cssDecl.getPropertyValue("left");
    } else if (elem.currentStyle) {
        result = elem.currentStyle.left;
    } else if (elem.style) {
        result = elem.style.left;
    } else if (isNN4) {
        result = elem.left;
    }
    return parseInt(result);
}
   
// Retrieve the y coordinate of a positionable object
function getObjectTop(obj)  {
    var elem = getRawObject(obj);
    var result = 0;
    if (document.defaultView) {
        var style = document.defaultView;
        var cssDecl = style.getComputedStyle(elem, "");
        result = cssDecl.getPropertyValue("top");
    } else if (elem.currentStyle) {
        result = elem.currentStyle.top;
    } else if (elem.style) {
        result = elem.style.top;
    } else if (isNN4) {
        result = elem.top;
    }
    return parseInt(result);
}
   
// Retrieve the rendered width of an element
function getObjectWidth(obj)  {
    var elem = getRawObject(obj);
    var result = 0;
    if (elem.offsetWidth) {
        result = elem.offsetWidth;
    } else if (elem.clip && elem.clip.width) {
        result = elem.clip.width;
    } else if (elem.style && elem.style.pixelWidth) {
        result = elem.style.pixelWidth;
    }
    return parseInt(result);
}
   
// Retrieve the rendered height of an element
function getObjectHeight(obj)  {
    var elem = getRawObject(obj);
    var result = 0;
    if (elem.offsetHeight) {
        result = elem.offsetHeight;
    } else if (elem.clip && elem.clip.height) {
        result = elem.clip.height;
    } else if (elem.style && elem.style.pixelHeight) {
        result = elem.style.pixelHeight;
    }
    return parseInt(result);
}
   
// Return the available content width space in browser window
function getInsideWindowWidth() {
    if (window.innerWidth) {
        return window.innerWidth;
    } else if (isIE6CSS) {
        // measure the html element's clientWidth
        return document.body.parentElement.clientWidth;
    } else if (document.body && document.body.clientWidth) {
        return document.body.clientWidth;
    }
    return 0;
}
   
// Return the available content height space in browser window
function getInsideWindowHeight() {
    if (window.innerHeight) {
        return window.innerHeight;
    } else if (isIE6CSS) {
        // measure the html element's clientHeight
        return document.body.parentElement.clientHeight;
    } else if (document.body && document.body.clientHeight) {
        return document.body.clientHeight;
    }
    return 0;
}

// read position of an element in regular document flow
function getElementPosition(elemID) {
    var offsetTrail = document.getElementById(elemID);
    var offsetLeft = 0;
    var offsetTop = 0;
    while (offsetTrail) {
        offsetLeft += offsetTrail.offsetLeft;
        offsetTop += offsetTrail.offsetTop;
        offsetTrail = offsetTrail.offsetParent;
    }
    if (navigator.userAgent.indexOf("Mac") != -1 && 
        typeof document.body.leftMargin != "undefined") {
        offsetLeft += document.body.leftMargin;
        offsetTop += document.body.topMargin;
    }
    return {left:offsetLeft, top:offsetTop};
}

// returns style sheet attribute value.
// parameters are: ID of <style> element, selector name, and attribute name
function getCSSRuleValue(styleID, selector, attr) {
    var sheet, i;

    sheet = document.styleSheets[parseInt(styleID)];
   
    var rules = (sheet.cssRules) ? sheet.cssRules : ((sheet.rules) ?  sheet.rules : null);
    if (rules) {
    	var rulesLength=rules.length;
        for (i = 0; i < rulesLength; i++) {
        	
            if (rules[i].selectorText == selector || rules[i].selectorText ==  "*" +  selector) {
                return rules[i].style[attr];
            }
        }
    }
    return null;
}

//********************************************************************************************************
// Table functions
//********************************************************************************************************

/*change tr color mouse over and mouse click to select the whole row(<tr>) tag*/
function changeTRColor(tr, forcedClick, clearAll) {
	var evt=event;
    var elem = (evt.srcElement) ? evt.srcElement : evt.target;
  
	if (event.type == "mouseover")
	   if ( tr.getAttribute("selected") != "true" )
	       tr.style.backgroundColor = getCSSRuleValue(0, "TR.mouseover", "backgroundColor");
   
    if (event.type == "mouseout")
  		if ( tr.getAttribute("selected") != "true" )
           tr.style.backgroundColor=getCSSRuleValue(0, "TR." + tr.className, "backgroundColor");
     	else 
   		   tr.style.backgroundColor=getCSSRuleValue(0, "TR.onclick", "backgroundColor");
    
    if (event.type == "click" || forcedClick || clearAll){ 	    	
    	if (tr.getAttribute("selected") == "true" && !clearAll) {
	   		tr.setAttribute("selected", "false")
	   		tr.style.backgroundColor = getCSSRuleValue(0, "TR." + tr.className, "backgroundColor");
    	} else {
	    	var tbl = (tr.parentNode.tagName == "TBODY" ||tr.parentNode.tagName == "THEAD" ) ? tr.parentNode.parentNode :  tr.parentNode;
			
		    var mode = tbl.getAttribute("mode");
		  
		    var limit = parseInt(tbl.getAttribute("limit"),10);
		    
	        if (mode != "multiple") {
	        	var tblrows=tbl.rows;
	        	var rowsLength=tblrows.length;
    	       for (var i=0;i<rowsLength;i++) 
        		if (tblrows[i].className && tblrows[i].getAttribute("selected") == "true" )
           		{         	               		
           			tblrows[i].style.backgroundColor = getCSSRuleValue(0, "TR." + tblrows[i].className , "backgroundColor");

	            	tblrows[i].setAttribute("selected", "");    			
	    	    }
	    	}
	    	if (mode == "multiple") {
	    		 var arr = getSelectedPkFields(tbl.id);
	    		 if (arr.length ==  limit)
	    		 	return
	    	}
	    	if(!clearAll) {    	    	 
	    		if (tr.getAttribute("PkField") != "") {
	        	 	tr.setAttribute("selected", "true")
		    		tr.style.backgroundColor = getCSSRuleValue(0, "TR.onclick", "backgroundColor");
		    	}
    		}
    	} 	
    }
    return true;
}

/* clear all selection from the given table_id*/
function clearAllTR(table_id) {
    var tbl = document.getElementById(table_id);
 
    var elems  = tbl.rows;
    var elemsLength=elems.length;
    for (var i=0;i<elemsLength;i++) 
      	if (elems[i] && elems[i].className && elems[i].getAttribute("selected") == "true" ){         	
       		elems[i].style.backgroundColor = getCSSRuleValue(0, "TR." + elems[i].className , "backgroundColor");
       		elems[i].setAttribute("selected", ""); 
        }
}

/* select all records in a table */
function selectAllTR(table_id) {
	var tbl = document.getElementById(table_id);
	var elems  = tbl.rows;
    var elemsLength=elems.length;
    for (var i=0;i<elemsLength;i++){ 
   		elems[i].style.backgroundColor = getCSSRuleValue(0, "TR.onclick" , "backgroundColor");
   		elems[i].setAttribute("selected", "true"); 
    }
}

/* move table row(s) from one to another */
function moveTR(table_src_id, table_des_id) {
	var tbl_src = document.getElementById(table_src_id);
    var tbl_des = document.getElementById(table_des_id);
	var src_elems = tbl_src.rows;
	var des_elems = tbl_des.rows;
	
	var affected = new Array()
	var src_elemsLength=src_elems.length;
	
    for (var i=0;i<src_elemsLength;i++) 
		if (src_elems[i] && src_elems[i].className && src_elems[i].getAttribute("selected") == "true"){
	        src_elems[i].setAttribute("selected", "");
	        affected[affected.length] = src_elems[i];   		
		} 
	var affectedLength=affected.length;
    for (var i=0;i<affectedLength;i++) {
         tbl_des.tBodies[0].appendChild(affected[i]);
   		 affected[i].style.backgroundColor = getCSSRuleValue(0, "TR." + affected[i].className , "backgroundColor");
    }
    
    first = true;
    var des_elemsLength=des_elems.length;
   	for (var i=0;i<des_elemsLength;i++) {
      	 if (first) {
           	 des_elems[i].className = "even"
           	 first = false;
	     } else {
    	   	 des_elems[i].className = "odd"
    	  	 first = true;
    	 }
         des_elems[i].style.backgroundColor = getCSSRuleValue(0, "TR." + des_elems[i].className , "backgroundColor");
    }
   
    src_elems = document.getElementById(table_src_id).rows;
    first = true;
    src_elemsLength=src_elems.length; 
	for (var i=0;i<src_elemsLength;i++) {
    	if (first){
            src_elems[i].className = "even"
            first=false
	    }else{
    	    src_elems[i].className = "odd"
    		first=true
    	}
        src_elems[i].style.backgroundColor = getCSSRuleValue(0, "TR." + src_elems[i].className , "backgroundColor");
    }    
}

function hasRowSelected(table_id) {
        var tbl = document.getElementById(table_id);
        var elems  = tbl.rows;
        var elemsLength=elems.length;
        for (var i=0;i<elemsLength;i++) {
          	if (elems[i] && elems[i].className && elems[i].getAttribute("selected") == "true" ){         	
           		return true;
            }
        }
        return false;
}

/*  return a string array indicate all selected row pkfields */
function getSelectedPkFields (table_id) {
    var tbl = document.getElementById(table_id);
 
    var elems  = tbl.rows;
    
    var selectedPK = new Array();
    var elemsLength=elems.length;
    for (var i=0;i<elemsLength;i++){ 
    	var indexElement=elems[i];
      	if (indexElement && indexElement.className && indexElement.getAttribute("selected") == "true" ){         	
           	selectedPK[selectedPK.length] = indexElement.getAttribute("PkField");
        }
    }
    return selectedPK;
}

/*  return a string array indicate all selected row and its column value */
function getSelectedTableValueAt(table_id, colNum) {
    var tbl = document.getElementById(table_id);
 
    var elems  = tbl.rows;
    
    var selectedValues = new Array();
    var elemsLength=elems.length;
    for (var i=0;i<elemsLength;i++) {
    	var indexElement=elems[i];
      	if (indexElement && indexElement.className && indexElement.getAttribute("selected") == "true" ){         	
           selectedValues[selectedValues.length] = indexElement.cells[colNum].innerText
        }
    }
    return selectedValues;
}

function getTableValueAt(table_id,rowNum,colNum) {
    var tbl = document.getElementById(table_id);
 
    var elems  = tbl.rows;
    return  elems[rowNum].cells[colNum].innerText
}

function getSelectedRowValueAt(row, colNum){
    var elems  = row;
    
    var selectedValues = new Array();
   
    if (elems){         	
        return selectedValues[selectedValues.length] = elems.cells[colNum].innerText
    }
}

/* move all TR from one to another */
function moveAllTR(table_src_id, table_des_id) {

}

//**************************************************************************************************
//	End Table Functions
//**************************************************************************************************


//**************************************************************************************************
//	Combo Box
//**************************************************************************************************
function moveSelectBox(source, target){
	var	src = document.getElementById(source);
	var tar = document.getElementById(target);
	
	if (src.selectedIndex < 0) return false;
	
	var removeList = new Array()
	var srcOptions=src.options;
	var srcOptionsLength=srcOptions.length;
	for(var i=0;i<srcOptionsLength ; i++) {
		var selectOption=srcOptions[i];
		if (selectOption.selected) {
			newElem = document.createElement("option");
		    newElem.text  = selectOption.text;
    		newElem.value = selectOption.value;       
	
			tar.add(newElem, true);
			removeList.push(i);
		}
	}

	while (removeList.length != 0) {
		src.remove(removeList.pop());
	}
}

function moveAllSelectBox(source, target) {
	var	src = document.getElementById(source);
	var tar = document.getElementById(target);
	
	var srcOptions=src.options;
	var srcOptionsLength=srcOptions.length;
	for (var i=0; i < srcOptionsLength; i++ ) {
		var selectOption=srcOptions[i];
	   newElem = document.createElement("option");
       newElem.text  = selectOption.text;
       newElem.value = selectOption.value;       
	   tar.add(newElem, true);
	}
	
	while (src.options.length) {
        src.remove(0);
    }
}

function SelectItem(text, value, isSelected) {
	this.text = text;
	this.value = value;
	this.selected = isSelected;
}

function sortSelectBox(select_id, order) {
	var	src = document.getElementById(select_id);
	
	var preparedList = new Array();
	
	var srcOptions=src.options;
	var srcOptionsLength=srcOptions.length;
	for(var i=0;i<srcOptionsLength;i++) {
		var selectOption=srcOptions[i];
		elem = new SelectItem(selectOption.text, selectOption.value, false);
		preparedList[preparedList.length] = elem;
	}
	
	if (order == "desc")
		preparedList.sort(checkDesc);
	else
		preparedList.sort(checkAsc);
	
	while (src.options.length) {
        src.remove(0);
    }
	
	while (preparedList.length != 0 ) {
		var elem = preparedList.pop();
		
		var newElem = document.createElement("option");
        newElem.text  = elem.text;
        newElem.value = elem.value;       
	   
	    src.add(newElem, true);
	}
}

function checkAsc(a, b) {
	return (a.value > b.value) ? -1 : (a.value < b.value) ? 1 : 0;
}	

function checkDesc(a, b) {
	return (a.value > b.value) ? 1 : (a.value < b.value) ? -1 : 0;
}

function getSelectBoxValues(select_id) {
	var	src = document.getElementById(select_id);
	
	if (src.selectedIndex < 0)
			return false;
	
	var selectedList = new Array()

	var srcOptions=src.options;
	var srcOptionsLength=srcOptions.length;
	for(var i=0;i<srcOptionsLength ; i++)
		var selectOption=srcOptions[i];
		if (selectOption.selected)
			selectedList.push(selectOption.value);

	return selectedList;
}

function getAllSelectBoxValues(select_id) {
	var	src = document.getElementById(select_id);

	if (src.options.length < 1)
			return false;
	
	var wholeList = new Array()

	var srcOptions=src.options;
	var srcOptionsLength=srcOptions.length;
	for(var i=0;i<srcOptionsLength; i++)
		
			wholeList.push(srcOptions[i].value);

	return wholeList;
}

//**************************************************************************************************
//	End Combo Box Function
//**************************************************************************************************

function packArrayIntoSingle(arr) {
	if (arr) {
		newStr = ""
		var arrLength=arr.length;
		for (var i=0;i < arrLength;i++)
			newStr += arr[i] + ","
		
		newStr = newStr.substring(0, newStr.length-1)
		return newStr
	}
}

//******************************************************************************
// Description: This javascript function can be applied to convert record tables
// in a HTML file to be scrollable.
// Version: 1.1
// Browser Compatibility: IE5.5+
// Contact Author : wanjos@yahoo.com
//********************************************************************************

function makeScrollableTable(tbl,scrollFooter,height){
    var c, pNode, hdr, ftr, wrapper, rect;

    if (typeof tbl == 'string') tbl = document.getElementById(tbl);

    pNode = tbl.parentNode;
    
    container = document.createElement('<SPAN style="height: 100; overflow: auto;">');
    container.id = tbl.id + "Container";
    pNode.insertBefore(container, tbl);
    container.appendChild(tbl);
    tbl_width = parseInt(tbl.width);
    container.style.width = tbl_width + tbl.clientLeft  + 17;

    hdr = tbl.cloneNode(false);
    hdr.id += 'Header';
    hdr.appendChild(tbl.tHead.cloneNode(true));
    tbl.tHead.style.display = 'none';

    wrapper = document.createElement('<table border=0 cellspacing=0 cellpadding=0>');
    wrapper.id = tbl.id + 'Wrapper';
    pNode.insertBefore(wrapper, container);
    
    if (!tbl.tFoot){
       ftr = document.createElement('<SPAN style="width:1;height:1px;clip: rect(0 1 1 0);background-color:transparent;">');
       ftr.id = tbl.id + 'Footer';
       ftr.style.border = tbl.style.border;
       ftr.style.width =  tbl_width + tbl.clientLeft;
       ftr.style.height = 0
       ftr.style.borderBottom = ftr.style.borderLeft = ftr.style.borderRight = 'none';
       xRow = ftr.appendChild( document.createElement('<TR height=2>'))
       
    }else{
        ftr = tbl.cloneNode(false);
        ftr.id += 'Footer';
        ftr.appendChild(tbl.tFoot.cloneNode(true));
        ftr.style.borderTop = 'none';
        tbl.tFoot.style.display = 'none';
    }
    wrapper.insertRow(0).insertCell(0).appendChild(hdr);
    wrapper.insertRow(1).insertCell(0).appendChild(container);
    
    wrapper.insertRow(2).insertCell(0).appendChild(ftr);

    wrapper.align = tbl.align;
    tbl.align = hdr.align = 'left';
    if (tbl.tFoot)
	    ftr.align = 'left';
	    
    hdr.style.borderBottom = 'none';
    tbl.style.borderTop = 'none';
    tbl.style.borderBottom = 'none';
    container.style.height = height;
}

//************************************************
// Enable or Disable Component
// justEnable(ids) - i.e. justEnable('a1;a2;a3')
// justDisable(ids) - i.e. justDisable('a1;a2;a3')
//************************************************/
function justDisable(ids) {
	var a = ids.split(";");
	var aLength=a.length;
	for (var i=0;i<aLength;i++){
		document.getElementById(a[i]).disabled = true;
	}		
} 
function justEnable(ids) {
	var a = ids.split(";");
		
	var aLength=a.length;
	for (var i=0;i<aLength;i++){
		document.getElementById(a[i]).disabled = false;
	}		
} 

//*********************************************
// open a content in main frameset
//**********************************************/
function openWindow(url) {
	parent.main.location.href  = url
}

//***********************************************************************
// apply style to an element by providing the style name e.g. INPUT.View
//***********************************************************************

function applyStyle(obj, styleName) {
	if (obj && obj.style) {
		obj.style.backgroundColor = getCSSRuleValue("0", styleName, "backgroundColor");
		obj.style.borderColor = getCSSRuleValue("0", styleName, "borderColor");
		obj.style.color = getCSSRuleValue("0", styleName, "color");
	}
}

function openYesNoDialog(title, msg){
	//var ids = values.split(',')
	
	var popW = 350, popH = 60;
	if (document.all) {
	   /* the following is only available after onLoad */
	   w = document.body.clientWidth;
	   h = document.body.clientHeight;
	} else if (document.layers) {
	   w = window.innerWidth;
	   h = window.innerHeight;
	}
	var leftPos = (w-popW)/2, topPos = (h-popH)/2;
	
	var formElem = document.createElement("formAAA");
	formElem.setAttribute("title", title);
	formElem.setAttribute("msg", msg);

	var dialogArgs = formElem;
	var dialogAnswer = window.showModalDialog(returnURL('/pages/pCommonUI/YesNoDialog.page') + '?mode=noframe' + '&' + Math.random() + '&style=no&title=' +title + '&msg=' + msg  , dialogArgs,
    	"dialogWidth:330px; dialogHeight:169px; center:yes; status:no");

	return dialogAnswer
}

function openConfirmDialog(title, msg) {
	//var ids = values.split(',')
	
	var popW = 350, popH = 60;
	if (document.all) {
	   /* the following is only available after onLoad */
	   w = document.body.clientWidth;
	   h = document.body.clientHeight;
	} else if (document.layers) {
	   w = window.innerWidth;
	   h = window.innerHeight;
	}
	var leftPos = (w-popW)/2, topPos = (h-popH)/2;
	
	var formElem = document.createElement("formAAA");
	formElem.setAttribute("title", title);
	formElem.setAttribute("msg", msg);

	var dialogArgs = formElem;
	var dialogAnswer = window.showModalDialog(returnURL('/pages/pCommonUI/ConfirmDialog.page') + '?mode=noframe&style=no&title=' +title + '&msg=' + msg + '&' + Math.random() , dialogArgs,
    	"dialogWidth:330px; dialogHeight:169px; center:yes; status:no");

	return dialogAnswer
}

function GeneratePageIndex(pageno, index, link) {
	var i;

	if (pageno - index + 2 > 8 && pageno > 9){
		if (index - 2 > 1){ 
			for (i = index - 2; i <= index + 4; i++){
				if (i == index)
					document.write('<b>' + i + '</b> ');
				else
					document.write('<a href="' + link + '&page=' + i + '">' + i + '</a> ');
			}
		}else{
			for (i = 1; i <= 7; i++){
				if (i == index)
					document.write('<b>' + i + '</b> ');
				else
					document.write('<a href="' + link + '&page=' + i + '">' + i + '</a> ');
			} 		
		} 		
		document.write('...<a href="' + link + '&page=' + pageno + '">' + pageno + '</a> ');
	}else{	
		if (pageno - index + 2 < 9 && pageno > 8){
			for (i = pageno - 8; i <= pageno; i++){
				if (i == index)
					document.write('<b>' + i + '</b> ');
				else
					document.write('<a href="' + link + '&page=' + i + '">' + i + '</a> ');
			} 		
		}else{
			for (i = 1; i <= pageno; i++){
				if (i == index)
					document.write('<b>' + i + '</b> ');
				else
					document.write('<a href="' + link + '&page=' + i + '">' + i + '</a> ');
			}
		} 
	}	
}

function fromSQLText2Short (str, length) {
	if (str.length > length) {
	 
		return str.substring(0, length) + " ...";
	}
	return str;
}

function fillName(id,language){
	var elemDisplayName = document.getElementById(id);
	var elemName = document.getElementById(id + "_" + language);
	elemDisplayName.value = elemName.value;
}

function jnHtmlRecordFillName(Id,language,jnHtmlRecord,strIsRecordEditedFieldName){
		var index=jnHtmlRecordElementRecordIndexByRecordAnyName(jnHtmlRecord,strIsRecordEditedFieldName);
		var elemDisplayName = document.getElementById(Id+'-'+index);
		var elemName = document.getElementById(Id + "_"+language+'-'+index);
		elemDisplayName.value = elemName.value;
}

//***********************************************************************
// to open the report history in a new window
//***********************************************************************
var reportPrintingHistoryWindow;

function OpenReportHist(pageName,reportPrintCode,fieldSearch,para){
	var url = "/DoSearchReportPrintingHistory.cgi?PageName=" + pageName + "&ReportPrintingCode=" + reportPrintCode + "&mode=noframe&FieldSearch=" + fieldSearch + para;
	
	var width = 470;
    var height = 430;
    var left = parseInt((screen.availWidth/2) - (width/2));
    var top = parseInt((screen.availHeight/2) - (height/2));
    var windowFeatures = "width=" + width + ",height=" + height + 
        ",status=yes,resizable=no,toolbar=no,left=" + left + ",top=" + top + 
        ",screenX=" + left + ",screenY=" + top;
        
    reportPrintingHistoryWindow = window.open(returnURL(url), "reportHist", windowFeatures);
}

//***********************************************************************
// to open the report in a new window
//***********************************************************************
function OpenReport(url){
	var width = 800;
    var height = 600;
    var left = parseInt((screen.availWidth/2) - (width/2));
    var top = parseInt((screen.availHeight/2) - (height/2));
    var windowFeatures = "width=" + width + ",height=" + height + 
        ",status=yes,resizable=no,toolbar=no,left=" + left + ",top=" + top + 
        ",screenX=" + left + ",screenY=" + top;
        
    reportPrintingWindow = window.open(returnURL(url), "report", windowFeatures);
}

//***********************************************************************
// assign the selected text of the select element to the text element
//***********************************************************************
function AssignText(elem,targetElemName){
	var targetElem = document.getElementById(targetElemName);
	var elemLength=elem.length;
	for (i=0;i<elemLength;i++){
		var optionElement=elem.options[i];
		if (optionElement.selected){
			targetElem.value = optionElement.innerText;
		}
	}
}

function changeOptionInnerTextByIDsByArray(optionsID,labelTextArray,startOptionNum){
	var optionsIDElement=document.getElementById(optionsID);
	if(optionsIDElement!=null){
		if (optionsIDElement.tagName=="SELECT"){
			var i=0;
			while(true){
				var optionElement=optionsIDElement.options[i+startOptionNum];
				if(optionElement==null){
					break;
				}
				optionElement.text=labelTextArray[i];
				i++;
			
			}
			
		}
	}
}

function changeOptionGroupLabelByIDsByArray(optionsID,labelTextArray){
	var optionsIDElement=document.getElementById(optionsID);
	if(optionsIDElement!=null){
		if (optionsIDElement.tagName=="SELECT"){
			var childTag = optionsIDElement.firstChild;
			var i=0;
			
			while(childTag!=null){
				if (childTag.tagName=="OPTGROUP"){
					childTag.label=labelTextArray[i];
					i++;
				}
				childTag=childTag.nextSibling;
			}
		}
	}
}

function changeOptionInnerTextByIDsByArrayInJnHtml(optionsID,labelTextArray,startOptionNum,recordIndexID){
	var recordIndexIDElement=document.getElementById(recordIndexID);
	if (recordIndexIDElement!=null){
		var index=recordIndexIDElement.value
		for (var i=1;i<=index;i++){
			if (document.getElementById(optionsID+"-"+i)!=null){
				changeOptionInnerTextByIDsByArray(optionsID+"-"+i,labelTextArray,startOptionNum);
			}
		}
	}
}

function changeSelectedTextByIDs(optionsID,textID){
	var optionsIDElement=document.getElementById(optionsID);
	var textIDElement=document.getElementById(textID);
	if(optionsIDElement!=null&&optionsIDElement.tagName=="SELECT"){
		var optionsLength=optionsIDElement.options.length;
		for (var i=0;i<optionsLength;i++){
			var selectOption=optionsIDElement.options[i];
			if (selectOption.selected){
				textIDElement.value=selectOption.innerText;
			}
		}
	}
}

function changeInputTextLangByID(inputID,lang){
	var inputIDElement=document.getElementById(inputID);
	var inputIDLangElement=document.getElementById(inputID+"_"+lang);
	if ((inputIDElement!=null)&&(inputIDLangElement!=null))
		inputIDElement.value=inputIDLangElement.value;
}

function changeLabelLangByID(labelID,lang){
	var inputIDElement=document.getElementById(labelID);
	var inputIDLangElement=document.getElementById(labelID+"_"+lang);

	if ((inputIDElement!=null)&&(inputIDLangElement!=null))
		inputIDElement.innerHTML=decodeURIComponentString(inputIDLangElement.value);
}

function changeInnerTextLangByID(inputID,lang){
	var inputIDElement=document.getElementById(inputID);
	var inputIDLangElement=document.getElementById(inputID+"_"+lang);
	if ((inputIDElement!=null)&&(inputIDLangElement!=null))
		inputIDElement.innerText=inputIDLangElement.value;
}

function changeInputTextsLangByIDs(inputID,lang){
	var i=1;
	while(true){
		var element=document.getElementById(inputID+"_"+i);
		if(element==null){
			break;
		}
		element.value=document.getElementById(inputID+"_"+i+"_"+lang).value;
		i++;
	
	}
	
}

function changeInputTextsLangByIDsInJnHtml(){
	//arguments: inputID,recordIndexID,lang, recordIndexID2(optional)
	var inputID = arguments[0];
	var recordIndexID = arguments[1];
	var lang = arguments[2];
	var recordIndexIDElement=document.getElementById(recordIndexID);
	
	if (recordIndexIDElement!=null){
		var recordIndexValue=recordIndexIDElement.value;
		for (var i=1;i<=recordIndexValue;i++){
			var RS_CElement=document.getElementById("RS_C-"+i);
			var inputIDElement=document.getElementById(inputID+"-"+i);
			if (RS_CElement!=null){
				if (RS_CElement.value!=null){
					if (RS_CElement.value=="systemTimeout"){
						inputIDElement.value=systemTimeout();
					}else{
						if (RS_CElement.value=="itemNotFound"){
							inputIDElement.value=itemNotFound();
						}else{
							if (RS_CElement.value=="tryAgainAfterAWhile"){
								inputIDElement.value=tryAgainAfterAWhile();
							}
						}
					}
				}
			}
			if (arguments.length == 3) {
				changeInputTextLangByIDInJnHtml(inputID,i,lang);
			}else{ //(arguments.length == 4, the 4th parameter=recordIndexID2)
				var recordIndexID2 = arguments[3];
				changeInputTextLangByIDInJnHtml(inputID,i,lang,recordIndexID2);
			}
				
		}
	}
}

function changeInputTextLangByNameInJnHtml(){
	//arguments: inputID,record,lang, index2(optional)
	var inputID = arguments[0];
	var record = arguments[1];
	var lang = arguments[2];

	if (arguments.length == 3) {
		var ElementByName=jnHtmlRecordGetElementByName(record,inputID);
		if (ElementByName!=null){
			if (jnHtmlRecordGetElementByName(record,inputID+"_"+lang).value!=""){
				ElementByName.value=jnHtmlRecordGetElementByName(record,inputID+"_"+lang).value;
			}else{
				ElementByName.value=jnHtmlRecordGetElementByName(record,inputID+"_Eng").value;
			}
			var originalElement=jnHtmlRecordGetElementByName(record,"Original_"+inputID+"_"+lang);
			if (originalElement != null) {
				if (originalElement.value!=""){
					jnHtmlRecordGetElementByName(record,"Original_"+inputID).value=originalElement.value;
				}else{
					jnHtmlRecordGetElementByName(record,"Original_"+inputID).value=jnHtmlRecordGetElementByName(record,"Original_"+inputID+"_Eng").value;
				}
			}	
		}
	}else{ //(arguments.length == 4, the 4th parameter=index2)
		var index2 = arguments[3];	
		var ElementByNameIndex2=jnHtmlRecordGetElementByName(record,inputID+index2);
		if (ElementByNameIndex2!=null){
		
			var ElementByNameIndex2Lang=jnHtmlRecordGetElementByName(record,inputID+"_"+lang+index2);
			if (ElementByNameIndex2Lang.value!=""){
				ElementByNameIndex2.value=ElementByNameIndex2Lang.value;
			}else{
				ElementByNameIndex2.value=jnHtmlRecordGetElementByName(record,inputID+"_Eng"+index2).value;
			}
			var ElementByNameOriginalIndex2Lang=jnHtmlRecordGetElementByName(record,"Original_"+inputID+"_"+lang+index2);
			if (ElementByNameOriginalIndex2Lang!=null){
				if (ElementByNameOriginalIndex2Lang.value!=""){
					jnHtmlRecordGetElementByName(record,"Original_"+inputID+index2).value=ElementByNameOriginalIndex2Lang.value;
				}else{
					jnHtmlRecordGetElementByName(record,"Original_"+inputID+index2).value=jnHtmlRecordGetElementByName(record,"Original_"+inputID+"_Eng"+index2).value;
				}
			}	
		}
	}	
}

function changeInputTextLangByIDInJnHtml(){
	//arguments: inputID,index,lang, index2(optional)
	var inputID = arguments[0];
	var index = arguments[1];
	var lang = arguments[2];

	if (arguments.length == 3) {
		var inputIDIndexElement=document.getElementById(inputID+"-"+index);
		if (inputIDIndexElement!=null){
			if (document.getElementById(inputID+"_"+lang+"-"+index).value!=""){
				inputIDIndexElement.value=document.getElementById(inputID+"_"+lang+"-"+index).value;
			}else{
				inputIDIndexElement.value=document.getElementById(inputID+"_Eng-"+index).value;
			}
		var OriginalInputIDIndexElement=document.getElementById("Original_"+inputID+"-"+index);
			if (OriginalInputIDIndexElement!=null){
				if (OriginalInputIDIndexElement.value!=""){
					OriginalInputIDIndexElement.value=document.getElementById("Original_"+inputID+"_"+lang+"-"+index).value;
				}
				else{
					OriginalInputIDIndexElement.value=document.getElementById("Original_"+inputID+"_Eng-"+index).value;
				}
			}
		}
	}else{ //(arguments.length == 4, the 4th parameter=index2)
		var index2 = arguments[3];	
		var	InputIDIndex2Element=document.getElementById(inputID+index2+"-"+index);
		if (InputIDIndex2Element!=null){
			if (document.getElementById(inputID+"_"+lang+index2+"-"+index).value!=""){
				InputIDIndex2Element.value=document.getElementById(inputID+"_"+lang+index2+"-"+index).value;
			}else{
				if (document.getElementById(inputID+"_Eng"+index2+"-"+index).value!=""){
					InputIDIndex2Element.value=document.getElementById(inputID+"_Eng"+index2+"-"+index).value;
				}	
			}
		var	OriginalInputIDIndex2Element=document.getElementById("Original_"+inputID+index2+"-"+index);
			if (OriginalInputIDIndex2Element!=null){
				if (OriginalInputIDIndex2Element.value!=""){
					OriginalInputIDIndex2Element.value=document.getElementById("Original_"+inputID+"_"+lang+index2+"-"+index).value;
				}else{
					if (document.getElementById(inputID+"_Eng"+index2+"-"+index).value!=""){
						OriginalInputIDIndex2Element.value=document.getElementById("Original_"+inputID+"_Eng"+index2+"-"+index).value;
					}	
				}
			}
		}
	}
}

function changeInputTextLangByIDForChildInJnHtml(inputID, parentRecordIndexID, childRecordIndexID, lang){
	var parentRecordIndexIDElement=document.getElementById(parentRecordIndexID);
	if (parentRecordIndexIDElement!=null){
		var parentRecordIndex = parentRecordIndexIDElement.value;
		var childRecordIndex = "";
		
		for (var parentRecIndexCount=1;parentRecIndexCount<=parentRecordIndex;parentRecIndexCount++){
			var childRecordIndexIDParentRecIndexCountElement=document.getElementById(childRecordIndexID+parentRecIndexCount);
			if (childRecordIndexIDParentRecIndexCountElement!=null){
				childRecordIndex = childRecordIndexIDParentRecIndexCountElement.value;
				
				for (var childRecIndexCount=1;childRecIndexCount<=childRecordIndex;childRecIndexCount++){
					var inputIDParentRecIndexCountChildRecIndexCountElement=document.getElementById(inputID+parentRecIndexCount+"-"+childRecIndexCount);
					if (inputIDParentRecIndexCountChildRecIndexCountElement!=null){
						if (document.getElementById(inputID+"_"+lang+parentRecIndexCount+"-"+childRecIndexCount).value!=""){
							inputIDParentRecIndexCountChildRecIndexCountElement.value=document.getElementById(inputID+"_"+lang+parentRecIndexCount+"-"+childRecIndexCount).value;
						}else{
							var inputIDEngparentRecIndexCountchildRecIndexCountElem=document.getElementById(inputID+"_Eng"+parentRecIndexCount+"-"+childRecIndexCount);
							if (inputIDEngparentRecIndexCountchildRecIndexCountElem.value!=""){
								inputIDParentRecIndexCountChildRecIndexCountElement.value=inputIDEngparentRecIndexCountchildRecIndexCountElem.value;
							}	
						}
					}
					var OriginalInputIDParentRecIndexCountChildRecIndexCountElem=document.getElementById("Original_"+inputID+parentRecIndexCount+"-"+childRecIndexCount);
					if (OriginalInputIDParentRecIndexCountChildRecIndexCountElem!=null){
						var OriginalinputIDlangparentRecIndexCountchildRecIndexCountElemt =document.getElementById("Original_"+inputID+"_"+lang+parentRecIndexCount+"-"+childRecIndexCount);
						if (OriginalinputIDlangparentRecIndexCountchildRecIndexCountElemt.value!=""){
							OriginalInputIDParentRecIndexCountChildRecIndexCountElem.value=OriginalinputIDlangparentRecIndexCountchildRecIndexCountElemt.value;
						}else{
							var OriginalinputIDEngparentRecIndexCountchildRecIndexCountElem= document.getElementById("Original_"+inputID+"_Eng"+parentRecIndexCount+"-"+childRecIndexCount);
							if (OriginalinputIDEngparentRecIndexCountchildRecIndexCountElem.value!=""){
								OriginalInputIDParentRecIndexCountChildRecIndexCountElem.value=OriginalinputIDEngparentRecIndexCountchildRecIndexCountElem.value;
							}	
						}
					}
				}
			}
		}
	}
}
	
function changeLabelsInnerTextByIDsByArray(labelID,labelTextArray){
	var i=1;
	while(true){
		var element=document.getElementById(labelID+"_"+i);
		if(element==null){
			break;
		}
		element.innerHTML=labelTextArray[i-1];
		i++;
	
	}
	
}
	
function changeLabelsInnerTextByIDArray(labelIDArray,labelText){
	var i=0;
	while(true){
		var element=document.getElementById(labelIDArray[i]);
		if(element==null){
			break;
		}
		element.innerHTML=labelText;
		i++;
	
	}
	
}
	
function changeLabelsInnerTextByIDs(labelID,labelText){
	changeLabelsInnerTextByIDsWithTexts(labelID,"",labelText,"");
}
	
function changeLabelsInnerTextByIDsWithTexts(labelID,textBefore,labelText,textBehind){
	var i=1;
	while(true){
		var element=document.getElementById(labelID+"_"+i);
		if(element==null){
			break;
		}
		element.innerText=textBefore + labelText + textBehind;
		i++;
	
	}
	
}
	
function changeLabelsFontSizeByIDs(labelID,fontSize){
	var i=1;
	while(true){
		var element=document.getElementById(labelID+"_"+i);
		if(element==null){
			break;
		}
		element.size=fontSize;
		i++;
	
	}
}
	
function changeLabelsFontSizeStyleByIDs(labelID,fontSize){
	var i=1;
	while(true){
		var element=document.getElementById(labelID+"_"+i);
		if(element==null){
			break;
		}
		element.style.fontSize=fontSize;
		i++;
	
	}
}
	
function changeLabelsFontWeightByIDs(labelID,fontWeight){
	var i=1;
	while(true){
		var element=document.getElementById(labelID+"_"+i);
		if(element==null){
			break;
		}
		element.style.fontWeight=fontWeight;
		i++;
	
	}
}

function elementBlockDisplayByIdByLang(id,lang){
	var elem_Eng = document.getElementById(id+"_Eng");
	var elem_TChi = document.getElementById(id+"_TChi");
	var elem_SChi = document.getElementById(id+"_SChi");
	
	if (elem_Eng!=null){
		if (lang=="Eng"){
			elem_Eng.style.display="block";
		}else{
			elem_Eng.style.display="none";
		}
	}
	if (elem_TChi!=null){
		if (lang=="TChi"){
			elem_TChi.style.display="block";
		}else{
			elem_TChi.style.display="none";
		}
	}
	if (elem_SChi!=null){
		if (lang=="SChi"){
			elem_SChi.style.display="block";
		}else{
			elem_SChi.style.display="none";
		}
	}
}

function elementsBlockDisplayByIdsByLangInJnHtml(inputID,recordIndexID,lang){
	var recordIndexIDElement=document.getElementById(recordIndexID);
	if (recordIndexIDElement!=null){
		var recordIndexValue=recordIndexIDElement.value;
		for (var i=1;i<=recordIndexValue;i++){
			var elem_Eng = document.getElementById(inputID+"_Eng-"+i);
			var elem_TChi = document.getElementById(inputID+"_TChi-"+i);
			var elem_SChi = document.getElementById(inputID+"_SChi-"+i);
			
			if (elem_Eng!=null){
				if (lang=="Eng"){
					elem_Eng.style.display="block";
				}else{
					elem_Eng.style.display="none";
				}
			}
			if (elem_TChi!=null){
				if (lang=="TChi"){
					elem_TChi.style.display="block";
				}else{
					elem_TChi.style.display="none";
				}
			}
			if (elem_SChi!=null){
				if (lang=="SChi"){
					elem_SChi.style.display="block";
				}else{
					elem_SChi.style.display="none";
				}
			}
		}
	}
}

function changeJnHtmlErrorMessage(jnRecordName,messageArray){
	if (document.getElementsByName(jnRecordName)!=null&&messageArray!=null){
		var recordList = jnHtmlRecordListByName(jnRecordName);
		var record = jnHtmlRecordListFirstRecord(recordList);
		var recordLength = jnHtmlRecordListLengthByName(jnRecordName);

		for(var j=0;j<recordLength;j++){
			jnHtmlUpdateErrorMessage(record,returnJnHtmlErrorMessageString(messageArray[j]));
			record = jnHtmlNextRecord(record);
		}
	}
}

//***********************************************************************
// to block the click mouse action on elements with a alert
//***********************************************************************
function disableImageClick(){	
	alert(loadingText)
	return false;
}

//***********************************************************************
// functions to disable & enable the whole page 
// 		with changed the text in status bar
//***********************************************************************
function PageDisable(reEnableArray){
	var pageWidth = screen.availWidth;
	var pageHeight = screen.availHeight;
	var imgDisable = document.getElementById("img_pageDisable");
	var selectElements = document.getElementsByTagName("select");
	var enabledCount = 0;
	var tmpInput = new Array();
	
    var elems = document.getElementsByTagName("td")[0];
	
	imgDisable.style.width = pageWidth;
	imgDisable.style.height = pageHeight;

	window.status=loadingText;
	document.body.style.cursor='wait';
	var selectElementsLength=selectElements.length;
	for (i=0;i<selectElementsLength;i++){
		var temp2=tmpInput[i];
		var selectItem=	selectElements.item(i);
		var clonedElementString = "<input name='"+selectItem.name+"' type='hidden' id='cloned_"+selectItem.id+"' value='"+selectItem.value+"'/>";
		try {
   			temp2 = document.createElement(clonedElementString);
		}catch(e){
			temp2 = document.createElement('INPUT');
			temp2.setAttribute('type','hidden');
			temp2.setAttribute('name',selectItem.name);
			temp2.setAttribute('id','cloned_'+selectItem.id);
			temp2.setAttribute('value',selectItem.value);
		}

		var insertHere = document.getElementById('tempSubmitStore');
		if(insertHere==null){
			alert("miss tempSubmitStore Tag");
			return;
		}
		insertHere.appendChild(temp2);

		if (!selectItem.disabled){
			selectItem.disabled = true;
			reEnableArray[enabledCount]=selectItem.id;
			enabledCount++;
		}
	}
}

function PageEnable(reEnableArray){
	removeAllTempSubmitStoreChildren(document.getElementById('tempSubmitStore'))
	
	var imgDisable = document.getElementById("img_pageDisable");
	var i;
	
	imgDisable.style.width = 0;
	imgDisable.style.height = 0;
	var reEnableArrayLength=reEnableArray.length;
	for (i=0;i<reEnableArrayLength;i++){
		var selectIndexElement=reEnableArray[i];
		if (selectIndexElement!=""&&document.getElementById(selectIndexElement)!=null){
			document.getElementById(selectIndexElement).disabled = false;
		}
		reEnableArray[i]=null;
	}
	window.status=doneText;
	document.body.style.cursor='auto';
	
	reEnableArray.length=0;
}

function PageDisableWithoutCreatElement(reEnableArray){
	var pageWidth = screen.availWidth;
	var pageHeight = screen.availHeight;
	var imgDisable = document.getElementById("img_pageDisable");
	var selectElements = document.getElementsByTagName("select");
	var enabledCount = 0;
	
	imgDisable.style.width = pageWidth;
	imgDisable.style.height = pageHeight;

	window.status=loadingText;
	document.body.style.cursor='wait';
	var selectElementsLength=selectElements.length;
	for (i=0;i<selectElementsLength;i++){
		var selectItem=selectElements.item(i);
		if (!selectItem.disabled){
			selectItem.disabled = true;
			reEnableArray[enabledCount]=selectItem.id;
			enabledCount++;
		}
	}
}

function removeAllTempSubmitStoreChildren(in_parent){
	if (in_parent!=null){
		if (in_parent.firstChild != null){
			in_parent.removeChild(in_parent.firstChild);
			return removeAllTempSubmitStoreChildren(in_parent);
		}else{
			return in_parent;
		}
	}else{
		return null;
	}
}

//***********************************************************************
// functions to insert value to the array 
// 		for change language feature
//***********************************************************************

function pushArrayValue(array,value){
	array.push(value);
}

function pushNameEng(array,nameEng){
	if (nameEng=="") {
		array.push(" ");
	}
	else {
		array.push(nameEng);
	}
}

function pushNameChi(array,nameChi,nameEng){
	if (nameChi=="") {
		array.push(nameEng);
	}
	else {
		array.push(nameChi);
	}
}

//***********************************************************************
// functions for change language and styles dynamically
//***********************************************************************

function SetChangeLanguageArray(elementID,label,labelType,labelControl){
	pushArrayValue(contentLabels,elementID);
	//if ((labelType!="optionInnerTextByArray")&&(labelType!="labelsInnerTextByArray")&&(labelType!="jnHTMLTableOptionInnerTextFromFirstOptionByArray"))
	//	pushArrayValue(contentLabels,headerText + label + footerText);
	//else
	pushArrayValue(contentLabels,label);
	pushArrayValue(contentLabels,labelType);
	if ((labelControl==null)||(labelControl=="")){
		pushArrayValue(contentLabels,0);
	}else{
		pushArrayValue(contentLabels,labelControl);
	}
}

function SetChangeStyleArray(elementID,styleType,styleValue,styleControl){
	pushArrayValue(elementStyles,elementID);
	pushArrayValue(elementStyles,styleType);
	pushArrayValue(elementStyles,styleValue);
	if ((styleControl==null)||(styleControl=="")){
		pushArrayValue(elementStyles,0);
	}else{
		pushArrayValue(elementStyles,styleControl);
	}
}

function SetChangeScriptArray(elementID,script,scriptType,scriptControl){
	pushArrayValue(contentScript,elementID);
	//if ((scriptType!="optionInnerTextByArray")&&(scriptType!="scriptsInnerTextByArray")&&(scriptType!="jnHTMLTableOptionInnerTextFromFirstOptionByArray"))
	//	pushArrayValue(contentLabels,headerText + script + footerText);
	//else
	pushArrayValue(contentScript,script);
	pushArrayValue(contentScript,scriptType);
	if ((scriptControl==null)||(scriptControl=="")){
		pushArrayValue(contentScript,0);
	}else{
		pushArrayValue(contentScript,scriptControl);
	}
}

function changeLanguage(labelArray){
	if (labelArray!=null){
		for (var i=0;labelArray[i]!=null;i=i+4){
			var labelArray1Element=document.getElementById(labelArray[i]);
			var labelArrayElementi=labelArray[i];
			var labelArrayElement1=labelArray[i+1];
			var labelArrayElement2=labelArray[i+2];
			var labelArrayElement3=labelArray[i+3];
			
			if (labelArrayElement2=="labelInnerText"){
				if (labelArray1Element!=null){
					labelArray1Element.innerText=labelArrayElement1;
				}else{
					var a=1;
					while(true){
						var element=document.getElementById(labelArray[i]+"_"+a);
						if(element==null){
							break;
						}
						element.innerText=labelArrayElement1;
						a++;
					
					}
				}
			}else if (labelArrayElement2=="labelInnerHTML"){
				if (labelArray1Element!=null){
					labelArray1Element.innerHTML=labelArrayElement1;
				}
			}else if (labelArrayElement2=="labelLongInnerText"){
				if (labelArray1Element!=null){
					if (labelArrayElement3=="header"){
						labelArray1Element.innerText=labelArrayElement1;
					}else if (labelArrayElement3=="content"){
						labelArray1Element.innerText=labelArray1Element.innerText+labelArrayElement1;
					}else if (labelArrayElement3=="footer"){
						labelArray1Element.innerText=labelArray1Element.innerText+labelArrayElement1;
					}
				}
			}else if (labelArrayElement2=="labelLongInnerHTML"){
				if (labelArray1Element!=null){
					if (labelArrayElement3=="header"){
						labelArray1Element.innerHTML=labelArrayElement1;
					}else if (labelArrayElement3=="content"){
						labelArray1Element.innerHTML=labelArray1Element.innerHTML+labelArrayElement1;
					}else if (labelArrayElement3=="footer"){
						labelArray1Element.innerHTML=labelArray1Element.innerHTML+labelArrayElement1;
					}
				}
			}else if (labelArrayElement2=="languageInnerTextsValue"){
				changeInnerTextLangByID(labelArrayElementi,labelArrayElement3)
			}else if (labelArrayElement2=="labelsInnerTextById"){
				changeLabelsInnerTextByIDs(labelArrayElementi,labelArrayElement1)
			}else if (labelArrayElement2=="labelsInnerTextByArray"){
				changeLabelsInnerTextByIDsByArray(labelArrayElementi,labelArrayElement1);
			}else if (labelArrayElement2=="labelsInnerTextByIdArray"){
				changeLabelsInnerTextByIDArray(labelArrayElementi,labelArrayElement1);
			}else if (labelArrayElement2=="buttonValue"){
				if (labelArray1Element!=null){
					labelArray1Element.value=unescape(labelArrayElement1);
				}
			}else if (labelArrayElement2=="textValue"){
				if (labelArray1Element!=null){
					labelArray1Element.value=labelArrayElement1;
				}
			}else if (labelArrayElement2=="TextAreaInnerText"){
				if (labelArray1Element!=null){
					labelArray1Element.innerText=labelArrayElement1;
				}
			}else if (labelArrayElement2=="buttonLongValue"){
				if (labelArray1Element!=null){
					if (labelArrayElement3=="header"){
						labelArray1Element.value=labelArrayElement1;
					}else if (labelArrayElement3=="content"){
						labelArray1Element.value=labelArray1Element.value+labelArrayElement1;
					}else if (labelArrayElement3=="footer"){
						labelArray1Element.value=labelArray1Element.value+labelArrayElement1;
					}
				}
			}else if (labelArrayElement2=="buttonAlt"){
				if (labelArray1Element!=null){
					labelArray1Element.alt=labelArrayElement1;
				}
			}else if (labelArrayElement2=="tableButtonsAlt"){
				var tableButtonsAltElementArray=document.getElementsByName(labelArrayElementi);
				if(tableButtonsAltElementArray==null){
					continue;
				}
				var tableButtonsAltElementArrayLength=tableButtonsAltElementArray.length;
				for (var j=0;j<tableButtonsAltElementArrayLength;j++){
					tableButtonsAltElementArray[j].alt=labelArrayElement1;
				}
			}else if (labelArrayElement2=="languageInputTextsValue"){
				changeInputTextLangByID(labelArrayElementi,labelArrayElement3)
			}else if (labelArrayElement2=="languageLabelInnertext"){
				changeLabelLangByID(labelArrayElementi,labelArrayElement3)
			}else if (labelArrayElement2=="textsValueByName"){
				var textsValueByNameElementArray=document.getElementsByName(labelArrayElementi);
				if(textsValueByNameElementArray==null){
					continue;
				}
				var textsValueByNameElementArrayLength=textsValueByNameElementArray.length;
				for (var j=0;textsValueByNameElementArray[j]!=null;j++){
					textsValueByNameElementArray[j].value=labelArrayElement1;
				}
			}else if (labelArrayElement2=="variable"){
				if (labelArray1Element!=null){
					labelArray1Element.value=labelArrayElement1;
				}
			}else if (labelArrayElement2=="optionInnerText"){
				if (labelArray1Element!=null){
					if (labelArray1Element.options[labelArrayElement3]!=null){
						labelArray1Element.options[labelArrayElement3].innerText=labelArrayElement1;
					}
				}
			}else if (labelArrayElement2=="optionInnerTextByArray"){
				if (labelArray1Element!=null){
					changeOptionInnerTextByIDsByArray(labelArrayElementi,labelArrayElement1,labelArrayElement3);
				}
			}else if (labelArrayElement2=="optionGroupLabelByArray"){
				if (labelArray1Element!=null){
					changeOptionGroupLabelByIDsByArray(labelArrayElementi,labelArrayElement1);
				}
			}else if (labelArrayElement2=="elementBlockDisplay"){
				elementBlockDisplayByIdByLang(labelArrayElementi,labelArrayElement3)
			}else if (labelArrayElement2=="jnHTMLTableButtonsAlt"){
				var recordIndexElement=document.getElementById(labelArrayElement3);
				if(recordIndexElement!=null){
					for (var j=1;j<=recordIndexElement.value;j++){
						var element=document.getElementById(labelArrayElementi+"-"+j);
						if (element!=null){
							element.alt=labelArrayElement1;
						}
					}
				}
			}else if (labelArrayElement2=="jnHTMLTableChildButtonsAlt"){
				var recordIndexElement=document.getElementById(labelArrayElement3);
				var currentChildList;
				
				if(recordIndexElement!=null){
					for (var j=1;j<=recordIndexElement.value;j++){
						currentChildList = jnHtmlGetChildList(jnHtmlElementRecord(document.getElementById("isRecordEdited-"+j)));
						childRecordIndexElement=document.getElementById(labelArrayElement3+"-"+j);
						
						if(childRecordIndexElement!=null){
							for (var n=1;n<=childRecordIndexElement.value;n++){
								var element=document.getElementById(labelArrayElementi+"-"+j+"|"+n);
								if (element!=null){
									element.alt=labelArrayElement1;
								}
							}
						}
					}
				}
			}else if (labelArrayElement2=="jnHTMLTableInputTextsLabelValue"){
				var recordIndexElement=document.getElementById(labelArrayElement3);
				if(recordIndexElement!=null){
					for (var j=1;j<=recordIndexElement.value;j++){
						var element=document.getElementById(labelArrayElementi+"-"+j);
						if (element!=null){
							element.value=labelArrayElement1;
						}
					}
				}
			}else if (labelArrayElement2=="jnHTMLTableInputTextsValue"){
				changeInputTextsLangByIDsInJnHtml(labelArrayElementi,labelArrayElement3,labelArrayElement1);
			}else if (labelArrayElement2=="jnHTMLTableOptionInnerText"){
				changeOptionInnerTextByIDsByArrayInJnHtml(optionsID,optionNum,labelText,recordIndexID)
				if (labelArray1Element.options[labelArrayElement3]!=null){
					labelArray1Element.options[labelArrayElement3].innerText=labelArrayElement1;
				}
			}else if (labelArrayElement2=="jnHTMLTableOptionInnerTextFromFirstOptionByArray"){
				if (labelArray1Element!=null){
					changeOptionInnerTextByIDsByArrayInJnHtml(labelArrayElementi,labelArrayElement1,0,labelArrayElement3);
				}
			}else if (labelArrayElement2=="jnHTMLElementBlockDisplay"){
				elementsBlockDisplayByIdsByLangInJnHtml(labelArrayElementi,labelArrayElement1,labelArrayElement3);
			}else if (labelArrayElement2=="jnhtmlErrorMessageByArray"){
				changeJnHtmlErrorMessage(labelArrayElementi,labelArrayElement1);
			}else if (labelArrayElement2=="jnhtmlChildErrorMessageByArray"){
				var recordIndex=document.getElementById(labelArrayElement3).value;

				for (var j=1;j<=recordIndex;j++){
					if (labelArrayElement1!=null)
						if (labelArrayElement1[j-1]!=null)
							changeJnHtmlErrorMessage(labelArrayElementi+"-"+j,labelArrayElement1[j-1]);
				}
			}else if (labelArrayElement2=="iFrameLabelInnerText"){
				var element=window.frames[labelArrayElement3].document.getElementById(labelArrayElementi);
				if (element!=null){
					element.innerText=labelArrayElement1;
				}
			}else if (labelArrayElement2=="iFrameButtonValue"){
				var element=window.frames[labelArrayElement3].document.getElementById(labelArrayElementi);
				if (element!=null){
					element.value=labelArrayElement1;
				}
			}else if (labelArrayElement2=="iFrameInputValue"){
				var element=window.frames[labelArrayElement3].document.getElementById(labelArrayElementi);
				if (element!=null){
					element.value=labelArrayElement1;
				}
			}else if (labelArrayElement2=="iFrameVariable"){
				var element=window.frames[labelArrayElement3].document.getElementById(labelArrayElementi);
				if (element!=null){
					element.value=labelArrayElement1;
				}
			}else if (labelArrayElement2=="runFunction"){
				labelArrayElementi(labelArrayElement1);
			}
		}
	}
}
	
function changeStyle(styleArray){
	if (styleArray!=null){
		for (var i=0;styleArray[i]!=null;i=i+4){
			var styleArrayElement=document.getElementById(styleArray[i]);
			var styleArrayElementi1=styleArray[i+1];
			var styleArrayElementi2=styleArray[i+2];
			if (styleArrayElementi1=="tableWidth"){
				if (styleArrayElement!=null){
					styleArrayElement.width=styleArrayElementi2;
				}
			}else if (styleArrayElementi1=="size"){
				if (styleArrayElement!=null){
					styleArrayElement.size=styleArrayElementi2;
				}
			}else if (styleArrayElementi1=="width"){
				styleArrayElement.style.width=styleArrayElementi2;
			}else if (styleArrayElementi1=="height"){
				styleArrayElement.style.height=styleArrayElementi2;
			}else if (styleArrayElementi1=="sizeByArray"){
				for (var j=0;document.getElementById(styleArray[i][j])!=null;j++){
					document.getElementById(styleArray[i][j]).size=styleArrayElementi2;
				}
			}else if (styleArrayElementi1=="fontWeight"){
				if (styleArrayElement!=null){
					styleArrayElement.style.fontWeight=styleArrayElementi2;
				}
			}else if (styleArrayElementi1=="fontWeightByIDs"){
				changeLabelsFontWeightByIDs(styleArray[i],styleArrayElementi2);
			}else if (styleArrayElementi1=="fontSize"){
				if (styleArrayElement!=null){
					styleArrayElement.style.fontSize=styleArrayElementi2;
				}
			}else if (styleArrayElementi1=="fontSizeByIDs"){
				changeLabelsFontSizeByIDs(styleArray[i],styleArrayElementi2);
			}else if (styleArrayElementi1=="className"){
				if (styleArrayElement!=null){
					styleArrayElement.className=styleArrayElementi2;
				}
			}else if (styleArrayElementi1=="sizeInIFrame"){
				var element=window.frames[styleArray[i+3]].document.getElementById(styleArray[i]);
				if (element!=null){
					element.size=styleArrayElementi2;
				}
			}else if (styleArrayElementi1=="fontWeightInIFrame"){
				var element=window.frames[styleArray[i+3]].document.getElementById(styleArray[i]);
				if (element!=null){
					element.style.fontWeight=styleArrayElementi2;
				}
			}else if (styleArrayElementi1=="fontSizeInIFrame"){
				var element=window.frames[styleArray[i+3]].document.getElementById(styleArray[i]);
				if (element!=null){
					element.style.fontSize=styleArrayElementi2;
				}
			}else if (styleArrayElementi1=="fontSizeStyleByIDs"){
				changeLabelsFontSizeStyleByIDs(styleArray[i],styleArrayElementi2);
			}else if (styleArrayElementi1=="imageSource"){
				styleArrayElement.src=styleArrayElementi2;
			}else if (styleArrayElementi1=="disabled"){
				styleArrayElement.disabled=styleArrayElementi2;
			}
		}
	}
}
	
function changeScript(scriptArray){
	if (scriptArray!=null){
		for (var i=0;scriptArray[i]!=null;i=i+4){
			var scriptArrayi=scriptArray[i];
			var scriptArrayi1=scriptArray[i+1];
			var scriptArrayi2=scriptArray[i+2];
			var scriptArrayElement=document.getElementById(scriptArrayi);
			if (scriptArrayi2=="onclick"){
				scriptArrayElement.onclick=scriptArrayi1;
			}else if (scriptArrayi2=="onblur"){
				scriptArrayElement.onblur=scriptArrayi1;
			}else if (scriptArrayi2=="onchange"){
				scriptArrayElement.onchange=scriptArrayi1;
			}else if (scriptArrayi2=="onfocus"){
				scriptArrayElement.onfocus=scriptArrayi1;
			}else if (scriptArrayi2=="onkeypress"){
				scriptArrayElement.onkeypress=scriptArrayi1;
			}else if (scriptArrayi2=="onkeyup"){
				scriptArrayElement.onkeyup=scriptArrayi1;
			}else if (scriptArrayi2=="onkeydown"){
				scriptArrayElement.onkeydown=scriptArrayi1;
			}
		}
	}
}

function returnVariableLabel(elementId){
	return document.getElementById(elementId).value;
}
			
var contentLabels = new Array();
var elementStyles = new Array();
var contentScript = new Array();

function checkParentElementById(elementId,elementType){
	if (parent.document.getElementById(elementId)!=null){
		if (elementType=="innerText"){
			return parent.document.getElementById(elementId).innerText;
		}
		if (elementType=="value"){
			return parent.document.getElementById(elementId).value;
		}
	}
	return "";
}

updateLabelValues=function(updateText,status){
	if (status=="arrayList"){
		userLanguage=updateText[0][1];
		changeMenuLables(updateText[1],userLanguage);
		changeLanguage(updateText[2]);
		changeStyle(updateText[3]);
		if (updateText[4]!=null){
			changeScript(updateText[3]);
		}
	}
}

//***********************************************************************
// functions to copy the element from a .page to a iframe page
// 		- iframeId : the ID of the iframe
// 		- formId : the target form ID in the iframe
// 		- formSubmit : boolean to set the form need to submit after copy
// 		- formMethod : to set the method of the form
// 		- formAction : to set the action string of the form
// 		- formTarget : to set the target value of the form
// 		- formOnSubmit : to set the onSubmit value of the form
//***********************************************************************

function CopyElementsToIFrame(iframeId,formId,formSubmit,formMethod,formAction,formTarget,formOnSubmit,startTagId){
	var divElement = document.getElementById(startTagId);
	if (divElement==null)
		divElement = document.getElementsByTagName("Body").item(0);
	var targetFrame = window.frames[iframeId];
	var submitForm = targetFrame.document.getElementById(formId);
	
	submitForm.method=formMethod;
	submitForm.action=formAction;
	submitForm.target=formTarget;
	submitForm.onSubmit=formOnSubmit;
	
	var inputElements = divElement.getElementsByTagName("input");
	var inputElementLength=inputElements.length;
	for(var i=0;i<inputElementLength;i++){
		var oldInputElement=inputElements[i];
		inputElement = targetFrame.document.createElement("<input/>");
		inputElement.type = oldInputElement.type;
		inputElement.name = oldInputElement.name;
		inputElement.id = oldInputElement.id;
		inputElement.value = oldInputElement.value;
		
		if (inputElement.type!="button")
			if (inputElement.type!="reset")
				if (inputElement.type!="submit")
					submitForm.appendChild(inputElement);
	}
	
	var selectElements = divElement.getElementsByTagName("select");
	var selectElementsLength=selectElements.length;
	for(var i=0;i<selectElementsLength;i++){
		var oldSelectElement=selectElements[i];
		inputElement = targetFrame.document.createElement("<input type='text'/>");
		inputElement.name = oldSelectElement.name;
		inputElement.id = oldSelectElement.id;
		inputElement.value = oldSelectElement.value;
		
		submitForm.appendChild(inputElement);
	}
	
	var textareaElements = divElement.getElementsByTagName("textarea");
	var textareaElementsLength=textareaElements.length;
	
	for(var i=0;i<textareaElementsLength;i++){
		var oldTextAreaElement=textareaElements[i];
		inputElement = targetFrame.document.createElement("<textarea></textarea>");
		inputElement.name = oldTextAreaElement.name;
		inputElement.id = oldTextAreaElement.id;
		inputElement.innerText = oldTextAreaElement.innerText;
		
		submitForm.appendChild(inputElement);
	}
	
	if (formSubmit)
		submitForm.submit();
}

function CopyElementsToIFrameManually(iframeId,formId,inputType,inputName,inputId,inputValue){
	var targetFrame = window.frames[iframeId];
	var submitForm = targetFrame.document.getElementById(formId);

	var inputElement = targetFrame.document.createElement("<input/>");
	inputElement.type = inputType;
	inputElement.name = inputName;
	inputElement.id = inputId;
	inputElement.value = inputValue;
	
	submitForm.appendChild(inputElement);
}

//***********************************************************************
// functions to resize the image
//***********************************************************************

function setImageSize(imageId,sideLength){
	photoImage = new Image();
	if (document.getElementById(imageId)!=null){
		photoImage.src = document.getElementById(imageId).src;
		
		if(photoImage.height>photoImage.width){
			if (photoImage.height>sideLength){
				var ratio = sideLength/photoImage.height;
				
				document.getElementById(imageId).height=sideLength;
				document.getElementById(imageId).width=photoImage.width*ratio;
			}
		}else{
			if (photoImage.width>sideLength){
				var ratio = sideLength/photoImage.width;
				
				document.getElementById(imageId).width=sideLength;
				document.getElementById(imageId).height=photoImage.height*ratio;
			}
		}
	}
}

//***********************************************************************
// functions to get the height of image
//***********************************************************************

function getImageHeight(imageId,sideLength){
	photoImage = new Image();
	photoImage.src = document.getElementById(imageId).src;
	
	if (photoImage.height>photoImage.width){
		if (photoImage.height>sideLength){
			photoImage.height=sideLength;
		}
	}else{
		if (photoImage.width>sideLength){
			photoImage.height=photoImage.height*sideLength/photoImage.width;
		}
	}

	return photoImage.height;
}

//***********************************************************************
// round the floating value to the value in search table
//***********************************************************************
function roundFloatingByIDByIndex(inputID,roundDigits){
	var i=1;
	while(true){
		var element=document.getElementById(inputID+"_"+i);
		if(element==null){
			break;
		}
		element.innerText=roundFloating(element.innerText,roundDigits);
		i++;
	}
}

//***********************************************************************
// Return error message array after passed in a error message array
//***********************************************************************
function returnJnHtmlErrorMessageString(errorArray){
	var errorMessage="";
	
	if (errorArray!=null){
		if (errorArray[0]!=null){
			if (errorArray[0][1]!=null){
				errorMessage=errorArray[0][0]() + ": ";
				for (var i=1;errorArray[0][i]!=null;i++){
					if (i>1){
						errorMessage = errorMessage + ", ";
					}
					errorMessage=errorMessage+errorArray[0][i]();
				}
			}
		}
		if (errorArray[1]!=null){
			if (errorArray[1][1]!=null){
				if (errorMessage!=""){
					errorMessage = errorMessage + "; ";
				}
				errorMessage=errorMessage+errorArray[1][0]() + ": ";
				for (var i=1;errorArray[1][i]!=null;i++){
					if (i>1){
						errorMessage = errorMessage + ", ";
					}
					errorMessage=errorMessage+errorArray[1][i]();
				}
			}
		}
	}
	return errorMessage;
}

//***********************************************************************
// Return trim for input string str
//***********************************************************************
function trimString(str){
	while (str.charAt(0) == ' ')
		str = str.substring(1);
	while (str.charAt(str.length - 1) == ' ')
		str = str.substring(0, str.length - 1);
	return str;
}


//***********************************************************************
// Get the column name of a search resulttable 
// 		and put in the select options
//***********************************************************************
function assignSortingOptionInnerTextsFromTable(tableId,selectOptionId,hasMatchResult,functionType){
	var table=document.getElementById(tableId);

	if (hasMatchResult=="true"){
		var firstColumnTd=table.firstChild.firstChild.nextSibling.firstChild.nextSibling;
	}else{
		var firstColumnTd=table.firstChild.firstChild.firstChild.nextSibling;
	}

	if (functionType=="generate"){
		removeAllOption(document.getElementById(selectOptionId));
		assignSortingOptionInnerTextsFromColumn(firstColumnTd,selectOptionId);
	}else if (functionType=="changeLang"){
		changeSortingOptionInnerTextsFromTable(firstColumnTd,selectOptionId,0);
	}
}

function assignSortingOptionInnerTextsFromColumn(targetTd,selectOptionId){
	if (targetTd.firstChild.nextSibling.nextSibling.value!=""){
		var selectBox=document.getElementById(selectOptionId);
		var newOption=document.createElement("option");
		newOption.text=targetTd.firstChild.innerText;
		newOption.value=targetTd.firstChild.nextSibling.nextSibling.value;
		
		selectBox.add(newOption);
	}
	if (targetTd.nextSibling!=null){
		assignSortingOptionInnerTextsFromColumn(targetTd.nextSibling,selectOptionId);
	}
}

function changeSortingOptionInnerTextsFromTable(targetTd,selectOptionId,optionNum){
	if (targetTd.firstChild.nextSibling.nextSibling.value!=""){
		document.getElementById(selectOptionId).options[optionNum].innerText=targetTd.firstChild.innerText;
		optionNum=optionNum+1;
	}
	
	if (targetTd.nextSibling!=null){
		changeSortingOptionInnerTextsFromTable(targetTd.nextSibling,selectOptionId,optionNum);
	}
}

function assignSortingOptionInnerTextsFromGeneralContainerPageTable(tableId,selectOptionId,hasMatchResult,functionType){
	var table=document.getElementById(tableId);

	//if (hasMatchResult=="true"){
		var firstColumnTd=table.firstChild.firstChild.nextSibling.firstChild.nextSibling;
	//}else{
	//	var firstColumnTd=table.firstChild.firstChild.firstChild.nextSibling;
	//}
	
	if (functionType=="generate"){
		removeAllOption(document.getElementById(selectOptionId));
		assignSortingOptionInnerTextsFromGeneralContainerPageColumn(firstColumnTd,selectOptionId);
	}else if (functionType=="changeLang"){
		changeSortingOptionInnerTextsFromGeneralContainerPageTable(firstColumnTd,selectOptionId,0);
	}
}

function assignSortingOptionInnerTextsFromGeneralContainerPageColumn(targetTd,selectOptionId){
	if (targetTd.firstChild.firstChild.firstChild.firstChild.firstChild.nextSibling.value!=""){
		var selectBox=document.getElementById(selectOptionId);
		var newOption=document.createElement("option");
		newOption.text=targetTd.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.innerText;
		newOption.value=targetTd.firstChild.firstChild.firstChild.firstChild.firstChild.nextSibling.value;
		
		selectBox.add(newOption);
	}
	
	if (targetTd.nextSibling!=null){
		assignSortingOptionInnerTextsFromGeneralContainerPageColumn(targetTd.nextSibling,selectOptionId);
	}
}

function changeSortingOptionInnerTextsFromGeneralContainerPageTable(targetTd,selectOptionId,optionNum){
	if (targetTd.firstChild.firstChild.firstChild.firstChild.firstChild.nextSibling.value!=""){
		var tdInnerText = targetTd.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.innerText;
		document.getElementById(selectOptionId).options[optionNum].innerText=tdInnerText;
		optionNum=optionNum+1;
	}
	
	if (targetTd.nextSibling!=null){
		changeSortingOptionInnerTextsFromGeneralContainerPageTable(targetTd.nextSibling,selectOptionId,optionNum);
	}
}

function updateSortByField(selectBoxElementId,value,label){
	var selectBox=document.getElementById(selectBoxElementId);
	var newOption=document.createElement("option");
	newOption.text=label;
	newOption.value=value;
	selectBox.add(newOption);
}

//first function for keeping the value of search creteria and 
//	return back to the elements after the secord function was called

function CopyElementsIDValueToArrays(formElement,MainArray,disabledArray){
	PageDisable(disabledArray);
	
	var inputElements = formElement.getElementsByTagName("INPUT");
	var selectElements = formElement.getElementsByTagName("SELECT");
	
	MainArray[0].length=0;
	MainArray[1].length=0;
	MainArray[2].length=0;
	
	for(var i=0;inputElements[i]!=null;i++){
		MainArray[0].push(inputElements[i].type);
		MainArray[1].push(inputElements[i].id);
		if (inputElements[i].type=="checkbox"){
			MainArray[2].push(inputElements[i].checked);
		}else{
			MainArray[2].push(inputElements[i].value);
		}
	}
	
	for(var i=0;selectElements[i]!=null;i++){
		MainArray[0].push(selectElements[i].tagName);
		MainArray[1].push(selectElements[i].id);
		MainArray[2].push(selectElements[i].selectedIndex);
	}
	
	PageEnable(disabledArray);
}

function ResetElementsIDValueFromArrays(MainArray,disabledArray){
	PageDisable(disabledArray);
	if (MainArray!=null && MainArray[1]!=null){
		if (MainArray[1].length!=0){
			for(var i=0;i<MainArray[0].length;i++){
				if (MainArray[0][i]!=""){
					if ((trimString(MainArray[1][i])!="")&&(MainArray[1][i]!=null)){
						if (MainArray[0][i]=="text"){
							if (document.getElementById(MainArray[1][i])!=null){
								document.getElementById(MainArray[1][i]).value=MainArray[2][i];
							}
						}else if (MainArray[0][i]=="hidden"){
							if (document.getElementById(MainArray[1][i])!=null){
								document.getElementById(MainArray[1][i]).value=MainArray[2][i];
							}
						}else if (MainArray[0][i]=="checkbox"){
							if (document.getElementById(MainArray[1][i])!=null){
								document.getElementById(MainArray[1][i]).checked=MainArray[2][i];
							}
						}else if (MainArray[0][i]=="SELECT"){
							if (document.getElementById(MainArray[1][i])!=null){
								if (document.getElementById(MainArray[1][i]).options.length>0){
									document.getElementById(MainArray[1][i]).options[MainArray[2][i]].selected=true;
								}
							}
						}
					}
				}
			}
		}
	}
	
	PageEnable(disabledArray);
}

//first function for keeping the value of search creteria when just loaded the page and 
//	return back to the elements after the secord function was called
	
// arrays for search creteria
var ResetSearchCreteriaPageName = "";
var ResetSearchCreteriaType = new Array();
var ResetSearchCreteriaId = new Array();
var ResetSearchCreteriaValue = new Array();
var ResetSearchCreteriaArray = new Array(ResetSearchCreteriaType,ResetSearchCreteriaId, ResetSearchCreteriaValue)

function CopyElementsIDValue(formElement,disabledArray){
	CopyElementsIDValueToArrays(formElement,ResetSearchCreteriaArray,disabledArray);
}

function ResetElementsIDValue(disabledArray){
	ResetElementsIDValueFromArrays(ResetSearchCreteriaArray,disabledArray)
}

//functions for keeping the value of search creteria when submit the page and 
//	return back to the elements after reloaded the page

function CopyElementsIDValueToOpener(pageName,formElement,disabledArray){
	opener.SearchCreteriaPageName=pageName;
	
	CopyElementsIDValueToArrays(formElement,opener.SearchCreteriaArray,disabledArray);
}


function CopyElementsIDValueToOpenerOpener(pageName,formElement,disabledArray){
	opener.opener.SearchCreteriaPageName=pageName;
	
	CopyElementsIDValueToArrays(formElement,opener.opener.SearchCreteriaArray,disabledArray);
}


function CopyElementsIDValueFromOpener(pageName,disabledArray){
	if (opener.SearchCreteriaPageName==pageName){
		ResetElementsIDValueFromArrays(opener.SearchCreteriaArray,disabledArray)
	}
	
	opener.SearchCreteriaType.length=0;
	opener.SearchCreteriaId.length=0;
	opener.SearchCreteriaValue.length=0;
	opener.SearchCreteriaPageName="";
}

function CopyElementsIDValueFromOpenerOpener(pageName,disabledArray){
	if (opener.opener.SearchCreteriaPageName==pageName){
		ResetElementsIDValueFromArrays(opener.opener.SearchCreteriaArray,disabledArray)
	}
	
	opener.opener.SearchCreteriaType.length=0;
	opener.opener.SearchCreteriaId.length=0;
	opener.opener.SearchCreteriaValue.length=0;
	opener.opener.SearchCreteriaPageName="";
}

//function for set the codes from array to a column of search result table to meaningful texts
function ChangeLanguageFromCodeToText(columnId,resultArray,creteria,text){
	for (var i=1;document.getElementById(columnId + "_" + i)!=null;i++){
		if (resultArray[i-1] == creteria) 
			document.getElementById(columnId + "_" + i).innerText=text;
	}
}


//***********************************************************************
// String functions
//***********************************************************************
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);
    }
}


//***********************************************************************
// Open image in a popup browser
//***********************************************************************
function OpenPic(link,picWidth,picHeight){
	strFeatures = "top=20,left=0, width=" + picWidth + ", height=" + picHeight + ","
		+ "toolbbar=no,menubar=no,location=no,directories=no,scrollbars=no";
	
	objNewWindow = window.open(link + ".jpg","maskAlbumPhoto",strFeatures);
	window.event.cancelBubble = true;
	window.event.returnValue = false;
	objNewWindow.focus( );
}
