/*
####################################################
The contents of this file are the property of nDeviX
Corporation. Any use of this file or the contents 
within requires a licence from nDeviX Corporation. 
Use of this code without proper concent is punishable
by state and fedral law.

For any questions please contact nDeviX Corporation
at 312.962.0424 or support@ndevix.com


nDeviX JS API and function calls
####################################################
*/

function addslashes(str) {
str=str.replace(/&/g, 'ndx_replace_and');
str=str.replace(/\\/g,'\\\\');
str=str.replace(/\'/g,'\\\'');
str=str.replace(/\"/g,'\\\"');
str=str.replace(/\0/g,'\\0');
return str;
}

function stripslashes(str) {
str=str.replace(/\\'/g,'\'');
str=str.replace(/\\"/g,'"');
str=str.replace(/\\\\/g,'\\');
str=str.replace(/\\0/g,'\0');
return str;
}

function createRequestObject() {
	var ro = null;
    if (window.XMLHttpRequest) {
        ro = new XMLHttpRequest();
    } else if(window.ActiveXObject) {
        var msp = new Array('Msxml2.XMLHTTP','Microsoft.XMLHTTP');
        for (var i = 0; i < msp.length; i = i + 1) {
            try { ro = new ActiveXObject(msp[i]); } catch (e){};
        };
    };
    return ro;
}

var http = createRequestObject();

function sndReq(action,element,todiv,ev) {
if(!todiv) {
	var todiv = 1;	
}
if(!ev) {
	var ev = 1;	
}

if (!http) {
	//var http = createRequestObject();
	//alert('req');
}

if(http.readyState !== 0) {
//	http.abort();
}
//alert(http.readyState);
if(element == 'appcontent' || element== 'appcontainer') {
document.getElementById(element).innerHTML ='<div style="position: absolute; top: 50%; left: 50%; width: 224px; height: 50px; margin-top: -20px; margin-left: -112px; text-align: center;"><div style="width:100%; height:22px; margin-bottom: 4px; background: url(http://dev.ndevix.com/precision/style/images/ajaxloadbar.gif) no-repeat center top;"></div><div style="text-align: center; font-family:Arial, Helvetica, sans-serif; font-size:10px">Loading</div></div>';
}
if(http.readyState == '4' || http.readyState == '0') {
    http.open('get', action);
    http.onreadystatechange = function() {
    
	if(http.readyState == 4){
		var response = http.responseText;
			if(response=='ERROR') {
				window.location='?page=error';
			}
			response=response.replace(/ndx_replace_and/g, '&');
			if(todiv == 1) {
				
				response=stripslashes(response);
				
				if(element !== null) {
					document.getElementById(element).innerHTML = response;
				} else {
					return response;
				}    
			} else {
				if(ev == 1) {
					eval(response);
				} else {
					return response;
				}
			} 	
		}
	}
	http.send(null);
	} else {
	setTimeout('sndReq(\''+action+'\',\''+element+'\',\''+todiv+'\',\''+ev+'\')',500);
	}
}

function sndPst(action,url,element,todiv,ev) {

	
if(!todiv) {
	var todiv = 1;	
}
if(!ev) {
	var ev = 0;	
}

if (!http) {
//	var http = createRequestObject();
}

if(http.readyState !== 0) {
	http.abort();
}

if(http.readyState == 4 || http.readyState == 0) {
    http.open('post', url);
	http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    http.onreadystatechange = function() {
    
	if(http.readyState == 4){
    	var response = http.responseText;
			if(response=='ERROR') {
				window.location='?page=error';
			}
			response=response.replace(/ndx_replace_and/g, '&');
			if(todiv == 1) {
				response=stripslashes(response);
				if(element !== null) {
					document.getElementById(element).innerHTML = response;
				} else {
					return response;
				}    
			} else {
				if(ev == 1) {
					eval(response);
				} else {
					return response;
				}
			} 	
			}
	}
	http.send(action);	
	} else {
	setTimeout('sndPst(\''+action+'\',\''+url+'\',\''+element+'\')',500);
	}
}

var content = new Object();
var bbfix = new Object();
bbfix.lastpage='main';

function lastpage(check) {
	if(bbfix.lastpage!==check) {
		sndReq('exec/'+check+'', 'appcontent');
		bbfix.lastpage = check;
	}
}

function loadcontent(id) {
	//tabs
	var limit = document.getElementById('topmenu').childNodes.length - 2;
	for(var i = 0; i < limit; i++) {
		document.getElementById('topmenu').childNodes[i].className='ctab';
	}
	if (document.getElementById(id+'tab')) {
		document.getElementById(id+'tab').className='ftab';
	} else {
		loc = id.split('&');
		if (loc[0]=='parts') {
			document.getElementById('managepartstab').className='ftab';
		}
		if (loc[0]=='machine') {
			document.getElementById('managemachinestab').className='ftab';
		}
		if (loc[0]=='workorders') {
			document.getElementById('allworkorderstab').className='ftab';
		}
		if (loc[0]=='pm') {
			document.getElementById('allcheckliststab').className='ftab';
		}
		if (loc[0]=='reports') {
			document.getElementById('companyreporttab').className='ftab';
		}
	}

	//woot back button fix.
	bbfix.lastpage = id;
	document.getElementById('backbuttonfix').src='pagetrack.php?act='+escape(id)+'';
	document.getElementById('popupdiv').style.display='none';
	//document.getElementById('appcontent').innerHTML='<img src="http://dev.ndevix.com/oc2backup/design/images/ajaxload.gif">';
	sndReq('exec/'+id+'', 'appcontent');
}

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

function findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
}

function saveformdata(act,div,data) {
	var req='';
	data = data.split(',');
	for(var i=0; i<data.length; i++) {
		if(i==0) {
		var sep = '';
		} else {
		var sep = '&';
		}
		if(document.getElementById(data[i])) {
		switch(document.getElementById(data[i]).type)
       {
           		case "text":
                req += sep+data[i] +
                "=" + addslashes(document.getElementById(data[i]).value);
                break;

           		case "password":
                req += sep+data[i] +
                "=" + addslashes(document.getElementById(data[i]).value);
                break;
			
			    case "textarea":
                req += sep+data[i] +
                "=" + addslashes(document.getElementById(data[i]).value);
                break;
				 
				case "hidden":
                req += sep+data[i] +
                "=" + addslashes(document.getElementById(data[i]).value);
                break;
				 
				case "checkbox":
                if(document.getElementById(data[i]).checked) {
				req += sep+data[i] +
                "=" + addslashes(document.getElementById(data[i]).value);
				} else {
				req += sep+data[i] +
                "=";
				}
                break;
				 
				case "select-one":
                req += sep+data[i] +
                "=" + document.getElementById(data[i]).options[document.getElementById(data[i]).selectedIndex].value;
                break;
       }
	
	   //check if its a form
	    
	   if(document.getElementById(data[i]).tagName=='FORM') {
		   
			var fobj = document.getElementById(data[i]);
			if(sep=='' || sep == null) {
				var sep = '&';
			}
			for(var x=0; x<fobj.elements.length; x++) {
				switch(fobj.elements[x].type)
			   {
				 
					case "text":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
	
					case "password":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
				
					case "textarea":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "hidden":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "checkbox":
					if(fobj.elements[x].checked) {
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					} else {
					req += sep+fobj.elements[x].name +
					"=";
					}
					break;
					 
					case "select-one":
					req += sep+fobj.elements[x].name +
					"=" + fobj.elements[x].options[fobj.elements[x].selectedIndex].value;
					break;
				}
				
			}
			
		} 
	   //End Forms Section
	   
	   }
	}
	
	

	bbfix.lastpage = act;
	//document.getElementById('backbuttonfix').src='pagetrack.php?act='+escape(act)+'';
	sndPst(''+req+'', 'exec/'+act+'', div);
}

function saveformdata2(act,div,data,todiv,ev) {
	var req='';
	data = data.split(',');
	for(var i=0; i<data.length; i++) {
		if(i==0) {
		var sep = '';
		} else {
		var sep = '&';
		}
		if(document.getElementById(data[i])) {
		switch(document.getElementById(data[i]).type)
       {
           		case "text":
                req += sep+data[i] +
                "=" + addslashes(document.getElementById(data[i]).value);
                break;

           		case "password":
                req += sep+data[i] +
                "=" + addslashes(document.getElementById(data[i]).value);
                break;
			
			    case "textarea":
                req += sep+data[i] +
                "=" + addslashes(document.getElementById(data[i]).value);
                break;
				 
				case "hidden":
                req += sep+data[i] +
                "=" + addslashes(document.getElementById(data[i]).value);
                break;
				 
				case "checkbox":
                if(document.getElementById(data[i]).checked) {
				req += sep+data[i] +
                "=" + addslashes(document.getElementById(data[i]).value);
				} else {
				req += sep+data[i] +
                "=";
				}
                break;
				 
				case "select-one":
                req += sep+data[i] +
                "=" + document.getElementById(data[i]).options[document.getElementById(data[i]).selectedIndex].value;
                break;
       }
	
	   //check if its a form
	    
	   if(document.getElementById(data[i]).tagName=='FORM') {
		   
			var fobj = document.getElementById(data[i]);
			if(sep=='' || sep == null) {
				var sep = '&';
			}
			for(var x=0; x<fobj.elements.length; x++) {
				switch(fobj.elements[x].type)
			   {
				 
					case "text":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
	
					case "password":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
				
					case "textarea":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "hidden":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "checkbox":
					if(fobj.elements[x].checked) {
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					} else {
					req += sep+fobj.elements[x].name +
					"=";
					}
					break;
					 
					case "select-one":
					req += sep+fobj.elements[x].name +
					"=" + fobj.elements[x].options[fobj.elements[x].selectedIndex].value;
					break;
				}
				
			}
			
		} 
	   //End Forms Section
	   
	   }
	}
	
	

	bbfix.lastpage = act;
	
	//document.getElementById('backbuttonfix').src='pagetrack.php?act='+escape(act)+'';
	sndPst(''+req+'','exec/'+act+'',div,todiv,ev);
}

function runpm(act,div,data) {
	var req='';
	data = data.split(',');
	for(var i=0; i<data.length; i++) {
		if(i==0) {
		var sep = '';
		} else {
		var sep = '&';
		}
		if(document.getElementById(data[i])) {
		switch(document.getElementById(data[i]).type)
       {
           		case "text":
                req += sep+data[i] +
                "=" + addslashes(sfchecklist(document.getElementById(data[i]).value));
                break;
				 
				case "hidden":
                req += sep+data[i] +
                "=" + addslashes(sfchecklist(document.getElementById(data[i]).value));
                break;
				
				case "textarea":
				req += sep+data[i] +
                "=" + addslashes(sfchecklist(document.getElementById(data[i]).value));
				break;
				 
				case "checkbox":
                if(document.getElementById(data[i]).checked) {
				req += sep+data[i] +
                "=" + addslashes(sfchecklist(document.getElementById(data[i]).value));
				} else {
				req += sep+data[i] +
                "=";
				}
                break;
				
				case "select-one":
                req += sep+data[i] +
                "=" + document.getElementById(data[i]).options[document.getElementById(data[i]).selectedIndex].value;
                break;
				 
       }
	   }		//req = req+sep+data[i]+'='+encodeURI(document.getElementById(data[i]).value);
	}
	
	
	if(document.getElementById('assignform')) {
	var fobj = document.getElementById('assignform');
	//var req;
	var sep = '&';
			for(var x=0; x<fobj.elements.length; x++) {
				switch(fobj.elements[x].type)
			   {
				 
					case "text":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
	
					case "password":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
				
					case "textarea":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "hidden":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "checkbox":
					if(fobj.elements[x].checked) {
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					} else {
					req += sep+fobj.elements[x].name +
					"=";
					}
					break;
					 
					case "select-one":
					req += sep+fobj.elements[x].name +
					"=" + fobj.elements[x].options[fobj.elements[x].selectedIndex].value;
					break;
				}
				
			}
	}
	
	if(document.getElementById('assetform')) {
		
	var fobj = document.getElementById('assetform');
	var req;
	var sep = '&';
			for(var x=0; x<fobj.elements.length; x++) {
				switch(fobj.elements[x].type)
			   {
				 
					case "text":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
	
					case "password":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
				
					case "textarea":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "hidden":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "checkbox":
					if(fobj.elements[x].checked) {
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					} else {
					req += sep+fobj.elements[x].name +
					"=";
					}
					break;
					 
					case "select-one":
					req += sep+fobj.elements[x].name +
					"=" + fobj.elements[x].options[fobj.elements[x].selectedIndex].value;
					break;
				}
				
			}
	}
	
	bbfix.lastpage = act;
	document.getElementById('backbuttonfix').src='pagetrack.php?act='+escape(act)+'';
	sndPst(''+req+'', 'exec/'+act+'', div);
}


function sublinkmenu(id) {
	var menu = document.getElementById('sidemenu');
	var act = 'open';
	if (document.getElementById('sublinkmenu'+id).style.display=='block') {
		var act = 'close';
	}
	for (var i = 0; i < menu.childNodes.length; i++) {
		if (menu.childNodes[i].className=='sublinkmenu') {
			menu.childNodes[i].style.display = 'none';	
		}
	}
	if (act == 'open') {
		document.getElementById('sublinkmenu'+id).style.display = 'block';
		menu.scrollTop = gbid('sublinkmenu'+id).offsetTop - menu.offsetHeight-20;
		loadcontent('machine/?id='+id+'');
	}
}

function removelocation(id) {
	var conf = confirm('Are you sure you want to delete this location. This is permanent.');
	if(conf) {
		sndReq('exec/companyinfo/?removelocation='+id+'', 'appcontent');
	}
}

function addpartfield(machine) {
var count = (document.getElementById('partcount').value*1)+1;
document.getElementById('partcount').value=count;
var div = document.createElement("div");
div.setAttribute('id', count);
div.innerHTML='<div><div class="flb"><label>Part Needed: (Serial #) <input type="text" name="parts'+count+'" id="parts'+count+'" value="" onblur="sndReq(\'exec/invcheck/?machine='+machine+'&serial=\'+this.value+\'&qty=\'+document.getElementById(\'partsqty'+count+'\').value+\'\',\'loadpart'+count+'\');" /></label></div><div class="flb"><label>Qty: <input type="text" name="partsqty'+count+'" id="partsqty'+count+'" value="1" size="4" class="widthauto" onblur="sndReq(\'exec/invcheck/?machine='+machine+'&qty=\'+this.value+\'&serial=\'+document.getElementById(\'parts'+count+'\').value+\'\',\'loadpart'+count+'\');" /></label></div><div class="clear"></div>[<a href="javascript:alink()" onclick="lookuppart(\''+machine+'\',\''+count+'\');" class="linktext">Lookup</a>] [<a href="javascript: alink()" onClick="this.parentNode.parentNode.removeChild(this.parentNode);" class="linktext">Remove</a>] <span id="loadpart'+count+'"></span></div>';
document.getElementById('partscontainer').appendChild(div);
}

function lookuppart() {
//lightbox('lightbox');
document.getElementById('popupdiv').style.display='block';
sndReq('exec/lookuppart/','popupdiv');
}

var cdn = 0;

function checkcdn() {
	if(document.getElementById('initchecklistcounter')) {
		if(cdn < parseFloat(document.getElementById('initchecklistcounter').value)) {
			cdn = parseFloat(document.getElementById('initchecklistcounter').value);
		}
	}
}

function loaddd() {
if (http == undefined)
{
var http = createRequestObject();
}

if(http.readyState == 4 || http.readyState == 0) {
    http.open('get', 'vars.php');
    http.onreadystatechange = function() {
    
	if(http.readyState == 4){
		var response = http.responseText;
			if(response=='ERROR') {
				window.location='?page=error';
			}
			eval(response);
		}
	}
	http.send(null);
	}
}


function addchecklistitem() {
	checkcdn();
	var div = document.createElement('div');
	div.id='checklistitem'+cdn;
	div.style.border = '1px solid #ddd';
	div.style.margin = '5px 0';
	div.style.padding = '5px';
	div.innerHTML = '<div><div onmousedown="move(event,\''+div.id+'\',\'checklistcontent\');" class="floatl" style="cursor: move; font-weight:bold; padding:2px;">Click And Drag to reorder</div><div class="floatr"><a href="javascript: alink();" onclick="document.getElementById(\'checklistitem'+cdn+'\').parentNode.removeChild(document.getElementById(\'checklistitem'+cdn+'\'));" class="linktext"><strong>[Remove]</strong></a></div></div><div class="clear"></div><div class="lb"><label>Checklist Item Name: <input type="text" id="itemname-'+cdn+'" name="itemname-'+cdn+'" /></label></div><div class="lb"><label><input name="rcheck'+cdn+'" id="rcheck'+cdn+'" type="radio" value="check" checked="checked" class="check" /></label><label>Checkbox <input name="rcheck'+cdn+'" type="radio" value="text" class="check" /> Text/Numeric Data </label></div><input type="hidden" id="pic'+cdn+'" name="pic'+cdn+'"><br /><a href="javascript: alink();" onclick="document.getElementById(\'picupload'+cdn+'\').style.display=\'block\';" class="linktext">[Upload Picture]</a><br /><div class="block" id="picupload'+cdn+'" style="display: none;"><br /><div id="picdisp'+cdn+'">&nbsp;</div><iframe width="300" height="100" allowtransparency="true" frameborder="0" src="media/pmupload.php?id='+cdn+'"></iframe></div>';
	document.getElementById('checklistcontent').appendChild( div );
	cdn++;
}

function addchecklistcatagory() {
	checkcdn();
	var div = document.createElement('div');
	div.id='checklistcat'+cdn;
	div.style.border = '1px solid #ddd';
	div.style.margin = '5px 0';
	div.style.padding = '5px';
	div.innerHTML = '<div><div onmousedown="move(event,\''+div.id+'\',\'checklistcontent\');" class="floatl" style="cursor: move; font-weight:bold; padding:2px;">Click And Drag to reorder</div><div class="floatr"><a href="javascript: alink();" onclick="document.getElementById(\'checklistcat'+cdn+'\').parentNode.removeChild(document.getElementById(\'checklistcat'+cdn+'\'));" class="linktext"><strong>[Remove]</strong></a></div></div><div class="clear"></div><div class="lb"><label>Checklist Catagory Name: <input type="text" id="catname-'+cdn+'" name="catname-'+cdn+'" /></label></div><input type="hidden" id="pic'+cdn+'" name="pic'+cdn+'"><br /><a href="javascript: alink();" onclick="document.getElementById(\'picupload'+cdn+'\').style.display=\'block\';" class="linktext">[Upload Picture]</a><br /><div class="block" id="picupload'+cdn+'" style="display: none;"><br /><div id="picdisp'+cdn+'">&nbsp;</div><iframe width="300" height="100" allowtransparency="true" frameborder="0" src="media/pmupload.php?id='+cdn+'"></iframe></div><div id="subcatagories'+cdn+'" style="margin-left:20px; margin-top: 10px; min-height:30px; border: 1px solid #bebebe;"></div><div class="fauxbutton" onclick="addsubitem(\''+cdn+'\');"><span class="plus">+</span> <strong>Add Subcatagory Item</strong></div><div class="clear"></div>';
	cdn++;
	document.getElementById('checklistcontent').appendChild( div );
}

function addsubitem(id) {
	checkcdn();
	var div = document.createElement('div');
	div.id='checklistitem'+cdn;
	div.style.border ='1px solid #ddd';
	div.style.margin = '5px 0';
	div.style.padding = '5px';
	//id sets slave to
	div.innerHTML = '<div><div onmousedown="move(event,\''+div.id+'\',\'subcatagories'+id+'\');" class="floatl" style="cursor: move; font-weight:bold; padding:2px;">Click And Drag to reorder</div><div class="floatr"><a href="javascript: alink();" onclick="document.getElementById(\'checklistitem'+cdn+'\').parentNode.removeChild(document.getElementById(\'checklistitem'+cdn+'\'));" class="linktext"><strong>[Remove]</strong></a></div></div><div class="clear"></div><div class="lb"><label>Checklist Item Name: <input type="text" id="itemname-'+cdn+':'+id+'" name="itemname-'+cdn+':'+id+'" /></label><div class="lb"><label><input name="rcheck'+cdn+'" id="rcheck'+cdn+'" type="radio" value="Checkbox" checked="checked" class="check" /></label><label>Checkbox <input name="rcheck'+cdn+'" type="radio" value="Text" class="check" /> Text/Numeric Data</label></div><input type="hidden" id="pic'+cdn+'" name="pic'+cdn+'"><br /><a href="javascript: alink();" onclick="document.getElementById(\'picupload'+cdn+'\').style.display=\'block\';" class="linktext">[Upload Picture]</a><br /><div class="block" id="picupload'+cdn+'" style="display: none;"><br /><div id="picdisp'+cdn+'">&nbsp;</div><iframe width="300" height="100" allowtransparency="true" frameborder="0" src="media/pmupload.php?id='+cdn+'"></iframe></div></div>';
	document.getElementById('subcatagories'+id).appendChild( div );
	cdn++;
}


function replace_all(str, sym, rep) {
while(str.indexOf(sym)>=0) {
str = str.replace(sym, rep);
}
return str;
}

function sfchecklist(str) {
	str = replace_all(str, '&', 'ndx_replace_and');
	str = replace_all(str, ':', 'ndx_replace_colon');
	str = replace_all(str, '|', 'ndx_replace_line');
	str = replace_all(str, '[', 'ndx_replace_rbracket');
	str = replace_all(str, ']', 'ndx_replace_leftbracket');
	str = replace_all(str, '/', 'ndx_replace_slash');
	return str;
}

function savechecklist(machine) {
	var children = new Array();
	var fobj = document.getElementById('checklistform');
	var tmp='';
	for(var i=0; i<fobj.elements.length; i++) {
		switch(fobj.elements[i].type)
       {
           case "text":
                tmp = fobj.elements[i].name.split(':');
				if(tmp.length>1) {
					var num = tmp[0].split('-');
					if(document.getElementById('rcheck'+num[1]).checked) {
					var type = 'check';
					} else {
					var type = 'input';
					}
					if(!children[''+tmp[1]+'']) {
					children[''+tmp[1]+'']='';
					}
					children[''+tmp[1]+'']=children[''+tmp[1]+'']+sfchecklist(fobj.elements[i].value)+':'+type+':'+sfchecklist(document.getElementById('pic'+num[1]+'').value)+'\n';
					tmp = '';
					type = '';
                // arr[] = escape(fobj.elements[i].value) + "&";
				}
				
				
                 break;
			}
} 

	var cname='';
	var tmp='';
	var str = '';
	var subcats = '';
	for(var i=0; i<fobj.elements.length; i++) {
		switch(fobj.elements[i].type)
       {
           case "text":
               tmp = fobj.elements[i].name.split(':');
				if(tmp.length==1) {
				
					var num = fobj.elements[i].name.split('-');
					
					if(num[0]=='catname') {
					//build the catagory
					if(children[''+num[1]+'']!=='') {
						subcats = null;
						subcats = children[''+num[1]+''];
						if(subcats == null) {
						subcats = '';
						}
						str = str + sfchecklist(fobj.elements[i].value)+':'+document.getElementById('pic'+num[1]+'').value+'\n{\n'+subcats+'}\n';
					}
					} else {
					//just add to the str
						if(document.getElementById('rcheck'+num[1]).checked) {
							var type = 'check';
						} else {
							var type = 'input';
						}
					str = str + sfchecklist(fobj.elements[i].value)+':'+type+':'+document.getElementById('pic'+num[1]+'').value+'\n';
					}
					
					cname='';
					tmp = '';
					type = '';
                // arr[] = escape(fobj.elements[i].value) + "&";
				}
                 break;
				
       }
	}
	
	var req='';
	if(document.getElementById('assignform')) {
	var fobj = document.getElementById('assignform');
	var req;
	var sep = '&';
			for(var x=0; x<fobj.elements.length; x++) {
				switch(fobj.elements[x].type)
			   {
				 
					case "text":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
	
					case "password":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
				
					case "textarea":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "hidden":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "checkbox":
					if(fobj.elements[x].checked) {
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					} else {
					req += sep+fobj.elements[x].name +
					"=";
					}
					break;
					 
					case "select-one":
					req += sep+fobj.elements[x].name +
					"=" + fobj.elements[x].options[fobj.elements[x].selectedIndex].value;
					break;
				}
				
			}
	}
	if(document.getElementById('assetform')) {
	var fobj = document.getElementById('assetform');
	var req;
	var sep = '&';
			for(var x=0; x<fobj.elements.length; x++) {
				switch(fobj.elements[x].type)
			   {
				 
					case "text":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
	
					case "password":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
				
					case "textarea":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "hidden":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "checkbox":
					if(fobj.elements[x].checked) {
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					} else {
					req += sep+fobj.elements[x].name +
					"=";
					}
					break;
					 
					case "select-one":
					req += sep+fobj.elements[x].name +
					"=" + fobj.elements[x].options[fobj.elements[x].selectedIndex].value;
					break;
				}
				
			}
	}
	
	if(gbid('autonumber').checked) {
	req += sep+'autonumber' +
	"=" + '1';
	} else {
	req += sep+'autonumber' +
	"=" + '0';
	}
	
	sndPst('name='+document.getElementById('checklistname').value+'&estlabor='+document.getElementById('estlabor').value+'&list='+str+''+req+'','exec/newchecklist/?machine='+machine,'appcontent');
	//print data in itemdisplay'+id and put in edit button to show hide the itemedit'+id div
}


function updatechecklist(machine,id) {
	var children = new Array();
	var fobj = document.getElementById('checklistform');
	var tmp='';
	for(var i=0; i<fobj.elements.length; i++) {
		switch(fobj.elements[i].type)
       {
           case "text":
                tmp = fobj.elements[i].name.split(':');
				if(tmp.length>1) {
					var num = tmp[0].split('-');
					if(document.getElementById('rcheck'+num[1]).checked) {
					var type = 'check';
					} else {
					var type = 'input';
					}
					if(!children[''+tmp[1]+'']) {
					children[''+tmp[1]+'']='';
					}
					children[''+tmp[1]+'']=children[''+tmp[1]+'']+sfchecklist(fobj.elements[i].value)+':'+type+':'+sfchecklist(document.getElementById('pic'+num[1]+'').value)+'\n';
					tmp = '';
					type = '';
                // arr[] = escape(fobj.elements[i].value) + "&";
				}
				
				
                 break;
			}
} 

	var cname='';
	var tmp='';
	var str = '';
	for(var i=0; i<fobj.elements.length; i++) {
		switch(fobj.elements[i].type)
       {
           case "text":
               tmp = fobj.elements[i].name.split(':');
				if(tmp.length==1) {
				
					var num = fobj.elements[i].name.split('-');
					
					if(num[0]=='catname') {
					//build the catagory
					if(children[''+num[1]+'']!=='') {
						subcats = null;
						subcats = children[''+num[1]+''];
						if(subcats == null) {
						subcats = '';
						}
						str = str + sfchecklist(fobj.elements[i].value)+':'+document.getElementById('pic'+num[1]+'').value+'\n{\n'+subcats+'}\n';
					}
					} else {
					//just add to the str
						if(document.getElementById('rcheck'+num[1]).checked) {
							var type = 'check';
						} else {
							var type = 'input';
						}
					str = str + sfchecklist(fobj.elements[i].value)+':'+type+':'+sfchecklist(document.getElementById('pic'+num[1]+'').value)+'\n';
					}
					
					cname='';
					tmp = '';
					type = '';
                // arr[] = escape(fobj.elements[i].value) + "&";
				}
                 break;
				
       }
	}
	var req='';
	if(document.getElementById('assignform')) {
	var fobj = document.getElementById('assignform');
	var req;
	var sep = '&';
			for(var x=0; x<fobj.elements.length; x++) {
				switch(fobj.elements[x].type)
			   {
				 
					case "text":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
	
					case "password":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
				
					case "textarea":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "hidden":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "checkbox":
					if(fobj.elements[x].checked) {
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					} else {
					req += sep+fobj.elements[x].name +
					"=";
					}
					break;
					 
					case "select-one":
					req += sep+fobj.elements[x].name +
					"=" + fobj.elements[x].options[fobj.elements[x].selectedIndex].value;
					break;
				}
				
			}
	}
	
	if(document.getElementById('assetform')) {
	var fobj = document.getElementById('assetform');
	var req;
	var sep = '&';
			for(var x=0; x<fobj.elements.length; x++) {
				switch(fobj.elements[x].type)
			   {
				 
					case "text":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
	
					case "password":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
				
					case "textarea":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "hidden":
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					break;
					 
					case "checkbox":
					if(fobj.elements[x].checked) {
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
					} else {
					req += sep+fobj.elements[x].name +
					"=";
					}
					break;
					 
					case "select-one":
					req += sep+fobj.elements[x].name +
					"=" + fobj.elements[x].options[fobj.elements[x].selectedIndex].value;
					break;
				}
				
			}
	}
	
	if(gbid('autonumber').checked) {
	req += sep+'autonumber' +
	"=" + '1';
	} else {
	req += sep+'autonumber' +
	"=" + '0';
	}
	
	
	sndPst('name='+document.getElementById('checklistname').value+'&estlabor='+document.getElementById('estlabor').value+'&list='+str+''+req+'','exec/editprevmain/?id='+id+'&machine='+machine,'appcontent');
	//print data in itemdisplay'+id and put in edit button to show hide the itemedit'+id div
}

function usedparts() {
document.getElementById('partsholder').value='';
	for(var i=0; i<(document.getElementById('partcount').value+1); i++) {
		if(document.getElementById('parts'+i)) {
			if(document.getElementById('parts'+i).value!=='') {
			document.getElementById('partsholder').value = document.getElementById('partsholder').value+':'+document.getElementById('parts'+i).value+'#'+document.getElementById('partsqty'+i).value; 
			}
		}
	}
}


function viewprintable(act) {
window.open('http://dev.ndevix.com/print.php?page='+act+'','Print','width=600, height=800, scrollbars=1');
}

function switchtab(obj) {
	for(var i=0; i<document.getElementById('topmenu').childNodes.length; i++) {
		document.getElementById('topmenu').childNodes[i].className='ctab';
	}
	obj.className='ftab';
}

function runsearch() {
	if(document.getElementById('searchbox').value.length>0) {
		sndPst('search='+document.getElementById('searchbox').value,'exec/search/', 'appcontent');
	}
	if(document.getElementById('searchbox').value.length==0) {
		sndReq('exec/main/','appcontent');
	}
}



function assetquicksearch(e,nameinput,idinput,type,iid) {
	var code;
	if (!e) var e = window.event;
	if (e.keyCode) code = e.keyCode;
	else if (e.which) code = e.which;
	//alert(code);
	
	
	// code 38 up 40 down
	
	if(code == 38 || code == 40 || code == 13 ) {
		//alert(gbid('assetquicksearch_count').value);
		if(code == 13) {
			if(gbid('assetquicksearch_count').value>0) {
				if(type=='addwo') {
				loadcontent('addworkorder/?id='+gbid('assetid').value+'');	
				}
				if(type=='addwoasset') {
				sndPst('addasset='+document.getElementById('assetid').value, 'exec/addworkorder/?id='+iid+'&addasset','assetsdiv'); 
				gbid('assetname').value='Search Assets';
				gbid('assetid').value='';
				}
				if(type=='editwoasset') {
				sndPst('addasset='+document.getElementById('assetid').value, 'exec/editworkorder/?id='+iid+'&addasset','assetsdiv'); 
				gbid('assetname').value='Search Assets';
				gbid('assetid').value='';
				}
				if(type=='createprevmain') {
					add_prevmain_asset();
				}
				if(type=='editpm') {
				sndPst('addasset='+document.getElementById('assetid').value, 'exec/editpm/?id='+iid+'&addasset','assetsdiv');
				gbid('assetname').value='Search Assets';
				gbid('assetid').value='';
				}
				if(type=='runpm') {
				sndPst('addasset='+document.getElementById('assetid').value, 'exec/runpm/?id='+iid+'&addasset','assetsdiv');
				gbid('assetname').value='Search Assets';
				gbid('assetid').value='';
				}
				
			}
			document.getElementById('assetquicksearch').style.display='none';
		}
		
		for(var i=0; i<gbid('assetquicksearch_count').value; i++) {
			gbid('assetquicksearch_item_'+i).style.background='#fff';
			try { 	 } catch(e) { }
		}
		
		if(code == 40) {
			gbid('assetquicksearch_selected').value = parseFloat(gbid('assetquicksearch_selected').value)+1;
			if(gbid('assetquicksearch_selected').value==gbid('assetquicksearch_count').value) {
				gbid('assetquicksearch_selected').value=0;
			}
			
			gbid('assetquicksearch_item_'+gbid('assetquicksearch_selected').value).style.background='#6fc2df';
			gbid(idinput).value = gbid('assetquicksearch_id_'+gbid('assetquicksearch_selected').value).value;			
		}
		if(code == 38) {
			gbid('assetquicksearch_selected').value = parseFloat(gbid('assetquicksearch_selected').value)-1;
			if(gbid('assetquicksearch_selected').value<0) {
				gbid('assetquicksearch_selected').value=gbid('assetquicksearch_count').value-1;
			}
			gbid('assetquicksearch_item_'+gbid('assetquicksearch_selected').value).style.background='#6fc2df';
			gbid(idinput).value = gbid('assetquicksearch_id_'+gbid('assetquicksearch_selected').value).value;
		}
	} else {
	if(document.getElementById(nameinput).value=='') {
		document.getElementById(idinput).value = '';
	} else {
		if (browser.isNS) {
		document.getElementById('assetquicksearch').style.display='block';
		document.getElementById('assetquicksearch').style.left = findPosX(document.getElementById(nameinput))+'px';
		document.getElementById('assetquicksearch').style.top = findPosY(document.getElementById(nameinput)) - window.scrollY + gbid(nameinput).offsetHeight +'px';
		document.getElementById('assetquicksearch').style.width = document.getElementById(nameinput).offsetWidth+'px';
		} else {
		document.getElementById('assetquicksearch').style.display='block';
		document.getElementById('assetquicksearch').style.left = findPosX(document.getElementById(nameinput))+'px';
		document.getElementById('assetquicksearch').style.top = findPosY(document.getElementById(nameinput)) - document.documentElement.scrollTop + gbid(nameinput).offsetHeight +'px';
		document.getElementById('assetquicksearch').style.width = document.getElementById(nameinput).offsetWidth+'px';
		}
		sndPst('search='+document.getElementById(nameinput).value+'&nameinput='+nameinput+'&idinput='+idinput,'exec/assetquicksearch','assetquicksearch');
		
	}
	}
}

function partquicksearch(e,nameinput,idinput,type,iid) {
	var code;
	if (!e) var e = window.event;
	if (e.keyCode) code = e.keyCode;
	else if (e.which) code = e.which;
	//alert(code);
	
	
	// code 38 up 40 down
	
	if(code == 38 || code == 40 || code == 13 ) {
		//alert(gbid('assetquicksearch_count').value);
		if(code == 13) {
			if(gbid('partquicksearch_count').value>0) {
				
				if(type=='addwopart') {
				sndPst('addpart='+document.getElementById('partid').value+'&qty='+document.getElementById('partqty').value, 'exec/partexec/?id='+iid+'&system=addworkorder&addpart','partsdiv');
				gbid('partname').value='Search Parts';
				gbid('partid').value='';
				gbid('partqty').value='1';
				}
				if(type=='editwopart') {
				sndPst('addpart='+document.getElementById('partid').value+'&qty='+document.getElementById('partqty').value, 'exec/partexec/?id='+iid+'&system=editworkorder&addpart','partsdiv');
				gbid('partname').value='Search Parts';
				gbid('partid').value='';
				gbid('partqty').value='1';	
				}
				if(type=='editpm') {
				sndPst('addpart='+document.getElementById('partid').value+'&qty='+document.getElementById('partqty').value, 'exec/partexec/?id='+iid+'&system=editpm&addpart','partsdiv');
				gbid('partname').value='Search Parts';
				gbid('partid').value='';
				gbid('partqty').value='1';	
				}
				if(type=='runpm') {
				sndPst('addpart='+document.getElementById('partid').value+'&qty='+document.getElementById('partqty').value, 'exec/partexec/?id='+iid+'&system=runpm&addpart','partsdiv');
				gbid('partname').value='Search Parts';
				gbid('partid').value='';
				gbid('partqty').value='1';	
				}
				
			}
			document.getElementById('partquicksearch').style.display='none';
		}
		
		for(var i=0; i<gbid('partquicksearch_count').value; i++) {
			gbid('partquicksearch_item_'+i).style.background='#fff';
			try { 	 } catch(e) { }
		}
		
		if(code == 40) {
			gbid('partquicksearch_selected').value = parseFloat(gbid('partquicksearch_selected').value)+1;
			if(gbid('partquicksearch_selected').value==gbid('partquicksearch_count').value) {
				gbid('partquicksearch_selected').value=0;
			}
			
			gbid('partquicksearch_item_'+gbid('partquicksearch_selected').value).style.background='#6fc2df';
			gbid(idinput).value = gbid('partquicksearch_id_'+gbid('partquicksearch_selected').value).value;			
		}
		if(code == 38) {
			gbid('partquicksearch_selected').value = parseFloat(gbid('partquicksearch_selected').value)-1;
			if(gbid('partquicksearch_selected').value<0) {
				gbid('partquicksearch_selected').value=gbid('partquicksearch_count').value-1;
			}
			gbid('partquicksearch_item_'+gbid('partquicksearch_selected').value).style.background='#6fc2df';
			gbid(idinput).value = gbid('partquicksearch_id_'+gbid('partquicksearch_selected').value).value;
		}
	} else {
	if(document.getElementById(nameinput).value=='') {
		document.getElementById(idinput).value = '';
	} else {
		if (browser.isNS) {
		document.getElementById('partquicksearch').style.display='block';
		document.getElementById('partquicksearch').style.left = findPosX(document.getElementById(nameinput))+'px';
		document.getElementById('partquicksearch').style.top = findPosY(document.getElementById(nameinput)) - window.scrollY + gbid(nameinput).offsetHeight +'px';
		
		document.getElementById('partquicksearch').style.width = document.getElementById(nameinput).offsetWidth+'px';
		} else {
		document.getElementById('partquicksearch').style.display='block';
		document.getElementById('partquicksearch').style.left = findPosX(document.getElementById(nameinput))+'px';
		document.getElementById('partquicksearch').style.top = findPosY(document.getElementById(nameinput)) - document.documentElement.scrollTop + gbid(nameinput).offsetHeight +'px';
		
		document.getElementById('partquicksearch').style.width = document.getElementById(nameinput).offsetWidth+'px';
		}
		sndPst('search='+document.getElementById(nameinput).value+'&nameinput='+nameinput+'&idinput='+idinput,'exec/partquicksearch','partquicksearch');
		
	}
	}
}

function gbid(obj) {
	if(document.getElementById(obj)) {
		return document.getElementById(obj);
	} else {
		return false;	
	}
}

function assetsearch() {
	if(document.getElementById('assetsearch').value.length>0) {
		sndPst('search='+document.getElementById('assetsearch').value,'exec/assetsearch/', 'sidemenu');
	}
	if(document.getElementById('assetsearch').value.length==0) {
		sndReq('exec/assetsearch/','sidemenu');
	}
}

function checkserial(value,linkover) {
if (http == undefined)
{
var http = createRequestObject();
}
document.getElementById('serialcheck').innerHTML='';
if(http.readyState == 4 || http.readyState == 0) {
    http.open('get', 'exec/checkserial/?value='+value+'');
    http.onreadystatechange = function() {
    
	if(http.readyState == 4){
		var response = http.responseText;
			if(response=='ERROR') {
				window.location='?page=error';
			}
			if(response!=='') {
				alert('That part is already in the database. Please enter a different number.');
				document.getElementById('serialcheck').innerHTML='';
				gbid('serialnumber').value='';
				gbid('serialnumber').style.backgroundColor='#E5F0F6';
				gbid('serialnumber').focus();
				//loadcontent('addpart/?editpart='+response+'&linkover='+linkover+'&serialfound=true');
			} else {
				gbid('serialnumber').style.backgroundColor='#6F6';
				//document.getElementById('serialcheck').innerHTML='Validated';
			}
		}
	}
	http.send(null);
	} else {
	setTimeout('checkserial(\''+value+'\')',500);
	}
}

function checkall(formid,checkboxid) {
	var fobj = document.getElementById(formid);
	var tmp='';
	for(var i=0; i<fobj.elements.length; i++) {
		switch(fobj.elements[i].type)
       {
           case "checkbox":
			   if(document.getElementById(checkboxid).checked == false) {
				   fobj.elements[i].checked = false;
			   } else {
				   fobj.elements[i].checked = true;
			   }
		   break;
	   }
	}
}
//for reporting
function postmachines(formid,type) {
	var fobj = document.getElementById(formid);
	var tmp='';
	var str = '';
	for(var i=0; i<fobj.elements.length; i++) {
		switch(fobj.elements[i].type)
       {
           case "checkbox":
			   if(fobj.elements[i].checked) {
				   str += 'machine[]='+fobj.elements[i].value+'&';
			   }
		   break;
		   
		   case "text":
                str += fobj.elements[i].name +
                "=" + fobj.elements[i].value+'&';
           break;
		   
		   case "hidden":
                str += fobj.elements[i].name +
                "=" + fobj.elements[i].value+'&';
           break;
	   		
			case "select-one":
				str += fobj.elements[i].name +
				"=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value+'&';
			break;
			
			}
	}
	sndPst(str,'exec/runreport/?type='+type+'','reportdisplay');
}

function add_prevmain_asset() {
	if(document.getElementById('assetid').value!=='' && !gbid('asset_'+document.getElementById('assetid').value)) { 
		var id = document.getElementById('assetid').value;
		var count = (document.getElementById('asset_count').value*1);
		gbid('asset_count').value=count+1;
		var div = document.createElement('div');
		div.setAttribute('id', 'asset_'+count);
		var thtml = document.getElementById('add_asset_template').innerHTML;
		thtml = thtml=thtml.replace(/%asset%/g, id);
		div.innerHTML= thtml.replace(/%id%/g, count);
		gbid('asset_div').appendChild(div);
		gbid('assetname').value='Search Assets';
		gbid('assetid').value='';
		gbid('assetqty').value='1'; 
		var intid = add_pm_interval(id);
		sndReq('/exec/newchecklist/?addasset='+id+'&intid='+intid,'','0','1');	
	} else { 
		document.getElementById('subassetname').value='Asset Not Found';
	}	
}

function add_pm_interval(id) {
	var count = (document.getElementById('asset_assign_count').value*1);
	document.getElementById('asset_assign_count').value=count+1;
	var div = document.createElement('div');
	div.setAttribute('id', 'asset_interval_'+count);
	var thtml = document.getElementById('add_interval_template').innerHTML;
	thtml=thtml.replace(/%asset%/g, id);
	div.innerHTML=thtml.replace(/%repeat%/g, count);
	document.getElementById('asset_intervals_'+id+'').appendChild(div);
	sndReq('/exec/newchecklist/?addinterval='+id+'&id='+count,'','0','1');	
	return count;
}

function batch_print(type) {
if(document.getElementById('batchprint')) {
	var fobj = document.getElementById('batchprint');
	var req;
	var sep = '&';
		for(var x=0; x<fobj.elements.length; x++) {
			switch(fobj.elements[x].type)
		   {
				case "checkbox":
				
				if(fobj.elements[x].checked) {
					req += sep+fobj.elements[x].name +
					"=" + addslashes(fobj.elements[x].value);
				}
				
				break;
			}
			
		}
	}

window.open('http://elite.performancemms.com/batchprint.php?page='+type+'&'+req,'Print','width=800, height=600, scrollbars=1');
}
