// 建立於 03-17-2003
// <<2004-03-15>> , 引用 Reduce_HTML_Unicode 功能,用以將 &#21894; 格式的字串, 轉換為 Unicode. 注意:必須 Include "EinsString.js"
// <<2004-05-18>> , 發現在 unicode 的網頁中, 程式碼裡的中文註解, 有時候會造成 IE 的解讀錯誤
// <<2004-10-01>> , 將 DeleteString 更名為 Magic3DeleteString
//                  將 RepeatDeleteSomeTag 更名為 Magic3RepeatDeleteSomeTag
//                  新增 AutoFormComboServer 等新 Function
// <<2004-10-08>> , 新增 Magic3FormatValue 以解決 JavaScript 處理實數的 BUG
//-----------------------------------------------------------------------------------------------------------
// 注意 : 在 IE 中, 用 Javascript 所產生的 Item 是無法用 eval() 指令找到的
//
//
//

function Magic3DeleteString(SourceStr,nIndex,nCount)
{
   var ls="";
   var rs="";
   if (nIndex>0) ls=SourceStr.substring(0,nIndex);
   var nStart=nIndex+nCount;
   if (nStart<SourceStr.length) rs=SourceStr.substring(nStart,SourceStr.length)
   return ls+rs;
}

function Magic3RepeatDeleteSomeTag(SourceStr,Tag)
{
   var RetStr=SourceStr;
   var p=RetStr.indexOf(Tag);
   while (p>=0)
   {
      RetStr=Magic3DeleteString(RetStr,p,Tag.length);
      p=RetStr.indexOf(Tag);
   }
   return RetStr;
}

function Magic3FormatValue(value)
{
   var NDIGITS=16;
   var valStr = "" + value;
   if (valStr.indexOf("N") >= 0 || (value == 2*value && value == 1+value)) return "Error ";
   var i = valStr.indexOf("e")
   if (i >= 0)
   { 
      var expStr = valStr.substring(i+1, valStr.length);
      if (i > 11) i = 11;
      valStr = valStr.substring(0, i);
      if (valStr.indexOf(".") < 0) valStr += ".";
      valStr += " " + expStr;
   }
   else
   {
      var valNeg = false;
      if (value < 0)
      {
         value = -value;
         valNeg = true;
      }
      var valInt = Math.floor(value);
      var valFrac = value - valInt;
      var prec = NDIGITS - (""+valInt).length - 1;
      var mult = " 1000000000000000000".substring(1, prec+2);
      var frac = Math.floor(valFrac * mult + 0.5);
      valInt = Math.floor(Math.floor(value * mult + .5) / mult);
      if (valNeg) valStr = "-" + valInt;
      else        valStr = "" + valInt;
      var fracStr = "00000000000000" + frac;
      fracStr = fracStr.substring(fracStr.length-prec, fracStr.length);
      i = fracStr.length - 1;
      while (i >= 0 && fracStr.charAt(i) == "0")
      {
         --i;
      }
      fracStr = fracStr.substring(0, i+1);
      if (i >= 0) valStr += "." + fracStr;
   }
   return valStr;
} 

function Magic3KiloDelimiter(Value,nAfterDot)
{
   var RetStr="";
   var SourceStr=""
   SourceStr+=Value;
   if (SourceStr.length>0)
   {
      var bNegative=false;
      if (SourceStr.charAt(0)=='-')
      {
         bNegative=true;
         SourceStr=SourceStr.substring(1,SourceStr.length);
      }
      var TailStr="";
      var p=SourceStr.indexOf('.');
      if (p!=-1)
      {
         TailStr=SourceStr.substring(p,SourceStr.length);
         SourceStr=SourceStr.substring(0,p);
         if (nAfterDot!=null)
         {
            while (TailStr.length<=nAfterDot) TailStr+="0";
         }
      }
      while (SourceStr.length!=0)
      {
         var nLen=SourceStr.length;
         var nStart=nLen-3;
         if (nStart<=0)
         {
            nStart=0;
            RetStr=SourceStr+RetStr;
            SourceStr="";
         }
         else
         {
            var Sub=SourceStr.substring(nStart,nLen);
            RetStr=","+Sub+RetStr;
            SourceStr=SourceStr.substring(0,nStart);
         }
      }
      RetStr+=TailStr;
      if (bNegative) RetStr="-"+RetStr;
   }
   return RetStr;
}

function Magic3RetrieveCtrlByName(theFormName,theCtrlName)
{
   var theSelect=null;
   var theForm=eval("document."+theFormName);
   if (theForm!=null)
   {
      var nLen=theForm.elements.length;
      for (var i=0;i<theForm.elements.length;i++)
      {
         if (theForm.elements[i].name==theCtrlName)
         {
            theSelect=theForm.elements[i];
         }
      }
   }
   return theSelect;
}

function Magic3RetrieveRowCount(theCtrl)
{
   var RetIndex=0;
   var TempName=theCtrl.name;
   var Separater="___";
   var p=TempName.indexOf(Separater);
   if (p!=-1) 
   {
      var Prefix=TempName.substring(p+Separater.length,TempName.length);
      RetIndex=parseInt(Prefix);
   }
   return RetIndex;
}

function Magic3RetrieveItemPrefix(theCtrl)
{
   var Prefix="";
   var TempName=theCtrl.name;
   var Separater="___";
   var p=TempName.indexOf(Separater);
   if (p!=-1) 
   {
      Prefix=TempName.substring(0,p+Separater.length);
   }
   return Prefix;
}

function Magic3GetTotalSum(theFormName,Prefix)
{
   var RetSum=0;
   var PrefixLen=Prefix.length;
   var theForm=eval("document."+theFormName);
   if (theForm!=null)
   {
      var nLen=theForm.elements.length;
      for (var i=0;i<theForm.elements.length;i++)
      {
         var theCtrl=theForm.elements[i];
         var CheckName=theCtrl.name.substring(0,PrefixLen);
         if (CheckName==Prefix)
         {
            var sValue=Magic3RepeatDeleteSomeTag(theCtrl.value,','); // 去除千位分解的符號
            var nValue=1*sValue;  // Translate to Number
            RetSum+=nValue;
         }
      }
   }
   return RetSum;
}

function Magic3GetItemCount(theFormName,Prefix)
{
   var RetCnt=0;
   var PrefixLen=Prefix.length;
   var theForm=eval("document."+theFormName);
   if (theForm!=null)
   {
      var nLen=theForm.elements.length;
      for (var i=0;i<theForm.elements.length;i++)
      {
         var theCtrl=theForm.elements[i];
         var CheckName=theCtrl.name.substring(0,PrefixLen);
         if (CheckName==Prefix)
         {
            RetCnt++;
         }
      }
   }
   return RetCnt;
}

function GridFormGetCtrlByNameAndRowCount(theFormName,theCtrlName,nRowCount)
{
   var Separater="___";
   var TargetName=theCtrlName+Separater+nRowCount;
   return Magic3RetrieveCtrlByName(theFormName,TargetName);
}

function GridFormGetTotalSum(SourceCtrl,theFormName,TargetCtrlName,AfterDecimal)
{
   var TargetCtrl=Magic3RetrieveCtrlByName(theFormName,TargetCtrlName);
   if (TargetCtrl!=null)
   {
      var Prefix=Magic3RetrieveItemPrefix(SourceCtrl);
      var TotalSum=Magic3GetTotalSum(theFormName,Prefix);
      var SumStr=Magic3FormatValue(TotalSum);
      var TempAttr=TargetCtrl.getAttribute("KiloDeli");
      if (TempAttr!=null)
      {
         SumStr=Magic3KiloDelimiter(SumStr);
      }
      TargetCtrl.value=SumStr;
   }
   else
   {
      alert(TargetCtrlName+" not found!!");
   }
}

function GridFormGetAverage(SourceCtrl,theFormName,TargetCtrlName,AfterDecimal)
{
   var TargetCtrl=Magic3RetrieveCtrlByName(theFormName,TargetCtrlName);
   if (TargetCtrl!=null)
   {
      var Prefix=Magic3RetrieveItemPrefix(SourceCtrl);
      var nTotal=Magic3GetTotalSum(theFormName,Prefix);
      var nCount=Magic3GetItemCount(theFormName,Prefix);
      if (nCount!=0) nTotal=nTotal/nCount;
      var sValue=nTotal.toString();
      var p=sValue.indexOf('.');
      if (p!=-1)
      {
         var nLen=p+AfterDecimal+1;
         sValue=sValue.substring(0,nLen);
      }
      var TempAttr=TargetCtrl.getAttribute("KiloDeli");
      if (TempAttr!=null)
      {
         sValue=Magic3KiloDelimiter(sValue);
      }
      TargetCtrl.value=sValue;
   }
   else
   {
      alert(TargetCtrlName+" not found!!");
   }
}

function Magic3NamedItem(ItemName)
{
   var theRet=null;
   var coll=document.all;
   if (coll!=null)
   {
      for (var i=0;(i<coll.length)&&(theRet==null);i++)
      {
         var pItem=coll.item(i);
         if (typeof(pItem.name)!='undefined')
         {
            if (pItem.name==ItemName) theRet=pItem;
         }
         else if (typeof(pItem.id)!='undefined')
         {
            if (pItem.id==ItemName) theRet=pItem;
         }
      }
   }
   return theRet;
}

function Magic3DupAllChild(theForm,Source,Target,NewIndex)
{
   if (Source.children!=null)
   {
      for (var i=0;i<Source.children.length;i++)
      {
         var SrcObj=Source.children[i];
         var TarObj=document.createElement(SrcObj.tagName);
         if (SrcObj.type!=null)
         {
            try // 加個 try 比較保險
            {
               TarObj.type=SrcObj.type;
            }
            catch(e)
		      {
               //window.status=TarObj.tagName+" "+TarObj.type;
            }
         }
         if (SrcObj.value!=null)
         {
            try // 加個 try 比較保險
            {
               TarObj.value=SrcObj.value;
            }
            catch(e)
		      {
               //window.status=TarObj.tagName+" "+TarObj.type;
            }
         }
         Target.appendChild(TarObj);
         TarObj.mergeAttributes(SrcObj);
        
         if (SrcObj.children!=null)
         {
            if (SrcObj.children.length==0)
            {
               try // 當 type=checkbox 時, 下面這一行會錯.所以要加上 try
               {
                  TarObj.innerText=SrcObj.innerText;
               }
               catch(e)
		         {
                  //window.status=TarObj.tagName+" "+TarObj.type;
               }
            }
         }
         else
         {
            alert("SrcObj.children is null");
         }
         if (typeof(SrcObj.name)!='undefined')
         {
            var Separater="___";
            var p=SrcObj.name.indexOf(Separater);
            var Prefix="";
            if (p!=-1) 
            {
               Prefix=SrcObj.name.substring(0,p+Separater.length);
            }
            TarObj.name=Prefix+NewIndex;
         }
         
         if (typeof(SrcObj.id)!='undefined')
         {
            TarObj.id=SrcObj.id;
         }
         if (SrcObj.tagName=="SPAN")
         {
            if (SrcObj.id=="RowID") TarObj.innerText=NewIndex+1;
         }
         else if (SrcObj.tagName=="INPUT")
         {
            //alert(SrcObj.type);
            //TarObj.type=SrcObj.type;
            //alert(TarObj.type);
            var DefVal=SrcObj.getAttribute("DefValue");
            if (DefVal!=null)
            {
               TarObj.value=DefVal;
            }
         }
         Magic3DupAllChild(theForm,SrcObj,TarObj,NewIndex);
         if (SrcObj.tagName=="SELECT")
         {
            /*var DefVal=SrcObj.getAttribute("DefValue");
            if (DefVal!=null)
            {
               for (var j=0;j < TarObj.options.length; j++)
               {
                  var v=TarObj.options[j].value;
                  if (v==DefVal)
                  {
                     TarObj.selectedIndex=j;
                  }
               }
            }*/
         }
      }
   }
   else
   {
      alert("Source.children is null");
   }
}

function FireEventAllChild(Source)
{
   if (Source.children!=null)
   {
      for (var i=0;i<Source.children.length;i++)
      {
         var SrcObj=Source.children[i];
         if (SrcObj.tagName=="SELECT")
         {
            if (SrcObj.id=="RootCombo")
            {
               if (SrcObj.onchange!=null)
               {
                  SrcObj.onchange();
               }
            }
            var DefVal=SrcObj.getAttribute("DefValue");
            if (DefVal!=null)
            {
               for (var j=0;j < SrcObj.options.length; j++)
               {
                  var v=SrcObj.options[j].value;
                  if (v==DefVal)
                  {
                     SrcObj.selectedIndex=j;
                  }
               }
            }
         }
         FireEventAllChild(SrcObj);
      }
   }
   else
   {
      alert("Source.children is null");
   }
}

function GridFormRetrieveLastRowNumber(FormName)
{
   var theForm=eval("document."+FormName);
   if (theForm==null)
   {
      alert(FormName+" not found!");
      return;
   }
   var NewIndex=-1;
   if (theForm.elements.length>0)
   {
      var TailItem=null;
      for (var i=theForm.elements.length-1;(i>=0)&&(TailItem==null);i--)
      {
         var ThisItem=theForm.elements[i];
         var ThisVal=ThisItem.getAttribute("IsGridItem");
         if (ThisVal!=null)
         {
            TailItem=ThisItem;
         }
      }
      if (TailItem!=null)
      {
         var TempName=TailItem.name;
         var Separater="___";
         var p=TempName.indexOf(Separater);
         if (p!=-1) 
         {
            var Prefix=TempName.substring(p+Separater.length,TempName.length);
            NewIndex=parseInt(Prefix); //  轉換為數字
         }
      }
   }
   return NewIndex;
}

function Magic3AppendOneRow(FormName)
{
   var theForm=eval("document."+FormName);
   if (theForm==null)
   {
      alert(FormName+" not found!");
      return;
   }
   var NewIndex=GridFormRetrieveLastRowNumber(FormName)+1;
   var TableName=FormName+"TBF";
   var theTable=Magic3NamedItem(TableName);
   if (theTable!=null)
   {
      if (theTable.children!=null)
      {
         if (theTable.children.length>0)
         {
            var theTBody=theTable.children[0];
            var TRs=theTBody.children.tags("TR");
            if (TRs!=null)
            {
               var SourceTR=null;
               for (var i=0;i<TRs.length;i++)
               {
                  if (TRs[i].id=="TRF")
                  {
                     SourceTR=TRs[i];
                  }
               }
               if (SourceTR!=null)
               {
                  var TargetTR=document.createElement("TR");
                  theTBody.appendChild(TargetTR);
                  Magic3DupAllChild(theForm,SourceTR,TargetTR,NewIndex);
                  FireEventAllChild(TargetTR);
               }
            }
            else
            {
               alert("TRs not found!");
            }
         }
      }
   }
   else
   {
      alert(TableName+" not found!");
   }
}

function Magic3RetrieveValueByName(theFormName,theCtrlName)
{
   var theRet=0;
   var theForm=eval("document."+theFormName);
   if (theForm!=null)
   {
      var nLen=theForm.elements.length;
      for (var i=0;i<theForm.elements.length;i++)
      {
         if (theForm.elements[i].name==theCtrlName)
         {
            var sValue=Magic3RepeatDeleteSomeTag(theForm.elements[i].value,','); // 去除千位分解的符號
            var p=sValue.indexOf('.');
            if (p!=-1)
            {
               theRet=1.0*sValue;  // 用乘法時, 可將字串轉換為數字
            }
            else
            {
               theRet=1*sValue;  // 用乘法時, 可將字串轉換為數字
            }
         }
      }
   }
   return theRet;
}

function Magic3GetComboCurSel(theFormName,theComboName)
{
   var s;
   var theSelect=Magic3RetrieveCtrlByName(theFormName,theComboName);
   if (theSelect!=null)
   {
      var SelIndex=eval("theSelect.selectedIndex");
      s=""+SelIndex; // Translate to String Type
      while (s.length<3) s="0"+s;
   }
   else
   {
      alert("theSelect is null in Magic3GetComboCurSel");
   }
   return s;
}

function MagicFilter3(SourceObject,theFormName,ItemName0,ItemName1,ItemName2,ItemName3,ItemName4)
{
   var RowSuffix="";
   var Separater="___";
   var SourceName=SourceObject.name;
//   alert(SourceName);
   var i=SourceName.indexOf(Separater);
   if (i!=-1) 
   {
      RowSuffix=SourceName.substring(i,SourceName.length);
   }
   else
   {
      RowSuffix="";
   }
   var PromptPrefix="EinTxtAry_"+theFormName+"_";
   var ValuePrefix ="EinValAry_"+theFormName+"_";
   var CallChildProc="MagicFilter3(SourceObject,\""+theFormName+"\",";
   var SelectPrefix;
   var ItemStart,PrefixStart;
   var ChildArray;
   if (ItemName4!=null) 
   {
      ItemStart=ItemName4+RowSuffix;
      PrefixStart=ItemName4;
      PromptPrefix+=ItemName0+ItemName1+ItemName2+ItemName3+ItemName4;
      ValuePrefix +=ItemName0+ItemName1+ItemName2+ItemName3+ItemName4;
      SelectPrefix=Magic3GetComboCurSel(theFormName,ItemName0+RowSuffix)
                  +Magic3GetComboCurSel(theFormName,ItemName1+RowSuffix)
                  +Magic3GetComboCurSel(theFormName,ItemName2+RowSuffix)
                  +Magic3GetComboCurSel(theFormName,ItemName3+RowSuffix)
                  +Magic3GetComboCurSel(theFormName,ItemName4+RowSuffix);
      CallChildProc=null;
   }
   else if (ItemName3!=null) 
   {
      ItemStart=ItemName3+RowSuffix;
      PrefixStart=ItemName3;
      PromptPrefix+=ItemName0+ItemName1+ItemName2+ItemName3;
      ValuePrefix +=ItemName0+ItemName1+ItemName2+ItemName3;
      SelectPrefix=Magic3GetComboCurSel(theFormName,ItemName0+RowSuffix)
                  +Magic3GetComboCurSel(theFormName,ItemName1+RowSuffix)
                  +Magic3GetComboCurSel(theFormName,ItemName2+RowSuffix)
                  +Magic3GetComboCurSel(theFormName,ItemName3+RowSuffix);
      CallChildProc+="\""+ItemName0+"\",\""+ItemName1+"\",\""+ItemName2+"\",\""+ItemName3+"\",\"";
   }
   else if (ItemName2!=null) 
   {
      ItemStart=ItemName2+RowSuffix;
      PrefixStart=ItemName2;
      PromptPrefix+=ItemName0+ItemName1+ItemName2;
      ValuePrefix +=ItemName0+ItemName1+ItemName2;
      SelectPrefix=Magic3GetComboCurSel(theFormName,ItemName0+RowSuffix)
                  +Magic3GetComboCurSel(theFormName,ItemName1+RowSuffix)
                  +Magic3GetComboCurSel(theFormName,ItemName2+RowSuffix);
      CallChildProc+="\""+ItemName0+"\",\""+ItemName1+"\",\""+ItemName2+"\",\"";
   }
   else if (ItemName1!=null) 
   {
      ItemStart=ItemName1+RowSuffix;
      PrefixStart=ItemName1;
      PromptPrefix+=ItemName0+ItemName1;
      ValuePrefix +=ItemName0+ItemName1;
      SelectPrefix=Magic3GetComboCurSel(theFormName,ItemName0+RowSuffix)
                  +Magic3GetComboCurSel(theFormName,ItemName1+RowSuffix);
      CallChildProc+="\""+ItemName0+"\",\""+ItemName1+"\",\"";
   }
   else if (ItemName0!=null) 
   {
      ItemStart=ItemName0+RowSuffix;
      PrefixStart=ItemName0;
      PromptPrefix+=ItemName0;
      ValuePrefix +=ItemName0;
      SelectPrefix=Magic3GetComboCurSel(theFormName,ItemName0+RowSuffix);
      CallChildProc+="\""+ItemName0+"\",\"";
   }
   //alert("SelectPrefix="+SelectPrefix);
   if (ItemStart!=null)
   {
      var SelIndex=Magic3GetComboCurSel(theFormName,ItemStart);//eval("document."+theFormName+"."+ItemStart+".selectedIndex");
      //alert("SelIndex="+SelIndex);
      ChildArray=eval("EinChild_"+theFormName+"_"+PrefixStart);
      if (ChildArray!=null)
      {
         var ChildLength=ChildArray.length;
         for (var nChildCount=0;nChildCount<ChildLength;nChildCount++)
         {
            var ChildName=ChildArray[nChildCount]+RowSuffix;
            var ChildCtrl=Magic3RetrieveCtrlByName(theFormName,ChildName);
            if (ChildCtrl!=null)
            {
               if (ChildCtrl.tagName=="SELECT")
               {
                  var ChildCombo=ChildCtrl;
                  var TempName1=PromptPrefix+ChildArray[nChildCount]+"_"+SelectPrefix;
                  var TempName2=ValuePrefix+ChildArray[nChildCount]+"_"+SelectPrefix;
                  var ErrorMessage='';
                  try
                  {
                     var PromptArray=eval(TempName1);
                  }
                  catch(e)
		            {
                     ErrorMessage+="PromptArray not found ->"+TempName1;
                  }
                  try
                  {
                     var ValueArray=eval(TempName2);
                  }
                  catch(e)
		            {
                     ErrorMessage+="ValueArray not found ->"+TempName2;
                  }
                  if (ErrorMessage!=null)
                  {
                     ErrorMessage="PromptArray not found !";
                  }
                  if (PromptArray!=null)
                  {
                     ChildCombo.length=PromptArray.length;
                     var i;
                     for (i=0;i<PromptArray.length;i++)
                     {
                        ChildCombo.options[i].value = ValueArray[i];
                        ChildCombo.options[i].text  = Reduce_HTML_Unicode(PromptArray[i]);
                     }
                     ChildCombo.selectedIndex=0;
                     if (CallChildProc!=null)
                     {
                        CallChildProc+=ChildArray[nChildCount]+"\");"
      //                  alert(CallChildProc);
                        eval(CallChildProc);
                     }
                  }
                  else
                  {
                     ChildCombo.length=0;
                  }
               }
               else if (ChildCtrl.tagName=="INPUT")
               {
                  var TempName3=ValuePrefix+ChildArray[nChildCount]+"_"+SelectPrefix;
                  try
                  {
                     var ValueArray=eval(TempName3);
                  }
                  catch(e)
		            {
                     window.status="(*) ValueArray not found ->"+TempName3;
                  }
                  if (ValueArray!=null)
                  {
                     var TempAttr=ChildCtrl.getAttribute("KiloDeli");
                     if (TempAttr!=null)
                     {
                        ChildCtrl.value=Magic3KiloDelimiter(ValueArray[0]);
                     }
                     else
                     {
                        ChildCtrl.value=ValueArray[0];
                     }
                     if (ChildCtrl.onchange!=null)
                     {
                        ChildCtrl.onchange();
                     }
                  }
               }
               else
               {
                  alert(ChildCtrl.tagName);
               }
            }
            else
            {
               alert(ChildName+" not found! AA");
            }
         }
      }
   }
}

// Create At <<2004-10-01>>
function Magic3_Find_Object_By_ID(pDocument,tagName,theID)
{
   var RetObj=null;
   var oObject=pDocument.all.tags(tagName);
   if (oObject!=null)
   {
      for (i = 0; i < oObject.length; i++)
      {
         if (oObject(i).id==theID)
         {
            RetObj=oObject(i);
         }
      }
   }
   return RetObj;
}

function Magic3_Make_Name_Value_Str(theFormName,theCtrlName)
{
   var RetStr="";
   var theCtrl=Magic3RetrieveCtrlByName(theFormName,theCtrlName);
   if (theCtrl!=null)
   {
      RetStr=theCtrl.name+"=";
      if (theCtrl.tagName=="SELECT") // "SELECT" must be upper case
      {
         var nIndex=theCtrl.selectedIndex;
         if (nIndex!=-1)
         {
            RetStr+=theCtrl.options[nIndex].value;
         }
      }
      else
      {
         RetStr+=theCtrl.value;
      }
   }
   else
   {
      alert("Control '"+theCtrlName+"' not Found!");
   }
   return RetStr;
}

// Create At <<2004-10-01>>
function AutoForm_Excute_IFrame(theFormName,sGroup1st,sGroup2nd,sCompName,sClickItem,ItemName0,ItemName1,ItemName2,ItemName3,ItemName4,ItemName5,ItemName6,ItemName7,ItemName8,ItemName9)

{
   var FrameID=theFormName+"hiddenframe";
   var theFrame=Magic3_Find_Object_By_ID(document,"IFRAME",FrameID);
   if (theFrame!=null)
   {
      var Location="/ImgSys/FormComboServer.asp?_AUTOWEB_USER_ID_="+sGroup1st
                  +"&_AUTOWEB_PROJECT_="+sGroup2nd
                  +"&_AUTOWEB_COM_FILE_="+sCompName
                  +"&_AUTOWEB_FORM_NAME_="+theFormName
                  +"&_AUTOWEB_ONCHANGE_="+sClickItem;
      if (ItemName0!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName0);
      if (ItemName1!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName1);
      if (ItemName2!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName2);
      if (ItemName3!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName3);
      if (ItemName4!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName4);
      if (ItemName5!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName5);
      if (ItemName6!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName6);
      if (ItemName7!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName7);
      if (ItemName8!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName8);
      if (ItemName9!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName9);
      theFrame.src=Location;
      //window.status=Location;
   }
   else
   {
      alert("Frame not Found-->'"+FrameID+"'");
   }
}

// Create At <<2004-10-01>>
function GridForm_Excute_IFrame(theFormName,RowSuffix,sGroup1st,sGroup2nd,sCompName,sClickItem,ItemName0,ItemName1,ItemName2,ItemName3,ItemName4,ItemName5,ItemName6,ItemName7,ItemName8,ItemName9)

{
   var FrameID=theFormName+"hiddenframe";
   var theFrame=Magic3_Find_Object_By_ID(document,"IFRAME",FrameID);
   if (theFrame!=null)
   {
      var Location="/ImgSys/GridComboServer.asp?_AUTOWEB_USER_ID_="+sGroup1st
                  +"&_AUTOWEB_PROJECT_="+sGroup2nd
                  +"&_AUTOWEB_COM_FILE_="+sCompName
                  +"&_AUTOWEB_FORM_NAME_="+theFormName
                  +"&_AUTOWEB_ONCHANGE_="+sClickItem;
      if (ItemName0!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName0+RowSuffix);
      if (ItemName1!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName1+RowSuffix);
      if (ItemName2!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName2+RowSuffix);
      if (ItemName3!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName3+RowSuffix);
      if (ItemName4!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName4+RowSuffix);
      if (ItemName5!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName5+RowSuffix);
      if (ItemName6!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName6+RowSuffix);
      if (ItemName7!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName7+RowSuffix);
      if (ItemName8!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName8+RowSuffix);
      if (ItemName9!=null) Location+="&"+Magic3_Make_Name_Value_Str(theFormName,ItemName9+RowSuffix);
      theFrame.src=Location;
      //window.status=Location;
   }
   else
   {
      alert("Frame not Found-->'"+FrameID+"'");
   }
}

// Create At <<2004-10-01>>
function AutoFormComboServer(SourceObject,theFormName,ItemName0,ItemName1,ItemName2,ItemName3,ItemName4,ItemName5,ItemName6,ItemName7,ItemName8,ItemName9)
{
   var RowSuffix="";
   var Separater="___";
   var SourceName=SourceObject.name;
   var i=SourceName.indexOf(Separater);
   if (i!=-1) 
   {
      RowSuffix=SourceName.substring(i,SourceName.length);
   }
   else
   {
      RowSuffix="";
   }
   var sGroup1st,sGroup2nd,sCompName;
   var TempCtrl=Magic3RetrieveCtrlByName(theFormName,"_AUTOWEB_USER_ID_");
   if (TempCtrl!=null) sGroup1st=TempCtrl.value;
   TempCtrl=Magic3RetrieveCtrlByName(theFormName,"_AUTOWEB_PROJECT_");
   if (TempCtrl!=null) sGroup2nd=TempCtrl.value;
   TempCtrl=Magic3RetrieveCtrlByName(theFormName,"_AUTOWEB_COM_FILE_");
   if (TempCtrl!=null) sCompName=TempCtrl.value;
   var sClickItem=SourceName;
   AutoForm_Excute_IFrame(theFormName,sGroup1st,sGroup2nd,sCompName,sClickItem,ItemName0,ItemName1,ItemName2,ItemName3,ItemName4,ItemName5,ItemName6,ItemName7,ItemName8,ItemName9);
}

// Create At <<2004-10-01>>
function GridFormComboServer(SourceObject,theFormName,ItemName0,ItemName1,ItemName2,ItemName3,ItemName4,ItemName5,ItemName6,ItemName7,ItemName8,ItemName9)
{
   var RowSuffix="";
   var Separater="___";
   var SourceName=SourceObject.name;
   var i=SourceName.indexOf(Separater);
   if (i!=-1) 
   {
      RowSuffix=SourceName.substring(i,SourceName.length);
   }
   else
   {
      RowSuffix="";
   }
   var sGroup1st,sGroup2nd,sCompName;
   var TempCtrl=Magic3RetrieveCtrlByName(theFormName,"_AUTOWEB_USER_ID_");
   if (TempCtrl!=null) sGroup1st=TempCtrl.value;
   TempCtrl=Magic3RetrieveCtrlByName(theFormName,"_AUTOWEB_PROJECT_");
   if (TempCtrl!=null) sGroup2nd=TempCtrl.value;
   TempCtrl=Magic3RetrieveCtrlByName(theFormName,"_AUTOWEB_COM_FILE_");
   if (TempCtrl!=null) sCompName=TempCtrl.value;
   var sClickItem=SourceName;
   GridForm_Excute_IFrame(theFormName,RowSuffix,sGroup1st,sGroup2nd,sCompName,sClickItem,ItemName0,ItemName1,ItemName2,ItemName3,ItemName4,ItemName5,ItemName6,ItemName7,ItemName8,ItemName9);
}

function Magic3_LoadMe(PrefixID)
{
   var FrameID=PrefixID+"hiddenframe";
   var ChildDoc=null;
   if (document.all!=null) // IE
   {
      var ChildFrame=null;
      try
      {
         ChildFrame=document.frames(FrameID);
      }
      catch(e)
      {
         window.status="IFRAME \""+FrameName+"\" not found !";
         return;
      }
      ChildDoc=ChildFrame.document;
   }
   else // Netscape
   {
      ChildDoc=frames[AdvTreeFrameName].document;
   }
   if (ChildDoc==null) 
   {
      window.status="ChildDoc is null";
   }
   else
   {
      var All_SELECT=ChildDoc.all.tags("SELECT");  // "SELECT" must be upper case
      if (All_SELECT!=null)
      {
         for (var nSelect=0; nSelect < All_SELECT.length; nSelect++)
         {
            var ChildSelect=All_SELECT(nSelect);
            var ParentSelect=Magic3RetrieveCtrlByName(PrefixID,ChildSelect.name);
            if (ParentSelect!=null)
            {
             //- Clear All Old Options
               var OptionLength=ParentSelect.options.length;
               for (var i=OptionLength-1;i>=0;i--)
               {
                  ParentSelect.options.remove(i);
               }
             //- Append New Options
               OptionLength=ChildSelect.options.length;
               for (i=0;i < OptionLength;i++)
               {
                  var ChildOption=ChildSelect.options(i);
                  var oOption=document.createElement("OPTION");
                  ParentSelect.options.add(oOption);
                  oOption.innerText=ChildOption.innerText;
                  oOption.value=ChildOption.value;          // "value" must be lower case
               }
            }
         }
      }
      var ALL_INPUT=ChildDoc.all.tags("INPUT");  // "INPUT" must be upper case
      if (ALL_INPUT!=null)
      {
         for (var nInput=0; nInput < ALL_INPUT.length; nInput++)
         {
            var ChildInput=ALL_INPUT(nInput);
            var ParentInput=Magic3RetrieveCtrlByName(PrefixID,ChildInput.name);
            if (ParentInput!=null)
            {
               ParentInput.value=ChildInput.value;
               if (ParentInput.onchange!=null)
               {
                  ParentInput.onchange();
               }
            }
         }
      }
   }
}
