/* Algemeen */
var popupWinFeatures = "toolbar=no,location=no,status=yes,menubar=no," +
				"scrollbars=Yes,resizable=yes,width=400,height=400";
				

/* org uit event.js */
// event.js: cross-browser Listener-style event handling
// version 0.8, 18-Apr-2001
// written by Andrew Clover <and@doxdesk.com>, use freely

event_list= new Array();

event_level= 0;
if (document.implementation)
  if (document.implementation.hasFeature('Events', '2.0'))
    event_level= 2;

function event_addListener(esource, etype, elistener) {
  var i;
  var alreadyTriggering= false;
  for (i= 0; i<event_list.length; i++) {
    if (event_list[i][0]==esource && event_list[i][1]==etype) {
      if (event_list[i][2]==elistener) return;
      alreadyTriggering= true;
  } }
  event_list[event_list.length]= new Array(esource, etype, elistener);
  if (!alreadyTriggering) {
    if (event_level==2) {
      esource.addEventListener(etype, event_trigger_DOM2, true);
    } else {
      eval(event_trigger_DOM0(etype));
      esource['on'+etype]= event_trigger;
      if (esource.captureEvents)
        esource.captureEvents('Event.'+etype.toUpperCase());
  } }
}

function event_removeListener(esource, etype, elistener) {
  var i; var e;
  var j= 0;
  var removedListener= false;
  var keepTrigger= false;
  for (i= 0; i<event_list.length; i++) {
    if (event_list[i][0]==esource && event_list[i][1]==etype) {
      if (event_list[i][2]==elistener) {
        removedListener= true;
        continue;
      }
      else keepTrigger= true;
    }
    if (i!=j) event_list[j]= event_list[i];
    j++;
  }
  event_list.length= j;
  if (removedListener && !keepTrigger) {
    if (event_level==2)
      esource.removeEventListener(etype, elistener, true);
    else
      esource['on'+etype]= window.clientInformation ? null : window.undefined;
  }
}

function event_trigger_DOM2(e) {
  if (event_dispatch(this, e.type)==false)
    e.preventDefault();
}

function event_trigger_DOM0(t) {
  return 'function event_trigger() {return event_dispatch(this, \''+t+'\');}';
}

function event_dispatch(esource, etype) {
  var i; var r;
  var elisteners= new Array();
  var result= window.undefined;
  for (i= 0; i<event_list.length; i++)
    if (event_list[i][0]==esource && event_list[i][1]==etype)
      elisteners[elisteners.length]= event_list[i][2];
  for (i= 0; i<elisteners.length; i++) {
    r= elisteners[i](esource, etype);
    if (r+''!='undefined') result= r;
  }
  return result;
}

// convenience prevent-default-action listener
function event_prevent(esource, etype) { return false; }

// page finished loading detector for binding
var event_loaded= false;
function event_load(esource, etype) {
  event_loaded= true;
  event_removeListener(window, 'load', event_load);
}
event_addListener(window, 'load', event_load);

// binding helper
var event_BINDDELAY= 750;
var event_binds= new Array();

function event_addBinding(btag, blistener) {
  event_binds[event_binds.length]= new Array(btag, 0, blistener);
  if (event_intervalling)
    event_bind();
  else {
    event_intervalling= true;
    window.setTimeout(event_interval, 0);
  }
}

var event_intervalling= false;
function event_interval() {
  event_bind();
  if (!event_loaded)
    window.setTimeout(event_interval, event_BINDDELAY);
}

function event_bind() {
  var i, j, els, blistener;
  for (i= event_binds.length; i-->0;) {
    els= event_getElementsByTag(event_binds[i][0]);
    blistener= event_binds[i][2];
    for (j= event_binds[i][1]; j<els.length; j++)
      blistener(els[j]);
    event_binds[i][1]= event_getElementsByTag(event_binds[i][0]).length;
  }
}

// get elements by tag name with backup for pre-DOM browsers
var event_NIL= new Array();
function event_getElementsByTag(tag) {
  if (document.getElementsByTagName) {
    var arr= document.getElementsByTagName(tag);
    // IE5.0/Win doesn't support '*' for all tags
    if (tag!='*' || arr.length>0) return arr;
  }
  if (document.all) {
    if (tag=='*') return event_array(document.all);
    else return event_array(document.all.tags(tag));
  }
  tag= tag.toLowerCase();
  if (tag=='a') return event_array(document.links);
  if (tag=='img') return event_array(document.images);
  if (tag=='form') return event_array(document.forms);
  if (document.layers && tag=='div') return event_array(document.layers);
  return event_NIL;
}
function event_array(coll) {
  var arr= new Array(coll.length);
  for (var i= arr.length; i-->0;)
    arr[i]= coll[i];
  return arr;
}

/* org uit form.js */
// form.js: automatic form validation and persistence script
// version 0.5, 03-Apr-2003
// written by Andrew Clover <and@doxdesk.com>, use freely

// Import event.js and then this module, either in the <head>
// or at a point in the <body> after all forms you want to
// affect. If you put it in the <head>, it will wait until the
// entire page is loaded before it starts.

// All forms with a 'name' attribute on the page will become
// persistent (remembering previously-submitted values) on
// browsers where JavaScript and cookies are enabled.

// Any fields where you specify a value of '*' are 'required'
// fields and must be filled in for the form to be submitted.
// Hidden fields and file upload fields are not persistant and
// cannot be made required.

// Change this line to set the error message for non-validating
// forms:

var form_error= 'Please fill in the following fields: ';

// Change this line to set how long persistent forms are
// remembered - default twenty weeks

// SC_MOD
//var form_cookieLife= 1000*60*60*24*7*20;
var form_cookieLife= 1000 * 60 * 10;

// end of user-servicable parts

var form_forms= new Array();
var form_bound= false;

// form_init: find forms in the page and bind to them

function form_init() {
  var i;
  if (form_bound) return;
  form_bound= true;
  for (i= document.forms.length; i-->0;) {
    if (document.forms[i].name!='') {
      form_bind(document.forms[i]);
      form_fromCookie(document.forms[i]);
  } }
}

// form_bind: attach our influence to a form and its required
//            fields, storing a list of these for later use

function form_bind(f) {
  var i, j, t;
  var required= new Array();
  for (i= f.elements.length; i-->0;) {
    t= f.elements[i].type;
    if (t=='text' || t=='password' || t=='textarea') {
      if (f.elements[i].value=='*') {
        event_addListener(f.elements[i], 'focus', form_focus);
        event_addListener(f.elements[i], 'blur', form_blur);
        required[required.length]= f.elements[i];
    } }
    if (t=='select-one' || t=='select-multiple') {
      for (j= f.elements[i].options.length; j-->0;) {
        if (f.elements[i].options[j].value=='*') {
          required[required.length]= f.elements[i];
    } } }
  }
  form_forms[form_forms.length]= new Array(f, required);
  event_addListener(f, 'submit', form_submit);
}

// form_submit: validate, allow submission and set cookie if OK

function form_submit(f, etype) {
  var i;
  var problems;
  for (i= form_forms.length; i-->0;) {
    if (form_forms[i][0]== f) {
      problems= form_validate(form_forms[i]);
      if (problems=="") {
        form_toCookie(f);
        return true;
      } else {
        alert(form_error+'\n'+problems);
        return false;
      }
  } }
  return true;
}

// form_focus: remove asterisk from required field when focused

function form_focus(ff, etype) {
  if (ff.value=='*') ff.value= '';
}

// form_blur: replace asterisk in required field if not filled in

function form_blur(ff, etype) {
  if (ff.value=='') ff.value= '*';
}

// form_validate: find unfilled required fields, returning a
//                string list of them, or '' if all is OK

function form_validate(arr) {
  var i, t, ix, valid;
  var f= arr[0];
  var required= arr[1];
  var problems= '';
  for (i= required.length; i-->0;) {
    t= required[i].type;
    valid= true;
    if (t=='text' || t=='password' || t=='textarea')
      valid= required[i].value!='*' && required[i].value!='';
    if (t=='select-one' || t=='select-multiple') {
      ix= required[i].selectedIndex;
      if (ix==-1) valid= false;
      else if (required[i].options[ix].value=='*') valid= false;
    }
    if (!valid) problems= problems+'  '+required[i].name+'\n';
  }
  return problems;
}

// form_toCookie: write form values into a cookie

function form_toCookie(f) {
  var cookid= 'form_'+f.name;
  var fields= form_encodeCookie(form_getFields(f));
  var now= new Date();
  var expiry= form_cookieDate(new Date(now.getTime()+form_cookieLife));
  var security= (document.location.protocol=='https:') ? ';secure' : '';
  document.cookie= cookid+'='+fields+';expires='+expiry+security;
}

// form_cookieDate: write date string conforming to Netscape's
//                  cookie definition (having to do this is stupid)

var form_days= new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
var form_months= new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
                           'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');

function form_cookieDate(d) {
  return form_days[d.getDay()]+', '+form_encodeDec2(d.getDate())+'-'+
         form_months[d.getMonth()]+'-'+form_realYear(d)+' 12:00:00 GMT';
}

function form_realYear(d) {
  var y;
  if (d.getFullYear) return d.getFullYear();
  y= d.getYear();
  if (y>=2000) return y;
  return y+1900;
}

// form_fromCookie: get form values back out from cookie

function form_fromCookie(f) {
  var kv, ix, i;
  var cs= document.cookie.split(';');
  for (i= cs.length; i-->0;) {
    ix= 0;
    while (ix<cs[i].length && cs[i].charAt(ix)<'!')
      ix++;
    kv= cs[i].substring(ix).split('=', 2); // lose prefixed control chars
    if (kv.length==2)
      if (kv[0]== 'form_'+f.name)
        form_setFields(f, form_decodeCookie(kv[1]));
  }
}

// form_getFields: return a query-like string of form values. Pipes are
//                 used as separators instead of & and =, and +-encoding
//                 does not happen (as per JavaScript escape()).

function form_getFields(f) {
  var i, j, e, t;
  var q= '';
  for (i= f.elements.length; i-->0;) {
    e= f.elements[i];
    t= e.type;
    v= '';

    if (t=='text' || t=='password' || t=='textarea')
      q= form_queryAppend(q, e.name, e.value);

    if (t=='checkbox' || t=='radio') {
      if (e.checked) {
        q= form_queryAppend(q, e.name, (e.value!='') ? e.value : 'on');
    } }

    if (t=='select-one' || t=='select-multiple')
      for (j= e.options.length; j-->0;)
        if (e.options[j].selected)
          q= form_queryAppend(q, e.name, e.options[j].value);

  }
  return q;
}

function form_queryAppend(q, n, v) {
  if (v!='') {
    if (q!='') q= q+'|';
    q= q+escape(n)+'|'+escape(v);
  }
  return q;
}

// form_setFields: set fields from a getFields-style query string

function form_setFields(f, q) {
  var fields, i, j, k, e, t;

  fields= q.split('|');
  for (i=fields.length; i-->0;) {
    fields[i]= unescape(fields[i]);
  }

  for (i=f.elements.length; i-->0;) {
    e= f.elements[i];
    t= e.type;

    if (t=='checkbox' || t=='radio')
      e.checked= false;
    if (t=='select-multiple')
      for (k= e.options.length; k-->0;)
        e.options[k].selected= false;

    for (j= 0; j<fields.length-1; j= j+2) {
      if (fields[j]==e.name) {

        if (t=='text' || t=='password' || t=='textarea')
          e.value= fields[j+1];

        if (t=='checkbox' || t=='radio')
          if (e.value==fields[j+1] || (e.value=='' && fields[j+1]=='on'))
            e.checked= true;

        if (t=='select-one' || t=='select-multiple')
          for (k= e.options.length; k-->0;)
            if (e.options[k].value==fields[j+1])
              e.options[k].selected= true;

    } }
  }
}

// form_encodeCookie: remove characters unfit to go in a cookie's OPAQUE_STRING
//                    this is done by escaping with '!xx' (hex)

var form_invalid= '()<>@,;:\\"/[]?={}!';

function form_encodeCookie(s) {
  var i, c;
  var r= '';
  for (i= 0; i<s.length; i++) {
    c= s.charAt(i);
    if (form_invalid.indexOf(c)!=-1)
      r= r+'!'+form_encodeHex2(s.charCodeAt(i));
    else r= r+c;
  }
  return r;
}

// form_decodeCookie: convert a cookie's opaque string back

function form_decodeCookie(s) {
  var c;
  var r= '';
  for (i= 0; i<s.length; i++) {
    c= s.charAt(i);
    if (c=='!') {
      r= r+String.fromCharCode(form_decodeHex2(s.substring(i+1, i+3)));
      i= i+2;
    }
    else r= r+c;
  }
  return r;
}

// form_XXcodeXXXN: hex and decimal string coding, very tedious and should
//                  really be built into JavaScript

function form_encodeHex2(n) {
  var hex= '0123456789ABCDEF';
  if ((n&255)<16) return '0'+hex.charAt(n);
  return hex.charAt(Math.floor((n&255)/16))+hex.charAt((n&255)%16);
}

function form_decodeHex2(h) {
  var hex= '0123456789ABCDEF';
  var hn= hex.indexOf(h.charAt(0));
  var ln= hex.indexOf(h.charAt(1));
  if (hn!=-1 || ln!=-1)
    return hn*16+ln;
  return '?';
}

function form_encodeDec2(n) {
  if (n<10) return '0'+n;
  return ''+(n%100);
}

// call script init now if in <body>, or later if in <head>

if (document.body)
  form_init();
else
  event_addListener(window, 'load', form_init);

  
 /* org uit b4submit.js */
 /*
  You can either cut and paste this right between script tags within HTML head tags
  or put it in a seperate file and use the script tag's src attribute.
  In either case you could call the function as follows:
  <form onSubmit='return RequiredFieldsFilled(this,"","")'>
  Or see b4submit.htm with which this script will be "packaged" for an example
  of using an intermediate function that defines forms not required and
  a more meaningful error message
*/

function RequiredFieldsFilled(thisForm,skipField,errorCaptions) {

  var formFields = thisForm.elements
  
  var unFilledElements = new Array()
  
  /*
     The following are 'associative' or 'hash' arrays that can be indexed by
	 something other than an integer, that are implemented in JavaScript 1.2
	 and higher (Versions 4 and higher of the major browsers), and should be
	 familiar to CGI/Perl programmers. 
  */	 
  var checkBoxRadioGroups = new Array() 
  var firstGroupElement = new Array()   
  
  /* 
    Javascript 1.2+ "Regular Expression" (also common to CGI/Perl scripts) 
	for matching a pattern of zero or more instances of blank or "white" space
	in text fields
  */
  var noText = /^\s*$/
  
  var selection
  var isCheckBoxOrRadio

  for (var fieldNum = 0; fieldNum < formFields.length; fieldNum++) {
    
    var formField = formFields[fieldNum]
    var fieldName = formField.name
    var fieldType = formField.type

    /*
       Skip fields specified by user as not requiring validation, as well as
	   other types of fields not ordinarily validated
    */
    if (skipField[fieldName] == true 
	    || fieldType == "hidden" 
		|| fieldType == "submit") 
    {
      continue
    }

    /*
      Trim the field type to the first four characters so that:
      "text" and "textarea"
      are handled identically by the following switch construct, as are:
      "select_one" and "select_many"
    */
    fieldType = fieldType.substr(0,4)

    switch(fieldType) {
      /*
        "Cases", in terms of HTML form fields:
        
        1) <input type="text"> or <textarea>
        2) <select>, regardless of "multiple" attribute (pull-down menus)
        3/4) <input type="checkbox"> <input type="radio">
        
        Assign the form's element number to the "unFilledElements" array, for 
		text fields and/or pull-down menus for which the user didn't specify 
		a value
      */
      
      case "text":
        if (noText.test(formField.value)) {
          unFilledElements[unFilledElements.length] = fieldNum
        }
        isCheckBoxOrRadio = false
        break
      
      case "sele":
        selection = formField.selectedIndex
        /*
           If no choice was made, selection will equal -1 if "multiple" was 
		   specified as an attribute of the select tag, 0 if "multiple" NOT
		   specified        
        */
        if (selection == -1 || (selection == 0 && !formField.options[0].value)) {
          unFilledElements[unFilledElements.length] = fieldNum
        }
        isCheckBoxOrRadio = false
        break		
		/*
           ADDITIONAL NOTES REGARDING PULL DOWN MENUS:
  
           To specify the top visible choice from a select menu as a LABEL for
		   the list below it, and not a valid choice, do NOT specify a value
		   attribute for that option; for instance:
    
           <SELECT name="firstChoiceLabel">
             <OPTION>Make Your Choice for President from the list below
             <OPTION value="tweedledum">Bush
             <OPTION value="tweedledee">Gore
           </SELECT>
    
           If, the first option IS a valid choice, a value attribute needs to be
		   specified for it.  If existing code has a value attribute specified, 
		   DON'T change it, as the server side process for the form may need it.
		   If a value isn't previously specified, you can safely do so by
		   making it identical to the human readable text; for instance:
    
           <SELECT name="firstChoiceNOTLabel">
             <OPTION value="Valid Choice 1">Valid Choice 1
             <OPTION value="Valid Choice 2">Valid Choice 2
           </SELECT>
    
           This will ensure compatability with any existing server-side process,
		   because before specifying a value attribute it was using the human
		   readable anyway.
      */
	  	
      case "chec":
        isCheckBoxOrRadio = true
        break
        
      case "radi":  
        isCheckBoxOrRadio = true
        break
                
      default:
        /*
          Skips <input type="file">; this might be handled in future versions
		  similar to text and textareas: by just checking for a visible value
        */
        isCheckBoxOrRadio = false
        continue                      
           
    } // switch(fieldType)
    
    if (isCheckBoxOrRadio) {
      /*
        Designates whether so-named checkbox or radio button was specified by 
		user, IF not already specified as true
      */
      if (checkBoxRadioGroups[fieldName] != true) {
        checkBoxRadioGroups[fieldName] = formField.checked
      }
      /*
        Designates the FIRST element of the so-named group of checkbox or 
		radio buttons
      */
      if (firstGroupElement[fieldName] == null) {
        firstGroupElement[fieldName] = fieldNum
      }    
    } 
    
  } // for var fieldNum = 0.....
  
  /*
    Check for selections from GROUPS of checkboxes/radio buttons AFTER all 
	individual fields have been processed
  */
  for (var groupName in checkBoxRadioGroups) {
    if (checkBoxRadioGroups[groupName] == false) {
      unFilledElements[unFilledElements.length] = firstGroupElement[groupName]
    }
  }
  
  /*
    At least one field left unfilled so the user receives an error message and 
	the form is NOT submitted
  */  
  if (unFilledElements.length > 0) {
    /*
       Numerically sort the element numbers contained in the unFilledElements
	   array (using an "anonymous" function), which is necessary because entries 
	   for groups of checkboxes and/or radio buttons were added AFTER all
	   individual field elements were processed, and so could be out of order
    */
    unFilledElements = unFilledElements.sort(function(a,b) {return a-b})
    
    /*
       To return the focus to the first unfilled field; the form must be named 
	   or the following code isn't evaluated
    */          
    if (thisForm.name) {
      eval("document." + thisForm.name + ".elements[" + unFilledElements[0] 
	       + "].focus()")
    }

    var errorAlert = "U heeft de volgende  " + unFilledElements.length 
	errorAlert += " verplichte veld(en) niet ingevuld!\n\n"
    
    /*
       Build the list of fields for the error message either from 
	   author-specified captions, or from the field names themselves
    */              
    for (var elementNum = 0; elementNum < unFilledElements.length; elementNum++) 
	{
      var unFilledFieldName = formFields[unFilledElements[elementNum]].name
      if (errorCaptions[unFilledFieldName] != null) {
        errorAlert += (errorCaptions[unFilledFieldName] + "\n")
      } else {
        errorAlert += (unFilledFieldName + "\n")
      }
    } 

    alert(errorAlert)
    return false
    
  } // if (unFilledElements.length > 0)
  
  /*
     Otherwise the form was filled out properly
     The alert line is optional, and other functionality can be added here
     The "return true" line is NOT optional
  */
  // alert("Thanks for filling out all the required fields!")
  return true
  
}

/* org uit form.tpl*/

function AllFieldsFilled(submittedForm) {
  var fieldsNotRequired = new Array()
  var fieldCaption = new Array()
  /* BEGIN AUTHOR SPECS */
// If you remove any form fields from below you must remove the corresponding
// entry from here.
  fieldsNotRequired['fontface'] = true
  fieldsNotRequired['music'] = true
  fieldsNotRequired['notify'] = true

  fieldCaption['to[0]'] = "Naam ontvanger"
  fieldCaption['to_email[0]'] = "Email adres ontvanger"
  fieldCaption['to[1]'] = "Naam ontvanger"
  fieldCaption['to_email[1]'] = "Email adres ontvanger"
  fieldCaption['to[2]'] = "Naam ontvanger"
  fieldCaption['to_email[2]'] = "Email adres ontvanger"
  fieldCaption['from'] = "Uw naam"
  fieldCaption['from_email'] = "Uw email adres"
  fieldCaption['message'] = "Uw bericht"

  /* END AUTHOR SPECS */

  return RequiredFieldsFilled(submittedForm,fieldsNotRequired,fieldCaption)
}
// This javascript was adapted from phpBB
function addEmoticon(text) {
	text = ' ' + text + ' ';
	if (document.sc_form.message.createTextRange && document.sc_form.message.caretPos) {
		var caretPos = document.sc_form.message.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
		document.sc_form.message.focus();
	} else {
	document.sc_form.message.value  += text;
	document.sc_form.message.focus();
	}
}

/* Color Picker  */
/*
 *	Gchats color picker by Majid Khosravi
 *	Copyright (c) 2006 - 2008 Gchat Design Studio
 *	URL: http://www.gchats.com
 *	Last Updated: August 29 2009
 *  Gchats color picker is freely distributable under the terms of GPL license.
 *  Please visit: http://www.gchats.com for updates
 *  @Version 1.2
 *--------------------------------------------------------------------------*/
// JavaScript Document
var layerWidth = 218;
var layerHeight = 144;
var currentId = "";
var orgColor ="";
var onPick = undefined;
var onCancel = undefined;
function openPicker(id, _onPick, _onCancel) {
	if (_onPick) {
		onPick = _onPick;
	}
	if (_onCancel) {
		onCancel = _onCancel;
    }	
	currentId = id;
	removeLayer("picker");
	Obj = document.getElementById(id);
	
	orgColor = Obj.value;
	createLayer("picker",findPosX(Obj)+Obj.offsetWidth+20,findPosY(Obj));
}

function createLayer(id,left,top){
	var width = layerWidth;
	var height = layerHeight;
	var zindex = 1000;
	var bgcolor = "#d4d0c8";
	var txtcolor = "#000000";
	var msg = getPickerContent();
	if (document.layers) {
		if (document.layers[id]) {
		   return;
		}
		var layer=document.layers[id]=new Layer(width);
		layer.className = "picker_layer"; 
		layer.name = id;
		layer.left=left;
		layer.top=top;
		layer.clip.height=height;
		layer.visibility = 'show';
		layer.zIndex=zindex;
		layer.bgColor=bgcolor;
		layer.innerHTML = msg;
	}else if (document.all) {
		if (document.all[id]) {
			return
		}
  		var layer= '\n<DIV class="picker_layer" id='+id+' style="position:absolute'
		+'; left:'+left+"px"
		+'; top:'+top+"px"
		+'; width:'+width
		+'; height:'+height		
		+'; visibility:visible'
		+'; z-index:'+zindex
		+';text-align:left">'
		+ msg
		+'</DIV>';
		document.body.insertAdjacentHTML("BeforeEnd",layer);
	}else if(document.getElementById){
		var layer = document.createElement ('div');
		layer.setAttribute ('id', id);
		document.body.appendChild (layer); 
		var ly = document.getElementById(id);
		ly.className = "picker_layer"; 
		ly.style.position= "absolute";
		ly.style.left= left+"px";
		ly.style.top= top+ "px";		
		ly.style.width= width+ "px";		
		ly.style.height= height+ "px";		
		ly.style.textAlign= "left";
		ly.innerHTML = msg;	
	}
}
function showClr(color){
	Obj = document.getElementById(currentId);
	Obj.value = color;
	Obj.style.backgroundColor=color;	
	Obj = document.getElementById("gcpicker_colorSample");
	Obj.style.backgroundColor=color;
	Obj = document.getElementById("gcpicker_colorCode");
	Obj.innerHTML = color;
	
}
function setClr(color){
	Obj = document.getElementById(currentId);
	Obj.value = color;
	Obj.style.backgroundColor=color;	
	currentId = "";
	removeLayer("picker");
	if (onPick) {
		onPick();
    }	
}
function cancel(){
	Obj = document.getElementById(currentId);
	Obj.value = orgColor;
	Obj.style.backgroundColor=orgColor;	
	removeLayer("picker");
    if (onCancel) {
		onCancel();
    }
}
function removeLayer(id){
	if(document.getElementById(id) ==null){
		return;	
	}
	if (document.layers && document.layers[id]) {
  		document.layers[id].visibility='hide'
		delete document.layers[id]
	}
	if (document.all && document.all[id]) {
		document.all[id].innerHTML=''
		document.all[id].outerHTML=''
	}else if(document.getElementById){
		 var b = document.body;
 		 var layer = document.getElementById(id);
	 	 b.removeChild(layer);
	}
}
function getPickerContent(){
	var content = 	'<table width="222" border="0" cellpadding="0" cellspacing="1"><tr><td>';
	content += '<table width="100%" border="0" cellpadding="0" cellspacing="1" class="color_table"><tr><td bgcolor="#CCCCCC" id="gcpicker_colorSample" width="40px" class="choosed_color_cell">&nbsp;</td><td align="center"><div id="gcpicker_colorCode">#CCCCCC</div></td><td width="60px" align="center"><input type="submit" value="" onclick="cancel()" class="default_color_btn" /></td></tr></table>';
	content += '</td></tr><tr><td>';
	content += colorTable()+'</td></tr></table>';
	return content;	
}
function colorTable(){
	var clrfix = Array("#000000","#333333","#666666","#999999","#cccccc","#ffffff","#ff0000","#00ff00","#0000ff","#ffff00","#00ffff","#ff00ff");
	var table ='<table border="0"  cellpadding="0" cellspacing="0" bgcolor="#000000"><tr>';
	table += '';
	for(var j=0;j<3;j++){
		table += '<td width="11"><table bgcolor="#000000"  border="0"  cellpadding="0" cellspacing="1"  class="color_table">';
		for(var i=0;i<12;i++){
			var clr ='#000000';
			if(j==1){
				clr = clrfix[i];	
			}
			table += '<tr><td bgcolor="'+clr+'" class="cell_color" onmouseover="showClr('+"'"+clr+"'"+')" onclick="setClr('+"'"+clr+"'"+')"></td></tr>';
		}
		table += '</table></td>';		
	}
	table +='<td><table border="0" cellpadding="0" cellspacing="0">';	
	for (var c = 0; c<6; c++) {
		if(c==0 || c==3){
			table +="<tr>";	
		}
		table += "<td>"	
		
		table = table+'<table border="0" cellpadding="0" cellspacing="1" class="color_table"> ';
		for (var j = 0; j<6; j++) {
			table +="<tr>";
			for (var i = 0; i<6; i++) {
				var clrhex = rgb2hex(j*255/5,i*255/5,c*255/5);
				table += '<td bgcolor="'+clrhex+'" class="cell_color" onmouseover="showClr('+"'"+clrhex+"'"+')" onclick="setClr('+"'"+clrhex+"'"+')"></td>';
			}
			table +="</tr>";
		}
		table +="</table>";
		table += "</td>"	
		if(c==2 || c==5){
			table +="</tr>";	
		}	
	}
	table +='</table></td></tr></table>';	
	return table;
}

function findPosX(obj){
	var curleft = 0;
	if(obj.offsetParent)
        while(1){
			curleft += obj.offsetLeft;
			if(!obj.offsetParent)
			break;
			obj = obj.offsetParent;
		}
	else if(obj.x)
	curleft += obj.x;
	return curleft;
}
function findPosY(obj){
	var curtop = 0;
	if(obj.offsetParent){
		while(1){
			curtop += obj.offsetTop;
			if(!obj.offsetParent){
				break;
			}
			obj = obj.offsetParent;
		}
    }else if(obj.y){
		curtop += obj.y;
	}
	return curtop;
}

function rgb2hex(red, green, blue)
{
    var decColor = red + 256 * green + 65536 * blue;
    var clr = decColor.toString(16);
	for(var i =clr.length;i<6;i++){
		clr = "0"+clr;	
	}
	return "#"+clr;
}

				
				
