var addary=new Array(255,1,1);
var clrary=new Array(360);

for(var i=0;i<6;i++){
  for(var j=0;j<60;j++){ 
    clrary[60*i+j]=new Array(3);
    for(var k=0;k<3;k++){ 
	   clrary[60*i+j][k]=addary[k];
       addary[k]+=((Math.floor(65049010/Math.pow(3,i*3+k))%3)-1)*4; 
	}
  }
}

var imageMapX=0;
var imageMapY=0;
var imageMap;
var mapWdt=100;
var mapHgt=100;
   
function getCoords() {
  var coords = findPosObj(imageMap);
  imageMapX=coords.x;
  imageMapY=coords.y;
}

function getBodyScrollTop(){
  return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
}

function getBodyScrollLeft(){
  return self.pageXOffset || (document.documentElement && document.documentElement.scrollLeft) || (document.body && document.body.scrollLeft);
}

function coordsFix(cursor) {
  //getObjSmilegen('smilegenColorSel').value = getObjSmilegen('smilegenColorHid').value; 
  if(!cursor) var cursor = window.event;
  var x = 0;
  var y = 0;
  if (cursor.pageX || cursor.pageY) {
    x = cursor.pageX;
    y = cursor.pageY;
  }
  else if (cursor.clientX || cursor.clientY) {
    x = cursor.clientX + getBodyScrollLeft();
    y = cursor.clientY + getBodyScrollTop();
  }
    
  getCoords();
  x -= imageMapX;
  y -= imageMapY;

  imageMapX = (x < 0) ? 0 : x;
  imageMapY = (y < 0) ? 0 : y;
  
   var sx=imageMapX*2.55-255;
   var sy=imageMapY*2.55-255;
   var quad=new Array(-180,360,180,0);
   var xa=Math.abs(sx); 
   var ya=Math.abs(sy);
   var d=ya*45/xa;
   if(ya>xa) d=90-(xa*45/ya);
   var deg=Math.floor(Math.abs(quad[2*((sy<0)?0:1)+((sx<0)?0:1)]-d));

   var n=0; 
   var c="000000";
   var r=Math.sqrt((xa*xa)+(ya*ya));
   var r2=0;
   if(sx!=0 || sy!=0){ 
     for(i=0;i<3;i++){
	   r2=clrary[deg][i]*r/128;
       if(r>128) r2+=Math.floor(r-128)*2;
       if(r2>255) r2=255;
       n=256*n+Math.floor(r2); 
	 }
   	 
	 c=(n.toString(16)).toUpperCase();
     while(c.length<6) c="0"+c; 
   }
  getObjSmilegen('smilegenColorHid').value="#"+c;
  setParamToSmilegen(1,c);
}

function moveCursorByColor(cursor) {
//   getObjSmilegen('smilegenColorHid').value="#"+c;  
}

function findPosObj(obj) {
// XY-координаты слоя
  var currleft = 0;
  var currtop = 0;
  if (obj.offsetParent){
    while (obj.offsetParent) {
      currleft += obj.offsetLeft
      currtop += obj.offsetTop
      obj = obj.offsetParent;
    }
  }else{ 
  	if (obj.x) currleft += obj.x;
  	if (obj.y) currtop += obj.y;
  }	
  return {"x":currleft,"y":currtop};
}

function initColoris() { // инициализация
  imageMap = getObjSmilegen('smilegenColor');
  imageMap.onmousemove = moveCursorByColor;
  imageMap.onmouseover = moveCursorByColor;
  imageMap.onclick = coordsFix;  
  mapWdt = imageMap.offsetWidth;
  mapHgt = imageMap.offsetHeight;
}

try {
  window.addEventListener("load", initColoris, false);
} catch(e) {
  window.onload = initColoris;
}
