//------------------------------------------------------------------------------
//  http://keytrack.de  -  Keytrack.de  -  Keytrack.de Home  - 
//------------------------------------------------------------------------------
//***** misc.js *****  some javascript formatting functions
//------------------------------------------------------------------------------

/*global document, window, getElementById, getElementsByClassName, escape */

//-------------------------------------------------------------------------- ---

function HighLight(obj, color)  
{      
  obj.style.backgroundColor = color;      
}  

//-------------------------------------------------------------------------- ---

function NavTo(url)  
{    
  document.location.href = url;  
}  

//-------------------------------------------------------------------------- ---

function getPosition(e) 
{
  e = e || window.event;
  var cursor = {x:0, y:0};
  if (e.pageX || e.pageY) {
      cursor.x = e.pageX;
      cursor.y = e.pageY;
  } 
  else {
      var de = document.documentElement;
      var b = document.body;
      cursor.x = e.clientX + 
          (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
      cursor.y = e.clientY + 
          (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
  }
  return cursor;
}

//-------------------------------------------------------------------------- ---

function MsgPopUp(msg) 
{
  var cursor = getPosition();
  var header = "<html><head><title>Keytrack.de Message Window</title></head><body>";
  var footer = "</body>";
  var keytrack_msg = window.open(header+msg+footer, 'keytrack_msg', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=300,height=300,left='+(cursor.x-150)+',top='+(cursor.y-150));
}

//-------------------------------------------------------------------------- ---

function switchDisplay(nr)
{
	var current;
	if (document.layers)
	{
		current = (document.layers[nr].display == 'none') ? 'block' : 'none';
		document.layers[nr].display = current;
	}
	else if (document.all)
	{
		current = (document.all[nr].style.display == 'none') ? 'block' : 'none';
		document.all[nr].style.display = current;
	}
	else if (document.getElementById)
	{
		current = (document.getElementById(nr).style.display == 'none') ? 'block' : 'none';
		document.getElementById(nr).style.display = current;
	}
}

//-------------------------------------------------------------------------- ---

function setDisplay(nr, state)
{
	var current = (state == 1) ? 'block' : 'none';
	if (document.layers)
	{
		document.layers[nr].display = current;
	}
	else if (document.all)
	{
		document.all[nr].style.display = current;
	}
	else if (document.getElementById)
	{
		document.getElementById(nr).style.display = current;
	}
}

//-------------------------------------------------------------------------- ---

function setDisplayRow(nr, state)
{
	var current = (state == 1) ? '' : 'none';
	if (document.layers)
	{
		document.layers[nr].display = current;
	}
	else if (document.all)
	{
		document.all[nr].style.display = current;
	}
	else if (document.getElementById)
	{
		document.getElementById(nr).style.display = current;
	}
}

//-------------------------------------------------------------------------- ---

function addClass( element, classname ) 
{    
  var cn = element.className;    //test for existance    
  if( cn.indexOf( classname ) != -1 ) {
	return;    
  }    
  //add a space if the element already has class    
  if( cn !== '' ) {        
    classname = ' '+classname;    
  }    
  element.className = cn+classname;
}
 
//-------------------------------------------------------------------------- ---

function removeClass(objElement, strClass)
{
  if ( objElement.className )
  {
    var arrList = objElement.className.split(' ');
    var strClassUpper = strClass.toUpperCase();
    for ( var i = 0; i < arrList.length; i++ ) {
        if ( arrList[i].toUpperCase() == strClassUpper ) {
            arrList.splice(i, 1);
            i--;
        }
    }
    objElement.className = arrList.join(' ');
  }
}

//-------------------------------------------------------------------------- ---

function getBgColor(object)
{
	var obj;
	if (object === null) {
		return object;
	}
	else if (typeof(object)=='string') {
		obj = getElementById(object);
	}
	else { 
		obj = object;
	}
	if (obj.currentStyle) {
		return obj.currentStyle['backgroundColor'];
	}
	if (window.getComputedStyle) {
		return document.defaultView.getComputedStyle(obj,null).getPropertyValue('background-color');
	}
}

//-------------------------------------------------------------------------- ---

function setDisplayByClass(sclass, state, tags, node)
{
	tags = tags || "*";
	var elements = getElementsByClassName(sclass, tags, (node?document.getElementById(node):document));
	var elementsLen = elements.length;
    for (var i=0; i<elementsLen; i++) {
	  if (tags=='tr') {
	    setDisplayRow(elements[i].id,state);
	  }
	  else {
	    setDisplay(elements[i].id,state);
	  }
	}
}

//-------------------------------------------------------------------------- ---

function various_deselect_others(divid,plus_icon)
{
	var details = document.getElementById('details_table'),
	    divs = details.getElementsByTagName('div'),
	    row_match = /^r(\d*)_/,
	    affected_row = divid.match(row_match)[1],
	    affected_match = new RegExp("r"+affected_row+"_"),
	    others = [],
	    divsLen = divs.length,
	    i;
		
	for (i=0; i<divsLen; i++) {
// 	  if (divs[i].id!='' && divs[i].id.search(affected_match)!=-1 && divs[i].id.substring(4)!=divid)
 	  if (divs[i].id!='' && divs[i].id.substring(0,3)==='btn' && divs[i].id.substring(4)!=divid) {
	    others[others.length] = divs[i].id.substring(4);
	  }
	}
	var othersLen = others.length;
	for (i=0; i<othersLen; i++) {
	  var btncurrent = document.getElementById('btn_'+others[i]);
	  btncurrent.className = 'ltgrey_font';
	  eval('state_'+others[i]+'=\'hidden\';');
	  var icon = document.getElementById('icon_'+others[i]);
	  icon.src = plus_icon;
	  setDisplayByClass(others[i],0,'tr');
	}
	if (typeof(zc_reposMovies)!='undefined') {
	  zc_reposMovies();
	}
}

//-------------------------------------------------------------------------- ---


function proper_copyToClipboard (s)
{
	if( window.clipboardData && clipboardData.setData )
	{
		clipboardData.setData("Text", s);
	}
	else
	{
		// You have to sign the code to enable this or allow the action in about:config by changing
		// user_pref("signed.applets.codebase_principal_support", true);
		netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
		var clip = Components.classes['@mozilla.org/widget/clipboard;[[[[1]]]]'].createInstance(Components.interfaces.nsIClipboard);
		if (!clip) return;
		// create a transferable
		var trans = Components.classes['@mozilla.org/widget/transferable;[[[[1]]]]'].createInstance(Components.interfaces.nsITransferable);
		if (!trans) return;
		// specify the data we wish to handle. Plaintext in this case.
		trans.addDataFlavor('text/unicode');
		// To get the data from the transferable we need two new objects
		var str = new Object();
		var len = new Object();
		var str = Components.classes["@mozilla.org/supports-string;[[[[1]]]]"].createInstance(Components.interfaces.nsISupportsString);
		var copytext=meintext;
		str.data=copytext;
		trans.setTransferData("text/unicode",str,copytext.length*[[[[2]]]]);
		var clipid=Components.interfaces.nsIClipboard;
		if (!clip) return false;
		clip.setData(trans,null,clipid.kGlobalClipboard);	   
	}
}

//-------------------------------------------------------------------------- ---