// Steffest interface library Version 0. ... euhm ... can't remember
// work in progress

function getobject(object){

var obj = document.getElementById(object);

if (obj){
	return(obj);
}else{
		//var obj = document.getElementByName(object);
		//if (obj){return(obj)
		//}else{
			//if (debug){alert('Object ' + object + ' niet gevonden');}
		//}
	}
}



function loadcontent(page,target){
	
		contenttarget = target
		ahah(page,target);
 
}




function hidelayer(layer){
var obj=getobject(layer);
if (obj){
		obj.style.display = 'none';
		//obj.style.visibility = 'hidden';
	}
}

function showlayer(layer){
var obj=getobject(layer);
	if (obj){
		obj.style.display = 'block';
		//obj.style.visibility = 'visible';
	}
}

function togglelayer(layer){
var obj=getobject(layer);
	if (obj){
		if (obj.style.display != 'block'){
			obj.style.display = 'block';
		}else{
			obj.style.display = 'none';
		}
		//obj.style.visibility = 'visible';
	}
}
	
	
function movelayer(layer,Xpos,Ypos){
var obj=getobject(layer);
if (obj){
	obj.style.left = Xpos + 'px';
	obj.style.top = Ypos + 'px';
	}

}

function slidelayer(layer,Xpos,Ypos,steps,elastic){
	// Elastic is still a bit lame
	
	// NetScape and Mozilla are a bit slow: decrease steps
	// Do not slide in Opera: it's VERY slow
	if (is_nav || is_moz){steps = steps / 1.5;}
	if (!is_opera){
		var obj = getobject(layer);
		
		var deltaX=(Xpos-parseInt(obj.style.left))/steps;
		var deltaY=(Ypos-parseInt(obj.style.top))/steps;
		if (elastic){
			deltaX = deltaX*4;
			deltaY = deltaY*4;
		}
		setTimeout('slide("'+layer+'",'+deltaX+','+Xpos+','+deltaY+','+Ypos+','+elastic+')', 50);
		
	}else{
		movelayer(layer,Xpos,Ypos);
	}
}

function slide(layer,deltaX,Xpos,deltaY,Ypos,elastic){
	
	//alert(layer + ',' + deltaX + ',' + Xpos + ',' + deltaY + ',' + Ypos);
	
var obj = getobject(layer);
if (obj){
		CurX=parseInt(obj.style.left);
		CurY=parseInt(obj.style.top);
		
		if (elastic){
			deltaX = deltaX*0.9;
			deltaY = deltaY*0.9;
		}
		
		var doslide=false;
		if ((deltaX>0) && ((CurX+deltaX) < Xpos)){doslide=true}
		if ((deltaX<0) && ((CurX+deltaX) > Xpos)){doslide=true}
		if ((deltaY>0) && ((CurY+deltaY) < Ypos)){doslide=true}
		if ((deltaY<0) && ((CurY+deltaY) > Ypos)){doslide=true}
		if (doslide){
			obj.style.left = CurX+deltaX+'px';
			obj.style.top = CurY+deltaY+'px';
			setTimeout('slide("'+layer+'",'+deltaX+','+Xpos+','+deltaY+','+Ypos+','+elastic+')', 50);
		}else{
			//clearInterval(intervalID);
			obj.style.left = Xpos+'px';
			obj.style.top  = Ypos+'px';
			
		}
	}else{
	//clearInterval(intervalID);
	}
	
}

function fade(objID,CurrentAlpha,TargetAlpha,steps){

		var obj = document.getElementById(objID);
		
		CurrentAlpha = parseInt(CurrentAlpha);
		if (isNaN(CurrentAlpha)){
			CurrentAlpha = parseInt(obj.style.opacity*100);
			if (isNaN(CurrentAlpha))CurrentAlpha=100;
		}
		
		
		
		var DeltaAlpha=parseInt((CurrentAlpha-TargetAlpha)/steps);
		var NewAlpha = CurrentAlpha - DeltaAlpha;
		
		if (NewAlpha == 100 && (navigator.userAgent.indexOf('Gecko') != -1 && navigator.userAgent.indexOf('Safari') == -1)) NewAlpha = 99.99;
		
		obj.style.opacity = (NewAlpha / 100);
		obj.style.MozOpacity = obj.style.opacity;
		obj.style.KhtmlOpacity = obj.style.opacity;
		obj.style.filter = 'alpha(opacity='+NewAlpha+')';
		
		if (steps>1){
			setTimeout('fade("'+objID+'",'+NewAlpha+','+TargetAlpha+','+(steps-1)+')', 50);
		}
}

function setalpha(objID,TargetAlpha){
	var obj = document.getElementById(objID);
	obj.style.opacity = (TargetAlpha / 100);
	obj.style.MozOpacity = obj.style.opacity;
	obj.style.KhtmlOpacity = obj.style.opacity;
	obj.style.filter = 'alpha(opacity='+TargetAlpha+')';
		
}

	function activateitem(elm){
		if (typeof(elm) == 'string')elm = document.getElementById(elm);
		if (elm.className.indexOf("_active") < 0){elm.className += "_active"}
	}

	function deactivateitem(elm){
		if (typeof(elm) == 'string')elm = document.getElementById(elm);
		elm.className = elm.className.replace("_active","")
	}
	
	function downitem(elm){
		if (typeof(elm) == 'string')elm = document.getElementById(elm);
		elm.className += "_down"
	}

	function upitem(elm){
		if (typeof(elm) == 'string')elm = document.getElementById(elm);
		elm.className = elm.className.replace("_down","")
	}

function getscrolloffset() {
    	var Scrollx=0;
		var Scrolly=0;
				
		//if (document.layers){
//			Scrollx=window.pageXOffset; 
//			Scrolly=window.pageYOffset;
//		}else if (document.all){
//			Scrollx=document.body.scrollLeft;
//			Scrolly=document.body.scrollTop;
//		}else if (document.getElementById){
//			Scrollx=window.pageXOffset;
//			Scrolly=window.pageYOffset;
//		}

var s;
    // scrolling offset calculation via www.quirksmode.org 
    if (self.pageYOffset){
		Scrollx = self.pageXOffset;
		Scrolly = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {	
		Scrollx = document.documentElement.scrollLeft; 
        Scrolly = document.documentElement.scrollTop; 
    } else if (document.body) {	
		Scrollx = document.body.scrollLeft;
		Scrolly = document.body.scrollTop;
	}
				
	return {left:Scrollx, top:Scrolly};
}


function getelementposition(elemID) {
    			var offsetTrail = elemID;
    			var offsetLeft = 0;
    			var offsetTop = 0;
    			while (offsetTrail) {
        			offsetLeft += offsetTrail.offsetLeft;
        			offsetTop += offsetTrail.offsetTop;
        			offsetTrail = offsetTrail.offsetParent;
    			}
    			if (navigator.userAgent.indexOf("Mac") != -1 && 
        			typeof document.body.leftMargin != "undefined") {
        			offsetLeft += document.body.leftMargin;
        			offsetTop += document.body.topMargin;
    			}
				
				
    			return {left:offsetLeft, top:offsetTop};
}

function getViewportSize(){ 
 var size = [0, 0]; 

 if (typeof(window.innerWidth) != 'undefined') 
 { 
   size = [window.innerWidth,window.innerHeight]; 
 } 
 else if (typeof(document.documentElement) != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0){ 
   size = [document.documentElement.clientWidth,document.documentElement.clientHeight]; 
 } 
 else 
 { 
   size = [document.getElementsByTagName('body')[0].clientWidth,document.getElementsByTagName('body')[0].clientHeight]; 
 } 

 return {width:size[0], height:size[1]};
}





// Ajax is for nerds
// Ahah rules !


// super addition to ahah: http://groups.google.com/group/XMLHttpRequest/browse_thread/thread/3deab0ff4778fdf7/a8f83be73f135ed5
function ahah(url, target, funcname) {
        function ahahDone() {
          if(req.readyState == 4){
            if(req.status == 200){
                  if(!(target == undefined)){
                    document.getElementById(target).innerHTML = req.responseText;
                  }
                  if(!(funcname == undefined)){
                    eval(funcname+"(req.responseText);");
                  }
            }else{
                  if(!(target == undefined)){
                    document.getElementById(target).innerHTML = "ahah error:\n"+req.statusText;
                  }
              if(!(funcname == undefined)){
                    eval(funcname+"(req.responseText);");
                  }
            }
          }
        }

        if(!(target == undefined)){
            document.getElementById(target).innerHTML = 'Loading ...';
        }
        if(window.XMLHttpRequest){
                var req = new XMLHttpRequest();
        }else if(window.ActiveXObject) {
                var req = new ActiveXObject("Microsoft.XMLHTTP");
        }
        if(req){
                req.onreadystatechange = function() {
                        ahahDone();
                };
                req.open("GET", url, true);
                req.send("");
        }
} 



function ahahpost(url, postparams, target, funcname) {
        function ahahDone() {
          if(req.readyState == 4){
            if(req.status == 200){
				 //alert(document.getElementById(target))
                  if(!(target == undefined)){
                    document.getElementById(target).innerHTML = req.responseText;
                  }
                  if(!(funcname == undefined)){
                    eval(funcname+"(req.responseText);");
                  }
            }else{
                  if(!(target == undefined)){
                    document.getElementById(target).innerHTML = "ahah error:\n"+req.statusText;
                  }
              if(!(funcname == undefined)){
                    eval(funcname+"(req.responseText);");
                  }
            }
          }
        }
        if(!(target == undefined)){
            document.getElementById(target).innerHTML = 'bezig met laden ...';
        }
        if(window.XMLHttpRequest){
                var req = new XMLHttpRequest();
				//req.overrideMimeType('text/html');
        }else if(window.ActiveXObject) {
                var req = new ActiveXObject("Microsoft.XMLHTTP");
        }
        if(req){
                req.onreadystatechange = function() {
                        ahahDone();
                };
                req.open("POST", url, true);
				req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      			req.setRequestHeader("Content-length", postparams.length);
				req.setRequestHeader("Connection", "close");
                req.send(postparams);
        }
}



function gup( name ){  
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec( window.location.href );
	if( results == null ) 
		return ""; 
	else   
		return results[1];
}




function getParentTag(currEl) {
  	if (currEl.parentElement){
  		currEl = currEl.parentElement;
	}else{
		currEl = currEl.parentNode;
	}
	
  return currEl;
}

function getObjectParentTag(elName,currEl) {
	
	currEl = getParentTag(currEl);
	
  while (currEl && currEl.tagName.toLowerCase() != "body") {
    if (currEl.tagName.toLowerCase() == elName) {
      return currEl;
    }
	
    currEl = getParentTag(currEl);
 
  }  
 
  return null;
}

/**
*
*  URL encode / decode
*  http://www.webtoolkit.info/
*
**/
 
function urlencode(string) {
	return escape(_utf8_encode(string)).replace("+","%2B");
}

function urldecode(string) {
	return _utf8_decode(unescape(string));
}
 

function _utf8_encode(string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
}
 
function _utf8_decode(utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
}
 


