
var animationrunning = 0;

function numsign(somevalue)   {

   if (somevalue == 0)
      return 0;
   else
      if (somevalue < 0)
         return -1;
      else
         return 1;

}

function GetFadeMult(currentcolor, destcolor, fadepercent)   {

   var fademult = 1;
   if (currentcolor > destcolor)
   {
      fademult = 1 - fadepercent;
   }
   if (currentcolor < destcolor)
   {
      fademult = 1 + fadepercent;
   }

   return fademult;

}

function GetNextColor(currentcolor, destcolor, fademult)  {

   var nextcolor = currentcolor;
   if (fademult > 1)
      nextcolor = (currentcolor + 1) * fademult; 
   else
      nextcolor = currentcolor * fademult; 

   if (currentcolor > destcolor && nextcolor < destcolor)
   {
      nextcolor = destcolor;
   }
   if (currentcolor < destcolor && nextcolor > destcolor)
   {
      nextcolor = destcolor;
   }

   return parseInt(nextcolor);
}

function GetColorHex(somecolor)  {
   var colorhex = parseInt(somecolor).toString(16); 
   if (colorhex.length == 1)
   {
      colorhex = '0' + colorhex;  
   }

   return colorhex;
}

function FadeToColor(objid, destcolorhex, delay, maxstep, objtype)   {

   var destred = parseInt(destcolorhex.substring(1, 3), 16);
   var destgreen = parseInt(destcolorhex.substring(3, 5), 16);
   var destblue = parseInt(destcolorhex.substring(5, 7), 16);

   var obj = document.getElementById(objid);
   var objstyle = obj.style;
   var objcolor;
   if (objtype == "b")
      objcolor = objstyle.backgroundColor;
   else
      objcolor = objstyle.color;
      
   var currentred = parseInt(objcolor.substring(1, 3), 16);
   var currentgreen = parseInt(objcolor.substring(3, 5), 16);
   var currentblue = parseInt(objcolor.substring(5, 7), 16);

   var reddiff = Math.abs(currentred - destred);
   var greendiff = Math.abs(currentgreen - destgreen);
   var bluediff = Math.abs(currentblue - destblue);
   var maxdiff = Math.max(Math.max(reddiff, greendiff), bluediff);

   var reddir;
   var greendir;
   var bluedir;

   switch (maxdiff)   {
      case reddiff:
         switch (numsign(destred - currentred))  {
            case 0:
               reddir = 0;
               break;
            case -1:
               reddir = maxstep * -1;
               break;
            case 1:
               reddir = maxstep;
               break;
         }
         if (reddir == 0)
            return;

         greendir = ((destgreen - currentgreen) / (destred - currentred)) * reddir;
         bluedir = ((destblue - currentblue) / (destred - currentred)) * reddir;
         break;

      case greendiff:
         switch (numsign(destgreen - currentgreen))  {
            case 0:
               greendir = 0;
               break;
            case -1:
               greendir = maxstep * -1;
               break;
            case 1:
               greendir = maxstep;
               break;
         }
         if (greendir == 0)
            return;

         reddir = ((destred - currentred) / (destgreen - currentgreen)) * greendir;
         bluedir = ((destblue - currentblue) / (destgreen - currentgreen)) * greendir;
         break;

      case bluediff:
         switch (numsign(destblue - currentblue))  {
            case 0:
               bluedir = 0;
               break;
            case -1:
               bluedir = maxstep * -1;
               break;
            case 1:
               bluedir = maxstep;
               break;
         }
         if (bluedir == 0)
            return;

         reddir = ((destred - currentred) / (destblue - currentblue)) * bluedir;
         greendir = ((destgreen - currentgreen) / (destblue - currentblue)) * bluedir;
         break;

   }

   var params = "AdjustColor(\'" + objid + "\'," + reddir + "," + greendir + "," + bluedir + "," + currentred + "," + currentgreen + "," + currentblue + "," + destred + "," + destgreen + "," + destblue + ", \'" + destcolorhex + "\'," + delay + ",\'" + objtype + "\')"
   setTimeout(params, delay);   
      

}

function AdjustColor(objid, reddir, greendir, bluedir, currentred, currentgreen, currentblue, destred, destgreen, destblue, destcolorhex, delay, objtype)   {

   var obj = document.getElementById(objid);
   var objstyle = obj.style;

   var nextred = currentred + reddir;
   var nextgreen = currentgreen + greendir;
   var nextblue = currentblue + bluedir;

   switch (numsign(reddir))  {
      case -1:
         if (nextred < destred)
            nextred = destred;
         break;
      case 1:
         if (nextred > destred)
            nextred = destred;
         break;
   }

   switch (numsign(greendir))  {
      case -1:
         if (nextgreen < destgreen)
            nextgreen = destgreen;
         break;
      case 1:
         if (nextgreen > destgreen)
            nextgreen = destgreen;
         break;
   }

   switch (numsign(bluedir))  {
      case -1:
         if (nextblue < destblue)
            nextblue = destblue;
         break;
      case 1:
         if (nextblue > destblue)
            nextblue = destblue;
         break;
   }

   var colorhex = '#' + GetColorHex(nextred) + GetColorHex(nextgreen) + GetColorHex(nextblue);

   if (objtype == "b")
      objstyle.backgroundColor = colorhex;
   else
      objstyle.color = colorhex;

   if (colorhex.toUpperCase() != destcolorhex.toUpperCase())  {
      var params = "AdjustColor(\'" + objid + "\'," + reddir + "," + greendir + "," + bluedir + "," + nextred + "," + nextgreen + "," + nextblue + "," + destred + "," + destgreen + "," + destblue + ", \'" + destcolorhex + "\'," + delay + ",\'" + objtype + "\')"
      setTimeout(params, delay);   
   }
   else
      alert("DONE");
}



function FadeToColorTest(objid, destcolorhex)   {

   var delay = 20;
   var fadepercent = 2 / 100;
   var fademult = 1;

   var destcolorred = parseInt(destcolorhex.substring(1, 3), 16);
   var destcolorgreen = parseInt(destcolorhex.substring(3, 5), 16);
   var destcolorblue = parseInt(destcolorhex.substring(5, 7), 16);

   var obj = document.getElementById(objid);
   var objstyle = obj.style;
   var objcolor = objstyle.color;

   var currentred = parseInt(objcolor.substring(1, 3), 16);
   var currentgreen = parseInt(objcolor.substring(3, 5), 16);
   var currentblue = parseInt(objcolor.substring(5, 7), 16);

   var reddiff = Math.abs(currentred - destcolorred);
   var greendiff = Math.abs(currentgreen - destcolorgreen);
   var bluediff = Math.abs(currentblue - destcolorblue);
   var maxdiff = Math.max(Math.max(reddiff, greendiff), bluediff);

   var nextred;
   var nextgreen;
   var nextblue;

   if (reddiff == maxdiff) {
      fademult = GetFadeMult(currentred, destcolorred, fadepercent);
      nextred = GetNextColor(currentred, destcolorred, fademult); 
      nextgreen = Math.round((nextred * destcolorgreen) / destcolorred);
      nextblue = Math.round((nextred * destcolorblue) / destcolorred);
   }

   else {
      if (greendiff == maxdiff) {
         fademult = GetFadeMult(currentgreen, destcolorgreen, fadepercent);
         nextgreen = GetNextColor(currentgreen, destcolorgreen, fademult); 
         nextred = Math.round((nextgreen * destcolorred) / destcolorgreen);
         nextblue = Math.round((nextgreen * destcolorblue) / destcolorgreen);
      }
      else {
         fademult = GetFadeMult(currentblue, destcolorblue, fadepercent);
         nextblue = GetNextColor(currentblue, destcolorblue, fademult); 
         nextred = Math.round((nextblue * destcolorred) / destcolorblue);
         nextgreen = Math.round((nextblue * destcolorgreen) / destcolorblue);
      }
   }

   var colorhex = '#' + GetColorHex(nextred) + GetColorHex(nextgreen) + GetColorHex(nextblue);
   objstyle.color = colorhex;
   if (colorhex.toUpperCase() != destcolorhex.toUpperCase())  {
      setTimeout("FadeToColorTest(\"" + objid + "\", \'" + destcolorhex + "\')", delay);   
   }
   else {
      alert("DONE");
   }

}

function OpenNextPageVert()  {

   if (animationrunning == 1)  {
      return;
   }

   animationrunning = 1;
   shade = document.getElementById("ShadeDiv");
   covered = document.getElementById("TextDiv");
   var coveredwidth = covered.offsetWidth;
   shade.style.width = coveredwidth + "px";
   shade.style.height = "0px";
   shade.style.visibility = "visible";
   CloseOpenShadeVert(1);
}

function OpenNextPageHorz()  {

   if (animationrunning == 1)  {
      return;
   }

   animationrunning = 1;
   shade = document.getElementById("ShadeDiv");
   covered = document.getElementById("TextDiv");
   var coveredheight = covered.offsetHeight;
   shade.style.height = coveredheight + "px";
   shade.style.width = "0px";
   shade.style.visibility = "visible";
   CloseOpenShadeHorz(1);
}

function CloseOpenShadeVert(sdirection) {

   var speed = 15;
   var delay = 1;
   shade = document.getElementById("ShadeDiv");
   var shadeheight = shade.offsetHeight;

   covered = document.getElementById("TextDiv");
   var coveredheight = covered.offsetHeight;
   switch (sdirection)  {
      case 1:
         if (shadeheight < coveredheight)  {
            shade.style.height = shadeheight + speed + "px";
            setTimeout("CloseOpenShadeVert(" + 1+ ")", delay);
         }
         else  
            setTimeout("CloseOpenShadeVert(" + 2 + ")", delay);
         break;
      case 2:
         if (shadeheight > speed)  {
            shade.style.height = shadeheight - speed + "px";
            setTimeout("CloseOpenShadeVert(" + 2 + ")", delay);
         }
         else  {
            shade.style.visibility = "hidden";
            animationrunning = 0;
         }
         break;
   }
}

function CloseOpenShadeHorz(sdirection) {

   var speed = 20;
   var delay = 1;
   shade = document.getElementById("ShadeDiv");
   var shadewidth = shade.offsetWidth;

alert(animationrunning);
   covered = document.getElementById("TextDiv");
   var coveredwidth = covered.offsetWidth;
   switch (sdirection)  {
      case 1:
         if (shadewidth < coveredwidth)  {
            shade.style.width = shadewidth + speed + "px";
            setTimeout("CloseOpenShadeHorz(1)", delay);
         }
         else  
            setTimeout("CloseOpenShadeHorz(2)", delay);
         break;
      case 2:
         if (shadewidth > speed)  {
            shade.style.width = shadewidth - speed + "px";
            setTimeout("CloseOpenShadeHorz(2)", delay);
         }
         else  {
            shade.style.visibility = "hidden";
            animationrunning = 0;
         }
         break;
   }
}

function CloseVert(speed)  {
   shade = document.getElementById("ShadeDiv");
   covered = document.getElementById("TextDiv");
   var coveredwidth = covered.offsetWidth;
   shade.style.width = coveredwidth + "px";
   shade.style.height = "0px";
   shade.style.visibility = "visible";
   CloseShadeVert(speed);
}

function OpenVert(speed)  {
   shade = document.getElementById("ShadeDiv");
   covered = document.getElementById("TextDiv");
   var coveredwidth = covered.offsetWidth;
   var coveredheight = covered.offsetHeight;
   shade.style.width = coveredwidth + "px";
   shade.style.height = coveredheight + "px";
   shade.style.visibility = "visible";
   OpenShadeVert(speed);
}

function CloseHorz(speed)  {
   shade = document.getElementById("ShadeDiv");
   covered = document.getElementById("TextDiv");
   var coveredheight = covered.offsetHeight;
   shade.style.height = coveredheight + "px";
   shade.style.width = "0px";
   shade.style.visibility = "visible";
   CloseShadeHorz(speed);
}

function OpenHorz(speed)  {
   shade = document.getElementById("ShadeDiv");
   covered = document.getElementById("TextDiv");
   var coveredwidth = covered.offsetWidth;
   var coveredheight = covered.offsetHeight;
   shade.style.width = coveredwidth + "px";
   shade.style.height = coveredheight + "px";
   shade.style.visibility = "visible";
   OpenShadeHorz(speed);
}

function CloseShadeVert(speed) {

   shade = document.getElementById("ShadeDiv");
   var shadeheight = shade.offsetHeight;

   covered = document.getElementById("TextDiv");
   var coveredheight = covered.offsetHeight;

   if (shadeheight < coveredheight)  {
      shade.style.height = shadeheight + speed + "px";
      setTimeout("CloseShadeVert(" + speed + ")", 1);
   }
}

function OpenShadeVert(speed) {

   shade = document.getElementById("ShadeDiv");
   var shadeheight = shade.offsetHeight;
   if (shadeheight > 20)  {
      shade.style.height = shadeheight - speed + "px";
      setTimeout("OpenShadeVert(" + speed + ")", 1);
   }
   else
      shade.style.visibility = "hidden";   
}

function CloseShadeHorz(speed) {

   shade = document.getElementById("ShadeDiv");
   shade.style.visibility = "visible";
   var shadewidth = shade.offsetWidth;

   covered = document.getElementById("TextDiv");
   var coveredwidth = covered.offsetWidth;

   if (shadewidth < coveredwidth)  {
      shade.style.width = shadewidth + speed + "px";
      setTimeout("CloseShadeHorz(" + speed + ")", 1);
   }

}

function OpenShadeHorz(speed) {

   shade = document.getElementById("ShadeDiv");
   shade.style.visibility = "visible";
   var shadewidth = shade.offsetWidth;
   if (shadewidth > speed)  {
      shade.style.width = shadewidth - speed + "px";
      setTimeout("OpenShadeHorz(" + speed+ ")", 1);
   }
   else
      shade.style.visibility = "hidden";   
}

function ShrinkCurtains(objIdLeft, objIdRight)
{
	obj = document.getElementById(objIdLeft);
	currentWidth = obj.style.width;
	cWidth = parseInt(currentWidth.substring(0, currentWidth.length - 1));
	cWidth--;
	obj.style.width = cWidth.toString() + "%";

	obj = document.getElementById(objIdRight);
	currentWidth = obj.style.width;
	cWidth = parseInt(currentWidth.substring(0, currentWidth.length - 1));
	cWidth--;
	obj.style.width = cWidth.toString() + "%";

    if (cWidth > 20)
    {
	    setTimeout("ShrinkCurtains('" + objIdLeft + "', '" + objIdRight + "')", 40);
	}
}

