/*******************************************************************************
/* ascii.js - Altair Solutions and Concepts Integrated, Inc.


DESCRIPTION: This file contains a library of functions used in Altair Systems.

  FUNCTIONS:

	nav(foo)
	labasKahon(myBox,myPosition,myLeft,myRight,myTop,myBottom,flags) 
	tagoKahon(myBox) 
	hayLayt(row,color,setClass) 
	hayLaytA(row,val,checkedClass,unCheckedClass)
	xAlert(header,detail,button_func)
	xConfirm(header,detail,button1,button2,YesObj,NoObj)
        xPrompt(header,detail,type,formName,formField,obj)
        xTitle(e,detail,method,width)
        NewWindow(myname,w,h,scroll,menubar,resize)
        xValidate(obj) 
        loadDiv( url, dataToPost, myLeft,myRight,myTop,myBottom,myWidth, divId )
        loadDropDown( url, dataToPost, obj) 
        closeDropDown() 
        xmlSend(url, dataToPost,  returnfunc, funcParam,funcParam2,funcParam3)
        xmlStatus() 
        xmlAddTableRow() 
        xmlDebug() 
        addFormValues(fObj,fName,fValue)
        getFormValuesA(fObj)
	getCheckedRows(container,name)
        getFormValues(src,dest) 
        randomString(foo) 
        MT() 
        minimize(divID)
        maximize(divID)
        supportMinimize( divID, divColor )   
        trimChildren ( mother ) 
        changeInner( elementID, action, nonXMLvalue )
        changeValue( elementID, newValue )
        blurNum(obj,DecPlace) 
        isLineShow(id)
        isLineChecked(obj) 
        SetChecked(val,dml,checkClass,unCheckedClass,obj_type, nonBol) 
        rmChild(id)
        SetLine(val,checkClass,unCheckedClass) 
        hideMe( id, disType)
        getParent( obj, parN)
        ExCol( exID, colID, effectID, disType )
        xmlPrint() 
        xPage(count,curpage,sp_no,ep_no,lp,plimit,color) 
        clearForm(fObj,fN) 
        resetForm(fObj,fN) 
        editRow(trTOedit,trTOhide,param,tpl) 
        editRowData(node) 
        sendRow(trTOshow,trTOremove,trTOhide,param,tpl,func) 
        xmlUpdateTableRow() 
        getRowValues(row) 
        editCell(cellTOedit,value,div,param,tpl,align) 
        sendCell(divTOhide,param,tpl,func) 
        getCellValues(obj) 
        setObjValue(container,name,tag,value) 
        getParentId(obj,reg) 
        getParentTag(obj,tag) 
        getRowColspan(obj) 
        newTRDetail(obj,imgSrc,dataPost,funcParam2,funcParam3) 

        checkReadyState(obj)
        hideSelect(allSelect) 
        showSelect() 
        hideSelectDiv(obj) 
        showSelectDiv() 
        xNewDiv(divId,myWidth,myHeight,myTop,myLeft)
        findPosX(obj,last)
        findPosY(obj,last)
	execJS(node);

        AlertOk() 
        NoKey()
        MD(e) 
        MM(e)
        MU() 
        initHttpRequest() 
	scrollAlert(myBox) 
	xConfirmButton(button) 
        xPromptButton(button,fm,fd,foo) 
        xTitleFunc() 
        loadDivResponseFunc( divId ) 
        loadDropDownFunc() 
        xmlEditCell() 
        xmlUpdateCell() 

*******************************************************************************/

var LastOpenDiv='';
var ConfirmObjects='';
var NoConfirmObjects='';
var alertScrollID='';
var alert_obj=null;
N = (document.all) ? 0 : 1;
var ob;
var over = false; 
var onMenu = false;
var inContextMenu = false;
var ContextMenuOpen = false;
var DivName;
var hasCloseDropDown = false;
var editOn = false;
var debugOn = false;
var lastZindex =0 ;

/*
function _ASCII_submit(event) {
    var target = event ? event.target : this;

    // do anything you like here
    //alert('Submitting form to ' + target.action);

    // call real submit function
    //addFormValues(this,'AltairRemoteIP','1.1.1.1');
    this.submit();
}

// capture the onsubmit event on all forms
window.addEventListener('submit', _ASCII_submit, true);

// If a script calls someForm.submit(), the onsubmit event does not fire,
// so we need to redefine the submit method of the HTMLFormElement class.
HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit;
HTMLFormElement.prototype.submit = _ASCII_submit;
*/

function nav(foo) { 

	var _ACF=document.navform;
	if (_ACF) {
        	clearForm(_ACF, '//');
        	_ACF.tpl.value=foo;
        	_ACF.submit();
	} else {
		addFormValues("document.navform",tpl,foo);
	}
}

function labasKahon(myBox,myPosition,myLeft,myRight,myTop,myBottom,flags) { 

	var ScrollOffset = (document.all)?document.body.scrollTop:window.pageYOffset;
    	if(document.getElementById){ 
			var theBox = document.getElementById(myBox);
			var myMask = document.getElementById('Mask');


			if(flags != 'nomask')
                        {
                                if (myMask) { myMask.style.visibility = 'visible'; myMask.style.display = 'inline'; }
				 hideSelect();

                        }else
			{
				try                              {
                                        supportMinimize( myBox , document.getElementById('u_color').value);
                                }catch(e) { }

			}


			if (theBox) {
				theBox.style.display = 'block';
				
				// NO LONGER NEEDED
				// LastOpenDiv=myBox;

				if (myPosition) theBox.style.position = myPosition;
				if (myLeft) theBox.style.left = myLeft;
				if (myRight) theBox.style.right = myRight;
				if (myTop) theBox.style.top = ScrollOffset>myTop ? ScrollOffset : myTop;
				if (myBottom) theBox.style.bottom = myBottom;

				theBox.style.visibility = 'visible';
				raiseMe(theBox);

			}
	
	}
} 
function tagoKahon(myBox) {

	var tempBox = "";	
	if ( ("" + myBox) != 'undefined')
	{
		tempBox = myBox;
	}else
	{
		tempBox = "myHTTPDiv";
	}
		
	var myMask=document.getElementById('Mask');
	var theBox = document.getElementById( tempBox );


	if (myMask) { myMask.style.visibility = 'hidden'; myMask.style.display = 'none'; }

	if (theBox) 
		if (!(myBox)) { 
			var DropDownBox=document.getElementById("myHTTPDivDropDown");
			if (DropDownBox) DropDownBox.parentNode.removeChild(DropDownBox);
			document.body.removeChild(theBox); 
		} else { 
			 theBox.style.visibility = 'hidden'; theBox.style.display = 'none'; 
		}
	


	showSelect();
	
	over=false;
	clearInterval(alertScrollID);
}

function hayLayt(node,color,setClass) {

	var objRegExp;

	if (typeof node == 'string') var node=document.getElementById(node);
	if (!node) return;

	var css=node.getAttribute('class');
	if (setClass) node.setAttribute(css?'class':'className',setClass);
	if (color) node.style.backgroundColor = color;
}


function hayLaytA(node,val,checkClass,unCheckedClass) {

	var cN='class';
	var ii=0;

	if(!checkClass){ var checkClass = 'trHeader'; }
        if(!unCheckedClass){ var unCheckedClass = 'trOffWhite'; }

	if (typeof node == 'string') var node=document.getElementById(node);
	if (!node) return;

        var css=node.getAttribute('class');
        if (css) { cN='class'; } else { css=node.getAttribute('className'); cN='className'; }
        var _css=explodeArray(css,' ');
        var nCSS='';
        for (ii=0; ii<_css.length; ii++)
             if (_css[ii]!=unCheckedClass && _css[ii]!=checkClass)  nCSS=nCSS+' '+_css[ii];
        node.setAttribute(cN,nCSS+ ' ' +(val? checkClass : unCheckedClass ));
}       


function scrollBox(myBox) {

	if (N)  { 
		var YOffset=window.pageYOffset;
		var XOffset=window.pageXOffset; 
	} else { 
		var YOffset=document.body.scrollTop; 
		var XOffset=document.body.scrollLeft;
	}
 
	var theBox = document.getElementById(myBox);
	if (theBox) {
		 theBox.style.top = YOffset
 	} else {
                clearInterval(alertScrollID);
        }
}

<!----------------edited by rodji on July 30 ,2007-------xalert and xConfirm delted---------->
function xalert(header,detail,button_func){

		x=screen.availWidth;
		alert_obj=button_func;

		var defHeader = document.getElementById("msgAlertHeader");
		var defDetail = document.getElementById("msgAlertDetail");
		
		/* should be firstChild */
		if (defHeader) {
			defHeader.replaceChild(document.createTextNode(header),defHeader.firstChild);
			//defDetail.replaceChild(document.createTextNode(detail),defDetail.firstChild);
			defDetail.innerHTML=detail;
			if (navigator.appName == "Microsoft Internet Explorer") { var YOffset=document.body.scrollTop; } else { var YOffset=window.pageYOffset; }
	
			alertScrollID=setInterval("scrollAlert('AlertMsg')",50)
			labasKahon('AlertMsg','absolute','','',YOffset,'','no close');
		} else {
			alert(detail);
		}
}

function xConfirm(header,detail,button1,button2,obj){

		x=screen.availWidth;

		var defHeader = document.getElementById("msgConfirmHeader");
		var defDetail = document.getElementById("msgConfirmDetail");
		
		/* should be firstChild */
		defHeader.replaceChild(document.createTextNode(header),defHeader.firstChild);
	//	defDetail.replaceChild(document.createTextNode(detail),defDetail.firstChild);
		defDetail.innerHTML=detail;

		document.ConfirmForm.button1.value=button1;
		document.ConfirmForm.button2.value=button2;
		ConfirmObjects=obj;
		if (navigator.appName == "Microsoft Internet Explorer") { var YOffset=document.body.scrollTop; } else { var YOffset=window.pageYOffset; }

		alertScrollID=setInterval("scrollAlert('ConfirmMsg')",50)
		labasKahon('ConfirmMsg','absolute','','',YOffset,'','no close');
}

function xConfirmButton(button) {

	tagoKahon('ConfirmMsg');

	if (ConfirmObjects!='' && button==1) {
		eval(ConfirmObjects);
	} else {
		ConfirmObjects='';
	}
}


function scrollAlert(myBox) {
	if (navigator.appName == "Microsoft Internet Explorer") { var YOffset=document.body.scrollTop; } else { var YOffset=window.pageYOffset; }
	var theBox = document.getElementById(myBox);
	if (theBox) {
		 theBox.style.top = YOffset
	}
	
}

<!------------------------------------------------------------------------------------------ >


//ask User for an input then return the value to the selected form and field
//if no form is found it will return the input instead
//Created by Raji
//Modified by RQ - changed to loadDiv for purposes of reducing the overHead
//date added: 01/07/2007
                               
function xPrompt(header,detail,type,formName,formField,obj){

        var x=screen.availWidth/2-220;
	var y=screen.availHeight/2-200;
        PromptObjects=obj;

	if (N) { 
		var YOffset=window.pageYOffset+y; 
	        var XOffset=window.pageXOffset+x;
	} else { 
		var XOffset=document.body.scrollLeft+x;
		var YOffset=document.body.scrollTop+y; 
	} 

	loadDiv(AltairSystemAction+'-','tpl=/div/prompt&header='+escape(header)+'&detail='+escape(detail)+'&formName='+escape(formName)+'&formField='+escape(formField)+'&type='+escape(type),XOffset,'',YOffset,'','','PromptDiv');
}

function xPromptButton(button,fm,fd,foo) {

        if(button==1){
                if(xValidate(foo.form)){
                        if(eval('document.'+fm)){
                                if(eval('document.'+fm+'.'+fd)){
                                        eval('document.'+fm+'.'+fd).value=foo.value;
                                }else{
                                    var tempchild=document.createElement('input');
                                    tempchild.setAttribute('type','hidden');
                                    tempchild.setAttribute('value',foo.value);
                                    tempchild.setAttribute('name',fd);
                                    eval('document.'+fm+'.appendChild(tempchild)');
                                }
                        }
                        if(PromptObjects!=''){
                               eval(PromptObjects);
                        }
   			tagoKahon('PromptDiv');
			rmChild('PromptDiv');
                } 
        } else {  
                PromptObjects='';
        	tagoKahon('PromptDiv');
		rmChild('PromptDiv');
        }
}

function xTitle(e,detail,method,width){

	var titlediv=document.getElementById('xTitleDiv');
	if (titlediv) {
		rmChild('xTitleDiv');
	}

	if (!e) {
		return;
	}

	if (method=='xml') {
		xmlSend(AltairSystemAction,detail,xTitleFunc,e);
		return;
	}

	/* create a div and name it xAlert */
	var generic=document.getElementById('TitleDiv');
	if (generic) {
		var new_div=document.createElement('div');
		new_div.style.position='absolute';
		raiseMe(new_div);
		if (N) {
			new_div.style.top = e.pageY + 5;
			new_div.style.left = e.pageX;
		} else {
			new_div.style.top = event.clientX + document.body.scrollLeft;
			new_div.style.left = event.clientY + document.body.scrollTop;
      		}
		new_div.setAttribute('id','xTitleDiv');
		if (width) new_div.style.width=width;
		
		var defDetail = document.getElementById("titleDetail");
		defDetail.innerHTML=detail;

		new_div.innerHTML=generic.innerHTML;
		var obj = document.body;
                if (obj) obj.appendChild(new_div);

		
		if ( findPosX(new_div) + new_div.offsetWidth > screen.availWidth - 20) {
				new_div.style.left = parseInt( screen.availWidth) - 20 - parseInt(new_div.offsetWidth) ;
		} 

		if ( findPosY(new_div) + new_div.offsetHeight > screen.availHeight - 20 ) {
				new_div.style.top = findPosY(new_div) - 3 - parseInt(new_div.offsetHeight);
		}

	}
	
}

function xTitleFunc(e) {

        if(checkReadyState(httpRequest)) {

		var generic=document.getElementById('TitleDiv');
		if (generic) {
			var new_div=document.createElement('div');
			new_div.style.position='absolute';
			raiseMe(new_div);
			if (N) {
				new_div.style.top = e.pageY+5;
				new_div.style.left = e.pageX;
			} else {
				new_div.style.top = event.clientX + document.body.scrollLeft;
				new_div.style.left = event.clientY + document.body.scrollTop;
      			}
			new_div.setAttribute('id','xTitleDiv');
			if (width) new_div.style.width=width;

			var defDetail = document.getElementById("titleDetail");
			defDetail.innerHTML=httpRequest.responseText;

			new_div.innerHTML=generic.innerHTML;
			var obj = document.body;
                	if (obj) obj.appendChild(new_div);

			if ( findPosX(new_div) + new_div.offsetWidth > screen.availWidth - 20) {
				new_div.style.left = parseInt( screen.availWidth) - 20 - parseInt(new_div.offsetWidth) ;
			} 

			if ( findPosY(new_div) + new_div.offsetHeight > screen.availHeight - 20 ) {
				new_div.style.top = findPosY(new_div) - 3 - parseInt(new_div.offsetHeight);
			}

		}
        }
}


function NewWindow(myname,w,h,scroll,menubar,resize){
        var win = null;
        if (resize=='') { var resize="no"; }
        var LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
        var TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
        var settings = 'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',resizable='+resize+',menubar='+menubar;
        win = window.open("",myname,settings)
}

function getElementsByTagNames(list,obj) {

	if (!obj) var obj = document;
	var tagNames = list.split(',');
	var resultArray = new Array();
	for (var i=0;i<tagNames.length;i++) {
		var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j=0;j<tags.length;j++) {
			resultArray.push(tags[j]);
		}
	}
	return resultArray;
}

function getElementFields(fObj) {
	
	var myI='';

	if (typeof fObj == 'string') { 
		var obj = document.getElementById(fObj);
		if (!obj.elements) {
			myI = getElementsByTagNames('input,select,textarea',obj);
		} else {
			myI = obj.elements;
		}
	} else { 	
		if (!fObj.elements) {
			myI = getElementsByTagNames('input,select,textarea',fObj);
		} else { 
			myI = fObj.elements;
		}
	}
	return myI;
}

function xValidate(obj) {
		
		
        var xmesg='';
	var objAtNode='';

	var myI = getElementFields(obj);
	var _i = 0;

        for (_i=0;_i<myI.length;_i++) {

                objAtNode = myI[_i];
                z=objAtNode.type;
               	var ztype=objAtNode.getAttribute('alt');
               	var zid=objAtNode.id;
               	var zv=trimAll(objAtNode.value);

		
		if ( ztype!='nonrequired' && !objAtNode.disabled ) {
	                if (z=='text' || z=='password' || z=='hidden' || z=='file') {
        	                if (ztype!='') {
                	                if (ztype=='string' && zv=='') {
                        	                xmesg=xmesg + '<b>'+zid+'</b>'+ ' is a required field.<br>';
						if (z!='hidden') objAtNode.focus();
                                	}
	                                if (ztype=='date' && !is_Date34(zv)) {
        	                                xmesg=xmesg + '<b>'+zid+'</b>'+' field requires a valid date.<br>';
						if (z!='hidden') objAtNode.focus();
                	                }
                        	        if (ztype=='integer' && !validateInteger(zv)) {
                                	        xmesg=xmesg + '<b>'+zid+'</b>'+' field requires a valid whole number.<br>';
						if (z!='hidden') objAtNode.focus();
                                	}	
					if (ztype=='float' && !validateNumeric(zv)) {
						xmesg=xmesg + '<b>'+zid+'</b>'+' field requires a valid number.<br>';
						if (z!='hidden') objAtNode.focus();
					}
					 if ( ( ztype=='time24' || ztype=='time12' || ztype=='time') && !validateTime(zv)) {
                                	        xmesg=xmesg + '<b>'+zid+'</b>'+' field requires a valid 24 hour time format.<br>';
						if (z!='hidden') objAtNode.focus();
                                	}
	                        }
        	        } 
			if (z=='textarea') {
				if (zid && zv=='') {
					xmesg=xmesg + '<b>'+zid+'</b>'+' is a required field.<br>';
					if (z!='hidden') objAtNode.focus();
				}
			}
	                if (( z=='select-one' || z=='select-multiple' || z=='select')  ) {
                	        zselected=objAtNode.selectedIndex;
				//alert(z+' : '+zid+' : '+zselected);
                        	if (zid) {
                                	if (zselected==0 || zselected<0) {
                                        	xmesg=xmesg + 'Please select a '+ '<b>'+zid+'</b>' + '<br>';
						if (z!='hidden') objAtNode.focus();

	                                }
        	                }
               		 }

		}

        }

	 if (xmesg!='') {

			try {
	                        if (z!='hidden') objAtNode.focus();
        	                xalert("Error",xmesg,objAtNode);
			
			}catch(e) {
				xalert("Error", xmesg);
			}finally {
	                        return false;
			}
                }

        return true;
}

function AlertOk() {
	if (alert_obj) alert_obj.focus();
}	
	
function NoKey(){
	var TempNo=1;
}


function MD(e) {

	if (over) {
		if (N) {
			ob = document.getElementById(DivName?DivName:"myHTTPDiv");
			X=e.layerX;
			Y=e.layerY;

			return false;

		} else {
			ob = document.getElementById(DivName?DivName:"myHTTPDiv");
			ob = ob.style;
			X=event.offsetX;
			Y=event.offsetY;
		}
	}


	if (!inContextMenu && ContextMenuOpen) {
		closeContextMenus();
	} 
}

function MM(e) {

	if (ob) {
		if (N) {
			ob.style.top = e.pageY-Y;
			ob.style.left = e.pageX-X;
			ob.style.bottom = 12000; //ADDED THIS SO THAT DIV BOTTOM ALSO RESIZES
			ob.style.right = 12000; // ADDED THIS SO THAT DIV RIGHT ALSO RESIZES
		} else {
			ob.pixelLeft = event.clientX-X + document.body.scrollLeft;
			ob.pixelTop = event.clientY-Y + document.body.scrollTop;
			return false;
      		}
   	}
}


function MU() {
	ob = null;
}


/* deprecated per W3C standar 
if (N) {
	document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP);
	
}

document.onmousedown = MD;
document.onmousemove = MM;
document.onmouseup = MU;
*/

if (N) {
    document.addEventListener("mousemove", MM,   true);
    document.addEventListener("mouseup",   MU, true);
    document.addEventListener("mousedown", MD, true);
   // event.preventDefault();
} else {
    document.attachEvent("onmousemove", MM);
    document.attachEvent("onmouseup",   MU);
    document.attachEvent("onmousedown", MD);
    //window.event.cancelBubble = true;
    //window.event.returnValue = false;
}


var httpRequest;
var divPosition;
var divLeft;
var divRight;
var divTop;
var divBottom;
var divWidth;
var DropDownObj;
var divHit;
var DivDropDownHeight;

function initHttpRequest() {

	 httpRequest=null;
	//if (typeof ActiveXObject != 'undefined') {
	//	httpRequest = new ActiveXObject('Microsoft.XMLHTTP');
	//}
	//else if (typeof XMLHttpRequest != 'undefined') {
	//	httpRequest = new XMLHttpRequest();
	//}
	try{
   		 // Firefox, Opera 8.0+, Safari
   		 httpRequest=new XMLHttpRequest();
   	 	}catch (e){
   		// Internet Explorer
    try{
      	 httpRequest=new ActiveXObject("Msxml2.XMLHTTP");
      	}catch (e){
    try{
         httpRequest=new ActiveXObject("Microsoft.XMLHTTP");
        }catch (e){
        alert("Your browser does not support AJAX!");
        return false;
        }
      }
    }
		



}

//added new parameter which allows the loadDiv to have a specified div ID
//approved by RQ                
//edited on November 25, 2006 by Raphael 
function loadDiv( url, dataToPost, myLeft,myRight,myTop,myBottom,myWidth, divId )
{

     	divLeft=myLeft;
        divRight=myRight;
        divTop=myTop;
        divBottom=myBottom;
	divWidth=myWidth; //added the Missing div Width;

        if (httpRequest) {
                if (httpRequest.readyState>0 && httpRequest.readyState<4)
                        return;
        }

        initHttpRequest();
        if (httpRequest) {


                if ( ("" + divId) != 'undefined'  )
                {
			//passes the DIV id
                        httpRequest.onreadystatechange=function() { loadDivResponseFunc( divId ) };

                }else
                {
			//the old loadDiv function that does not specify the div ID
                        httpRequest.onreadystatechange=loadDivResponseFunc;
                }

                httpRequest.open('POST', url, true);
                httpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                httpRequest.setRequestHeader('Referer',document.referrer);

                //alert("about to post the data");
                httpRequest.send(dataToPost);
        }
        else {
                alert("Your browser does not support XMLHTTP.");
        }
}



function loadDropDown( url, dataToPost, obj) 
{	
	DropDownObj=obj;
	initHttpRequest();
	if (httpRequest) {
                if (httpRequest.readyState>0 && httpRequest.readyState<4)
                        return;
        }
	if (httpRequest) {
		httpRequest.onreadystatechange=loadDropDownFunc;
		httpRequest.open('POST', url, true);
		httpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		httpRequest.setRequestHeader('Referer',document.referrer);

		//alert("about to post the data ="+dataToPost );
		httpRequest.send(dataToPost);
	}
	else {
		alert("Your browser does not support XMLHTTP.");
	}
}		
	

function checkReadyState(obj)
{
  if(obj.readyState == 4)
  {
	//alert(obj.status);
    if(obj.status == 200)
    {
      return true;
    }
    else
    {
     	if (obj.status == 404 ) {
		alert ( ' File not Found. ');
	}
	if (obj.status == 500 ) {
		alert ( ' Internal Server Error. ');
	}
	// alert("Problem retrieving XML data : "+obj.status);
    }
  }
}


//added new parameter which allows the creation of a div with a specific div ID
//approved by RQ                
//edited on November 25, 2006 by Raphael 
function loadDivResponseFunc( divId ) {
	
	var dv = '';
	var obj = '';

        if(checkReadyState(httpRequest))
        {
                var divName = ""
		var flags= "";
                if ( ("" + divId) != 'undefined')
                {
			//give the div the variable divID
                        divName = divId;
			flags = "nomask";
			//alert (divName);
                }else{
			//supportts the old loadDivResponse
                        divName = 'myHTTPDiv';
                }

                var hideBox = document.getElementById(divName);

                if ( hideBox )
                {
			//change the already present div
                        hideBox.innerHTML=httpRequest.responseText;
			execJS(hideBox);
                }
                else{
			dv = document.createElement('div'); // create dynamically div tag
                        dv.setAttribute('id', divName );       //give id to it
                        dv.style.display='none';

                        dv.innerHTML=httpRequest.responseText;  

                        obj=document.body;
                        if (obj) {
                        	obj.appendChild(dv);
				execJS(dv);
                        }
                }

		if( document.getElementById('LoadDiv') )
                {
                        tagoKahon('LoadDiv'); //HIDES THE LOADING
			document.body.removeChild(document.getElementById('LoadDiv')); 
                }

               labasKahon( divName ,'absolute',divLeft,divRight,divTop,divBottom, flags);

		if ( hideBox ) {  }
		else
		{
			obj=document.body;
                 	obj.style.zIndex=1;
		}
        }else
	{

		//CREATES A LOADING 
                var blankdv=document.getElementById('BlankDiv');
                var loaddv=document.getElementById('LoadDiv');

                if (blankdv && !loaddv) {
                        dv = document.createElement('div'); // create dynamically div tag
                        dv.setAttribute('id',"LoadDiv");       //give id to it
                        dv.style.display='none';
                        dv.innerHTML=blankdv.innerHTML;

                        obj=document.body;
                        if (obj) {
                                obj.appendChild(dv);
                        }

                        labasKahon('LoadDiv','absolute',divLeft,divRight,divTop,divBottom);
                }
	}
}



function loadDropDownFunc() {

	var dv = '';

	if(checkReadyState(httpRequest))
  	{
		dv = document.getElementById("myHTTPDivDropDown");
		if (!dv) {
			dv = document.createElement('div'); // create dynamically div tag
			dv.setAttribute('id',"myHTTPDivDropDown");       //give id to it
			dv.style.display='none';

			obj=DropDownObj.parentNode;
			if (obj) {
				obj.insertBefore(dv,DropDownObj);
				while (obj.nodeName != 'DIV' && obj.nodeName!='BODY') {
					obj=obj.parentNode;
				}
				divHit=0;
				if (obj.nodeName=='DIV') hideSelectDiv(obj);
			}
		}
		dv.style.width=(N)?window.innerWidth:document.body.clientWidth;
		if (divWidth) { 
			dv.style.width=divWidth; 
		} else 
		if (DropDownObj.style.width) {
			if (DropDownObj.style.width.search(/%/)) {
				dv.style.width=DropDownObj.offsetWidth;
			} else {
			 	dv.style.width=DropDownObj.style.width;
			}
		} else {
			dv.style.width=DropDownObj.offsetWidth;
		}


		dv.innerHTML=httpRequest.responseText;
		execJS(dv);

		/* search for a minimum width in the file */
		zw_s=httpRequest.responseText.search(/Minimum Width\:/i);
                if (zw_s>0) {
                        zw_e=httpRequest.responseText.substr(zw_s).search(/--\>/);
                        dv.style.width=httpRequest.responseText.substr(zw_s+15,zw_e-15);
                }
		
		dv.style.display='inline';
		raiseMe(dv);

	} else {
	        dv = document.getElementById("myHTTPDivDropDown");
                if (!dv) {
                        dv = document.createElement('div'); // create dynamically div tag
                        dv.setAttribute('id',"myHTTPDivDropDown");       //give id to it
			dv.style.display='none';

                        obj=DropDownObj.parentNode;
                        if (obj) {
                                obj.insertBefore(dv,DropDownObj);
                                while (obj.nodeName != 'DIV' && obj.nodeName!='BODY') {
                                        obj=obj.parentNode;
                                }
                                divHit=0;
                                if (obj.nodeName=='DIV') hideSelectDiv(obj);
                        }
			dv.style.marginTop=DropDownObj.offsetHeight;
			dv.style.position='absolute';

			dv.innerHTML = '<img src="/images/'+AltairSystemColor+'/loading.gif" alt="">';
			dv.style.display='';
		}
        }
}

function closeDropDown() {
	var DropDownBox=document.getElementById("myHTTPDivDropDown");
	if (DropDownBox) {
		DropDownBox.parentNode.removeChild(DropDownBox);
	}
	showSelectDiv();
	if (hasCloseDropDown)
		CloseDropDownOverload();
}

//added new parameter which allows the return function to contain a single parameter
//approved by RQ
//edited on November 24, 2006 by Raphael 

function xmlSend(url, dataToPost,  returnfunc, funcParam,funcParam2,funcParam3){
		
	/* clean up xTitle on changing pages */
	var titlediv=document.getElementById('xTitleDiv');
        if (titlediv) {
                rmChild('xTitleDiv');
        }
        initHttpRequest();
        if (httpRequest) {

				
		if (funcParam) {
	//		subFunc = returnfunc;
	//		httpRequest.onreadystatechange=function() { eval(  'subFunc(' + funcParam + ')' ) ;}
			httpRequest.onreadystatechange=function() { returnfunc(funcParam,funcParam2,funcParam3); }
		} else { 
			if (returnfunc)
				httpRequest.onreadystatechange= returnfunc;
		}

                httpRequest.open('POST', url, true);
                httpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                httpRequest.setRequestHeader('Referer',document.referrer);

                httpRequest.send(dataToPost);
		//alert(dataToPost);
        }
        else {
                alert("Your browser does not support XMLHTTP.");
        }
}




function xmlStatus() {
		
		if(checkReadyState(httpRequest)) {
               var dv = httpRequest.responseXML;
			   
		if (!dv) {
			var dv = document.createElement('pre'); // create dynamically div tag
                	dv.setAttribute('id',"xmlDebugLine");       //give id to it
                	dv.innerHTML=httpRequest.responseText;
					execJS(dv,1);
		} else {
				
				dv=dv.documentElement;
            	for (j=0;j<dv.childNodes.length;j++) {
                        	if (dv.childNodes[j].nodeName=='script'){
                                	eval(dv.childNodes[j].firstChild.nodeValue);
				} // end for
			
			}	
                }
        }
		
	}

function xmlExecJs() {

        if(checkReadyState(httpRequest)) {

		var dv = document.createElement('pre'); // create dynamically div tag
                dv.setAttribute('id',"xmlDebugLine");       //give id to it
                dv.innerHTML=httpRequest.responseText;

                var obj=document.body;
                if (obj) {
                        obj.appendChild(dv);
                }
        }
}


function xmlAddTableRow() {

        var attr_list = ["id","onmouseover","onmouseout","onkeypress","onchange","onclick","onkeyup","ondbclick","name","value","class","className","colspan","nowrap"];
        var xmlData = httpRequest.responseXML.documentElement.getElementsByTagName("data");
	var ii = 0;
	var response = '';
	var _tr = '';
	var newTR = 0;
	var before = '';

	for (ii=0; ii<xmlData.length; ii++) {
		response = xmlData[ii];

        	var new_id=response.attributes.getNamedItem('id');
		if (new_id) { _tr = document.getElementById(new_id.value); }
		if (!_tr) { newTR=1; } else { newTR=0; }

		if (newTR) {
        		var _tr_clone=response.attributes.getNamedItem("tr");
			_tr_obj=response.attributes.getNamedItem("before");
        		if (!_tr_clone) continue;

			if (!_tr_obj) _tr_obj=_tr_clone;

        		obj1=document.getElementById(_tr_clone.value);
			if (!obj1) continue;
			before = document.getElementById(_tr_obj.value);

			_tr = document.createElement('tr');
        		for (var i=0;i<attr_list.length;i++) {
                		attr=obj1.getAttribute(attr_list[i]);
                		if (attr) {
                        		if ( typeof attr_list[i] =='function') { eval('_tr.'+attr_list[i]) = attr; } else { _tr.setAttribute(attr_list[i],attr); }
                		}
        		}
        		if (new_id) { _tr.setAttribute('id',new_id.value); }

		} else {
			obj1 = _tr;
		}

        	var obj=obj1.firstChild;
        	var data=response.firstChild;
        	while (obj && data) {
                 	if (obj.nodeName=='TD') {
                        	if (newTR) {
					 _td = document.createElement('td'); 
				} else {
					 _td = obj;
				}

                        	while ( data.nodeName!='TD' && data.nodeName!='td') {
					if (data.nodeName == 'SCRIPT' || data.nodeName == 'script')
						if (data)
							if (data.firstChild)
								if (data.firstChild.nodeValue)
									eval(data.firstChild.nodeValue);
                                	data=data.nextSibling;
                                	if (!data) break;
                        	}

				if (newTR) {
                        		for (var i=0;i<attr_list.length;i++) {
                                		attr=obj.getAttribute(attr_list[i]);
                                		if (attr) {
                                        		if ( typeof attr_list[i] =='function') { eval('_td.'+attr_list[i]) = attr; } else { _td.setAttribute(attr_list[i],attr); }
                                		}
                        		}
				}

                        	if (data) {
                                	if (data.firstChild)
                                        	if (data.firstChild.nodeValue) {
							 _td.innerHTML=data.firstChild.nodeValue;
						}
                        	}

				if ( newTR ) {
                        		_tr.appendChild(_td);
				}
				execJS(_td);
                		if (data) data=data.nextSibling;
                	}
                	obj=obj.nextSibling;
        	}
        	if (newTR) {
			obj1.parentNode.insertBefore(_tr,before);
		} else {
			hideMe(_tr.id,'');
		}
	}
}

function xmlDebug() {
        if(checkReadyState(httpRequest)) {

		alert(httpRequest.responseText);

		var dv = document.createElement('pre'); // create dynamically div tag
                dv.setAttribute('id',"xmlDebugLine");       //give id to it
                dv.innerHTML=httpRequest.responseText;

                var obj=document.body;
                if (obj) {
                        obj.appendChild(dv);
                }
        }
}

function addFormValues(fObj,fName,fValue)
{
	if (typeof fObj == 'string') {
		var tempName = fObj;
		var tempAr = tempName.split('.');
		var fObj = document.createElement('form');
		fObj.name = tempAr[1];
		fObj.action = AltairSystemAction;
		fObj.method = 'post';
		document.body.appendChild(fObj2);
	}

	var tempA = eval( "fObj." + fName);


	if (typeof tempA != 'object' && typeof tempA != 'undefined') {
		if ( ! tempA.value ) tempA = null;
	}

	if (typeof tempA == 'undefined' || ! tempA ) {

		var _new_input=document.createElement('input');
       		_new_input.name=fName+'';
       		_new_input.type="hidden";
       		_new_input.value=fValue;
		_new_input.setAttribute('alt','dynamic');

		fObj.appendChild(_new_input);	

	} else {

		tempA.value = fValue;
	}
}
	

function getFormValuesA(fObj)
{
    var str = "";
	var myI = getElementFields(fObj);
	
	for (var i=0;i<myI.length;i++) {
		var objAtNode = myI[i];
		if (objAtNode.disabled) continue;
                switch(objAtNode.type)
	        {
	 		  case "checkbox":
					   if (objAtNode.checked) 
						str += objAtNode.name + "=" + escape(objAtNode.value) + "&";
				 	   break;
	   		  case "radio":
					   if (objAtNode.checked)
                                		str += objAtNode.name + "=" + escape(objAtNode.value) + "&";
                        		   break;
	   		  case "textarea":	
	   	          case "hidden":
           	          case "text":
	   	          case "password":
                			    str += objAtNode.name + "=" + escape(objAtNode.value) + "&";
                 			    break;
           		  case "select-one":
					   if (objAtNode.options.length && objAtNode.selectedIndex>-1) 
                				str += objAtNode.name + "=" + objAtNode.options[objAtNode.selectedIndex].value + "&";
					  
                			   break;
		}
       }
   

       str = str.replace(/\+/g,'%2B');
       str = str.substr(0,(str.length - 1));
       return str;
}

function getCheckedRows(container,name) {

 	var str = "";
	var ii=0;

	if (name) {
		var objRegExp = new RegExp(name,"i");
	}

	obj=document.getElementById(container);
	if (obj) {
	/* get input */
		myI = obj.getElementsByTagName('input');
		for (i=0;i<myI.length;i++) {
			var objAtNode = myI[i];
			switch (objAtNode.type) {
           			case "checkbox":
                        		if (objAtNode.checked ) {
						var _tr=getParentTag(objAtNode,'tr');
						//alert(getParentTag(objAtNode,'tr').id);
						if (name) {
						//	alert('['+name+'] : ['+objAtNode.name+ '] : '+objRegExp.test(objName));
							if ( objRegExp.test(objAtNode.name) )  {
								if (_tr) str += 'rowID' + (ii) + "=" + escape(_tr.id) + "&";
                                				str += 'row'+ (ii++) + "=" + escape(objAtNode.value) + "&";
							}
						} else {
							if (_tr) str += 'rowID' + (ii) + "=" + escape(_tr.id) + "&";
                                			str += row+ (ii++) + "=" + escape(objAtNode.value) + "&";
						}
					}
                        		break;
			}
		}
	}

	if (ii>0) str += 'rowCnt=' + ii + "&";

   str = str.replace(/\+/g,'%2B');
   str = str.substr(0,(str.length - 1));
   return str;
}

function getFormValues(src,dest) {


	if (!dest) { return getFormValuesA(src); }

	var myI = getElementFields(src);		
	
	for (i=0;i<myI.length;i++) {
		var objAtNode = myI[i];
		if (objAtNode.disabled) continue;
                switch(objAtNode.type)
                 {
                        case "checkbox":
                                if (objAtNode.checked)
                                        addFormValues(dest,objAtNode.name,objAtNode.value);
                                break;
                        case "radio":
                                if (src.elements[i].checked)
                                        addFormValues(dest,objAtNode.name,objAtNode.value);
                                break;
                        case "textarea":
                        case "hidden":
                        case "text":
                        case "password":
                                        addFormValues(dest,objAtNode.name,objAtNode.value);
                                break;
                        case "select-one":
                                if (objAtNode.options.length && objAtNode.selectedIndex>-1)
                                       addFormValues(dest,objAtNode.name,objAtNode.options[objAtNode.selectedIndex].value);
                                break;
                }
       }
}

function randomString(foo) {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var randomstring = '';
	for (var i=0; i<foo; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;
}

function hideSelect(allSelect) {
	var selectBoxesCnt=document.getElementsByTagName("select").length;
	if (selectBoxesCnt>0) {
		var selectBoxes=document.getElementsByTagName("select");
		for (var i=0;i<selectBoxesCnt;i++) {
			//var zbox=document.getElementById("ibox_"+selectBoxes[i].name);
			var hbox=selectBoxes[i];
			obj=hbox.parentNode;
			while (obj.nodeName != 'BODY' && obj.nodeName != 'DIV' ) {
				obj=obj.parentNode;
			}
			
			//alert(' box =>'+hbox.options.length);

			if ( (obj.nodeName != 'DIV' || allSelect ) && hbox.style.display!='none') {
				var zbox = document.createElement("input");
				zbox.setAttribute('type','text');
				zbox.setAttribute('id','zbox-replacement');
					
				if (hbox.options.length>0) zbox.value=hbox.options[hbox.selectedIndex>0?hbox.selectedIndex:0].text;
				if (hbox.style.width) zbox.style.width=hbox.style.width; else zbox.style.width=hbox.offsetWidth;
				hbox.parentNode.appendChild(zbox);
				hbox.style.display='none';
			}
		}
	}
}

function showSelect() {
	
	while (obj=document.getElementById("zbox-replacement")) 
		obj.parentNode.removeChild(obj);

	var selectBoxesCnt=document.getElementsByTagName("select").length;
	if (selectBoxesCnt>0) {
		var selectBoxes=document.getElementsByTagName("select");
		for (i=0;i<selectBoxesCnt;i++) {
			var hbox=selectBoxes[i];
			hbox.style.display='inline';
		}
	}
}


function hideSelectDiv(obj) {

	//alert(obj.nodeName+' '+obj.id);
	if (obj.hasChildNodes())
 	{
   		var children = obj.childNodes;
   		for (var i = 0; i < children.length; i++) {
			if (children[i].nodeType==1) {
				if (children[i].id=='myHTTPDivDropDown') {
					//alert(children[i].id+' '+children[i].nodeName+' '+children[i].nodeType);
					divHit=1;
					//alert(DivDropDownHeight);
				} else if (children[i].nodeName=='SELECT' && divHit==1) {
					//alert(children[i].id+' '+children[i].nodeName+' '+children[i].nodeType+' '+children[i].offsetTop+' '+DivDropDownHeight);
					if (children[i].offsetTop<DivDropDownHeight) {
						var hbox=children[i];
						var zbox = document.createElement("input");
						zbox.setAttribute('type','text');
						zbox.setAttribute('id','zbox-divdropdown-replacement');
					
						if (hbox.options.length>0) zbox.value=hbox.options[hbox.selectedIndex>0?hbox.selectedIndex:0].text;
						if (hbox.style.width) zbox.style.width=hbox.style.width; else zbox.style.width=hbox.offsetWidth;
						hbox.parentNode.appendChild(zbox);
						hbox.style.display='none';
					}
				} else {
					DivDropDownHeight=children[i].offsetTop+children[i].offsetHeight;
					hideSelectDiv(children[i]);
				}
			};
   		};
 	};
	/* traverse the children */
}

function showSelectDiv() {
	
	while (obj=document.getElementById("zbox-divdropdown-replacement")) 
		obj.parentNode.removeChild(obj);

	var selectBoxesCnt=document.getElementsByTagName("select").length;
	if (selectBoxesCnt>0) {
		var selectBoxes=document.getElementsByTagName("select");
		for (i=0;i<selectBoxesCnt;i++) {
			var hbox=selectBoxes[i];
			obj=hbox.parentNode;
                        while (obj.nodeName!='BODY' && obj.nodeName != 'DIV' ) obj=obj.parentNode;

                        if (obj.nodeName == 'DIV') hbox.style.display='inline';
		}
	}
}

function MT( element ) {
	
	var obj = 'main_table';
	if (element) obj = element; 

	obj=document.getElementById(obj);
	return (obj?obj.offsetTop:100);
}


// Removed minimize functions
function supportMinimize( divID, divColor )   {

}

//Trims the Nodes of non-IE for Easier Node Trail of Tables
//Created by Joseph Ryan Cabatingan
//Added on ASCII.js by Rafi on 120706

function trimChildren ( mother ) 
{
	obj = mother;
	try {
	       for(x=0;x<obj.childNodes.length;x++){
	       if( !obj.childNodes[x].innerHTML)
			{
				obj.removeChild(obj.childNodes[x]);	
			}
        	}
	}catch(e)
	{
	}
        return obj;
}


//Changes the INNER HTML of the specidied Element ID with the responseText;
//Created by Rafi
//Added on 121406

function changeInner( elementID, action, nonXMLvalue ){

	
	var obj;

	if (typeof elementID == 'string')  {
		obj=document.getElementById(elementID); 
	} else { 
		obj=elementID; 
	}

	if (nonXMLvalue) {
		if (obj) obj.innerHTML=nonXMLvalue;
		if (action) eval(action);
	} else {

        	if(checkReadyState(httpRequest)) {
                  	  if (obj) {
					 if (debugOn) alert(httpRequest.responseText);
					 obj.innerHTML =  httpRequest.responseText;
					 execJS(obj);
			  }

			  if (action) { eval(action); }
		}
	}
}

function changeValue( elementID, newValue ){

	if (newValue) {
		var obj=document.getElementById(elementID);
		if (obj) obj.value=newValue;
	} 
}

function blurNum(obj,DecPlace,baseAmt,subAmt, pFieldObj) {

	if ( !baseAmt ) { var baseAmt = 0; }
	if ( !subAmt ) { var subAmt = 0; }
	var objRegExp = /(\+|-|\/|\*)/ ;
	var objRegExpP = /\%$/
	var _subAmt = parseFloat(subAmt);
	if (isNaN(_subAmt)) _subAmt = 0.0;

 	if (typeof DecPlace == 'string') {
		if (DecPlace.length == 0) 
			{ DecPlace='2'; }
	} else {
		if (!DecPlace) { DecPlace = '2'; }
	}

	if(obj.value !='') {
                var val = parseFloat(obj.value);
		if ( objRegExpP.test (obj.value)) { val =  val / 100 * parseFloat(baseAmt); } 
		if (isNaN(val) || objRegExp.test (obj.value) ) {
			try {
				val = parseFloat(eval(obj.value));
			} catch (e) { }
		}
                if (isNaN(val)) {
			obj.focus(); 
		} else {
			_subAmt += val;
                        obj.value=val.toFixed(DecPlace);
		}
        } else {
                var blank = (0).toFixed(DecPlace);
                obj.value=blank;
        }
	
	var myP = (1 - ( parseFloat(baseAmt) - _subAmt ) / parseFloat(baseAmt)) * 100; 
	if (pFieldObj) 
		if (pFieldObj.nodeType == 1) {
			pFieldObj.innerHTML = myP.toFixed(DecPlace) + '%';
		} else {
			PFieldObj.value = myP.toFixed(DecPlace);
		}
}


function isLineShow(id){
 	if (document.getElementById(id).alt!='-') return true;
 	return false;
}

function isLineChecked(obj) {

        if (obj) {
                if (obj.hasChildNodes())
                        for (i=0;i<obj.childNodes.length;i++) {
                                if (obj.childNodes[i].firstChild) {
                                        if (obj.childNodes[i].firstChild.nodeName=="INPUT") {
                                                if (obj.childNodes[i].firstChild.type=="checkbox")
                                                        if (obj.childNodes[i].firstChild.checked)
                                                                return true;
                                        }
                                }
                        }
        }

        return false;
}

function SetChecked(val,dml,checkClass,unCheckedClass,obj_type,nonBol,regExName,noHighLight) {

        if(!checkClass){ var checkClass = 'trHeader'; }
        if(!unCheckedClass){ var unCheckedClass = 'trOffWhite'; }
        if(!obj_type) { var obj_type='checkbox'; }

        var dml2 = dml.getElementsByTagName('input'); 
	if (dml2.length==0) {
		dml2=dml.elements;
	}
        var i=0;
	var cond=false;
        for( i=0 ; i<dml2.length ; i++) {
                cond =  (dml2[i].type == obj_type && ( dml2[i]!=val || nonBol )  && dml2[i].disabled=='' ) ;
		if (cond) {
			if ( regExName ) {
				var objRegExp = new RegExp ( regExName,"i");
				if (objRegExp) {
					cond = objRegExp.test (dml2[i].name);
				}
			}
		}

		if (cond) {

                        dml2[i].checked=!nonBol?val:dml2[i].value==val?true:false;

                        if (dml2[i].parentNode.nodeName=='TD' && obj_type=='checkbox' && !noHighLight) {
                                css=dml2[i].parentNode.parentNode.getAttribute('class');
                                if (css) { cN='class'; } else { css=dml2[i].parentNode.parentNode.getAttribute('className'); cN='className'; }
                                _css=explodeArray(css,' ');
                                nCSS='';
                                for (ii=0; ii<_css.length; ii++)
                                        if (_css[ii]!=unCheckedClass && _css[ii]!=checkClass)  nCSS=nCSS+' '+_css[ii];
                                dml2[i].parentNode.parentNode.setAttribute(cN,nCSS+ ' ' +(val? checkClass : unCheckedClass ));
                        }
                }
        }
}

function rmChild(id){

	var hbox = id;
	if (typeof id == 'string') var hbox = document.getElementById(id);
 	if (hbox) {
  		zbox=hbox.parentNode;
  		zbox.removeChild(hbox);
 	}
}

function SetLine(val,checkClass,unCheckedClass) {
	if(!checkClass){ var checkClass = 'trHeader'; }
        if(!unCheckedClass){ var unCheckedClass = 'trOffWhite'; }

        var css=val.parentNode.parentNode.getAttribute('class');
        if (css) { cN='class'; } else { css=val.parentNode.parentNode.getAttribute('className'); cN='className'; }
        var _css=explodeArray(css,' ');
        var nCSS='';
        for (var ii=0; ii<_css.length; ii++)
               if (_css[ii]!=unCheckedClass && _css[ii]!=checkClass) {
		 nCSS=nCSS+' '+_css[ii];
		}
        val.parentNode.parentNode.setAttribute(cN,nCSS + ' '+ (val.checked?checkClass : unCheckedClass) );
}

function hideMe( id, disType, until_end, use_vis)
{
	
	if (typeof id == 'string') {
        	var obj = document.getElementById(id);
		if (obj) { 
			if (use_vis) { obj.style.visibility=disType; } else { obj.style.display=disType };
		} else { alert (id); }
	} else {
		var obj = id;
		while (obj) {
			if ( obj.nodeType == 1 ) {
				if (use_vis) { obj.style.visibility=disType; } else { obj.style.display=disType };
			}
			if (! until_end ) break;
			obj = obj.nextSibling;
		}
	}
}

function getParent( obj, parN)
{
        var par = obj;
        for (i=0; i < parN; i++)
                par = par.parentNode;

        return par;
}

function ExCol( exID, colID, effectID, disType )
{
        if ( document.getElementById(exID).style.display != 'none' )
        {
                hideMe( exID , 'none');
                hideMe( colID, 'inline');
                hideMe( effectID, disType);
        }
        else
        {
                hideMe( colID, 'none');
                hideMe( exID, 'inline');
                hideMe( effectID, 'none');
        }
}

function xNewDiv(divId,myWidth,myHeight,myTop,myLeft){

	
	
	var generic=document.getElementById('GenericDiv');

	if (generic) {
		var new_div=document.createElement('div');
		new_div.style.position='absolute';
		if (myWidth) new_div.style.width=myWidth;
		if (myHeight) new_div.style.height=myHeight;
		if (myTop) new_div.style.top=myTop;
		if (myLeft) new_div.style.left=myLeft;
		raiseMe(new_div);
		new_div.setAttribute('id',divId);
		new_div.innerHTML=generic.innerHTML;
		var obj = document.body;
                if (obj) obj.appendChild(new_div);

		hideSelect(true);

		var children = getElementsByTagNames('span,p,img,table,div',new_div);
		for (var i = 0; i < children.length; i++) {
			if (children[i].id == 'msgClose') {
				if (N) { 
					children[i].setAttribute('onclick','tagoKahon("'+divId+'"); rmChild("'+divId+'")'); 
				}  else { 
					children[i].onclick=function() { tagoKahon(divId); rmChild(divId); }
				}
			}
			if (children[i].id && children[i].nodeName!='div') 
				children[i].setAttribute('id',divId+children[i].getAttribute('id'));
			css=children[i].getAttribute('class'); 
			if (css) { cN='class'; } else { css=children[i].getAttribute('className'); cN='className'; }
			switch (css) {
				case 'magicDiv':
						children[i].setAttribute(cN,'');
						if (myWidth) children[i].style.width=myWidth;
						if (myHeight) children[i].style.height=myHeight;
						break;
				case 'div_t':
						if (N) { 
							children[i].setAttribute('onmouseover','over=true; DivName="'+divId+'"'); 
						}  else { 
							children[i].onmouseover=function() { over=true; DivName=divId; }
						}
						break;
			}
		}
	
		return 1;
	} else {

		return 0;
	}
}



function xmlPrint() {
        if (N) {
                var myWidth = window.innerWidth*.8;
                var myHeight = window.innerHeight;
        } else {
                var myWidth = document.body.clientWidth*.8;
                var myHeight = document.body.clientHeight;
        }

        var obj=document.getElementById('xmlPrintDiv');
        if (!obj) { 
                xNewDiv('xmlPrintDiv',myWidth>900?900:myWidth,myHeight*.7,myHeight*.1,(myWidth*1.2)/2 - (myWidth>900?900:myWidth)/2 ); 
        } else { 
		obj.style.display=''; obj.style.visibility=''; hideSelect(true);
        }

        if(checkReadyState(httpRequest)) {
                obj=document.getElementById("xmlPrintDivmsgDetail");

		var dv = document.createElement('pre'); // create dynamically div tag
               	dv.setAttribute('id',"xmlDebugLine");       //give id to it
               	dv.innerHTML=httpRequest.responseText;

                if (obj) {
                        var _pre=document.getElementById('xmlPrintDivDetail');


                        if (!_pre) {
                                var _div=document.createElement('div');
                                _div.style.overflow='auto';
                                _div.style.width=(Math.floor(parseFloat(myWidth>900?900:myWidth))-30)+'px';
                                _div.style.height=Math.floor(myHeight*.69)+'px';
                                _pre=document.createElement('pre');
                                _pre.setAttribute('id','xmlPrintDivDetail');
                                _pre.appendChild(document.createTextNode(httpRequest.responseText.replace(/\n/g,'\r\n').replace(/---QCGI-Printer-Text---(.|\r|\n)*/,'') ));
                                _div.appendChild(_pre);
                                obj.appendChild(_div);
			
                        } else {
                                var children=_pre.childNodes;
                                if (children.length)
                                        for (var i=0;i<children.length;i++)
                                                _pre.removeChild(children[i]);

                                _pre.appendChild(document.createTextNode(httpRequest.responseText.replace(/\n/g,'\r\n').replace(/---QCGI-Printer-Text---(.|\r|\n)*/,'') ));
                        }

                }
		execJS(dv,1);
        }
}


function xPage(count,curpage,sp_no,ep_no,lp,plimit,color,insertAtId,arg0) {

	var str="";

	//alert(sp_no);

	if (parseInt(count)>parseInt(lp)) {
		var i=parseInt(sp_no);
		if (sp_no-1!=0) 
			str=str+'<img src="/images/'+color+'/14x14/prev.png" width=6 height=11 alt="" border="0" align="absmiddle" onClick="jumpPage('+(parseInt(sp_no)-parseInt(plimit))+','+(parseInt(sp_no)-1)+',\''+arg0+'\')" style="cursor: pointer">&nbsp;';
		while (i<=parseInt(ep_no)) {
			if (i==curpage)  {
				str=str+'<span class="bareBold">'+i+'</span>&nbsp;';
			}  else {
				if ( i<(parseInt(sp_no)+parseInt(plimit))) {
					str=str+'<a onClick="javascript:viewPage('+i+',\''+arg0+'\')" class="bare">'+i+'</a>&nbsp;';
				}
			}
			i++;
		}
		i--;
		if ( curpage!=i && i==(parseInt(sp_no)+parseInt(plimit)) ) {
			jmp=parseInt(sp_no)+parseInt(plimit);
			str=str+'<img src="/images/'+color+'/14x14/next.png" width=6 height=11 alt="" border="0" onClick="jumpPage('+jmp+','+jmp+',\''+arg0+'\')" style="cursor: pointer">';
		}
				
	}

	if (str) {
		if (insertAtId) {
			var obj= document.getElementById(insertAtId);
			if (obj) obj.innerHTML = "Pages: "+str;
		} else {
			document.write("Pages: "+str);
		}
	}
}

function clearForm(fObj,fN) {

	var mySplitResult = fN.split(',');

	for(var i = 0; i < mySplitResult.length; i++) {
		if (mySplitResult[i].charAt(0)=='/' && mySplitResult[i].charAt(mySplitResult[i].length-1)=='/') {
			for (var ii = 0; ii< fObj.elements.length ; ii++) {
                		var z=fObj.elements[ii].type;
				if (z == 'textarea' || z == 'hidden' || z == 'text' || z == 'password') {
					var RegularExpression  =  new RegExp(mySplitResult[i].substr(1,mySplitResult[i].length-2));
					if ( RegularExpression.test ( fObj.elements[ii].name)) {
						 fObj.elements[ii].value='';
						 if (fObj.elements[ii].alt=='dynamic')
							fObj.removeChild(fObj.elements[ii]);
					}
				}
			}
		} else {
			var fNobj=eval('fObj.'+mySplitResult[i]);
			fNobj.value='';
			if (fNobj.alt=='dynamic')
				fObj.removeChild(fNobj);
				
		}
	}
}

function resetForm(fObj,fN) {

	var mySplitResult = fN.split(',');
	var z='';
	var myI= getElementFields(fObj);


	for(var i = 0; i < mySplitResult.length; i++) {
		for (var ii = 0; ii< myI.length ; ii++) {
			objAtNode = myI[ii];
			z='';
			if (mySplitResult[i].charAt(0)=='/' && mySplitResult[i].charAt(mySplitResult[i].length-1)=='/') {
				var RegularExpression  =  new RegExp(mySplitResult[i].substr(1,mySplitResult[i].length-2));
				if ( RegularExpression.test ( objAtNode.name)) {
               				z=objAtNode.type;
				}
			} else {
				if (objAtNode.name == mySplitResult[i] || objAtNode.id == mySplitResult[i]) 
					z=objAtNode.type;
			}
			switch (z) {
				case "radio":
				case "checkbox": objAtNode.checked = false;
						 break;
       				case "textarea":
       				case "hidden":
       				case "text":
       				case "password":
						objAtNode.value='';
						break;
				case "select-one": objAtNode.selectedIndex=0;
	             			            break;
				}
			}
	}
}

function editRow(trTOedit,trTOhide,param,tpl) {

	var cN = 'class';
	if (editOn) return;
	editOn = true;
	
	hideMe(trTOedit,'none');
	hideMe(trTOhide,'none');

	var fObj=document.getElementById(trTOhide);
	if (debugOn) alert(fObj.nodeName);
	var _c = document.createElement(fObj.nodeName);
	_c.setAttribute('id','_E_'+trTOedit);
	
	var obj=fObj.firstChild;
	while (obj) {
		if (obj.nodeType==1) {
			var _e = document.createElement(obj.nodeName);
			_e.setAttribute('id','_E_'+trTOedit+'_'+obj.getAttribute('id'));
			if (obj.colSpan) _e.colSpan=obj.colSpan;
			if (obj.rowSpan) _e.rowSpan=obj.rowSpan;
			var css = obj.getAttribute('class');
			if (css) { cN='class'; } else { css = obj.getAttribute('className'); cN='className'; }
			_e.setAttribute(cN,css);
			_e.noWrap = obj.noWrap;
			_e.innerHTML=obj.innerHTML;
			_c.appendChild(_e);
		}
		obj=obj.nextSibling;
	}
	fObj.parentNode.insertBefore(_c,document.getElementById(trTOedit));
	xmlSend(AltairSystemAction+'-','tpl='+tpl+'&editRowDataRequest=1&row='+trTOedit+'&'+param,editRowData,_c);
}

function editRowData(node) {

	var objRegExp = /^(td|div|span|layer|font)$/i;

        if(checkReadyState(httpRequest)) {
		//document.getElementById(node.id+'_tdaddbtn').innerHTML=''; ... should be included the tpl to come ..
		//alert(httpRequest.responseText);
        	var xmlData = httpRequest.responseXML.documentElement.getElementsByTagName("data")[0];

        	var data=xmlData.firstChild;
                while ( data ) {

			if ( data.nodeName == 'TD' || data.nodeName == 'td') {
				//alert(data.getAttribute('id')+' : '+data.getAttribute('alt'));
				var myS = node.getElementsByTagName(data.getAttribute('alt'));
                		for (var i=0;i<myS.length;i++) {
					var objAtNode = myS[i];
					//alert('ID '+data.getAttribute('id')+': '+objAtNode.name+','+objAtNode.id+','+objAtNode.nodeName);
					if (objAtNode.name == data.getAttribute('id') || objAtNode.id == data.getAttribute('id')) {
						//alert('NODE :'+objAtNode.nodeName);
						if (  objRegExp.test (objAtNode.nodeName) ) {
							//alert(data.firstChild);
							if (data.firstChild) objAtNode.innerHTML = data.firstChild.nodeValue;
						} else {
							if (data.firstChild) objAtNode.value = data.firstChild.nodeValue;
						}
					}
				}
			}
			if (data.nodeName == 'script' || data.nodeName == 'SCRIPT') {
				if (data.firstChild) eval (data.firstChild.nodeValue);

			}
                       	data=data.nextSibling;
        	}
	}
}

function sendRow(trTOshow,trTOremove,trTOhide,param,tpl,func) {

	if (trTOshow) hideMe(trTOshow,'');
	if (trTOremove) rmChild(trTOremove);
	if (trTOhide) hideMe(trTOhide,'none');

	editOn=false;
	xmlSend(AltairSystemAction+'-','tpl='+tpl+'&displayRowDataRequest=1&'+param,func?func:sendRowFunc);
}

function sendRowFunc() {
	if (checkReadyState(httpRequest)) {
		xmlAddTableRow();
	}
}

function getRowValues(row) {

	return getFormValues(row);
}

function editCell(cellTOedit,value,div,param,tpl,align) {

	if (editOn) return;
	editOn = true;

	var obj=document.getElementById(cellTOedit);
	var w=obj.offsetWidth;

	if (div && !tpl) {
                var _div=document.getElementById(div);
        	var x=findPosX(obj,_div.parentNode); 
		var y=findPosY(obj,_div.parentNode);
		_div.style.display='';
		var wc=_div.getElementsByTagName('table')[0].offsetWidth;
                _div.style.left=x-8+(align=='center'?((w-wc)/2):0);
                _div.style.top=y-5;
                _div.style.position="absolute";
		_div.setAttribute('alt',param);
		raiseMe(_div);
		var myI = _div.getElementsByTagName('input');
		if (myI) { myI[0].value=value; myI[0].focus(); }
	}
	if (tpl) {
		var _div=document.getElementById(div);
        	var x=findPosX(obj,_div.parentNode); 
		var y=findPosY(obj,_div.parentNode);
		_div.style.display='';
                _div.style.left=x-8;
                _div.style.top=y-5;
                _div.style.position="absolute";
		_div.setAttribute('alt',param);
		raiseMe(_div);
		xmlSend(AltairSystemAction+'-','tpl='+tpl+'&displayCellDataRequest=1&'+param,xmlEditCell,div,w,align);
	}
}

function xmlEditCell(div,w,align) {
	if (checkReadyState(httpRequest)){
		var _div = document.getElementById(div);
		_div.innerHTML = httpRequest.responseText;
		execJS(_div);
		var wc=_div.getElementsByTagName('table')[0].offsetWidth;
                _div.style.left=_div.style.left+(align=='center'?((w-wc)/2):0);
	}
}

function sendCell(divTOhide,param,tpl,func) {

	if (divTOhide) hideMe(divTOhide,'none');
	editOn = false;

	xmlSend(AltairSystemAction+'-','tpl='+tpl+'&displayRowDataRequest=1&'+param,func?func:xmlUpdateCell);
}

function xmlUpdateCell() {


	if (checkReadyState(httpRequest)){
		var xmlData = httpRequest.responseXML.documentElement.getElementsByTagName("data");

        	for (var ii=0; ii<xmlData.length; ii++) {
                	var response = xmlData[ii];

                	var _tr_update=response.attributes.getNamedItem("id");
			if (_tr_update) {
				var _tr = document.getElementById(_tr_update.value);
				if (_tr) {
        				var data=response.firstChild;
        				if (data) {
                        			while ( data.nodeName!='TD' && data.nodeName!='td') {
                                			data=data.nextSibling;
                                			if (!data) break;
                        			}

                        			if (data) {
                                			if (data.firstChild)
                                        			if (data.firstChild.nodeValue) _tr.innerHTML=data.firstChild.nodeValue;
                        			}
					}
				}

        			var data=response.firstChild;
				while (data) {
					if (data.nodeName == 'SCRIPT' || data.nodeName == 'script') {
                        			if (data) {
                                			if (data.firstChild)
                                        			if (data.firstChild.nodeValue) eval(data.firstChild.nodeValue);
                        			}
					}
					data=data.nextSibling;
				}
			}
		}
	}
}

function getCellValues(obj) {

	var str="";


	while (obj) {
		obj = obj.parentNode;
		if (obj.nodeName == 'TD' || obj.nodeName == 'td') {
			return getRowValues(obj);
		}
	}
	return str;
}

function setObjValue(container,name,tag,value) {

	getObj(container,name,tag).value=value;
}


function findPosX(obj,last)
  {
    var curleft = 0;
    if (last) {
    	if (last.nodeName != 'body' ) {
		while (last && last.nodeName!='DIV' && last.nodeNam!= 'body') {
			last = last.parentNode;
		}
    	}
    }

    /* minus the ovdrtime */
    if(obj.offsetParent)
        while(1) 
        {
	  if (last)  if (last == obj ) break;
          curleft += obj.offsetLeft;
          if(!obj.offsetParent )
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;


    return curleft;
}

function findPosY(obj,last)
  {
    var curtop = 0;
    if (last) {
    	if (last.nodeName != 'body' ) {
		while (last && last.nodeName!='DIV' && last.nodeNam!= 'body') {
			last = last.parentNode;
		}
    	}
    }

    if(obj.offsetParent)
        while(1)
        {
	  if (last) if (last == obj ) break;
          curtop += obj.offsetTop;
          if(!obj.offsetParent) break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }


function getParentId(obj,reg) {

	var RegularExpression  =  new RegExp(reg);
        var par = obj;
	while (1) {
                par = par.parentNode;
		if (!par) break;
		_id = par.getAttribute('id');
		if (_id) {
			if ( RegularExpression.test (_id))  { return par; }
		}
	}
	return null;
}

function getParentTag(obj,tag) {

	var objRegExp = new RegExp('^'+tag+'$',"i");
	var par = obj;
        while (1) {
                par = par.parentNode;
                if (!par) break;
                if ( objRegExp.test (par.nodeName) ) { 
			//alert('match '+tag+' : '+par.nodeName+ ' : '+par.id);
			 return par; 
		}
        }
        return null;
}

function getSiblingTag(obj,tag,dir) {

	var objRegExp = new RegExp('^'+tag+'$',"i");
	var par = obj;
        while (1) {
                if (dir == -1 ) {
			par = par.previousSibling;
		} else {
			par = par.nextSibling;
		}
                if (!par) break;
                if ( objRegExp.test (par.nodeName) ) { 
			//alert('match '+tag+' : '+par.nodeName+ ' : '+par.id);
			 return par; 
		}
        }
        return null;
}


function getRowValue(obj,tag,name) {
	
	var obj1 = getParentTag(obj,tag);

	if (obj1) {
		myI = getElementsByTagNames('input,select,textarea',obj1);

        	for (i=0;i<myI.length;i++) {
               	    var objAtNode = myI[i];
               	    if ( objAtNode.name == name || objAtNode.id == name )
                	switch(objAtNode.type) {
	 		  	case "checkbox":
						   if (objAtNode.checked) return objAtNode.value;
				 	   	   break;
	   		  	case "radio":
					 	  if (objAtNode.checked) return objAtNode.value;
                        		   	  break;
	   		  	case "textarea":	
	   	          	case "hidden":
           	          	case "text":
	   	          	case "password":
                			 	   return objAtNode.value;
                 			    	   break;
           		  	case "select-one":
						   if (objAtNode.options.length && objAtNode.selectedIndex>-1) 
                					return objAtNode.options[objAtNode.selectedIndex].value;
                			   	   break;
			}
		}
	}
}

function getRowColspan(obj) {

	var objRegExp = /^td$/i;
	var _tCols = 0;

	while (obj) {
		if ( objRegExp.test (obj.nodeName) ) {
			var _colspan= obj.getAttribute('colspan');
			if (!_colspan) _colspan = obj.colSpan;
			if (!_colspan) _colspan = 1;
			
			_tCols += _colspan;
		}
		obj= obj.nextSibling;
	}

	return _tCols;
}


function newTRDetail(obj,imgSrc,dataPost,funcParam2,funcParam3) {

	var child = null;
	if (!AltairSystemAction) alert('msg_div.h not included');

        if ( obj.alt!='-' ) {
                obj.alt='-';
        	if (imgSrc) obj.innerHTML='<img src="'+imgSrc+'/-.png" alt="">';
		var _id = obj.getAttribute('id');

                var new_node = document.createElement('tr');
		new_node.setAttribute(N?'class':'className',obj.parentNode.parentNode.getAttribute('class'));
		if (_id) new_node.setAttribute('id','Child_of_'+_id);

                new_node_td = document.createElement('td');
                new_node_td.colSpan=getRowColspan(obj.parentNode.parentNode.firstChild);
		new_node_td.setAttribute(N?'class':'className','l25 b2');
                new_node.appendChild(new_node_td);

                obj.parentNode.parentNode.parentNode.insertBefore(new_node,obj.parentNode.parentNode.nextSibling);

		new_node_td.innerHTML='<img src="/images/'+AltairSystemColor+'/loading.gif" alt="">';
		xmlSend(AltairSystemAction+'-',dataPost,changeInner,new_node_td,funcParam2,funcParam3);
        } else {
                obj.alt='+';

        	if (imgSrc) obj.innerHTML='<img src="'+imgSrc+'/+.png" alt="">';
		var _id = obj.getAttribute('id');

		if (_id) var child = document.getElementById('Child_of_'+_id);
		if (!child) {
			 child = getParentTag(obj,'tr').nextSibling;
		}
		child.parentNode.removeChild(child);
        }
}

function execJS(node,useEVAL)
{

  if (!node) return;

  var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
  var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
  var bMoz = (navigator.appName == 'Netscape');

  /* IE wants it uppercase */
  var st = node.getElementsByTagName('SCRIPT');
  var strExec;

  for(var i=0;i<st.length; i++)
  {
    if (bSaf) {
      strExec = st[i].innerHTML;
      st[i].innerHTML = "";
    } else if (bOpera) {
      strExec = st[i].text;
      st[i].text = "";
    } else if (bMoz) {
      strExec = st[i].textContent;
      st[i].textContent = "";
    } else {
      strExec = st[i].text;
      st[i].text = "";
    }

    if (debugOn) alert(strExec);

    try {
      if (useEVAL) {
	   eval(strExec);
      } else {
      	   var x = document.createElement("script");
      	   x.type = "text/javascript";
   

           /* In IE we must use .text! */
      	   if ((bSaf) || (bOpera) || (bMoz))
              x.innerHTML = strExec;
           else x.text = strExec;

           document.getElementsByTagName("head")[0].appendChild(x);
      }
    } catch(e) {
      alert(e);
    }
  }

}

function getMaxZ() {
	var allElems = document.getElementsByTagName?document.getElementsByTagName("*"):document.all; 
	var maxZIndex = 0;
	for(var i=0;i<allElems.length;i++) {
		var elem = allElems[i];
		var cStyle = null;
		if (elem.currentStyle) {
			cStyle = elem.currentStyle;
		} else if (document.defaultView && document.defaultView.getComputedStyle) {
			cStyle = document.defaultView.getComputedStyle(elem,"");
		}
		var sNum;
		if (cStyle) {
			sNum = Number(cStyle.zIndex);
		} else {
			sNum = Number(elem.style.zIndex);
		}
		if (!isNaN(sNum)) {
			maxZIndex = Math.max(maxZIndex,sNum);
		}
	}
	return maxZIndex;
}

function raiseMe(obj) {
	//var newIndex = parseInt(getMaxZ())+1;
	lastZindex ++;

	var newIndex = lastZindex;
	if (newIndex+"".length <8)
		obj.style.zIndex = newIndex;			
}

function getCurPosX (adj, evt)
{
	if(!adj) { adj=0;}
	if(!evt) { evt = window.event; }

	if (N) {
		Position = eval( "evt.layer" + "X") - adj;
	} else {
		Position = eval( "evt.offset" + "X") - adj;
	}

	if( Position < adj ) { Position = Position + adj }
	return Position;
}

function getCurPosY (adj, evt)
{
	if(!adj) { adj=0;}
	if(!evt) { evt = window.event; }


	if (N) {
		Position = eval( "evt.layer" + "Y") - adj;
	} else {
		Position = eval( "evt.offset" + "Y") - adj;
	}

	if( Position < adj ) { Position = Position + adj }
	return Position;
}

function getObj(container,IdOrName,tag){
	if (typeof container == 'string') var container=document.getElementById(container);
	if (container) {
		var myI = container.getElementsByTagName(tag);
		if (!IdOrName || IdOrName=='' )
			if (myI.length) return myI[0];
		for (var uio=0;uio<myI.length;uio++) {
			var objAtNode = myI[uio];
			if (objAtNode.id == IdOrName || objAtNode.name == IdOrName)
			return objAtNode;
		}
	}
}

function closeContextMenus() {

	var objRegExp = /ContextMenu$/i
 	var children = getElementsByTagNames('div',document.body);
        for (var i = 0; i < children.length; i++) {
	//	alert(children[i].id+' '+objRegExp.test(children[i].id) );
             if ( objRegExp.test (children[i].id)) {
		children[i].style.display='none';
	     }
	}
	ContextMenuOpen = false;
}

function myContextMenu(e,menuName,pkey){

  ContextMenuOpen = true;
  if (!N) e=window.event;
  e.cancelBubble=true;
  if (N) {
    myMenu = document.getElementById(menuName);
    myMenu.style.left = e.pageX+'px';
    myMenu.style.top  = e.pageY+'px';
    myMenu.style.display = 'block';
    myMenu.alt = pkey;
  } else {
    myMenu = document.getElementById(menuName);
    myMenu.style.left = (e.clientX+document.body.scrollLeft)+'px';
    myMenu.style.top  = (e.clientY+document.body.scrollTop )+'px';
    myMenu.style.display = 'block';
    myMenu.alt = pkey;
  }
  return false;
}

// **********************************************************************************************************
//								Scripts created from July 2007
// **********************************************************************************************************

/***********************************************
* Image w/ description tooltip- By Dynamic Web Coding (www.dyn-web.com)
* Copyright 2002-2007 by Sharon Paine
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

/* IMPORTANT: Put script after tooltip div or 
	 put tooltip div just before </BODY>. */

var dom = (document.getElementById) ? true : false;
var ns5 = (!document.all && dom || window.opera) ? true: false;
var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var ie4 = (document.all && !dom) ? true : false;
var nodyn = (!ns5 && !ie4 && !ie5 && !dom) ? true : false;

var origWidth, origHeight;

// avoid error of passing event object in older browsers
if (nodyn) { event = "nope" }

///////////////////////  CUSTOMIZE HERE   ////////////////////
// settings for tooltip 
// Do you want tip to move when mouse moves over link?
var tipFollowMouse= true;	
// Be sure to set tipWidth wide enough for widest image
var tipWidth= 100;
var offX= 20;	// how far from mouse to show tip
var offY= 12; 
var tipFontFamily= "Verdana, arial, helvetica, sans-serif";
var tipFontSize= "8pt";
// set default text color and background color for tooltip here
// individual tooltips can have their own (set in messages arrays)
// but don't have to
var tipFontColor= "#000000";
var tipBgColor= "#DDECFF"; 
var tipBorderColor= "#FFFFFF";
var tipBorderWidth= 3;
//var tipBorderStyle= "ridge";
var tipBorderStyle= "";
var tipPadding= 4;

// tooltip content goes here (image, description, optional bgColor, optional textcolor)
var messages = new Array();
// multi-dimensional arrays containing: 
// image and text for tooltip
// optional: bgColor and color to be sent to tooltip
//messages[0] = new Array('images/container.gif','',"#FFFFFF");
//messages[1] = new Array('images/footer.gif','',"#FFFFFF");
//messages[2] = new Array('test.gif','','#FFFFFF')

////////////////////  END OF CUSTOMIZATION AREA  ///////////////////

// preload images that are to appear in tooltip
// from arrays above
/*if (document.images) {
	var theImgs = new Array();
	for (var i=0; i<messages.length; i++) {
  	theImgs[i] = new Image();
		theImgs[i].src = messages[i][0];
  }
}*/

// to layout image and text, 2-row table, image centered in top cell
// these go in var tip in doTooltip function
// startStr goes before image, midStr goes between image and text
var startStr = '<table width="' + tipWidth + '"><tr><td align="center" width="100%"><img src="';
var midStr = '" border="0"></td></tr><tr><td valign="top">';
var endStr = '</td></tr></table>';

////////////////////////////////////////////////////////////
//  initTip	- initialization for tooltip.
//		Global variables for tooltip. 
//		Set styles
//		Set up mousemove capture if tipFollowMouse set true.
////////////////////////////////////////////////////////////
var tooltip, tipcss;
function initTip() {
	if (nodyn) return;
	tooltip = (ie4)? document.all['tipDiv']: (ie5||ns5)? document.getElementById('tipDiv'): null;
	tipcss = tooltip.style;
	if (ie4||ie5||ns5) {	// ns4 would lose all this on rewrites
		tipcss.width = tipWidth+"px";
		tipcss.fontFamily = tipFontFamily;
		tipcss.fontSize = tipFontSize;
		tipcss.color = tipFontColor;
		tipcss.backgroundColor = tipBgColor;
		tipcss.borderColor = tipBorderColor;
		tipcss.borderWidth = tipBorderWidth+"px";
		tipcss.padding = tipPadding+"px";
		tipcss.borderStyle = tipBorderStyle;
	}
	if (tooltip&&tipFollowMouse) {
		document.onmousemove = trackMouse;
	}
}

window.onload = initTip;

/////////////////////////////////////////////////
//  doTooltip function
//			Assembles content for tooltip and writes 
//			it to tipDiv
/////////////////////////////////////////////////
var t1,t2;	// for setTimeouts
var tipOn = false;	// check if over tooltip link
function doTooltip(string,evt,num) {
	
	messages=ArrayFromString(string,'~');
	
	if (!tooltip) return;
	if (t1) clearTimeout(t1);	if (t2) clearTimeout(t2);
	tipOn = true;
	// set colors if included in messages array
	if (messages[2])	var curBgColor = messages[2];
	else curBgColor = tipBgColor;
	if (messages[3])	var curFontColor = messages[3];
	else curFontColor = tipFontColor;
	if (ie4||ie5||ns5) {
		var tip = startStr + messages[0] + midStr + '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">' + messages[1] + '</span>' + endStr;
		tipcss.backgroundColor = curBgColor;
	 	tooltip.innerHTML = tip;
	}
	if (!tipFollowMouse) positionTip(evt);
	else t1=setTimeout("tipcss.visibility='visible'",100);
	
}

var mouseX, mouseY;
function trackMouse(evt) {
	standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body //create reference to common "body" across doctypes
	mouseX = (ns5)? evt.pageX: window.event.clientX + standardbody.scrollLeft;
	mouseY = (ns5)? evt.pageY: window.event.clientY + standardbody.scrollTop;
	if (tipOn) positionTip(evt);
}

/////////////////////////////////////////////////////////////
//  positionTip function
//		If tipFollowMouse set false, so trackMouse function
//		not being used, get position of mouseover event.
//		Calculations use mouseover event position, 
//		offset amounts and tooltip width to position
//		tooltip within window.
/////////////////////////////////////////////////////////////
function positionTip(evt) {
	if (!tipFollowMouse) {
		mouseX = (ns5)? evt.pageX: window.event.clientX + standardbody.scrollLeft;
		mouseY = (ns5)? evt.pageY: window.event.clientY + standardbody.scrollTop;
	}
	// tooltip width and height
	var tpWd = (ie4||ie5)? tooltip.clientWidth: tooltip.offsetWidth;
	var tpHt = (ie4||ie5)? tooltip.clientHeight: tooltip.offsetHeight;
	// document area in view (subtract scrollbar width for ns)
	var winWd = (ns5)? window.innerWidth-20+window.pageXOffset: standardbody.clientWidth+standardbody.scrollLeft;
	var winHt = (ns5)? window.innerHeight-20+window.pageYOffset: standardbody.clientHeight+standardbody.scrollTop;
	// check mouse position against tip and window dimensions
	// and position the tooltip 
	if ((mouseX+offX+tpWd)>winWd) 
		tipcss.left = mouseX-(tpWd+offX)+"px";
	else tipcss.left = mouseX+offX+"px";
	if ((mouseY+offY+tpHt)>winHt) 
		tipcss.top = winHt-(tpHt+offY)+"px";
	else tipcss.top = mouseY+offY+"px";
	if (!tipFollowMouse) t1=setTimeout("tipcss.visibility='visible'",100);
}

function hideTip() {
	if (!tooltip) return;
	t2=setTimeout("tipcss.visibility='hidden'",100);
	tipOn = false;
}

document.write('<div id="tipDiv" style="position:absolute; visibility:hidden; z-index:100"></div>')

function ArrayFromString( s, delim ){
  // rebuild an array returned from server as string
  // optional delimiter defaults to ~
  
  var d = (delim == null)? '~' : delim;
  return s.split(d);
}  













