
////////////////////&copy 2004 Jim Atkins webadmin@jbatkins.com
/////////////////free for personnal use and distributation as long as this &copy header stays in place

////////////////see help file


////////////////////////declare some global vars
var wholpladd="false";
var fractionmode="false";
var startfrac="false";
var wholepls="false";
var placeone="true";
var placetwo="false";
var flip="false";
var lcnTrip="false";
var fracctrl="false";
var fracfunc="";
var stmpmDIV="false"
function fracs() {
   /////////////////start fracs
   if(decimalmode=="true"){
     alert("You can't do that while in decimal mode");
     return;
   }
   //////////////////////////////////fracs formats the number for presenting to fractioncontrol
   fractionmode="true"
   if (state=="true"){
      document.inp.inp0.value="";
      state="false";
   }
   
   if(document.inp.inp0.value!=""&&startfrac=="false"){
      var holder=document.inp.inp0.value;
      holderadd=document.inp.inp0.value+"&";
      document.inp.inp0.value=holderadd;
      wholepls="true";
      startfrac="true";
      placeone="false";
      var layer5 = document.getElementById("div4");
      var CHa1='Fraction';
      layer5.innerHTML = CHa1;
      
   }
   else if(document.inp.inp0.value==""&&startfrac=="false"){
      var layer6 = document.getElementById("div4");
      var CHa2='Fraction';
      layer6.innerHTML = CHa2;
      startfrac="true";
   }
   
   if(document.inp.inp0.value!=""&&startfrac=="true"&&placeone=="true"){
      fracfunc=document.inp.inp3.value;
      var findfrac=document.inp.inp0.value;
      var wholefraclgth=findfrac.length;
      var begfrac=findfrac.indexOf("&");
      var tfrac=findfrac.substring(begfrac+1,wholefraclgth)
      holderadd=findfrac.substring(0,begfrac+1)
      document.inp.inp0.value=holderadd+tfrac+"/";
      placetwo="true"
   }
   if(placeone=="false"){
      placeone="true"
   }
   if(placetwo=="true"){
      startfrac="false";
      wholepls="false";
      placeone="true"
      placetwo="false"
      var layer5 = document.getElementById("div4");
      var CHa1='Standard';
      layer5.innerHTML = CHa1;
      
   }
   fracfunc=document.inp.inp3.value;
   writeAns();
   
}
///////////////////////////end fracmode


function fractioncontrol(){              //////////////////start

   stmpmDIV="true"
   var eqNUM="false";
   var dig1negck="false";
   var dig2negck="false";
   var regnegck="false";
   var DNOMnegck="false";
   filIn();
   var dig1=document.inp.inp1.value;
   var dig2=document.inp.inp2.value;
   if (dig1==""){dig1="0"};
   if (dig2==""){dig2="0"};
   var tlgth=dig1.length;
   var rlgth=dig2.length;
   var negck=dig1.charAt(0);
   if (negck=="-"){
      dig1negck="true"
      document.inp.inp1.value=dig1.substring(1,tlgth)
   }
   negck=dig2.charAt(0);
   if (negck=="-"){
      dig2negck="true"
      document.inp.inp2.value=dig2.substring(1,rlgth)
   }
   if (dig1negck=="true"){
      dig1=dig1.substring(1,tlgth)
   }
   if (dig2negck=="true"){
      dig2=dig2.substring(1,rlgth)
   }
   var tlgth=dig1.length;
   var rlgth=dig2.length;
   var begfrac1=dig1.indexOf("&");
   var begfrac2=dig2.indexOf("&");         ///////////////////////////
   
   if(begfrac1>0){                                      /////////////////////
      var tfrac1=dig1.substring(begfrac1+1,tlgth);
      var whole1=dig1.substring(0,begfrac1);
      var top1str=tfrac1.indexOf("/");
      var topfirst=tfrac1.substring(0,top1str)
      var bottomfirst=tfrac1.substring(top1str+1,tlgth)
   }                                                 ////////////////////
   else{                                                    /////////////////////
      var top1str=dig1.indexOf("/");
      /////////////////////////
      if(top1str>0){                               //////////////////////
         var topfirst=dig1.substring(0,top1str)
         var bottomfirst=dig1.substring(top1str+1,tlgth)
      }                                                   ////////////////////
      else{                                                /////////////////////
         var whole1=dig1
      }            /////////////////////////////////////
   }
   
   
   //////////////////////////////////////////////////////////////////////////////////////////////
   if(begfrac2>0){                            ////////////////////////
      var tfrac2=dig2.substring(begfrac2+1,rlgth);
      var whole2=dig2.substring(0,begfrac2);
      var top2str=tfrac2.indexOf("/");
      var topsecond=tfrac2.substring(0,top2str)
      var bottomsecond=tfrac2.substring(top2str+1,rlgth)
   }                                     ///////////////////////////
   else{
      var top2str=dig2.indexOf("/");
      //////////////////////////////
      if(top2str>0){                           //////////////////
         var topsecond=dig2.substring(0,top2str)
         var bottomsecond=dig2.substring(top2str+1,rlgth)
      }                                         ///////////////////
      else{                                              ////////////////////////////
         var whole2=dig2
      }                                       ////////////////////////////
   }
   ////////////////////////////////////////////////////////////////////////////////////////////////
   if (bottomfirst==bottomsecond||top1str<0||top2str<0){
      eqNUM="true"
      if(top1str>0){
         var DNOM=bottomfirst
      }
      else if(top2str>0){
         var DNOM=bottomsecond
      }
   }                                                   ////////////////////////////
   //////////////////////////////////////////////////////////////////////////////////////////////////

   if(fracfunc=="times"){
      
      if(top1str>0&&top2str>0){
         var FTDIVDNOM=bottomfirst;
         var STDIVDNOM=bottomsecond;
      }
      else if(top1str<0||top2str<0){
         if(top1str>0){
            var FTDIVDNOM=bottomfirst;
            var STDIVDNOM=bottomfirst;
         }
         else if(top2str>0){
            var FTDIVDNOM=bottomsecond;
            var STDIVDNOM=bottomsecond;
         }
      }
   }
   
   if(fracfunc=="div"){
      
      if(top1str>0&&top2str>0){
         var FTDIVDNOM=bottomfirst;
         var STDIVDNOM=bottomsecond;
      }
      else if(top1str<0||top2str<0){
         if(top1str>0){
            var FTDIVDNOM=bottomfirst;
            var STDIVDNOM="1";
         }
         else if(top2str>0){
            var FTDIVDNOM="1";
            var STDIVDNOM=bottomsecond;
         }
      }
   }
   
   if(eqNUM=="false"&&fracfunc=="plus"||eqNUM=="false"&&fracfunc=="minus"){    //////////////////
      document.inp.inp1.value=bottomfirst;
      document.inp.inp2.value=bottomsecond;
      Sid();
      if (flip=="true"){                                ////////////////////////
         document.inp.inp2.value=bottomfirst;
         document.inp.inp1.value=bottomsecond;
      }                                           ////////////////////////////////
      else{                                    /////////////////////////////
         document.inp.inp1.value=bottomfirst;
         document.inp.inp2.value=bottomsecond;
      }                                       /////////////////////////////
      lcn();
      
      var DNOM=document.inp.inp0.value;
      
      if(flip=="false"){
         var Steptop1str=document.inp.inp1.value;
         var Steptop2str=document.inp.inp2.value;
      }
      else
      {
         var Steptop1str=document.inp.inp2.value;
         var Steptop2str=document.inp.inp1.value;
      }
      document.inp.inp1.value=Steptop1str;
      document.inp.inp2.value=topfirst;
      document.inp.inp3.value="times";
      Alphacalctimes();
      var topFnum=document.inp.inp0.value;
      document.inp.inp1.value=Steptop2str;
      document.inp.inp2.value=topsecond;
      document.inp.inp3.value="times";
      Alphacalctimes();
      var topSnum=document.inp.inp0.value;
   }
   ////////////////////////////////////////////////////////////////////////////////////////////
   if(eqNUM=="true"||fracfunc=="div"||fracfunc=="times"){
      topFnum=topfirst;
      topSnum=topsecond;
   }
   /////////////////////////////////////////////////////////////////////////////////////
   
   if(begfrac1>0&&fracfunc=="plus"||begfrac1>0&&fracfunc=="minus"){
      document.inp.inp1.value=whole1;
      document.inp.inp2.value=DNOM;
      document.inp.inp3.value="times";
      Alphacalctimes();
      var fracwholeNum1=document.inp.inp0.value;
      document.inp.inp1.value=topFnum;
      document.inp.inp2.value=fracwholeNum1;
      document.inp.inp3.value="plus";
      Alphacalcplus();
      topFnum=document.inp.inp0.value;
   }
   if(begfrac2>0&&fracfunc=="plus"||begfrac2>0&&fracfunc=="minus"){
      document.inp.inp1.value=whole2;
      document.inp.inp2.value=DNOM;
      document.inp.inp3.value="times";
      Alphacalctimes();
      var fracwholeNum2=document.inp.inp0.value;
      document.inp.inp1.value=topSnum;
      document.inp.inp2.value=fracwholeNum2;
      document.inp.inp3.value="plus";
      Alphacalcplus();
      topSnum=document.inp.inp0.value;
   }
   if(begfrac1<0&&top1str<0&&fracfunc=="plus"||begfrac1<0&&top1str<0&&fracfunc=="minus"){
      document.inp.inp1.value=whole1;
      document.inp.inp2.value=DNOM;
      document.inp.inp3.value="times";
      Alphacalctimes();
      topFnum=document.inp.inp0.value;
   }
   if(begfrac2<0&&top2str<0&&fracfunc=="plus"||begfrac2<0&&top2str<0&&fracfunc=="minus"){
      document.inp.inp1.value=whole2;
      document.inp.inp2.value=DNOM;
      document.inp.inp3.value="times";
      Alphacalctimes();
      topSnum=document.inp.inp0.value;
   }
   if(begfrac1>0&&fracfunc=="times"||begfrac1>0&&fracfunc=="div"){
      
      document.inp.inp1.value=whole1;
      document.inp.inp2.value=FTDIVDNOM;
      document.inp.inp3.value="times";
      Alphacalctimes();
      var fracwholeNum1=document.inp.inp0.value;
      document.inp.inp1.value=topFnum;
      document.inp.inp2.value=fracwholeNum1;
      document.inp.inp3.value="plus";
      Alphacalcplus();
      topFnum=document.inp.inp0.value;
   }
   if(begfrac2>0&&fracfunc=="times"||begfrac2>0&&fracfunc=="div"){
      document.inp.inp1.value=whole2;
      document.inp.inp2.value=STDIVDNOM;
      document.inp.inp3.value="times";
      Alphacalctimes();
      var fracwholeNum2=document.inp.inp0.value;
      document.inp.inp1.value=topSnum;
      document.inp.inp2.value=fracwholeNum2;
      document.inp.inp3.value="plus";
      Alphacalcplus();
      topSnum=document.inp.inp0.value;
   }
   if(begfrac1<0&&top1str<0&&fracfunc=="times"){
      document.inp.inp1.value=whole1;
      document.inp.inp2.value=DNOM;
      document.inp.inp3.value="times";
      Alphacalctimes();
      topFnum=document.inp.inp0.value;
   }
   if(begfrac2<0&&top2str<0&&fracfunc=="times"){
      document.inp.inp1.value=whole2;
      document.inp.inp2.value=DNOM;
      document.inp.inp3.value="times";
      Alphacalctimes();
      topSnum=document.inp.inp0.value;
   }
   if(begfrac1<0&&top1str<0&&fracfunc=="div"){
      topFnum=whole1;
   }
   if(begfrac2<0&&top2str<0&&fracfunc=="div"){
      
      topSnum=whole2;
   }
   
   
   if (dig1negck=="true"){
      topFnum="-"+topFnum
      FTDIVDNOM="-"+FTDIVDNOM
   }
   if (dig2negck=="true"){
      topSnum="-"+topSnum
      STDIVDNOM="-"+STDIVDNOM
   }
   if(fracfunc!="div"){
      document.inp.inp0.value=""
      document.inp.inp1.value=topFnum;
      document.inp.inp2.value=topSnum;
      document.inp.inp3.value=fracfunc;
   }
   
   if (fracfunc=="plus"){
      Alphacalcplus();
   }
   if (fracfunc=="minus"){
      Alphacalcminus();
   }
   if (fracfunc=="times"){
      document.inp.inp0.value=""
      document.inp.inp1.value=topFnum;
      document.inp.inp2.value=topSnum;
      document.inp.inp3.value="times";
      Alphacalctimes();
      var regalNum=document.inp.inp0.value
      document.inp.inp0.value=""
      document.inp.inp1.value=FTDIVDNOM;
      document.inp.inp2.value=STDIVDNOM;
      document.inp.inp3.value="times";
      Alphacalctimes();
      DNOM=document.inp.inp0.value
   }
   
   if (fracfunc=="div"){
      document.inp.inp0.value=""
      document.inp.inp1.value=topFnum;
      document.inp.inp2.value=STDIVDNOM;
      document.inp.inp3.value="times";
      Alphacalctimes();
      var regalNum=document.inp.inp0.value
      document.inp.inp0.value=""
      document.inp.inp1.value=FTDIVDNOM;
      document.inp.inp2.value=topSnum;
      document.inp.inp3.value="times";
      Alphacalctimes();
      DNOM=document.inp.inp0.value
   }
   
   
   if (fracfunc=="plus"||fracfunc=="minus"){
      var regalNum=document.inp.inp0.value
   }
   
   
   //////////////////////////////////////////////////////////////////////////////////////////////
   ///
   var reglgth=regalNum.length;
   var dlgth=DNOM.length;
   negck=regalNum.charAt(0);
   if (negck=="-"){
      var regnegck="true"
      regalNum=regalNum.substring(1,reglgth)
   }
   negck=DNOM.charAt(0);
   if (negck=="-"){
      var DNOMnegck="true"
      DNOM=DNOM.substring(1,dlgth)
   }
   
   
   
   ///////////////////////////////////////////////////////////////////////////////////////////////
   
   document.inp.inp1.value=regalNum;
   document.inp.inp2.value=DNOM;
   Sid();
   ///////////////////////////////////////////////////////////////////////////////////
   if(flip=="false"){                                //////////this means we have a mixed number
  
      document.inp.inp1.value=regalNum;
      document.inp.inp2.value=DNOM;
      document.inp.inp3.value="div";
      DrillD();
      regalNum=document.inp.inp0.value
      if(document.inp.reman.value=="0"){                   ////////////////we have a whole number
     
         if (regnegck=="true"||DNOM=="true"){
            regalNum="-"+regalNum
         }
         document.inp.inp0.value=regalNum
      }                                                   //////////
      else{                                   /////////here we deal with mixed number
         var simpTOp=document.inp.reman.value
         document.inp.inp1.value=DNOM;
         document.inp.inp2.value=simpTOp;
         document.inp.inp3.value="div";
         document.inp.reman.value==""
         DrillD();

         if(document.inp.reman.value=="0"){        ///////// if bottom can be divided by top we are done
            DNOM=document.inp.inp0.value
            simpTOp="1"
         }                                                     //////
         else if (getlcd=="true"){                                                     ///////////
            var stripTRack="true"

            while(stripTRack=="true"){                  ////////////lets see if we can go lower
               document.inp.inp1.value=DNOM;
               document.inp.inp2.value=simpTOp;
               FiGCD()
               var Nstrip=parseInt(document.inp.inp0.value)
               if(Nstrip>1){                                   /////////4th if
                  var stripD=document.inp.inp0.value
                  document.inp.inp1.value=DNOM;
                  document.inp.inp2.value=stripD;
                  document.inp.inp3.value="div";
                  
                  DrillD();
                  DNOM=document.inp.inp0.value
                  document.inp.inp1.value=simpTOp;
                  document.inp.inp2.value=stripD;
                  document.inp.inp3.value="div";
                  DrillD();
                  simpTOp=document.inp.inp0.value
               }                                      ////////////4th if
               document.inp.inp1.value=DNOM;
               document.inp.inp2.value=simpTOp;
               
               FiGCD()
               Nstrip=parseInt(document.inp.inp0.value)
               if(Nstrip<=1){                          /////////////5th if
                  stripTRack="false"
               }                                   ///////////5th if
            }                                  //////////while loop
         }
         if (regnegck=="true"||DNOMnegck=="true"){
            if(simpTOp!="0"){
               document.inp.inp0.value="-"+regalNum+"&"+simpTOp+"/"+DNOM
            }
            else{
               document.inp.inp0.value="-"+regalNum
            }
         }
         else
         if(simpTOp!="0"){
            document.inp.inp0.value=regalNum+"&"+simpTOp+"/"+DNOM
         }
         else{
            document.inp.inp0.value=regalNum
         }
      }
      
   }    ////1st if
   
   else{                                //////////here we deal with fraction only
      document.inp.inp1.value=DNOM;
      document.inp.inp2.value=regalNum;
      document.inp.inp3.value="div";
      document.inp.reman.value==""
      DrillD();
      if(document.inp.reman.value==""){
         DNOM=document.inp.inp0.value
         regalNum="1"
      }
      //////////////////////////////////////////////////////////////////////////////////////////////////////////////
      
      else if (getlcd=="true"){                  /////////
         var stripTRack="true"
         while(stripTRack=="true"){                  ////////////lets see if we can go lower
            document.inp.inp1.value=DNOM;
            document.inp.inp2.value=regalNum;
            FiGCD()
            var Nstrip=parseInt(document.inp.inp0.value)
            if(Nstrip>1){                                   /////////4th if
               var stripD=document.inp.inp0.value
               document.inp.inp1.value=DNOM;
               document.inp.inp2.value=stripD;
               document.inp.inp3.value="div";
               DrillD();
               DNOM=document.inp.inp0.value
               document.inp.inp1.value=regalNum;
               document.inp.inp2.value=stripD;
               document.inp.inp3.value="div";
               DrillD();
               regalNum=document.inp.inp0.value
            }                                      ////////////4th if
            document.inp.inp1.value=DNOM;
            document.inp.inp2.value=regalNum;
            FiGCD()
            Nstrip=parseInt(document.inp.inp0.value)
            if(Nstrip<=1){                          /////////////5th if
               stripTRack="false"
            }                                   ///////////5th if
         }                                  //////////while loop
      }
      
      
      
      /////////////////////////////////////////////////////////////////////////////////////////////////////
      if (regnegck=="true"||DNOMnegck=="true"){
         document.inp.inp0.value="-"+regalNum+"/"+DNOM
      }
      else {
         document.inp.inp0.value=regalNum+"/"+DNOM
      }
   }
   
   filIn()
   stmpmDIV="false"
   writeAns();
   display2();
   ///////////////////////////////////////////////////////////////////////////////////////////
   if (setmem=="true"){
      document.inp.inp4.value=document.inp.inp0.value
      document.inp.inp4.value=document.inp.inp0.value
      document.inp.inp0.value=''
      writeAns();
      setmem="false"
   }
   checkforsize="false"
   startfrac="false";
   wholepls="false";
   placeone="true";
   placetwo="false";
   flip="false";
   lcnTrip="false";
   fracctrl="false";
   fracfunc="";
}                                                         ///////////////////////// end





function lcnBridge(){
   
   if (lcnTrip=="false"){
      var fracholderadd=document.inp.inp0.value
      if (fracholderadd==""){
         alert("Please enter number before selecting this function")
         return;
      }
      document.inp.inp1.value=fracholderadd
      document.inp.inp0.value=""
      
      lcnTrip="true"
      writeAns();
      return;
   }
   if(fracctrl=="false"){
      var fracholderadd=document.inp.inp0.value
      if (fracholderadd==""){
         alert("Please enter number before selecting this function")
         return;
      }
      document.inp.inp2.value=fracholderadd
      document.inp.inp0.value=""
      document.inp.inp3.value="Tlcn"
      writeAns();
      var tulle1=document.inp.inp1.value
      var tulle2=document.inp.inp2.value
      
      Sid();
      if (flip=="true"){                                ////////////////////////
         document.inp.inp1.value=tulle2;
         document.inp.inp2.value=tulle1;
      }                                           ////////////////////////////////
      else {
         document.inp.inp1.value=tulle1;
         document.inp.inp2.value=tulle2;
         
      }
      fracctrl="true"
   }
   display1()
   setTimeout("lcn()", 1);
}


function lcn(){
   matNum=2;
   var lrg=document.inp.inp1.value;
   var sml=document.inp.inp2.value;
   document.inp.inp1.value=lrg;
   document.inp.inp2.value=sml;
   document.inp.inp3.value="times";
   Alphacalctimes();
   var extrNum=document.inp.inp0.value;
   document.inp.inp1.value=lrg;
   document.inp.inp2.value=lrg;
   document.inp.inp3.value="plus";
   Alphacalcplus();
   var stepping=document.inp.inp0.value;
   document.inp.inp1.value=stepping;
   document.inp.inp2.value=sml;
   document.inp.inp3.value="div";
   DrillD();
   if(document.inp.reman.value=="0"){
      document.inp.inp1.value=matNum;
      document.inp.inp2.value=document.inp.inp0.value;
      document.inp.inp0.value=stepping;
      if(fractionmode=="false"){
         stmpmDIV="false"
         stmpm="false";
      }
      fracctrl="false"
      lcnTrip="false"
      filIn()
      filIn2()
      display2();
      writeAns();
      
      return;
   }
   document.inp.reman.value="0"
   while(document.inp.inp0.value<parseInt(stepping)){
      document.inp.inp1.value=stepping;
      document.inp.inp2.value=lrg;
      document.inp.inp3.value="plus";
      Alphacalcplus();
      stepping=document.inp.inp0.value;
      document.inp.inp1.value=stepping;
      document.inp.inp2.value=sml;
      document.inp.inp3.value="div";
      DrillD();
      matNum++
      if(document.inp.reman.value=="0"){
         document.inp.inp1.value=matNum;
         document.inp.inp2.value=document.inp.inp0.value;
         document.inp.inp0.value=stepping;
         fracctrl="false"
         lcnTrip="false"
         
         if(fractionmode=="false"){
            stmpm="false";
            stmpmDIV="false"
         }
         filIn()
         filIn2()
         display2();
         writeAns();
         
         return;
      }
   }
   lcnTrip="false";
   document.inp.reman.value="";
   document.inp.inp0.value=extrNum;
   document.inp.inp1.value=sml;
   document.inp.inp2.value=lrg;
   if(fractionmode=="false"){
      stmpm="false";
      stmpmDIV="false"
   }
   filIn()
   filIn2()
   stmpm="false"
   stmpmDIV="false"
   fracctrl="false"
   lcnTrip="false"
   display2();
   writeAns();
   return;
}


function Sid() {
   stmpmDIV="true"
   flip="false"
   var Sme="false"
   var Ls=document.inp.inp1.value
   var Lslgth=Ls.length
   var Ss=document.inp.inp2.value
   var Sslgth=Ss.length
   
   if (Lslgth<Sslgth){
      flip="true"
   }
   if (Lslgth==Sslgth){
      ConvBack();
      StVenB=document.inp.inp1.value
      StBas=document.inp.inp2.value
      qw=0;
      wtabu=0;
      wtabu1=0;
      Ovlf=0;
      Ovrt=0;
      for(ute=Lslgth-1; ute>=0; ute--){
         Ovlf=matrixstr.indexOf(StVenB.charAt(qw))
         Ovrt=matrixstr.indexOf(StBas.charAt(qw))
         
         
         wadutn=parseInt(Ovlf);
         wadutn1=parseInt(Ovrt);
         if(wadutn<wadutn1&&qw==0){
            flip="true"
            
            break;
            
         }
         if(Sme=="true"&&wadutn<wadutn1){
            flip="true"
            break;
         }
         if(wadutn==wadutn1){
            Sme="true"
         }
         else{
            Sme="false"
         }
         if (wadutn>wadutn1&&qw==0){
            break;
         }
         qw++
      }
   }
}












