
// Color Picker Script from Flooble.com
// For more information, visit 
// http://www.flooble.com/scripts/colorpicker.php
// Copyright 2003 Animus Pactum Consulting inc.
// Edited By GMG Net GmbH on June 2007
//---------------------------------------------------------


     var perline = 9;
     var divSet = false;
     var curId;
     var targetVar;
     var colorLevels = Array('0', '3', '6', '9', 'C', 'F');
     var colorArray = Array();
     var ie = false;
     var nocolor = 'none';
     var callbackmethod;
     var targetPicker;
  
	 if (document.all) { ie = true; nocolor = ''; }
	 function getObj(id) {
		if (ie) { return document.all[id]; } 
		else {	return document.getElementById(id);	}
	 }

     function addColor(r, g, b) {
     	var red = colorLevels[r];
     	var green = colorLevels[g];
     	var blue = colorLevels[b];
     	addColorValue(red, green, blue);
     }

     function addColorValue(hexcol) {
     	colorArray[colorArray.length] = '#' + hexcol;
     }
     
     function setColor(color) { 
     	
     	var link = getObj(curId);
     	//var field = getObj(curId + 'field');
     	var picker = getObj('colorpicker');
     	//field.value = color;
     	
     	if(link != null){
     	if (color == '') {
	     	link.style.background = nocolor;
	     	link.style.color = nocolor;
	     	color = nocolor;
     	} else {
	     	link.style.background = color;
	     	link.style.color = color;
	     }
	    }
     	picker.style.display = 'none';
	   // eval(getObj(curId + 'field').title);
	    	    
	    sethColor(color,targetPicker);
	     
	    if(callbackmethod != null)
			callbackmethod(color);
	    
     }
     
     //schreibt in HiddenField die Farbe und ändert sie im Preview
     function sethColor(c,hfield)
    {
        var el  =  $("ctl00_mainContent_ucmain_ucschritt02_"+hfield);
        el.value = c;
        setColors();      
        
    }
        
     function setDiv() {     
 /*     	if (!document.createElement) { return; }
       var elemDiv = document.createElement('div');
        if (typeof(elemDiv.innerHTML) != 'string') { return; }
        genColors();
        elemDiv.id = 'colorpicker';
	    elemDiv.style.position = 'absolute';
        elemDiv.style.display = 'none';
        elemDiv.style.border = '#000000 1px solid';
        elemDiv.style.background = '#FFFFFF';
        elemDiv.innerHTML = '<span style="font-family:Verdana; font-size:11px;text-align:right;">' 
          	+ '<a href="javascript:setColor(\'\');">x</a><br>' 
        	+ getColorTable() 
        	+ '</span>';
        

	
        document.body.appendChild(elemDiv);
        
         */ 
        
        genColors();
        divSet = true;
      
        var cdiv = getObj("colorcontent");
        
        if(cdiv != null){ 
			cdiv.innerHTML = '<span style="font-family:Verdana; font-size:11px;">' 
        	+ getColorTable() 
        	+ '</span>';
        	//getObj('colorpicker').style.display = "block";
     
        }
     }
        
     
     function pickColorVar(id,evt) {
     
         if (!evt) 
			evt = window.event;
		evt = (evt) ? evt : ((window.event) ? window.event : null);
		var elem = getElementFromEvent(evt);
        var pos = getXY(elem);
       
        targetPicker = id;
       
        if (!divSet) { setDiv(); }
     	var picker = getObj('colorpicker');     	
		if (picker.style.display == 'block') {
			picker.style.display = 'none';
			return;
		}
     	curId = "";
     	var thelink = getObj("");
     	
     	var offset=0;
     	if (id=="hinfofarbe")
     	{ 
     	    offset=103;
     	}
     	picker.style.top = 100+offset+"px";
     	
     	picker.style.left = 350+"px";
	    picker.style.display = 'block';
	    targetVar = "";
     }
     
     function genColors() {
        addColorValue('000000');
        addColorValue('888888');
        addColorValue('ff0000');
        addColorValue('B81515');
        addColorValue('0011FF');
        addColorValue('009110');
			
       	return colorArray;
     }
     
     
     function getColorTable() {
         var colors = colorArray;
      	 var tableCode = '';
         tableCode += '<table border="0" cellspacing="1" cellpadding="1">';
         for (i = 0; i < colors.length; i++) {
              if (i % perline == 0) { tableCode += '<tr>'; }
              tableCode += '<td bgcolor="' + colors[i]  + '" width="12px" height="12px" style="font-size:5px;cursor:pointer;" onclick="setColor(\'' + colors[i] + '\');">&nbsp;</td>' 
              
              if (i % perline == perline - 1) { tableCode += '</tr>'; }
         }
         if (i % perline != 0) { tableCode += '</tr>'; }
         tableCode += '</table>';
      	 return tableCode;
     }
     
     
     function relateColor(id, color) {
     	var link = getObj(id);
     	if (color == '') {
	     	link.style.background = nocolor;
	     	link.style.color = nocolor;
	     	color = nocolor;
     	} else {
	     	link.style.background = color;
	     	link.style.color = color;
	    }
	    eval(getObj(id + 'field').title);
     }
     
this.getElementFromEvent = function(evt)
	{
		if(window.event && window.event.srcElement) {
			return window.event.srcElement;
		}
		if(evt && evt.target) {
			return evt.target;
		}
		if(evt && evt.srcElement) {
			return evt.srcElement;
		}
		return null;
	}
	
	/**
	 * Get XY position of an element in the document
	 * This function is browser independent!
	 */
	this.getXY = function(contentElem)
	{
      var parent = null;
      var pos = [];
      var box;

	  // IE
      if (contentElem.getClientRect) {
         box = contentElem.getClientRect();
         var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
         var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
         alert(contentElem.id);
         alert(box.left +' : ' + scrollLeft + ' : ' + box.top + ' : ' + scrollTop);
         return [box.left + scrollLeft, box.top + scrollTop];
      }
  
      // safari/opera
      else {
         pos = [contentElem.offsetLeft, contentElem.offsetTop];
         parent = contentElem.offsetParent;
         if (parent != contentElem) {
            while (parent) {
               pos[0] += parent.offsetLeft;
               pos[1] += parent.offsetTop;
               parent = parent.offsetParent;
            }
         }

         // opera & (safari absolute) incorrectly account for body offsetTop
         var ua = navigator.userAgent.toLowerCase();
         if (
            ua.indexOf('opera') != -1
            || ( ua.indexOf('safari') != -1 && this.getStyle(contentElem, 'position') == 'absolute' )
         ) {
            pos[1] -= document.body.offsetTop;
         }
      }

      if (contentElem.parentNode) { parent = contentElem.parentNode; }
      else { parent = null; }

      while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML') {
         pos[0] -= parent.scrollLeft;
         pos[1] -= parent.scrollTop;

         if (parent.parentNode) { parent = parent.parentNode; }
         else { parent = null; }
      }
      return pos;
   }
