
adeg = 60;
sat = 1;
val = 1;
squarecolor = initary[0]; //starting hue
pickindex = 0;

threec = new Array("");
prevc = threec[2];
picary = new Array("picka");


function BrowserDetectXLite() {
	var ua = navigator.userAgent.toLowerCase(); 
	this.ua = ua;

	this.isIE        = ( (ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1) ); 
        this.isSafari      = (ua.indexOf('safari') != - 1);

	this.versionMinor = parseFloat(navigator.appVersion); 
	
	if (this.isIE && this.versionMinor >= 4) {
		this.versionMinor = parseFloat( ua.substring( ua.indexOf('msie ') + 5 ) );
	}
	
	this.versionMajor = parseInt(this.versionMinor); 
	
	this.isWin   = (ua.indexOf('win') != -1);
	this.isWin32 = (this.isWin && ( ua.indexOf('95') != -1 || ua.indexOf('98') != -1 || ua.indexOf('nt') != -1 || ua.indexOf('win32') != -1 || ua.indexOf('32bit') != -1) );
	this.isMac   = (ua.indexOf('mac') != -1);

	this.isIE4x = (this.isIE && this.versionMajor == 4);
	this.isIE4up = (this.isIE && this.versionMajor >= 4);
	this.isIE5x = (this.isIE && this.versionMajor == 5);
	this.isIE55 = (this.isIE && this.versionMinor == 5.5);
	this.isIE5up = (this.isIE && this.versionMajor >= 5);
	this.isIE6x = (this.isIE && this.versionMajor == 6);
	this.isIE6up = (this.isIE && this.versionMajor >= 6);
	
	this.isIE4xMac = (this.isIE4x && this.isMac);
}
var browser = new BrowserDetectXLite();

function fixMe() {
  if (!((browser.isIE55 || browser.isIE6up) && browser.isWin32)) {
     thesmartversion = "<a href='javascript://' onclick='javascript:pickColor(); return false;'><img src='xhtml/newwheel.png' alt='color wheel' width='185' height='90' border='0'></a>";
  document.getElementById("wheel").innerHTML = thesmartversion;
  }
  if (browser.isSafari) document.onkeypress = rotate;
  else document.onkeydown = rotate;
  capture();
}

function hsv2rgb(Hdeg,S,V) {
  H = Hdeg/360;
  if (S==0) { 
    R = V*255;
    G = V*255;
    B = V*255;}
  else {
    var_h = H*6;
    var_i = Math.floor( var_h );
    var_1 = V*(1-S);
    var_2 = V*(1-S*(var_h-var_i));
    var_3 = V*(1-S*(1-(var_h-var_i)));
    if (var_i==0)      {var_r=V ;    var_g=var_3; var_b=var_1}
    else if (var_i==1) {var_r=var_2; var_g=V;     var_b=var_1}
    else if (var_i==2) {var_r=var_1; var_g=V;     var_b=var_3}
    else if (var_i==3) {var_r=var_1; var_g=var_2; var_b=V}
    else if (var_i==4) {var_r=var_3; var_g=var_1; var_b=V}
    else               {var_r=V;     var_g=var_1; var_b=var_2}
    R = Math.round(var_r*255);
    G = Math.round(var_g*255);
    B = Math.round(var_b*255);
  }
  return new Array(R,G,B);
}

function rgb2hex(rgbary) {
  cary = new Array; 
  cary[3] = "#";
  for (i=0; i < 3; i++) {
    cary[i] = parseInt(rgbary[i]).toString(16);
    if (cary[i].length < 2) cary[i] = "0"+ cary[i];
    cary[3] = cary[3] + cary[i];
    cary[i+4] = rgbary[i];
  }
  return cary;
}

function webRounder(c,d) {
  thec = "#";
  for (i=0; i<3; i++) {
      num = Math.round(c[i+4]/d) * d;
      numc = num.toString(16);
      if (String(numc).length < 2) numc = "0" + numc;
      thec += numc;
  }
  return thec;
}

function hexColorArray(c) { 
    threec[3] = webRounder(c,23);
    threec[2] = c[3];
    threec[1] = webRounder(c,17);
    threec[0] = webRounder(c,51);
    return false;
}

function capture() {
 initColor();
 if(document.layers) {
  layobj = document.layers['wheel'];
  layobj.document.captureEvents(Event.MOUSEMOVE);
  layobj.document.onmousemove = mouseMoved;
 }
 else if (document.all) {
  layobj = document.all["wheel"];
  layobj.onmousemove = mouseMoved;
   }
 else if (document.getElementById) {
  window.document.getElementById("wheel").onmousemove = mouseMoved;
 }
}

function greyMoved(x,y) {
    adeg = hue;
    xside = (x<=185)?x - 90:90;
    yside = (y<=90)?y:90;
    sat = xside/90;
    val = 1 - (yside/90);
    c = rgb2hex(hsv2rgb(hue,sat,val));
    hexColorArray(c);
    return false;
}

function mouseMoved(e) {
 if (document.layers) {
  x = e.layerX;
  y = e.layerY;
 }
 else if (document.all) {
  x = event.offsetX;
  y = event.offsetY;
 }
 else if (document.getElementById) {
  x = (e.pageX - document.getElementById("wheel").offsetLeft);
  y = (e.pageY - document.getElementById("wheel").offsetTop);
 }
 if (x >= 96) {greyMoved(x,y);
   return false;}
 if (y > 90) {return false;}

    cartx = x - 45;
    carty = 45 - y;
    cartx2 = cartx * cartx;
    carty2 = carty * carty;
    cartxs = (cartx < 0)?-1:1;
    cartys = (carty < 0)?-1:1;
    cartxn = cartx/45;
    rraw = Math.sqrt(cartx2 + carty2);
    rnorm = rraw/45;
    if (rraw == 0) {
      sat = 0;
      val = 0;
      rgb = new Array(0,0,0);
      }
    else {
      arad = Math.acos(cartx/rraw);
      aradc = (carty>=0)?arad:2*Math.PI - arad;
      adeg = 360 * aradc/(2*Math.PI);
      if (rnorm > 1) { 
            rgb = new Array(255,255,255);
            sat = 1;
            val = 1;            
            }
            else if (rnorm >= .5) {
	      sat = 1 - ((rnorm - .5) *2);
              val = 1;
	      rgb = hsv2rgb(adeg,sat,val);
	      }
              else {
                   sat = 1;
	      	   val = rnorm * 2;
	      	   rgb = hsv2rgb(adeg,sat,val);}
   }
   c = rgb2hex(rgb);
   hexColorArray(c);
   return false;
}

function pickColor() {
  document.submitform.rgbhex.value = threec[0];
  document.getElementById("picka1").innerHTML = threec[0];
  document.getElementById("picka").style.backgroundColor = threec[3];
  pickindex = 1;
  if (pickindex >= picary.length) pickindex = 0;
  setSquare(adeg);
  return false;
}

function setSquare(deg) {
  hue = deg;
  adeg = deg;
  c = rgb2hex(hsv2rgb(hue,1,1));
  squarecolor = c[3];
  if (document.layers) {
     document.layers["wheel"].bgColor = squarecolor;
  } else if (document.all) {
     document.all["wheel"].style.backgroundColor = squarecolor;
  } else if (document.getElementById) {
     document.getElementById("wheel").style.backgroundColor = squarecolor;
  }
}

function initColor() {   
   document.getElementById("picka").style.backgroundColor = initary[0];
   document.getElementById("wheel").style.backgroundColor = initary[0];

}


function theToggle(divid,disp) {
	var elements = document.getElementsByTagName("div");
	for(var i = 0; i < elements.length; i++) {
	if (elements.item(i).id == divid) {
	   elements.item(i).style.display = disp;}}}

function rotate(e) {
    if (!e) e = window.event;
    var key = (typeof e.which == 'number')?e.which:e.keyCode;

    }

function reHue(deg) {
    deg = deg % 360;
    setSquare(deg);
    rgb = hsv2rgb(deg,sat,val);
    c = rgb2hex(rgb);
    hexColorArray(c);
    return false;
}

function TestCKBox(fObj){
   var el = document.getElementById("wheel");
   var el1 = document.getElementById("picka");
   var el2 = document.getElementById("picka1");
   if(fObj.checked == true){
    el.style.display = "";
    el1.style.display = "";
    el2.style.display = "";

   } else {
    el.style.display = "none";
    el1.style.display = "none";
    el2.style.display = "none";

   }
}

