
/* set some global variables here */
var pageLoaded=0;
var gTaskid=0;

//var gBag = new Array();

function fnChildClick()
{
	//alert("Got parent to click me");
	parent.fnChildInfo("James");
}

function fnShowTab(sTab,sTabs,sTarget)
{
	var myTest = sTabs.split(",");
	for (i=0; i<myTest.length; i++)
	{
  	 var tabBody = document.getElementById("tabbody_"+myTest[i]);
  	 var tabTitle = document.getElementById("tabtitle_"+myTest[i]);
  	 
  	 if (sTab==myTest[i])
  	 {
  	   tabBody.className = "css_tabshow";
  	   tabTitle.className = "tabActive";
  	 }
  	 else
  	 {
  	    tabBody.className = "css_tabhide";
  	    tabTitle.className = "tabNotActive";
  	 }
  	    //alert("NOT ACTIVE");
  	    
	}
  	 
	var myTarget = document.getElementById(sTarget);
	if (myTarget)
	{
		myTarget.value = sTab;
	//	alert(sTab);
	}
	//else
	//alert("No target Fount" + sTarget);
}

String.format = function()
{
    if( arguments.length == 0 )
        return null;
    var str = arguments[0];

    for(var i=1;i<arguments.length;i++)
    {
        var re = new RegExp('\\{' + (i-1) + '\\}','gm');
        str = str.replace(re, arguments[i]);
    }
    return str;
}



function fnHithere(ctl,e)
{
	//alert ("1"+ctl.name);
	//alert(e.type);
	//var gBag = new Array();
	
	if (e.type=='mousedown')
	{
	 gBag['name']=ctl.name;	
	}
	
	if (e.type=='mouseup')
	{
	 alert(gBag['name']);
	}
	
	var myDiv = FindMyObject("TESTER");
	if (myDiv)
	   myDiv.innerHTML="1"+ctl.name;
}

function fnExpandMe2(ctl,key)
{
 var myTarget = document.getElementById(key);
 //alert(ctl.src);
 var img = document.getElementById(key+"_btn");
 //if (img)
 
  // alert(img.src);
 if (myTarget)
 {
 	if (myTarget.className=="divCollapse")
 	{
 	    myTarget.className= "divExpand"; 	    
 	}
 	else
 	{
 		myTarget.className= "divCollapse";
 	}
 	
 	if (myTarget.className=="divCollapse")
 	    img.src="images/icons/plus-green.gif";
 	else
 		 img.src="images/icons/minus.gif";
 	
 }
// alert(img.src);
 //alert("This is James:" + key);	
 return false;
}

function fnSubmitForm(ctl,sEntity,sForm,xDefs)
{  

  return fnClickForm(ctl.id,sEntity,sForm,xDefs);
}

function fnToggleMe(ctl,sTarget,strShow,strHide)
{
  var myDiv = FindMyObject(sTarget);
  
  if (myDiv)
  {
   if (myDiv.className==sTarget+"Hide")
    {
       myDiv.className=sTarget+"Show";
       ctl.innerHTML = decode64(strHide);
    }
   else
    {  
       myDiv.className=sTarget+"Hide";
      ctl.innerHTML = decode64(strShow);
    }
    
  	//alert(myDiv.name);
  }
  
  return false;
}

function fnImageResize(whichId, maxW) {
  var pix=FindMyObject(whichId);//document.getElementById(whichId).getElementsByTagName('img');
 // for (i=0; i<pix.length; i++) {
    w=pix.width;
    h=pix.height;
    if (w > maxW) 
    {
      f=1-((w - maxW) / w);
      pix.width=w * f;
      pix.height=h * f;
    }
 // }
}

function fnNotifyAction(sButton)
{
	if (sButton=='tbsave' ||  sButton=='tbcancel')
	   saveclicked=true;
}
function fnUnLoadWarning(state,e)
{
   if (!pageseen && pagemodified && !saveclicked)
   {
   	pageseen=true;
    return "You have made changes to this form but have not saved it. ";
   }
  
}

function fnImageResize1(id,width)
{
  var ratio,obj;
 
  var obj =  IFrameObj = FindMyObject(id);
  if (obj && obj.width > width)
  {
  	ratio = width / obj.width;
  	//alert(obj.width);
  	 	
  	obj.width = width;
  	obj.height =obj.height * ratio;
  }
  
}

function fnPostMe(ctl,formName)
{
	var myForm = document.getElementById(formName);
	
	if (myForm)
	{
		var btnsubmit = document.getElementById('btnSubmit');
		if (btnsubmit)
		   btnsubmit.value=ctl.id;
		   
		myForm.submit();
	}
	
	
	return false;
}

function fnMouseOut(ctl)
{
	 //alert("out");
	 ctl.style.cursor='default';
	 ctl.style.background='white';
	 return false;
}
function fnMouseOver(ctl)
{
	//alert("over");
	ctl.style.cursor='hand';
	ctl.style.background='yellow';
 return false;
}
      
function fnSubmitFormPop(ctl,sEntity,sForm,sTarget,xDefs)
{  
  var myForm,b,oldtarget;
  
//  myForm = FindMyObject(sForm);	
 // oldtarget = myForm.target;
 // myForm.target = sTarget;
// alert(sTarget);
  b = fnClickForm(ctl.id,sEntity,sForm,xDefs,1);

//  myForm.target = "";
  return false;
}

function fnPopWindow(url)
{
	//alert(url);
   var newwin = window.open(url,'editWindow2',"scrollbars=1,resizable=1,width=800,height=600");
   //callToServer(url,'frameEditor');	
}

function fnSearchKeywords(sForm)
{
	myForm = FindMyObject(sForm);
	
    if (myForm)
    {
  	 /* myxdef = GetElement("KEYWORD");
      if (myxdef)
      {
         myxdef.value=xDefs;
       
      }
      */
    }
    myForm.submit();
    return false;
}

function fnPickKeyword(ctl)
{
	 var myForm = ctl.form;
	
    if (myForm)
    {
  	  myxdef = GetElement("KEYWORD");
  
      if (myxdef)
      {
         myxdef.value=ctl.value;
       
      }
      	  //alert(myxdef.value);
    }
    myForm.submit();
    return false;
	
}


function fnClickForm(sButton,sEntity,sForm,xDefs,bPop)
{
 var myForm,myobj,myobj2,myxdef;
  myForm = FindMyObject(sForm);
  if (bPop==1)
     myForm.target="_blank";
  else
    myForm.target="_self";   
    
//  alert(myForm.target +"--"+bPop);
   
 // alert(sButton);
  fnNotifyAction(sButton);
  
  if (myForm)
  {
  	  // what to do
 
  	  /* if reset */
  	  myxdef = GetElement("xDefs");
      if (myxdef)
      {
     // 	alert(xDefs);
         myxdef.value=xDefs;        
      }
    	
  	  myobj = GetElement("CLICKED_"+sEntity);
  	  if (myobj)
  	  {
  	  	//alert("Found some");
  	   myobj.value=sButton;
      }
     
      myobj = GetElement("SELECTEDIDS_"+sEntity);
       // alert(myobj); 
  	  if (myobj)
  	  {
  	  	  //alert(myobj.value); 
  	   myobj.value=fnGetSelected (sEntity);
  	    // alert(myobj.value); 
      }
  	 
  	    
  	  myobj = GetElement("SERIAL_"+sEntity);
  	  if (myobj)
  	  {
  	  	var today = new Date();
        var dateInMS = today.getTime();
  	    myobj.value=dateInMS;
      }
  	 
  	  myobj = GetElement("bPrintLogo_"+sEntity);
  	  myobj2 = GetElement("checkPrintLogo_"+sEntity);
  	  if (myobj && myobj2)
  	  {
  	     //myobj.value=myobj2.value;
  	     if (myobj2.checked)
  	        myobj.value =  1
  	     else
  	        myobj.value =  0;
  	     //   myobj.value=
  	  //  alert(myobj.value);
  	  }
   //  alert(myobj.value);
 
  	  if (sButton=="btnreset")
  	  {
  	  	 myForm.reset();
  	  }
  	  else /* all others submit */
  	  {
  	  	//  alert(myForm.name);
  	  	//  alert(myForm.name);
        myForm.submit();
  	  }
  }
  
  return false;
}

function fnGetFormValue(cName)
{
 var myobj = GetElement(cName);
 if (myobj)
    return myobj.value;
 return "";
 
}

function fnSetFormValue(cName,cValue)
{
 var myobj = GetElement(cName);
 if (myobj)
 {
 	 myobj.value = cValue;
     return true;
 }
 
 return false;
 
 
}


function fnSetMonth(ctl,cCode,imonth,iyear)
{
 /* generate date */
// alert(cCode);
 var cDate = iyear +"-"+imonth+"-"+fnGetFormValue(cCode+"_day");
 fnSetFormValue(cCode+"_date",cDate);
 //alert(cDate);
 var myitem = GetElement(cCode+"_day");
 if (myitem)
 {
 myitem.form.submit();
 }
// alert(myitem.form.id);
 return false;
}


function fnPickMonth(ctl,cCode)
{
 var cMonth, cYear;
 cMonth = fnGetFormValue(cCode+"_pickmon");
 cYear = fnGetFormValue(cCode+"_pickyear");
// alert( cMonth + " "+cYear);
 return fnSetMonth(ctl,cCode,cMonth,cYear);
 //return false;
}

function fnSetDate(ctl,cDay,cCode,cDefClass,childField)
{
var myobj,mydiv,prevday,prevdiv,thisdiv,cDate;

 //alert (cDefClass);
 /* find current selected */
 prevday = fnGetFormValue(cCode+"_day");
 prevdiv = GetElement("div_"+cCode+"_"+prevday);
 if (prevdiv)
 {
   prevdiv.className =cDefClass;
  // alert("gotit");
 }
 
 thisdiv = GetElement("div_"+cCode+"_"+cDay);
 if (thisdiv)
 {
   thisdiv.className = "gCalSelected";
  
 } 
 fnSetFormValue(cCode+"_day",cDay);
 /* generate date */
 cDate = fnGetFormValue(cCode+"_year") +"-"+fnGetFormValue(cCode+"_month")+"-"+fnGetFormValue(cCode+"_day");
 fnSetFormValue(cCode+"_date",cDate);
 if (childField!="")
 {
   fnSetFormValue(childField,cDate);
 }
 
 var myitem = GetElement(cCode+"_day");
 if (myitem)
 {
  myitem.form.submit();
 }
 //alert(myitem.form.id);
 return false;
}

function fnSetFieldDate(childField,childHidden)
{
 var myhidden,mychild;

 
 myhidden = GetElement(childHidden);
 mychild= GetElement(childField);
 mychild.value=myhidden.value;
 return false;
 
 
}

function fnExpandMe(mysender,ctl,myplus,myminus)
{
	var thisdiv,mytext;
	thisdiv = GetElement(ctl);
	if (mysender)
	{
	   mytext = mysender.innerHTML;
	}
	

	
	if (thisdiv)
	{
	  if (thisdiv.style.display=='none')
	  {
	     thisdiv.style.display='inline';	     
	     mysender.innerHTML = mytext.replace(myminus,myplus);
	  }
	   else
	   {
	     thisdiv.style.display='none';
	     mysender.innerHTML = mytext.replace(myplus,myminus);
	   }
	 // alert(thisdiv.style.display='none');
	   //alert(mysender.innerHTML);
	   return false;
	}
	/* change sender image */
	
}

function fnGetSelected(sEntity)
{
  var ids,SIDS,sChecked,level;
  
  try
  {  
  sChecked = "";
  ids = GetElement("ROWIDS_"+sEntity);
  //alert("ROWIDS_"+sEntity);
  if (ids)
  {
     SIDS = ids.value.split(",");
    
  }
  else
  {
     ids = GetElement("SELECTEDIDS_"+sEntity);
     if (ids)
        return ids.value;
     return;
  }
     
 // level=1;
  for (var i=0; i< SIDS.length;i++)
  {
   myselect = document.getElementById("_SELECT__"+SIDS[i]);//GetElement("_SELECT__"+SIDS[i]);
   if (myselect && myselect.checked)
   {   
      sChecked = InsertWithSep(sChecked,SIDS[i]);
   }
  }
  
  } 	
  catch(err)
 {
 	//alert("ROWIDS_"+sEntity +"="+ids);
    return "";
  }
  return sChecked;
}

function fnWipeDef(ctl,sDef)
{
 if (ctl.value==sDef)
     ctl.value="";
}



function fnDoList(ctl,sEntity,sForm,sFields,bPop)
{
  var myForm,sChecked,myobj,obj2,aFields,clicked,cmbTarget;
  var xDefs="";
  
  sChecked = fnGetSelected (sEntity);
  if (sChecked=="" && ctl.id!='btnlistgo' && ctl.id!='btnprintall')
 //alert(ctl.id);
  //if (sChecked=="" && clicked!="btnaddone" && clicked!='btnprintall' && clicked!='btnprintpage')
  {
 
   alert("You have no records selected. You must select at least one record to complete this task.");
   return false;
  }
  
  myForm = FindMyObject(sForm);
 
 
  
  
  myobj = GetElement("SELECTEDIDS_"+sEntity);
  if (myobj)
     myobj.value=sChecked;
  
  if (ctl.id=='btnlistgo')
  {
  	 cmbTarget = GetElement("cmbActionList");
  	 if (cmbTarget &&  cmbTarget.value !="0")
  	 {
         clicked = cmbTarget.value;
         if (sChecked=="" && clicked!="btnaddone" && clicked!='btnprintall' && clicked!='btnprintpage')
         {
         	 alert("You have no records selected. You must select at least one record to complete this task.");
             return false;
         }
         
  	 }
  	 else
  	 {
  	  alert("There is No action specified");
  	  return false;
     }
  
  }
  else
     clicked = ctl.id;
     
  if (sChecked=="" && clicked!="btnaddone" && clicked!='btnprintall' && clicked!='btnprintpage')
  {
   //alert("You have not selected any records. This task requires one or more records to be selected");
  // return false;
  }    
     
  myForm = FindMyObject(sForm);
  if (myForm)
  {
  	 //   alert("TEst");
  	  if (sFields )  
  	  {
  	  	aFields = sFields.split(",");
  	    for (var i=0; i<aFields.length;i++)
  	    {
  	  	 obj2 = GetElement(aFields[i]+"_"+sEntity);
  	   	 if (obj2)
  	        xDefs = xDefs + aFields[i] +":="+obj2.value+"\t";  	  
  	    }
  	  }
  	  
  	  if (xDefs!="")
  	  {
  	  	 obj2 = GetElement("xDefs");
  	  	 if (obj2)
  	  	 {
  	  	     obj2.value=encode64(xDefs);
  	       //  alert(xDefs);
  	  	 }
  	  }
  	     
  	  myobj = GetElement("CLICKED_"+sEntity);
  	  if (myobj)
  	     myobj.value=clicked;
  	     
     if (bPop || ctl.id=='printme' || clicked=='btnprintall' || clicked=='btnprintpage')
     {
       return fnOpenPrintWindow(myForm,clicked);
     }
    //  alert(clicked);
  	 myForm.submit();
     return false;  
  }
  return false;  
}

function fnDoList2(ctl,sEntity,sForm,sFields,bPop)
{
  var myForm,sChecked,myobj,obj2,aFields,clicked,cmbTarget;
  var xDefs="";
  
  
  myForm = FindMyObject(sForm);
  
  
  myobj = GetElement("SELECTEDIDS_"+sEntity);
  if (myobj)
     myobj.value=sChecked;
  
  if (ctl.id=='btnlistgo')
  {
  	 cmbTarget = GetElement("cmbActionList");
  	 if (cmbTarget &&  cmbTarget.value !="0")
  	 {
         clicked = cmbTarget.value;
  	 }
  	 else
  	 {
  	  alert("There is No action specified");
  	  return false;
     }
  
  }
  else
     clicked = ctl.id;
     
  if (sChecked=="" && clicked!="btnaddone" && clicked!='btnprintall' && clicked!='btnprintpage')
  {
   //alert("You have not selected any records. This task requires one or more records to be selected");
  // return false;
  }    
     
  myForm = FindMyObject(sForm);
  if (myForm)
  {
  	 //   alert("TEst");
  	  if (sFields )  
  	  {
  	  	aFields = sFields.split(",");
  	    for (var i=0; i<aFields.length;i++)
  	    {
  	  	 obj2 = GetElement(aFields[i]+"_"+sEntity);
  	   	 if (obj2)
  	        xDefs = xDefs + aFields[i] +":="+obj2.value+"\t";  	  
  	    }
  	  }
  	  
  	  if (xDefs!="")
  	  {
  	  	 obj2 = GetElement("xDefs");
  	  	 if (obj2)
  	  	 {
  	  	     obj2.value=encode64(xDefs);
  	       //  alert(xDefs);
  	  	 }
  	  }
  	     
  	  myobj = GetElement("CLICKED_"+sEntity);
  	  if (myobj)
  	     myobj.value=clicked;
  	     
  	     //alert(bPop);
     if (bPop || ctl.id=='printme' || clicked=='btnprintall' || clicked=='btnprintpage')
     {
       return fnOpenPrintWindow(myForm,clicked);
     }
    //  alert(clicked);
  	 myForm.submit();
     return false;  
  }
  return false;  
}

function fnOpenPrintWindow(myForm,clicked)
{
	if (myForm)
	{
	 //alert("Got it "+clicked);
	 myForm.target = "PrintWindow";
	 myForm.submit();
	  //myForm.target = "";
        //return false;
	 return false;
	}
	
}

function fnShowHelp(helptitle,helptext,e)
{
	
	var obj= GetElement(helptitle);
	var obj2= GetElement(helptext);
	
	if (!obj)
	    return false;
	else
	{
	    var myvalue=obj.value;
	    if (obj2)
	       myvalue="<b>"+myvalue+"</b><hr size=1 color=silver>"+obj2.value;
	}
	    
	//myvalue2="<a class=gButtons2 href='javascript:void();' onClick=\"fnHideHelp('"+helpid+"');\">Close</a><hr>"    
	var helpDiv = GetElement("divHelp2");
	var helpDivBody = GetElement("divHelpBody");

	if (helpDiv)
	{
		helpDiv.className = "divHelp2Show";
	    if (helpDivBody)
		   helpDivBody.innerHTML =myvalue;
		
		helpDiv.style.left = e.clientX + document.body.scrollLeft+10;	
		
		helpDiv.style.top = e.clientY + document.body.scrollTop-10;
	}
	return false;
}

function fnHideHelp(helpid)
{
    var helpDiv = GetElement("divHelp2");
  //  var helpDivBody = GetElement("divHelpBody");

	if (helpDiv)
	{
		helpDiv.className = "divHelp2Hide";	   
		//helpDivBody.innerHTML ="";
	}
	return false;
}

function ShowHint(ctl,e,divHint,bEncoded)
{
	//alert(divHint);
	var myDiv= FindMyObject(divHint);
	if (myDiv && ctl!="")
	{
		myDiv.className = divHint+'Show';
		if (bEncoded)
		   ctl = decode64(ctl);
		myDiv.innerHTML = ctl;

		myDiv.style.left = e.clientX + document.body.scrollLeft+10;
		
		myDiv.style.top = e.clientY + document.body.scrollTop-10;
	}
	return false;
}
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function fnHideSearch(divSearch)
{
	var myDiv= FindMyObject(divSearch);
	if (myDiv)
	{
		myDiv.className = divSearch+'Hide';
	}
}

function fnHideShow2(divSearch,ctl)
{
	var myDiv= FindMyObject(divSearch);
	var xy=findPos(ctl);
	//alert("TEST");
	if (myDiv)
	{
		myDiv.className = divSearch+'Show';
//		myDiv.style.left = xy[0]+100;//e.offsetX+200;
	//	myDiv.style.top = xy[1]+30;// e.offsetY +200;
		myDiv.style.left = xy[0];//e.offsetX+200;
		myDiv.style.top = xy[1]+20;// e.offsetY +200;
	}
	return false;
  
}

function fnShowSearch(html,ctl,divSearch)
{
	var myDiv= FindMyObject(divSearch);
	var sDivParent=divSearch+"_parent";
	
	//alert(findPos(e.srcElement));
	var xy=findPos(ctl);
	//alert(xy[0]);
	if (myDiv && html!="")
	{
		myDiv.className = divSearch+'Show';
		
		myDiv.innerHTML = html;
		myDiv.style.left = xy[0];//e.offsetX+200;
		myDiv.style.top = xy[1]+0;// e.offsetY +200;
		//myDiv.style.z-index=3;
	}
	

	
	return false;
}

function fnStoreSettings(str,linesep,tokensep)
{
 var aTop =str.split(linesep);
 var aRet = new Array() ;
 for (i=0; i<aTop.length;i++)
 {
  var aChunks = aTop[i].split(tokensep);
   aRet[aChunks[0]] = aChunks[1];
 }
// alert( aRet['name']);
 return aRet;
 
}


function fnOnStateChange(status,obj)
{
 if (obj.id=="divTaskManager")
 {
  if (status==200)
  {
    //var myProgTask= FindMyObject("progTask");	
    //var Taskid = parseInt(myProgTask.value);  
  //  alert("Got status " + gTaskid);
  	fnTaskManager(gTaskid);    
  }
  
 }
 
 
}

function fnTaskManager(taskid)
{
  var myProgMore,bGood,imore;
  bGood=false;
  var myProgData= FindMyObject("progData");	
  var myProgRun= FindMyObject("progRun");	
  var iRun = parseInt(myProgRun.value);  	
  myProgRun.value=iRun + 1;
  gTaskid = taskid;
  
 
  	
  if (myProgData)
  {
  	var aSettings = fnStoreSettings(myProgData.value,",","=");
    var imore =aSettings['more'];

    if (imore>0)
       bGood=true;
    else
    {
    	//alert ("Done");
      return;
    }
    
  }
  else 
  { 
  	
     bGood=true;
     if (iRun>1)
     {
      // setTimeout("fnTaskManager('"+taskid+"')",100); 
       //alert("Missing data..");
       return;
     }
  }
     
  if (bGood)
  {   
   var url="?xAction=X_FUNCTION&ct=func&refid="+taskid;
 //  alert(url);
   loadHTML(url,"divTaskManager");
   
 //  setTimeout("fnTaskManager('"+taskid+"')",5000); 
  }

}

function HideHint(e,divHint)
{
	var myDiv= FindMyObject(divHint);

	
	if (myDiv)
	myDiv.className = divHint+'Hide';

}

function NewWindow(url)
{
  url = "http://click.linksynergy.com/fs-bin/click?id=2zlhq/XW1XM&offerid=60821.10000071&type=3&subid=0";
  var newwin = window.open(url,'myName');	
}



function ShowAd(url,code,index)
{
	var IFrameObj=  FindMyObject(code+index);
 	var IFrameDoc;
	var testcookie = Get_Cookie(code+index);
	//alert("hi");
	if (testcookie)
	   ;// return true;
     Set_Cookie(code+index,'1',1);
 	 	
 	if (IFrameObj)
 	{		
 	 if (IFrameObj.contentDocument)
 	 {
    // For NS6
       IFrameDoc = IFrameObj.contentDocument; 
     } 
     else if (IFrameObj.contentWindow) 
     {
    // For IE5.5 and IE6
    IFrameDoc = IFrameObj.contentWindow.document;
    } else if (IFrameObj.document) {
    // For IE5
    IFrameDoc = IFrameObj.document;
    } 
    else 
    {
      return true;
  }
    IFrameDoc.location.replace(url);	
  }
 	  
} 

function fnShowFile(url,ftype,caption)
{
    var html = String.format("<img src='{0}' border=1><hr>{1}",url,caption);
    if (ftype=='url')
      var newwin = window.open(url,'editWindow2',"scrollbars=1,resizable=1,width=800,height=600");
    else  
    {
    	var newwin = window.open('about:blank','editWindow2',"scrollbars=1,resizable=1,width=800,height=600");    
        newwin.document.write(html);
    }
    
    return false;
}

function fnGetValue(str,sep)
{
	 var aTest = str.split(sep);
     return aTest[1];
}

function fnGetName(str,sep)
{
 var aTest = str.split(sep);
 return aTest[0];
}

function fnDigValue(cName,str,sep)
{
 var test = str.split("\t");
 for (i=0; i<test.length;i++)
 {
   sName=  fnGetName(test[i],sep);
   sValue= fnGetValue(test[i],sep);
   
   if (cName == sName)
      return sValue;     
 }
 return "";
 
}

function TComboItem(parentCombo,cData)
{
 this.parentCombo = parentCombo; 
 this.cID;
 this.cDisplay;
 this.fieldData = new Array();
 this.fnFiltered = fnFiltered;
 this.fnFormatFilter = fnFormatFilter;
 //if (this.cID == "PRODUCTID")
  //  alert(this.cID);
 var test = cData.split("\t");
 for (i=0; i<test.length;i++)
 {
   sName=  fnGetName(test[i],":=");
   sValue= fnGetValue(test[i],":=");
   this.fieldData[sName] = sValue;
   
   if (this.parentCombo.cKeyField == sName)
      this.cID = sValue;
   if (this.parentCombo.cDisplayField == sName)
       this.cDisplay = sValue;
      
 }
 
 
 function fnFormatFilter(sFilter,sFlag)
 {
   var aTags,sRight,iRight,cmb,cmbTarget;
    
   aTags = GetTags(sFilter,"[","]");
   
   for (i=0; i<aTags.length;i++)
   {
   	
     cmb = aTags[i]+"_"+sFlag;          
     cmbTarget = GetElement(cmb);
    
     if (cmbTarget)
        iRight= cmbTarget.value;        
     sFilter = replaceSubstring(sFilter,"["+aTags[i]+"]",iRight);
   }
   
    sFilter = replaceSubstring(sFilter,"Row.","");
 
    return sFilter;
    
 }
 
 function fnFiltered(sFilter,sFlag)
 {
  var aFilter1,bGood,theFilter,sTokens,aTokens;
   bGood= true; 

   sFilter = this.fnFormatFilter(sFilter,sFlag);
 //alert(sFilter);
  if (sFilter.indexOf(" AND ") >=0 )  
  {
    aFilter1 = sFilter.split(" AND ");
    for (var i=0; i<aFilter1.length;i++)
    {
     theFilter = aFilter1[i];
     bGood = bGood && this.fnFiltered(theFilter);     
    }
    return bGood;
  }
  else
  if (sFilter.indexOf(" OR ") >=0 )  
  {
    aFilter1 = sFilter.split(" OR ");
    for (var i=0; i<aFilter1.length;i++)
    {
     theFilter = aFilter1[i];
     bGood = bGood || this.fnFiltered(theFilter);     
    }
    return bGood;
  }
    
  //alert(sFilter);
  /* we assume atomic filter with == or <= or >= or != or .in. or .range. */
  
  sTokens = "==,>=,<=,!=,>,<";
  aTokens = sTokens.split(",");
  for (var i=0; i<aTokens.length;i++)
  if (sFilter.indexOf(aTokens[i]) >=0)
  {
   sLeft=fnGetName(sFilter,aTokens[i]);
   sLeft = this.fieldData[sLeft];
         
   sRight=fnGetValue(sFilter,aTokens[i]);   
  
   if (aTokens[i]=="==")
   {
   	  if (sFlag=='FILTER' && sRight==-1)
   	    return true;
      return sLeft==sRight;
   }

   if (aTokens[i]=="!=")
      return sLeft!=sRight;
   if (aTokens[i]==">=")
      return sLeft >= sRight;
   if (aTokens[i]=="<=")
      return sLeft <= sRight;
   if (aTokens[i]==">")
      return sLeft > sRight;
   if (aTokens[i]=="<")
      return sLeft < sRight;
      
  }
 return bGood;
     
  
  
 }
 
 
 
}

function TFieldBuffer(cID,cData,bGood)
{
 this.cID = cID;
 this.cData = cData;
 this.bGood =bGood;
}

function TFieldClass(parentBasket,cID,cBaseName)
{
 this.cKeyField = "ID";
 this.cDisplayField = "DISPLAY";
 this.cID = cID;
 this.cBaseName = cBaseName;
 this.Items = new Array();
 this.cData = new Array();
 this.parentBasket = parentBasket;
 this.bPrimaryKey = false;
 this.cBuffers = new Array();
 this.cEntity ="";
 this.cLookupEntity ="";
 this.cCopyFields ="";
 this.cGroupTag = "";
 
 /*  populate combo box */
 this.fnPopulateCombo = fnPopulateCombo;
 this.fnInitItems = fnInitItems;
 this.fnAddItem = fnAddItem;
 this.fnItemByID = fnItemByID;
 this.fnInitSettings= fnInitSettings;
 this.fnFormatFilter = fnFormatFilter;
 this.fnFiltered = fnFiltered;
 this.fnLoadFromServer = fnLoadFromServer;
 this.fnZapItems = fnZapItems;
 this.fnAddBuffer = fnAddBuffer;
 this.fnBufferByID = fnBufferByID;
 
 function fnInitItems(cData,bClear)
 {
   var aItems = cData.split("\n");
   if (bClear)
   {
      // this.fnZapItems();
      // return;   
   }
   
   for (var i=0; i<aItems.length;i++)
   {
   	this.fnAddItem(aItems[i]);
   }
   
 }
 
 function fnAddBuffer(cID,cData,bGood)
 {
  var m;
 
  for (var i=0; i<this.cBuffers.length; i++)
  {
   if (this.cBuffers[i].cID == cID)
      return his.cBuffers[i] ;
  }
  
  m = this.cBuffers.length;
  this.cBuffers[m] = new TFieldBuffer(cID,cData,bGood);
  return this.cBuffers[m] ;
 }
 
 function fnBufferByID(cID)
 {
  for (var i=0; i<this.cBuffers.length; i++)
  {
   if (this.cBuffers[i].cID == cID)
      return this.cBuffers[i];
  }
 
 }
 
 function fnFormatFilter(sFilter,theRow)
 {
   var aTags,sRight,iRight,cmb,cmbTarget;
   
   aTags = GetTags(sFilter,"[","]");
 
   for (i=0; i<aTags.length;i++)
   {
  // 	alert("TAG is "+aTags[i]);
   	 sNew = theRow.cData[aTags[i]];
   	//  alert("new filter.."+sNew);
//  	 alert( theRow.cData['PACKAGESIZEID']);
     if (sNew)
        sFilter = replaceSubstring(sFilter,"["+aTags[i]+"]",sNew);
    else
        sFilter = replaceSubstring(sFilter,"["+aTags[i]+"]","");
    
    
   }
   
    sFilter = replaceSubstring(sFilter,"Row.","");
   
    return sFilter;
    
 }
 
 function fnFiltered(sFilter,theRow,inValues)
 {
 	
   var aFilter1,bGood,theFilter,sTokens,aTokens;
   bGood= true; 
  
   if (inValues)
      sFilter = replaceSubstring(sFilter,"_selected_",inValues);
   if (!sFilter)
       return false;
   
 
  sFilter = this.fnFormatFilter(sFilter,theRow);

  if (sFilter.indexOf(" AND ") >=0 )  
  {
    aFilter1 = sFilter.split(" AND ");
    for (var i=0; i<aFilter1.length;i++)
    {
     theFilter = aFilter1[i];
     bGood = bGood && this.fnFiltered(theFilter);     
    }
    return bGood;
  }
  else
  if (sFilter.indexOf(" OR ") >=0 )  
  {
    aFilter1 = sFilter.split(" OR ");
    bGood = false;
    for (var i=0; i<aFilter1.length;i++)
    {
     theFilter = aFilter1[i];
     bGood = bGood || this.fnFiltered(theFilter); 
    }
    return bGood;
  }
  else
  if (sFilter.indexOf(" IN ") >=0 )  
  {
    aFilter1 = sFilter.split(" IN ");
    return  fnValueIn(aFilter1[1],aFilter1[0],",");   
  }   
  else
  if (sFilter.indexOf(" NOTIN ") >=0 )  
  {
    aFilter1 = sFilter.split(" NOTIN ");
    
    var returnval =fnValueIn(aFilter1[1],aFilter1[0],",");   
   //  alert(aFilter1[1]+" and " +aFilter1[0] +"="+returnval);
    return !returnval;
  }   
  
//  alert(sFilter);
  /* we assume atomic filter with == or <= or >= or != or .in. or .range. */
  sTokens = "==,>=,<=,!=,>,<";
  aTokens = sTokens.split(",");
  // alert(sLeft +"="+ sRight);
  for (var i=0; i<aTokens.length;i++)
  {
  	// alert(aTokens[i]);
  if (sFilter.indexOf(aTokens[i]) >=0)  
  {
  	
    sLeft=fnGetName(sFilter,aTokens[i]);
    sRight=fnGetValue(sFilter,aTokens[i]);   
    if (sRight=='null' )
       sRight='';
       
  //alert("["+sLeft +"]["+sRight+"]token:"+aTokens[i]);
   if (aTokens[i]=="==")
   {
   	 
       return sLeft==sRight;
   }
       
   if (aTokens[i]=="!=")
      return sLeft!=sRight;
   if (aTokens[i]==">=")
      return sLeft >= sRight;
   if (aTokens[i]=="<=")
      return sLeft <= sRight;
   if (aTokens[i]==">")
      return sLeft > sRight;
   if (aTokens[i]=="<")
      return sLeft < sRight;
      
  }
  }
 return bGood;
     
  
 }
 
 function fnInitSettings(cData)
 {
 //	return;
 // alert(this.cID);
  var test = cData.split("\t");
  for (var i=0; i<test.length;i++)
  {
   sName  =  fnGetName(test[i],":=");
   sValue =  fnGetValue(test[i],":=");
   if (sName && sValue)
   {
   //	alert(sName+"="+sValue);
   	sName = Trim(sName);
   	sValue=Trim(sValue);
   	
 
   this.cData[sName] =sValue;  	
   
   if (sName=="KEYFIELD")   
       this.cKeyField=sValue;
   if (sName=="DISPLAY")
       this.cDisplayField=sValue;
   if (sName=="PRIMARYKEY")
       this.bPrimaryKey=sValue==1;
   if (sName=="LOOKUPENTITY")
       this.cLookupEntity=sValue;
   if (sName=="ENTITY")
       this.cEntity=sValue;
   if (sName=="COPYFIELDS")
       this.cCopyFields=sValue;
   if (sName=="GROUPTAG")
       this.cGroupTag=sValue;
       
   } // if name and value not null
  }
  
 }
 
 function fnAddItem(cData,cID)
 {
  if (!cID)
     cID =  fnDigValue(this.cKeyField,cData,":=");	
 
  if (!this.fnItemByID(cID) )
  {
     var m = this.Items.length;
     this.Items[m] = new TComboItem(this,cData);
  }
  
 }
 
 function fnZapItems()
 {
  this.Items.length = 0;
 }
 
 function fnItemByID(cID)
 {

  for (var i=0; i<this.Items.length;i++)
     if (this.Items[i].cID==cID)
        return this.Items[i];
        
 }
 
 function fnLoadFromServer(cAction,sData)
 {
   var myForm;
    		    
   sData = encode64(sData);		
  callToServer("?xAction="+cAction+"&DATA="+sData);	
  /*
   myForm = GetElement("frameSubmiter");
   if (myForm)
   {
    // myForm.cAction.value=cAction;
     var test = GetFormElement("cAction",myForm);
     alert(test);
    // myForm.cDATA = sData;
    // myForm.target ="myFrame";
    // myForm.submit();
   // alert(myForm.cAction.value);
   }
   /*
     <form name='frameSubmit'>
	      <input type=hidden name='cEntity' id='cEntity' value=''>
	      <input type=hidden name='cAction' id='cAction' value=''>
	      <input type=hidden name='xAction' id='xAction' value=''>
	      <input type=hidden name='DATA' id='DATA' value=''>
	    </form> */
 }
 
 function fnPopulateCombo(target,iSelected,sFilters,sFlag,bFinal)
 { 
 	 
 	var cmbTarget,iSel,j,sData,sFilter,fBuff,sValue;
 	if (sFlag=="")
 	   sFlag="FILTER";
 	   
  
 	
 	cmbTarget = GetElement(target);
 //	alert(cmbTarget.type!="checklist");
 	if (!cmbTarget || !cmbTarget.options)
 	   return;
    
  
 	j=0;
 	cmbTarget.options.length=0;
 	
    theRow = gFieldBasket.fnRowByID(sFlag); 
    //  alert('this.cData-'+sFlag);
    if (theRow)	
       sRowData = theRow.fnRowData(true);
   	  
     sFilter = this.fnFormatFilter(sFilters,theRow); 

    
     /* do we need to call the server? */
      //var test = this.cData['SERVERFILTERS'];
     sValue = fnGetValue(sFilter,"==");     
 	 sData = "TARGET:="+target+"|"+
 	    	  "ISELECTED:="+iSelected+"|"+
 	  	 	  "FILTERS:="+sFilters+"|"+
 	  	  	  "FLAG:="+sFlag+"|"+
 	  	  	  "LOOKUP:="+this.cID+"|"+
    	      "BASEFIELD:="+this.cBaseName+"|"+
    	      "KEYFIELD:="+this.cKeyField+"|"+
    	      "SERVERFILTERS:="+this.cData['SERVERFILTERS']+"|"+
    	      "IDS:="+sValue+"|"+
    	      "DATAROW:="+ sRowData;

 	if (!bFinal)
 	{ 	 
 	 //alert(this.cData);
 	 if (!fnValueIn(this.cData['IDS'],sValue))
 	 {
 	 	  //alert("I am here 3");
 	 	  /*
 	 	fBuff = this.fnAddBuffer(sFilter,sFilter,true);		
 	    this.fnLoadFromServer("G_LOOKUP",sData);
 	     // alert("value DOES NOT already exists");
 	    return;	
 	    */
 	 }
 	 else
 	 {
 	  
 	 }
 	 
     
 	 
 	}
 	  // alert("HI"+this.cData['HIDE_ALL']);
 	
     if (sFlag=='FILTER' && !this.cData['HIDE_ALL'])
     {
      cmbTarget.options[j] = new Option("-ALL-","-1", false, false);
      if (iSelected=="-1")
          iSel = j;
      j++;
     }
     else
     if (sFlag!='FILTER' && !this.cData['HIDE_HIDE'])
     {
      cmbTarget.options[j] = new Option("-None-","-2", false, false);
      if (iSelected=="-2")
          iSel = j;
      j++;
     }
     	 
 	for (var i=0; i<this.Items.length;i++)
    {       
    	 
     if (this.Items[i].fnFiltered(sFilters,sFlag))
     {     
      cmbTarget.options[j] = new Option(this.Items[i].cDisplay,this.Items[i].cID, false, false);
      if (iSelected==this.Items[i].cID)
          iSel = j;
      j++;
     }
    }
    cmbTarget.selectedIndex = iSel;
 }
 
 
 
} // class for each combo

function TRowClass(parentBasket,cID,cData)
{
 this.parentBasket = parentBasket;
 this.cID = cID;
 this.sFields="";
 this.cData = new Array();
 this.fnInitData = fnInitData;
 this.fnRowData = fnRowData;
 this.fnInitData(cData);
 
 
 function fnInitData(cData)
 {
 // alert(this.cID);
   var test = cData.split("\t");
   for (i=0; i<test.length;i++)
   {
   
    sName=  fnGetName(test[i],":=");
    sValue= fnGetValue(test[i],":=");
    //this.sFields = InsertWithComma(this.sFields,sName);
    if (sName!="")
    {
       this.cData[sName] = sValue;  
    } 
   // alert(sName+"="+sValue);
   }
  
  //  alert(this.sFields);
 }
 
 function fnRowData(bEncode)
 {
 	var sName,sRet,sTest;
 
 	for (var i= 0 ; i < this.parentBasket.Fields.length; i++)
    {
      sName = this.parentBasket.Fields[i].cBaseName;
      sTest = sName+":="+this.cData[sName];
      sRet =  MergeWithSep (sRet,sTest,"\t");      
    }
   if (bEncode)
      return encode64(sRet);
      
   return sRet;
 }
 
 
}


function TFieldBasket(cID)
{
  this.cID = cID;
  this.Fields = new Array();
  this.cData = new Array();
  this.cRows = new Array();

  this.fnFieldByID =   fnFieldByID;
  this.fnFieldByBase = fnFieldByBase;
  this.fnAddField =    fnAddField;

  this.fnRowByID = fnRowByID;
  this.fnAddRow =  fnAddRow;
  
  this.fnSetInfo =  fnSetInfo;
  this.fnDoFunction =  fnDoFunction;
  this.fnPrimaryKey = fnPrimaryKey;
  
  function fnAddField(cID,cBaseName)
  {
  //	alert("add field"+this.cID);
   test = this.fnFieldByID(cID);
   if (test)
      return test;      
   else
   {
     var m = this.Fields.length;
     this.Fields[m] = new TFieldClass(this,cID,cBaseName);
     return this.Fields[m];
   }
   
 }
 
 function fnFieldByID(cID)
 {
  for (var i=0; i<this.Fields.length;i++)
     if (this.Fields[i].cID==cID)
     {
     	  	
        return this.Fields[i];
     }
     

 }
  
 function fnAddRow(cID,cData)
 {
 	
   var test = this.fnRowByID(cID);
 
   if (test)
      return test;      
   else
   {
   
     var m = this.cRows.length;
     this.cRows[m] = new TRowClass(this,cID,cData);
     
     return this.cRows[m];
   } 
   
 } // function fnAddRow(cID,cData)
 
 function fnRowByID(cID)
 {
  for (var i=0; i<this.cRows.length;i++)
     if (this.cRows[i].cID==cID)
     {
     	//   alert("Found");
        return this.cRows[i];
     }
     
 }
  
 
 function fnFieldByBase(cBase)
 {
 	//alert("fnFieldByBase"+this.Fields.length);
  for (var i=0; i<this.Fields.length;i++)
  {
    // alert(this.Fields[i].cBaseName+"="+cBase);
     if (this.Fields[i].cBaseName==cBase)
        return this.Fields[i];
  }
  
 }
 function fnPrimaryKey()
 {
 	
  for (var i=0; i<this.Fields.length;i++)
  {
     if (this.Fields[i] && this.Fields[i].bPrimaryKey)
     {     	
        return this.Fields[i];
     }
  }
 return null;
 }
 function fnSetInfo(cName,cValue)
 {
  this.cData[cName] = cValue;
 }
 
 function fnDoFunction(sFunction,scope,theRow,sender)
 {
  var cmbTarget,sClass,bHide,bDisable, a3,inValues; 

            inValues="";
     		if (sender)
     		   a3 = fnGetSplitValue(sender.name,3,"_");
     		   
     		if (sender && a3!="")
     		{     			
     	       var aTest = fnGetSplitValue(sender.name,1,"_")+"_"+fnGetSplitValue(sender.name,2,"_");
     	       var myParentTarget = GetElement(aTest+"_size");     	       
     	       if (myParentTarget)  
     	       {	
     	       	 var icount = myParentTarget.value;
     	       	 for (x=0; x<icount;x++)
     	       	 {
     	       		var aTest2 = fnGetSplitValue(sender.name,1,"_")+"_"+fnGetSplitValue(sender.name,2,"_")+"_"+x;
     	       		var myChildTarget = GetElement(aTest2);
     	       		if (myChildTarget && myChildTarget.checked)
     	       		{
     	       			if (inValues=="")
     	       			    inValues=myChildTarget.value;
     	       			else
     	       			    inValues=inValues+","+myChildTarget.value;
     	       			// alert(myChildTarget.value);
     	       		}//   if (myChildTarget)
     	       	 }// for (x=0; x<icount;x++)
     	       }   	     
     	         
     		}// if (sender && a3!="")
     		
 	/* loop through each field and each row and do something */
  if (sFunction=='grouptag')
  {
   	 bDisable = false;
   	 var myTags = "";
   	 var cTagDecoded="";
   	 
   	 var sBase = fnGetName(sender.name,"_");
     var sFlag = fnGetValue(sender.name,"_");
  
   	 var senderField = this.fnFieldByBase(sBase);
      	 
   	  for (var i=0; i<this.Fields.length;i++)
   	  {
   	      myTags = InsertWithSep(myTags,this.Fields[i].cGroupTag,"|",true);
   	  }
   	
   	 var aTags = myTags.split("|");
   	 
   	 for (var t=0; t<aTags.length;t++) 
   	 {
   	 	cTag = 	aTags[t];
   	 	cTagEncoded = replaceSubstring(encode64(cTag),"=","");
   	 	//bHide = true;
   	   //alert("TEST :" + cTag);
   	 	for (var i=0; i<this.Fields.length;i++)
   	 	{   	 		
   	 		if (this.Fields[i].cGroupTag==cTag)
   	 		{
   	 			cmbTarget = GetElement("divGroup_"+this.Fields[i].cID);
   	 			if (cmbTarget && cmbTarget.className=="divTableRow")
   	 			    bHide=false;   
   	 			// alert("TEST :" + cTag);	 		
   	 		}//  if (this.Fields[i].cData['JSHIDE']) 
   	 	} // for each i
       	 
       	 var cmbGroup = GetElement(cTagEncoded);
         if (cmbGroup)
         {
     	   	 (bHide) ?  sClass= "divTableRowHide" : sClass="divTableRow"; 
     	      cmbGroup.className = sClass;
         }
   	 } // for each t
   	 
  }  //  if (scope=='row')
  
  
  if (sFunction=='hide')
  {
   	  bHide = false;
   	 
     for (var i=0; i<this.Fields.length;i++)
     {
        if (this.Fields[i].cData['JSHIDE']) 
        {
           var myTarget="";
     	    if (this.Fields[i].cData['JSHIDESOURCE'])
     	    {
     	    	
     	    	if (sender && sender.id)
     	            myTarget= fnGetSplitValue(sender.id,1,"_");
     	    //  if (sender)
     	     // alert(sender.name);
     	    }
     	   // if (myTarget==this.Fields[i].cID)
     	    // alert(myTarget+"--"+this.Fields[i].cID );
     	 //   (myTarget=="") ? inValues="" : inValues=inValues;
     	    
     	    bHide = this.Fields[i].fnFiltered(this.Fields[i].cData['JSHIDE'],theRow,inValues);
               
     	   if (this.Fields[i].cData['cType']=='search2')
     	      cmbTarget = GetElement("divGroup_"+this.Fields[i].cID+"_DISP");
     	   else
     	      cmbTarget = GetElement("divGroup_"+this.Fields[i].cID);
     	      // alert(bHide+" Found Display "+this.Fields[i].cData['cType']);
     	   
  	         
  	       
     	   if (cmbTarget)   
     	   {
  	         if (cmbTarget.className.indexOf("divTable")>=0)
     	   	     (bHide) ?  sClass= "divTableRowHide" : sClass="divTableRow"; 
     	   	     
  	         if (cmbTarget.className.indexOf("divCell")>=0)
     	   	     (bHide) ?  sClass= "divCellHide" : sClass="divCellShow"; 
     	   	     
     	      cmbTarget.className = sClass;
     	      
     	   }
     	   

       }//  if (this.Fields[i].cData['JSHIDE']) 
     } // for each i  
 }  //    if (sFunction=='hide')
 
 
 
 
 if (sFunction=='disable')
  {
   	 bDisable = false;
     for (var i=0; i<this.Fields.length;i++)
     {
     	
        if (this.Fields[i].cData['JSDISABLE']) 
        {
     	   bDisable = this.Fields[i].fnFiltered(this.Fields[i].cData['JSDISABLE'],theRow);
     	   cmbTarget = GetElement(this.Fields[i].cID+"_"+theRow.cData["_ROWID_"]);
     	  // alert(this.Fields[i].cData['JSDISABLE']);
  	       cmbTarget.disabled = bDisable;       	          	      
       }//  if (this.Fields[i].cData['JSHIDE']) 
     } // for each i  
 }  //  if (scope=='row')
 
 if (sFunction=='reload')
  {
   	//alert() 
  	 bReload = false;
     for (var i=0; i<this.Fields.length;i++)
     {
     	//if (sender)
     	   //alert(sender.name);
     	   
        if (this.Fields[i].cData['JSRELOAD']) 
        {
     	   bReload = this.Fields[i].fnFiltered(this.Fields[i].cData['JSRELOAD'],theRow);
     	   if (bReload)
     	   {
     	   	cmbTarget = GetElement(this.Fields[i].cID+"_"+theRow.cData["_ROWID_"]);
     	   //	alert(cmbTarget.form.name);
     	   //	alert(this.Fields[i].cData['ENTITY']);
     	   	//sButton,sEntity,sForm,xDefs
     	  	fnClickForm('btnrefresh',this.Fields[i].cData['ENTITY'],cmbTarget.form.name);
     	   	return;
     	   }
     	   
     	  // cmbTarget = GetElement(this.Fields[i].cID+"_"+theRow.cData["_ROWID_"]);
  	      // cmbTarget.disabled = bDisable;       	          	      
       }//  if (this.Fields[i].cData['JSHIDE']) 
     } // for each i  
 }  //  if (scope=='row')
 
 } //   if (sFunction=='disable')
 

} /* End class TFieldBasket */

var gFieldBasket = new TFieldBasket("MAIN");


function GetTags(s,c1,c2)
{
	var iStart,iEnd,a,sTest,bDone;
	myArray= new Array;
	a=0;
	bDone=false;
	iStart=0;

	/* find c1 */
	while (!bDone)
	{
		iStart = s.indexOf(c1);
		iEnd   = s.indexOf(c2);
		if (iStart==-1)
		bDone=true
		else
		{
			sTest = s.slice(iStart+1,iEnd);
			if (sTest!="")
			{
				myArray[a++]=sTest;
				s=s.slice(iEnd+1,9999);
			}
			else
			bDone=true;
		} // if NOT (iStart==-1)
	} // while (!bDone)

	return myArray;
}


function fnRegisterField(encoded,cID,cBaseName,cData,cSettings)
{
	
 if (encoded)
 {
   cData = decode64(cData); 
   cSettings = decode64(cSettings); 
 }
 
 cmb = gFieldBasket.fnAddField(cID,cBaseName);


 cmb.fnInitSettings(cSettings);
// alert(cSettings);
 cmb.fnInitItems(cData);

}

function fnRegisterRow(encoded,cID,cData)
{
 if (encoded)
     cData = decode64(cData); 
 //alert(cID);
 cmb = gFieldBasket.fnAddRow(cID,cData);

}

function fnFieldByID(cID)
{
 if (!gFieldBasket)
    return null;
 return gFieldBasket.fnFieldByID(cID);
}


function fnFieldByBase(cBase)
{
	
 if (!gFieldBasket)
    return null;
   
 x =  gFieldBasket.fnFieldByBase(cBase);
 return x;
}

function fnRowByID(cID)
{
 if (!gFieldBasket)
    return null;
 return gFieldBasket.fnRowByID(cID);
}

function fnPaintControl(sBase,sFlag)
{
   var sBase,sFlag;
   
   // find the combo code
  cmbTarget = GetElement(sBase+"_"+sFlag);
   // return false;
  if (!cmbTarget)
     return;
     
  
  cmb = fnFieldByBase(sBase);

  if (!cmb)
     return;
  
  cmb.fnPopulateCombo(cmbTarget.name,cmbTarget.value,cmb.cData['FILTERS'],sFlag);
}

function fnSetChildValue(gParent,sKid,sFlag,sid)
{
     var kidField = GetElement(sKid+"_"+sFlag);
 
     if (kidField)
     {
     	var test  = gParent.fnItemByID(sid);
     	var childF = gParent.cData[sKid+'_CONTENT'];
     	
     	if (test && childF && childF!="")
     	{
     	   var myvalue = test.fieldData[childF];
     		if (kidField.type=='checkbox')
     		{
     		  kidField.checked = myvalue==1;
     		 // alert(childF+"="+kidField.type);
     		}
     		else
     	     kidField.value = myvalue;
     	}
     	
     }    
      
}

function fnInitRows(theRow)
{
 var sFlag,theField;
 
 if (!gFieldBasket)
     return;
    
 for (var i=0; i<gFieldBasket.cRows.length;i++)
 {
   theRow =gFieldBasket.cRows[i];
   if (theRow)
   {  
   	  /*
   	  for (var f=0; f< gFieldBasket.Fields.length;f++)
   	  {
   	  	sFlag =theRow["_ROWID_"];
   	  	theField = gFieldBasket.Fields[f];
   	  	if (theField.cData['FILTERS'])
   	  	   alert(theField.cData['FILTERS'] + "... " + theField.cData["IDS"]);
   	      // theField.fnPopulateCombo(theField.cBaseName+"_"+sFlag,theRow.cData[theField.cBaseName],theField.cData['FILTERS'],sFlag);
   	  }
   	  */
   	  gFieldBasket.fnDoFunction('hide','row',theRow);
      gFieldBasket.fnDoFunction('disable','row',theRow);  
   }
   
 }
 
}

function fnFieldChanged(obj,theField,theRow)
{

	//alert(obj.form.name);
	 //alert(theField.cID+"was changed"+theRow.cData['_ROWID_']); 
}

function fnReplaceItems(sParams,cData)
{
 var theField,sBase;
 sBase = sParams['BASEFIELD'];

 theField  = fnFieldByBase(sBase);
 if (theField)
 {
  
 	theField.fnInitItems(cData,true);
 	theField.cData['IDS'] = InsertWithSep(theField.cData['IDS'],sParams['IDS']);
 //	alert(theField.cData['IDS']);
    theField.fnPopulateCombo(sParams['TARGET'],sParams['ISELECTED'],sParams['FILTERS'],sParams['FLAG'],true); 	
 }

    
    
}

function doSelectAll(ctl,ids)
{
 var aIDS,obj,bChecked;
 bChecked = true;
 
 aIDS = ids.split(",");
 
 for (var i=0; i < aIDS.length;i++)
 {
  //obj = GetElement("_SELECT__"+aIDS[i]);
  obj =document.getElementById("_SELECT__"+aIDS[i]);
  
  if (obj && i==0)
  	 bChecked=!obj.checked;    
     
  if (obj)
      obj.checked = bChecked;
 
  fnRowChecked(obj,aIDS[i],false);
 }
 
 fnAfterChecking(ctl);
 return false;
 
}

function fnSkirtChecked(ctl,id,url)
{
 // var sEntity =   fnGetEntity();
 // alert(id +" params]"+params);
  // var url =params;// "?cEntity="+ctl.value+"&cAction=26";
      //alert(url);
      window.location.href = url;
      return true;

}

/* When someone checks a row, we highlight it */
function fnRowChecked(ctl,id,bFinal)
{
 var obj;
 
 obj = FindMyObject("row_"+id); 
 //alert(obj);
  
 //alert("hi");
     
 if (obj && ctl)
 {
 	if (ctl.checked)
       obj.style.background = "#FFFFCC"
    else
       obj.style.background = "white";
    
 }
    
 if (bFinal)
     fnAfterChecking(ctl);
     
}

function fnAfterChecking(obj)
{
	//return;
 var obj = FindMyObject("divListActions");  
 if (!obj)
    return;
 var sEntity =   fnGetEntity();
 var sChecked = fnGetSelected (sEntity);
 if (sChecked=="")
 {
 	obj.className="gSelectedDivHide";
 }
 else
 	obj.className="gSelectedDiv";
 
 //alert("Got it"+sChecked);
}


function fnNewLookup(sTarget)
{
  var sFlag,sBase,sRowData,sData,url,myF,sCopies;
	
//  alert(cData);
  var myF = GetElement(sTarget);
  sBase = fnGetName(sTarget,"_");
  sFlag = fnGetValue(sTarget,"_");

  theRow = gFieldBasket.fnRowByID(sFlag);
  theField  = fnFieldByBase(sBase);
   
  sRowData = theRow.fnRowData(true);

   sData = "TARGET:="+sTarget+"|"+
 	  	  	  "LOOKUP:="+theField.cID+"|"+
    	      "BASEFIELD:="+theField.cBaseName+"|"+
    	      "KEYFIELD:="+theField.cKeyField+"|"+
    	      "DATAROW:="+ sRowData+"|"+
    	      "TARGETFORM:="+ myF.form.name+"|"+
    	      "ENTITY:="+ theField.cEntity+"|"+
    	      "LOOKUPENTITY:="+ theField.cLookupEntity+"|"+
    	      "COPYFIELDS:="+ theField.cCopyFields;
//  alert(theRow.cData['CONTACTTYPEID']);
  url = "?cEntity="+theField.cLookupEntity+"&cAction=2&xAction=G_NEWENTITY&DATA="+encode64(sData);
  //  alert(url);
  callToServer(url,"frameLookups");
 
  return false;

}

function fnOasisPagePick(ctl)
{
 //alert(ctl.value);
    //  var thisEntity = fnGetEntity();
      var url = "?cEntity="+ctl.value+"&cAction=26";
     // alert(url);
      window.location.href = url;
      return true;

}

function fnSetComboValues (sTarget,sID,sDisplay)
{
 var sBase,sFlag,sKey,cmbTarget;
 

  sBase = fnGetName(sTarget,"_");
  sFlag = fnGetValue(sTarget,"_");
  
  theField = fnFieldByBase(sBase);
  cmbTarget = document.getElementById(sTarget);
 
 
  var cmbReload = document.getElementById(sTarget+'_reload');
   
  if (cmbReload)
  {
      var thisEntity = fnGetEntity();
      var url = "?cEntity="+thisEntity+"&pickFields="+sTarget+"&"+sTarget+"="+sID;
     // alert(url);
      window.location.href = url;
      return true;
  }
      
  if (theField)
  {
   if (cmbTarget.type=="select-one")
  	{  		  
  	   cData = theField.cKeyField+":="+sID+"\t" + 
  	            theField.cDisplayField+":="+sDisplay+"\t";
  	            
  	   theField.fnZapItems();
  	   theField.fnAddItem(cData,sID);
  	   theField.fnPopulateCombo(sTarget,sID,"",sFlag,true);
  	   fnSetSiblings(cmbTarget);
  	}
    else // if this is a text field
    {
    	var divDisplay = document.getElementById("searchdiv_"+sTarget);
    	divDisplay.innerHTML = sDisplay;
    	cmbTarget.value= sID;
    	//alert (divDisplay.innerHTML);
    }
    
  } // the field exists

  
}

function fnSetParentValue(sTarget,sID,sDisplay)
{
	
	if (opener)
	{
	   opener.fnSetComboValues(sTarget,sID,sDisplay);
	}
	
	window.close(); 
	return false;
}


function fnListManage(sTarget,sValue,flag)
{
  var myF,sCurrent,aCurrent,sNew;
  
  myF = GetElement(sTarget);
  if (!myF)
     return "";
     
  sCurrent = myF.value;
  if (flag=='add')
  {
     sNew =   InsertWithSep(sCurrent,sValue);
     return sNew;
  }
     
  sNew = "";
  if (flag=='delete')
  {
     
     if (sCurrent!="")
     {
       aCurrent = sCurrent.split(",");
       for (i=0; i<aCurrent.length;i++)
       {
        if (!fnValueIn(sValue,aCurrent[i]))
            sNew = InsertWithSep(sNew,aCurrent[i]);
       }
       //sNew = InsertWithSep(sNew,sValue);
     }
  
    return sNew;
  }
  
  
}


function fnSetParentValue2(sTarget,sValue,sEntity,bReload,flag)
{
   
  if (flag=="")
     flag="add";
     	
//  alert(bReload);
  var sValues = fnListManage(sTarget,sValue,flag);
  var myF = GetElement(sTarget);

  if (myF)
      myF.value=sValues;
  else
      return false;
          
  if (bReload)
  {
  	  
      fnClickForm('btnrefresh',sEntity,myF.form.name);
      return false;
  }
  return false;
  
}

function fnDoListAction (sEntity,sTarget)
{
  var  sChecked,myForm,myobj;
  
  sChecked = fnGetSelected (sEntity);
  
  if (sChecked=="")
  {
   alert("You have not selected any records. This task requires one or more records to be selected");
   return false;
  }
  
  if (opener)
  {
  	  var myEntity = opener.fnGetEntity();
  	  //alert(myEntity);
	  opener.fnSetParentValue2(sTarget,sChecked,myEntity,true,'add');
  }
  window.close();
  	
  return false;   

 
  
}

function fnCloseWindow()
{
 window.close();
}

function fnPickRecord(sTarget,flags,cLookupEntity)
{
  var sFlag,sBase,sRowData,sData,url,myF,sCopies;
	  
  
  
  var myF = GetElement(sTarget);
  sBase = fnGetName(sTarget,"_");
  sFlag = fnGetValue(sTarget,"_");

  
  theRow = gFieldBasket.fnRowByID(sFlag);
  if (theRow)
  {
  	cLookupEntity = theField.cLookupEntity;
    theField  = fnFieldByBase(sBase);
   
    sRowData = theRow.fnRowData(true);

    sData = "TARGET:="+sTarget+"|"+
 	  	  	  "LOOKUP:="+theField.cID+"|"+
    	      "BASEFIELD:="+theField.cBaseName+"|"+
    	      "KEYFIELD:="+theField.cKeyField+"|"+
    	      "DATAROW:="+ sRowData+"|"+
    	      "TARGETFORM:="+ myF.form.name+"|"+
    	      "ENTITY:="+ theField.cEntity+"|"+
    	      "LOOKUPENTITY:="+ theField.cLookupEntity+"|"+
    	      "COPYFIELDS:="+ theField.cCopyFields;
  }
  
  url = "?cEntity="+cLookupEntity+"&cAction=26&xAction=G_NEWENTITY&cParentTarget="+sTarget+"&flags="+flags;
  fnCallToServer(url,"frameLookups");
  return false;

}

function fnPickRecords(sTarget,sLookup,bMulti)
{
  var sFlag,sBase,sRowData,sData,url,myF,sCopies;
  
  url = "?cEntity="+sLookup+"&cAction=26&xAction=G_NEWENTITY&cParentTarget="+sTarget+"&xMulti="+bMulti;

   fnCallToServer(url,"frameLookups");
  return false;

}

function fnGetPart(s,mypos,sep)
{
  if (!sep)
     sep="_";
     
  var a = s.split(sep);
  return a[mypos-1];
}


function fnSearchRecords(e,ctl,sLookup,minlen,rfields)
{
  var sFlag,sBase,sRowData,sData,url,myF,sCopies;
  var tdata2="";
  var fName,afields,ipos;
  
 
  /* Escape Key is pressed */
 if (e.keyCode==27)
 {
      fnHideSearch("divSearch"); 
      return;
 }

 var divSearch2 = FindMyObject("divSearch");
 var cmbSearchList = divSearch2.document.getElementById('cmbSearchList');
 
 /* Up or Down arrow pressed. Scroll up and down */
 if (e.keyCode==38 || e.keyCode==40)
 {
  
  if (e.keyCode==38 && cmbSearchList.selectedIndex>1)
     ipos=-1;
     
  if (e.keyCode==40)
     ipos=1;
   cmbSearchList.selectedIndex = cmbSearchList.selectedIndex+ipos;
   return;
 }
 
 /* Return pressed. Select current item */
 if (e.keyCode==13)
 {
 	 fnSelectMeCMB(cmbSearchList,ctl.id);
 	 return;
 }
 
 
 
  if (ctl.value.length < minlen)
  {
  	if (e.keyCode!=18)
        return;
  }
  
  if (rfields)
  {
   afields = rfields.split(",");
   for (x=0; x<afields.length;x++)
   {
     fName=afields[x]+"_"+fnGetPart(ctl.id,2);
     var myTest = GetElement(fName); 
     if (myTest)
     {
       tdata2=tdata2+"&"+afields[x]+"="+myTest.value;     
     }
   }
   
  }
  //alert(" value is "+tdata2);
  var sDataField  = fnGetPart(ctl.id,1)+"_"+fnGetPart(ctl.id,2)+"_DATA";
  var tdata = GetElement(sDataField);
  url = "?cEntity="+sLookup+"&cAction=26&xAction=X_FUNCTION&cParentTarget="+ctl.id+"&sLookup="+sLookup+"&search="+ctl.value+"&data="+tdata.value+"&from="+ctl.id+tdata2;
  loadHTML(url,"divSearch");   
  fnHideShow2("divSearch",ctl);


}

function fnLoadProgress(url,divName)
{
 var myDiv= FindMyObject(divName);
 
 if (myDiv)
 {

  loadHTML(url,divName);    
 }
 
}


function fnShowHTML(url,mydiv)
{
	
}

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");


function loadXML(xmlFile)
{
  xmlDoc.async="false";
  xmlDoc.onreadystatechange=verify;
  xmlDoc.load(xmlFile);
  xmlObj=xmlDoc.documentElement;
  return xmlObj;
}

function verify()
{
  // 0 Object is not initialized
  // 1 Loading object is loading data
  // 2 Loaded object has loaded data
  // 3 Data from object can be worked with
  // 4 Object completely initialized
  if (xmlDoc.readyState != 4)
  {
      return false;
  }
}

function fnMyValue(ctl,sTag)
{
  var a=ctl.id.split('_');	
  var idTarget = a[0]+"_"+a[1]+"_"+sTag;
  var myFID = GetElement(idTarget); 
  if (myFID)
     return myFID.value;
  else
     return ctl.id;
}

function fnMyValueCtl(sName,sTag)
{
  var a=sName.split('_');	
  var idTarget = a[0]+"_"+a[1]+"_"+sTag;
  var myFID = GetElement(idTarget); 
  return myFID;
}


function fnForceSearchValue(sName,sValue,sDisplay)
{
	//alert(sName);
  var myF = GetElement(sName); 

  
  if (myF)
     myF.value=sValue;
     
  var myFDisplay =fnMyValueCtl(sName,"DISP");
  if (myFDisplay)
     myFDisplay.value=sDisplay;
     
   return false;
}

function fnSearchRecords2(e,sName,sLookup,minlen,rfields)
{
  var sFlag,sBase,sRowData,sData,url,myF,sCopies;
  var tdata2="";
  var fName,afields;
  var ctl = GetElement(sName); 
   
  if (rfields)
  {
   afields = rfields.split(",");
   fName=afields[0]+"_"+fnGetPart(ctl.id,2);
   var myTest = GetElement(fName); 
   if (myTest)
   {
      tdata2=tdata2+"&"+afields[0]+"="+myTest.value;
   }
  }

  var sDataField  = fnGetPart(ctl.id,1)+"_"+fnGetPart(ctl.id,2)+"_DATA";
  var tdata = GetElement(sDataField);
  url = "?cEntity="+sLookup+"&cAction=26&xAction=X_FUNCTION&cParentTarget="+ctl.id+"&sLookup="+sLookup+"&search="+ctl.value+"&data="+tdata.value+"&from="+ctl.id+tdata2;
  loadHTML(url,"divSearch");   
  fnHideShow2("divSearch",ctl);


}

function fnExitSearch(ctl,iview,e)
{
  
  sFrom = ctl.id;
//  if (e.type)
   // alert(e.type);
 // else
   // alert("no evelemt");
  var oldValue =fnMyValue(ctl,"OLD");
  
  var a=sFrom.split('_');
    
      
  var displayTarget = sFrom;
  var myF = GetElement(displayTarget); 
  var idTarget = a[0]+"_"+a[1];
  var myFID = GetElement(idTarget); 
  
  var testValue=ctl.value.toLowerCase();
  if (testValue=="")
  {
  	myF.value=oldValue;  	
  }
  /*
  else
 if (testValue.indexOf("?")>=0) // all
  {
     myFID.value=-1;
     fnHideSearch("divSearch");  
     myF.value="-ALL-";
  }
  else
  if (testValue.indexOf("-")>=0) // all
  {
     if (myFID)     
        myFID.value=-2;
     fnHideSearch("divSearch");  
     myF.value="-NONE-";
  }
  */
   return false;	
}

function fnSelectMe(sFrom,myid,myText)
{

  if (myid=="")
  {
    fnHideSearch("divSearch");  
    return false;
  }

  var a=sFrom.split('_');
  
  var idTarget = a[0]+"_"+a[1];
  var myFActual = GetElement(idTarget); 
  if (myFActual)
  {
      myFActual.value=myid;      
     fnOnChanged(myFActual);    
  }
  
 // alert("HI");
  var displayTarget = sFrom;  
  var myF = GetElement(displayTarget); 
  if (myF)
      myF.value=myText;
   fnHideSearch("divSearch");  
   
  //  alert("HI 2");
   return false;
}

function fnSearchCMClose(e,ctl,sFrom)
{
		//alert("TEST");
  if (e.keyCode==13)
  {
     fnSelectMeCMB(ctl,sFrom);
  }
     
}

function fnSelectMeCMB(ctl,sFrom,actiontype)
{
  var divParent = FindMyObject("divSearch");
  var cmbSearchList = divParent.document.getElementById('cmbSearchList');
  
  
   var cmbTarget = parent.document.getElementById(sFrom);
   
   
   if (cmbTarget)
   {
    var myid = ctl.options[ctl.selectedIndex].value;
    var mytext = ctl.options[ctl.selectedIndex].text;
    cmbTarget.value=mytext;
   
    var a=sFrom.split('_');
    var idTarget = a[0]+"_"+a[1];
    var myFActual = GetElement(idTarget); 
    var sActual =a[0];
    if (myFActual)
    {
       myFActual.value=myid;
     //  alert("Got Some");
    }
  //  alert(cmbTarget.id + ' from '+sFrom + "= "+myid+'--'+actiontype);
   }
    /*
   if (actiontype=="SEARCH")
   {
   	 var sEntity =   fnGetEntity();
     fnSubmitMe('?cEntity='+sEntity,sActual,myid);
   }
   */
   fnHideSearch("divSearch"); 
    
   
  
   return false;
}

function fnSearchEnter(ctl,iView)
{
ctl.select();
}

function fnDisplayList(xmlObj,ctl)
{
  var row="";
  var sFrom = ctl.id;
  
  var mylink="<a class='gButtons2' href='?' onClick=\"return fnSelectMe('','','');\">Cancel</a> ";
  row = "<tr><td class='searchBoxText' align=center colspan=2 >"+mylink+"</td></tr>";
 //  alert(xmlObj);
  if (xmlObj.childNodes(0).tagName=="error")
  {
  	var mytext=xmlObj.childNodes(0).firstChild.text;
  	//var mylink="<a class='viewoneEditError' href='?' onClick=\"return fnSelectMe('','','');\">"+mytext+"</a> ";
    row =row+ "<tr bgcolor=white><td colspan=2><font color=red>"+mytext+"</font></td></tr>";
   // fnShowSearch(row,ctl,"divSearch");
    //return;
  }
  else
  for (i=0; i<xmlObj.childNodes.length;i++)
  {
  	var myid = xmlObj.childNodes(i).getAttribute("id");
  	var mytext =  xmlObj.childNodes(i).getAttribute("display");
  	var mydisplay = xmlObj.childNodes(i).getAttribute("display");
  	
  	//var mylink="<a href=\"javascript:void\" onClick=return \"fnSelectMe('"+sFrom"','"+myid+"','"+mytext+"')\">"+mytext+"</a> ";
  	
  	var mylink="<a class='searchBoxText' href='?' onClick=\"return fnSelectMe('"+sFrom+"','"+myid+"','"+mydisplay+"');\">"+mytext+"</a> ";
  	var mylink="<a class='searchBoxText' href='?' onClick=\"return fnSelectMe('"+sFrom+"','"+myid+"','"+mydisplay+"');\">"+mytext+"</a> ";

  	 row = row+ "<tr bgcolor=white><td>"+myid+"</td><td>"+mylink+"</td></tr> ";
  }
  row = "<table cellpadding=1 cellspacing=1 width=100%  bgcolor=silver>"+row+"</table>";
  

  fnShowSearch(row,ctl,"divSearch");
  return;
}

function fnSetSiblings(obj,sPostfix)
{
	if (!sPostfix)
	    sPostfix = 'value';
	    
   var testName = obj.name+sPostfix;
   var myF = GetElement(testName);  	
   if (myF)
         myF.value = obj.value;	
}

function fnFirstLoad(sTags)
{
  
 
      
 // return;
  var aTags = sTags.split(",");
  for (var a=0; a<aTags.length;a++)
  {
  for (var i=0; i<gFieldBasket.cRows.length;i++)
  {
  	var sTag = aTags[a];
  //	alert(sTag);
    var sTarget = sTag +"_"+gFieldBasket.cRows[i].cID;
    var myF = GetElement(sTarget); 
    if (myF)
       fnOnChanged(myF);
  }
  }
  
  
  
}

function fnOnChanged2(ctl)
{
 //alert(ctl);
  //var myElement = GetElement(sName);
  fnOnChanged(myElement);
}

function fnUpdateTotal(sName,sTotalField)
{
  var sBase,sNewName,myF,myF2,iCount,myF3,iTotal;
	sBase = fnGetName(sName,"_");
	
   iTotal=0;	
  /// alert("THI");
   
   myF = GetElement(sName+"_size");  	
   if (myF)
      var iCount = myF.value;
  for (i=0; i<iCount;i++)
  {
  	sNewName=sName+"_"+i;
  	sNewName2=sName+"_"+i+"_TAG";
    myF2 = GetElement(sNewName);  	
    if (myF2 && myF2.checked)
    {
       myF3 = GetElement(sNewName2); 
       if (myF3) 	
          iTotal=iTotal+Number(myF3.value);
    }
    	
  }
   myF = GetElement(sTotalField);  
   if (myF)
   {
    myF.value=iTotal;
   }
    
}

function fnOnChanged(obj)
{
  var sKids,aKids,cmb,sKey,theRow;
  sBase = fnGetName(obj.name,"_");
  sFlag = fnGetValue(obj.name,"_");
  
  sKey = gFieldBasket.fnPrimaryKey();

 if (obj)
 {
 	//alert(pagemodified);
   pagemodified=true;
  //alert("changed");
 }
 
  theRow = gFieldBasket.fnRowByID(sFlag);
  //alert(theRow);
  theField = fnFieldByBase(sBase);
 // alert(theField);
  if (theField)
  {
  	  
  	 var sNewName= sBase+"_"+sFlag;
  	 var myF = GetElement(sNewName); 
  }
   //alert("3");
 // if (theField && theField.cData['JSRELOAD'] && theRow && sFlag!="FILTER")
  if (theField && theField.cData['JSRELOAD'] && theRow && sFlag!="FILTERn")
  {
  	//alert("FOUND FIELD");
    var bReload = theField.fnFiltered(theField.cData['JSRELOAD'],theRow);
    /* Need to reload form */

   // theRow.cData[sBase] = obj.value; 
    if (bReload)
    {
  	  fnClickForm('btnrefresh',theField.cData['ENTITY'],obj.form.name);
      return;
    }
    
  }
  //  alert("4");
  if (theRow )
  {
 //alert("5");
  	if (obj.type=="select-one")
  	{
      fnSetSiblings(obj);
      theRow.cData[sBase] = obj.value; 
  	}
  	else
    if (obj.type=="checkbox")
    {
    	if (obj.checked)
  	       theRow.cData[sBase] = "1"
    	else
  	       theRow.cData[sBase] = "";
  	   
    }
    else
  	   theRow.cData[sBase] = obj.value; 
    gFieldBasket.fnDoFunction('hide','row',theRow,obj);     
    gFieldBasket.fnDoFunction('disable','row',theRow,obj);
    gFieldBasket.fnDoFunction('grouptag','row',theRow,obj);

  }  
 
   
  sEntity =   fnGetEntity();
  

  if (!theField)
     return;

  /* Here do selective filtering */
  sKids = theField.cData['KIDS'];
 

   	 
  if (sKids)  
  {  
  	
  	aKids = sKids.split(",");       
    for (var i=0; i<aKids.length;i++)
    {  	 
     fnSetChildValue(theField,aKids[i],sFlag,theRow.cData[sBase]);
    
     fnPaintControl(aKids[i],sFlag);
    }
  
  }

  if (theField && theRow)
  {     
     fnFieldChanged(obj,theField,theRow);
  }
}


function fillFakeForm(ctl)
{
	
  myForm = ctl.form;
 // alert(ctl);
  fake =  myForm.elements["Fake_"+ctl.name];
  if (fake)
      fake.value=ctl.value;
  return true;    
 // document.forms[sForm].myFileText.value= document.forms['realForm'].file.value;
}
function doFileBrowse(sName)
{
//Tell the file element that it received a click
 myElement = GetElement(sName);
if (myElement)
    myElement.click();
return false;
}

function TestMe()
{
var iHeight,iPages,iOffSet,test;

 var myForm = FindMyObject("form_CONTACTS_12");

 myForm.file.value = "Test.text";

 test= document.getElementById("ratiomarker");
 if (test)
    iOffSet = test.offsetLeft;
 alert(iOffSet);
 
 var myDiv= FindMyObject("divPrintBox");
 if (myDiv)
 {
  iHeight = myDiv.scrollHeight/iOffSet;
  var iPageHeight = 11-1.25;
  iPages = iHeight / iPageHeight;
  //alert( iHeight+" and "+iPages);
 }
 
  //  alert(myDiv.scrollHeight);

}

function fnHideShow(divName,ctl,hidestr,showstr)
{
  var divTarget = GetElement(divName);
  if (divTarget)
  {
  	if (divTarget.style.display=='none')
  	{
  	  	divTarget.style.display = 'inline';
  	  	ctl.innerHTML = hidestr;
  	}
  	else
  	{
  	  	divTarget.style.display = 'none';
  	  	ctl.innerHTML = showstr;
  	}
  	
  }
  
  return false;	
}

function fnReloadPage(url)
{
 if (TimerID2)
 {
	clearTimeout(TimerID2);
    TimerID2  = 0;  
    //alert("Reload now");
    fnReloadMe(url); 
 }
}

function fnReloadPageConfirm(url)
{
 var mytest = confirm("You have been inactive for more than 5 minutes. Do you wish to continue?");
 
 
 if (TimerID)
 {
	clearTimeout(TimerID);
    TimerID  = 0;    
 }
}

function fnSubmitMe(url,ctlName,cValue)
{
	
   var cmbTarget = GetElement(ctlName);
   if (!cmbTarget)
      cmbTarget = GetElement(ctlName+"_");
   if (!cmbTarget)
       return;
    //alert(url);   
   if (cValue=="")
      cValue=cmbTarget.value;
 
   if (cValue!="")
   {
    url =  url+"&pickFields="+ctlName+"&"+ctlName+"="+cValue;
   // alert(url);
    window.location.href = url;
   }
   
   
   return false;
}

function EntityFieldChanged(sEntity,obj)
{
  sBase = fnGetName(obj.name,"_");
  sFlag = fnGetValue(obj.name,"_");
  
  sKey = gFieldBasket.fnPrimaryKey();
 //return;
    
  
     
  theRow = gFieldBasket.fnRowByID(sFlag);

    
  theField = fnFieldByBase(sBase);
 // if (theField)
    // alert("Entity="+sEntity+" field= "+obj.name);
	
}

function fnFocusMe(ctl)
{
 // alert(ctl);
   var test= document.getElementById(ctl);
   if (test)
      test.focus();
}

function fnMyKeyPress(e)
{
 
}


function fnReloadMe(url)
{

	if (url!="")
	   window.location.href = url;	
}

function fnReloadParent()
{
	
	if (opener)
	{
		//alert("Found Parent");
	   opener.window.location.href=opener.window.location.href;
	}
	
	window.close(); 
	return false;

}

function fnMyMagify(myid,mysign)
{
	var mytest;
// alert(mysign);
 mytest = GetElement(myid);
 if (mysign=="-")
    mytest.width=mytest.width*0.75;
 else
    mytest.width=mytest.width*1.25;
 
 
// alert(mytest.width);
 return false;
}

function fnGetSplitValue(mystr,i,sepr)
{
	
  if (!sepr)
     sepr=",";
     
  var strs = mystr.split(sepr);
  return strs[i-1];
  
}

function fnImageSwap(ctl,myid,myimg)
{
  var mytest,myurl,newsrc,mytest2;
  mytest = GetElement(myid);
  myurl = mytest.src;
  newsrc = myurl.replace(basename(myurl),myimg);
  mytest.src=newsrc;
  ctl.className= "gButtons2_sel";

  var ctlbase = fnGetSplitValue(ctl.id,1,"_");
 
  for (i=1; i<=5;i++)
  {
  	var olditem=ctlbase+"_"+i; 
  	if (olditem!=ctl.id)
  	{
    mytest2 = GetElement(olditem);
    if (mytest2)
       mytest2.className="gButtons2";
  	}
  }
 

 return false;
}

function file     (f)   
 { 
 	return [ basename(f), sizeOf(f) ];    
 }

  function basename (path) 
  { 
  	return path.replace( /.*\//, "" ); 
  }
   // note that we can't call it "short",
   //  because that's a reserved word in JS.

  function dir (d, subdirs) 
  {
    var new_hash = {};
    for(var i = 0; i < subdirs.length; i++) {
      var subdir_name      = subdirs[i][0],
          subdir_structure = subdirs[i][1];
      new_hash[ subdir_name ] = subdir_structure;
    }
    return [ basename(d), new_hash ];
  }
  
var req;


function processStateChange()
{
  statusDiv = document.getElementById("status");
  if (statusDiv)
  {
  if (req.readyState == 0){ statusDiv.innerHTML = "UNINITIALIZED"; }
  if (req.readyState == 1){ statusDiv.innerHTML = "LOADING"; }
  if (req.readyState == 2){ statusDiv.innerHTML = "LOADED"; }
  if (req.readyState == 3){ statusDiv.innerHTML = "INTERACTIVE"; }
  if (req.readyState == 4){ statusDiv.innerHTML = " "; }
  }
  
  if (req.readyState == 4){
    if (req.status == 200)
    {
       response = req.responseText;
       destinationDiv = document.getElementById(dest);
       destinationDiv.innerHTML = response;
       pageLoaded = 1;
       fnOnStateChange(req.status,destinationDiv);
    } 
    else 
    {
       //statusDiv.innerHTML = "Error: Status "+req.status;
    }
  }
}

function fnCheckEdit(ctl,parentEdit)
{

	var cmbTarget =GetElement("div"+parentEdit);
	var cmbTarget2 =GetElement(parentEdit);
	if (ctl.checked)
	   cmbTarget.className="divCheckEdit";
	else
	{
	   cmbTarget.className="divCheckEditHide";
	}
  //  alert(parentEdit);
}

function loadHTML(url, destination)
{
  dest = destination;
  pageLoaded=0;
  
  //3("Loading html");
  if (window.XMLHttpRequest)
  {
      req = new XMLHttpRequest();
      req.onreadystatechange = processStateChange;
      req.open("GET", url, true);
      req.send(null);
  } 
  else if (window.ActiveXObject)
   {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) 
        {
            req.onreadystatechange = processStateChange;
            req.open("GET", url, true);
            req.send();
        }
   }
}

function fnMousePos(e,req) 
{
	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	
	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	
	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	if (req=='x')
	   return posx;
	if (req=='y')
	   return posy;
	// posx and posy contain the mouse position relative to the document
	// Do something with this information
}

function fnOpenInFrame(e,fname,url)
{
  masterdivobj=document.getElementById(fname);
  if (masterdivobj)
  {
  	
  	var myx = fnMousePos(e,'x');
  	var myy = fnMousePos(e,'y');
  	
    masterdivobj.style.left = myx;
    masterdivobj.style.top =  myy;
    masterdivobj.src=url;
  //  masterdivobj.contentWindow.document.write("THis is a start...");
	document.getElementById(fname).style.display="inline";
  }
 return false; 
}

function fnHideFrame(fname)
{
  
  	parent.document.getElementById(fname).style.display="none";
  
  
}

function fnFormSubmiter(frmName)
{
  var tempForm = document.getElementById(frmName);
 
  if (tempForm)
     tempForm.submit();
  return false;	
}

function fnKeyPressSubmit(ctl,e)
{
 //alert(e.keyCode);
 if (e.keyCode==13)
 {
   ctl.form.submit();
 }
 return;
}


