/*
(C) RedBean , Kai Pijpstra

30-01-2007 - layerGet gerepareerd

*/

function layerGet(id,d) {
  if(!d)d=document; 
/*
  var p,i,x;  
  if(!d)d=document; 
  if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; 
    n=n.substring(0,p);
  }
  if(!(x=d[n])&&d.all) x=d.all[n]; 
  for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=layerGet(n,d.layers[i].document); 
  return x;
*/  

  if(d.getElementById)return d.getElementById(id);
  if (d.all) return (d.all[id])?d.all[id]:null;
  else if(d.layers)return (d.layers[id])?d.layers[id]:null;
}

function layerRGet(id,win){
  var l=null;
  var w=(win)?win:window.top;
  if(w){
    if(w.document)l=layerGet(id,w.document);
    if(l)return l;
    for(var i=0;i<w.frames.length;i++){
      l=layerRGet(id,w.frames[i]);
      if(l)return l;
    }  
  }
  return l;
}

function layerGetStyle(id){
  var l=layerGet(id);
  if(!l)return null;

  if(l.style) return l.style;
  else if(l.currentStyle)return l.currentStyle;  
  else return null;
}

function layerShow(id,on) {
  var l=layerGet(id),NNtype,IEtype,WC3type;   
  if(!l)return null;

  if(on){ 
    NNtype="show";
    IEtype="visible";
    WC3type="visible"; 
  }
  else{
    NNtype="hidden";
    IEtype="hidden";
    WC3type="hidden"; 
  }

  if (document.getElementById)eval("document.getElementById(id).style.visibility = \"" + WC3type + "\"");
  else {
    if (document.layers) document.layers[id].visibility = NNtype;
    else if (document.all) eval("document.all." + id + ".style.visibility = \"" + IEtype + "\"");
  }
}

function layerWrite(id, message) {
  if (document.all) document.all[id].innerHTML=message;
  else if(document.getElementById) document.getElementById(id).innerHTML=message;  
  else if(document.layers){  // NN
    document.layers[id].document.open();
    document.layers[id].document.write(message);
    document.layers[id].document.close();
  }

}


function MYlayerWrite(d, id, message) {
  if(!d)d=document;

  if (d.all) d.all[id].innerHTML=message;
  else if(document.layers){  // NN
    d.layers[id].document.open();
    d.layers[id].document.write(message);
    d.layers[id].document.close();
  }
  else d.getElementById(id).innerHTML=message;
}

function layerMoveTo(id, xpos, ypos) {
  var l=layerGetStyle(id);
  if(!l)return ;
 
  l.left=xpos;
  l.top=ypos;
}

function layerMove(id, deltax, deltay) {
  layerMoveTo(id,layerLeft(id)+deltax,layerTop(id)+deltay);
}

function layerSetTop(id, ypos) {
  var l=layerGetStyle(id);
  if(!l)return ;
 
  l.top=ypos;
}

function layerSetLeft(id, xpos) {
  var l=layerGetStyle(id);
  if(!l)return ;
 
  l.left=xpos;
}

function layerSizeTo(id, width, height) {
  var l=layerGetStyle(id);
  if(!l)return ;
 
  l.width=width;
  l.height=height;
}

function layerSetWidth(id, width) {
  var l=layerGetStyle(id);
  if(!l)return ;
 
  if(width>0) l.width=width;
//  else alert(width);
}

function layerSetHeight(id, height) {
  var l=layerGetStyle(id);
  if(!l)return ;
  l.height=height;
}

function layerSetZIndex(id, Z) {
  var l=layerGetStyle(id);
  if(!l)return ;
 
  l.zIndex=Z;
}

function layerVisible(id) {
  var l=layerGetStyle(id);
  if(!l)return ;
  return((l.visibility=="visible"))||(l.visibility!="hidden");
}

function layerToggle(id){
  var l=layerGetStyle(id);
  if(!l)return ;

  
  l.visibility=((l.visibility=="visible")||(l.visibility!="hidden"))?"hidden":"visible";
}

function layerCopyPosition(id1,id2){
  var L=layerGet(id1);
  if(L)layerMoveTo(id2,findPosX(L),findPosY(L));
}

function layerWidth(id1){
  var L1=layerGet(id1);
  return L1.clientWidth;
}

function layerHeight(id1){
  var L1=layerGet(id1);
  return L1.clientHeight;
}

function layerTop(id){
//  alert(id);
  var L1=layerGet(id);
  return findPosY(L1);
}
function layerLeft(id1){
  var L1=layerGet(id1);
  return findPosX(L1);
}

function layerCopySize(id1,id2){
  var l1=layerGet(id1);
  var l2=layerGetStyle(id2);
  if(!l2)return ;
  l2.width=l1.clientWidth;
  l2.height=l1.clientHeight;
}

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 getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function layerCenter(id){
  var l=layerGet(id);
  if(l){
    var left=(screenWidth())?(screenWidth()-layerWidth(id))/2:0;
    var top=(screenHeight())?(screenHeight()-layerHeight(id))/2:0;
    
    //alert(window.top.document.ruler.offsetTop-screenHeight());
    //debug(document.body.scrollTop+top);
    
    layerMoveTo(id,left,document.body.scrollTop+top);
  }
}


function screenWidth(){
  var myWidth = 0, myHeight = 0;
  
   if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } 
  else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } 
  else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }

  return myWidth;
}

function screenHeight(){
  var myWidth = 0, myHeight = 0;
  
   if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } 
  else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } 
  else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }

  return myHeight;
}

function layerCreate(doc){
  var layer = doc.createElement('DIV');
  layer.style.position = 'absolute';
  layer.style.visibility = 'visible';  
  layer.style.left = '0px';
  layer.style.top = '0px';
  layer.style.width = '100%';
  layer.style.height = '100%';
  
  layer.style.zIndex=1;
  
//  layer.style.height = doc.scrollHeight;
  
//  layer.style.filter = 'alpha(opacity=75)';
//  if(layer.style.-moz-opacity)layer.style.-moz-opacity = '0.3';
//  if(layer.style.opacity)layer.style.opacity = '0.3';
//  layer.style.backgroundColor = 'white';
  doc.body.appendChild(layer);


/*
Finally for NN6's methods to parse in html into a document fragment we 
need to make sure that we create the range in the correct frame

  var html = '<DIV STYLE="position: absolute;';
  html += ' left: 100px; top: 200px;';
  html += ' width: 200px; height: 200px;';
  html += ' background-color: lime;';
  html += '">';
  html += '<H1>Kibology for all<\/H1>';
  html += '<\/DIV>';
so after creating the html we call
  var range = parent.frameName.document.createRange();
then position the range as needed in the other frame
  range.setStartAfter(parent.frameName.document.body.lastChild);
create the document fragment as before
  var docFrag = range.createContextualFragment(html);
which can be added with DOM methods to the document (body) of the frame
  parent.frameName.document.body.appendChild(docFrag);
*/
  
  return layer;
}


function getFormElement(name, type){

	if(document.getElementsByName){

		var elements = document.getElementsByName(name);

		if(!type) return elements[0];

		for(var e = 0; e < elements.length; e++){
			if(elements[e].type == type) return elements[e];
		}

		return false;
	}

	for(var f = 0; f < document.forms.length; f++){
		for(var e = 0; e < document.forms[f].elements.length; e++){

			if(document.forms[f].elements[e].name != name) continue;

			if(!type) return document.forms[f].elements[e];

			if(document.forms[f].elements[e].type == type) return document.forms[f].elements[e];
		}
	}
}