/*****************************************************
 * ypSlideOutMenu
 * 3/04/2001
 * 
 * a nice little script to create exclusive, slide-out
 * menus for ns4, ns6, mozilla, opera, ie4, ie5 on 
 * mac and win32. I've got no linux or unix to test on but 
 * it should(?) work... 
 *
 * --youngpup--
 *****************************************************/

ypSlideOutMenu.Registry = [];
ypSlideOutMenu.aniLen = 650;
ypSlideOutMenu.hideDelay = 150;
ypSlideOutMenu.minCPUResolution = 10;
var preloadFlag = false;

// constructor
function ypSlideOutMenu(id, dir, left, top, width, height){
	this.ie  = document.all ? 1 : 0;
	this.ns4 = document.layers ? 1 : 0;
	this.dom = document.getElementById ? 1 : 0;

	if (this.ie || this.ns4 || this.dom) {
		this.id			 = id;
		this.dir		 = dir;
		this.orientation = dir == "left" || dir == "right" ? "h" : "v";
		this.dirType	 = dir == "right" || dir == "down" ? "-" : "+";
		this.dim		 = this.orientation == "h" ? width : height;
		this.hideTimer	 = false;
		this.aniTimer	 = false;
		this.open		 = false;
		this.over		 = false;
		this.startTime	 = 0;

		// global reference to this object
		this.gRef = "ypSlideOutMenu_"+id;
		eval(this.gRef+"=this");

		// add this menu object to an internal list of all menus
		ypSlideOutMenu.Registry[id] = this;

		var d = document;
		d.write('<style type="text/css">')
		d.write('#' + this.id + 'Container { visibility:hidden; ')
		d.write('left:' + left + 'px; ')
		d.write('top:' + top + 'px; ')
		d.write('overflow:hidden; }')
		d.write('#' + this.id + 'Container, #' + this.id + 'Content { position:absolute; ')
		d.write('width:' + width + 'px; ')
		d.write('height:' + height + 'px; ')
		d.write('clip:rect(0 ' + width + ' ' + height + ' 0); ')
		d.write('}')
		d.write('</style>');


		this.load();
	}
}

function geefServerTijd(servertijd){
 	var currentTime = new Date();
 	currentTime.setTime(servertijd);
	var dagn=currentTime.getDay();
	if (dagn==1) dagn="ma";
	if (dagn==2) dagn="di";
	if (dagn==3) dagn="wo";
	if (dagn==4) dagn="do";
	if (dagn==5) dagn="vr";
	if (dagn==6) dagn="za";
	if (dagn==0) dagn="zo";
	var datum = dagn + " "; 
			 
	var z = currentTime.getDate();
	datum = datum + z;
	var maand=currentTime.getMonth();
	if (maand==0) maand="januari";
	if (maand==1) maand="februari";
	if (maand==2) maand="maart";
	if (maand==3) maand="april";
	if (maand==4) maand="mei";
	if (maand==5) maand="juni";
	if (maand==6) maand="juli";
	if (maand==7) maand="augustus";
	if (maand==8) maand="september";
	if (maand==9) maand="oktober";
	if (maand==10) maand="november";
	if (maand==11) maand="december";
	var datum = datum + "  " + maand; 
	var jaar = currentTime.getFullYear();

	datum = datum + " " + jaar + "  "; 
	datum = datum + currentTime.getHours() + ":" + checkTime(currentTime.getMinutes());

	document.getElementById('tijdsveld').innerHTML = datum;
}



function checkTime(i){
	if (i< 10){
		i = "0" + i;
	}
	return i;
}





ypSlideOutMenu.prototype.load = function() {
	var d = document;
	var lyrId1 = this.id + "Container";
	var lyrId2 = this.id + "Content";
	var obj1 = this.dom ? d.getElementById(lyrId1) : this.ie ? d.all[lyrId1] : d.layers[lyrId1];
	if (obj1) var obj2 = this.ns4 ? obj1.layers[lyrId2] : this.ie ? d.all[lyrId2] : d.getElementById(lyrId2);
	var temp;

	if (!obj1 || !obj2) window.setTimeout(this.gRef + ".load()", 100);
	else {
		this.container	= obj1;
		this.menu		= obj2;
		this.style		= this.ns4 ? this.menu : this.menu.style;
		this.homePos	= eval("0" + this.dirType + this.dim);
		this.outPos		= 0;
		this.accelConst	= (this.outPos - this.homePos) / ypSlideOutMenu.aniLen / ypSlideOutMenu.aniLen;

		// set event handlers.
		if (this.ns4) this.menu.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
//		this.menu.onmouseover = new Function("ypSlideOutMenu.showMenu('" + this.id + "')");
//		this.menu.onmouseout = new Function("ypSlideOutMenu.hideMenu('" + this.id + "')");

		//set initial state
		this.endSlide();
	}
}
	
ypSlideOutMenu.showMenu = function(id)
{
	var reg = ypSlideOutMenu.Registry;
	var obj = ypSlideOutMenu.Registry[id];
	
	if (obj.container) {
		obj.over = true;

		// if this menu is scheduled to close, cancel it.
		if (obj.hideTimer) { reg[id].hideTimer = window.clearTimeout(reg[id].hideTimer); }

		// if this menu is closed, open it.
		if (!obj.open && !obj.aniTimer) reg[id].startSlide(true);
	}
}

ypSlideOutMenu.hideMenu = function(id)
{
	// schedules the menu to close after <hideDelay> ms, which
	// gives the user time to cancel the action if they accidentally moused out
	var obj = ypSlideOutMenu.Registry[id];
	   if (obj.container) {
		   if (obj.hideTimer) window.clearTimeout(obj.hideTimer);
		   obj.hideTimer = window.setTimeout("ypSlideOutMenu.hide('" + id + "')", ypSlideOutMenu.hideDelay);
	   }
}

ypSlideOutMenu.hide = function(id)
{
	var obj = ypSlideOutMenu.Registry[id];
	obj.over = false;

	if (obj.hideTimer) window.clearTimeout(obj.hideTimer);
	
	// flag that this scheduled event has occured.
	obj.hideTimer = 0;

	// if this menu is open, close it.
	if (obj.open && !obj.aniTimer) obj.startSlide(false);
}

ypSlideOutMenu.prototype.startSlide = function(open) {
	this[open ? "onactivate" : "ondeactivate"]();
	this.open = open;
	if (open) this.setVisibility(true);
	this.startTime = (new Date()).getTime();	
	this.aniTimer = window.setInterval(this.gRef + ".slide()", ypSlideOutMenu.minCPUResolution);
}

ypSlideOutMenu.prototype.slide = function() {
	var elapsed = (new Date()).getTime() - this.startTime;
	if (elapsed > ypSlideOutMenu.aniLen) this.endSlide();
	else {
		var d = Math.round(Math.pow(ypSlideOutMenu.aniLen-elapsed, 2) * this.accelConst);
		if (this.open && this.dirType == "-")		d = -d;
		else if (this.open && this.dirType == "+")	d = -d;
		else if (!this.open && this.dirType == "-")	d = -this.dim + d;
		else						d = this.dim + d;

		this.moveTo(d);
	}
}

ypSlideOutMenu.prototype.endSlide = function() {
	this.aniTimer = window.clearTimeout(this.aniTimer);
	this.moveTo(this.open ? this.outPos : this.homePos);
	if (!this.open) this.setVisibility(false);
	if ((this.open && !this.over) || (!this.open && this.over)) {
		this.startSlide(this.over);
	}
}

ypSlideOutMenu.prototype.setVisibility = function(bShow) { 
	var s = this.ns4 ? this.container : this.container.style;
	s.visibility = bShow ? "visible" : "hidden";
}
ypSlideOutMenu.prototype.moveTo = function(p) { 
	this.style[this.orientation == "h" ? "left" : "top"] = this.ns4 ? p : (p) + "px";
}
ypSlideOutMenu.prototype.getPos = function(c) {
	return parseInt(this.style[c]);
}

function preloadImages() { 
  	var d=document; if(d.images){ 
  	if(!d.p) d.p=new Array();
    		var i,j=d.p.length,a=preloadImages.arguments; for(i=0; i<a.length; i++)
    		if (a[i].indexOf("#")!=0){ 
    			d.p[j]=new Image; d.p[j++].src=a[i];
    		}
    	}
}

function swapImgRestore() { 
	var i,x,a=document.sr; 
	for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}


function findObj(n, d) { 
	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=findObj(n,d.layers[i].document);
	 if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function swapImage() { 
	var i,j=0,x,a=swapImage.arguments; document.sr=new Array; for(i=0;i<(a.length-2);i+=3)
	if ((x=findObj(a[i]))!=null){
		document.sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];
	}
}  

function showHideLayers() {
	var i,p,v,obj,args=showHideLayers.arguments;
	for (i=0; i<(args.length-2); i+=3) if ((obj=findObj(args[i]))!=null) { 
		v=args[i+2];
		if (obj.style) { 
			obj=obj.style	; 
			v=(v=='show')?'visible':(v='hide')?'hidden':v; 
		}
		obj.visibility=v; 
	}
}

function doSaveAs(){
	if(document.execCommand){
//		if (isReady){
			document.execCommand("SaveAs");
//		}
	}
	else{
		alert('Deze toepassing is enkel beschikbaar in Internet Explorer 4.0 en hoger.');
	}
}

var ae_cb = null;

function ae_prompt(cb, q, a){
	ae_cb = cb;
	document.getElementById('aep_t').innerHTML = 'Stel een vriend op de hoogte';
	document.getElementById('aep_prompt').innerHTML = q;
	document.getElementById('aep_text').value = a;
	document.getElementById('aep_ovrl').style.display = '';
	document.getElementById('aep_ww').style.display = '';
	document.getElementById('aep_win').style.display = '';
	document.getElementById('aep_text').focus();
	document.getElementById('aep_text').select();
}

function ae_clk(m){
	document.getElementById('aep_ovrl').style.display = 'none';
	document.getElementById('aep_ww').style.display = 'none';
	document.getElementById('aep_win').style.display = 'none';
	if(!m){}
	else{ae_cb(document.getElementById('aep_text').value);}
}

function doEmailFriendOld(){
	var e_add= prompt('Vul hier het email adres in van de vriend die u op de hoogte wilt stellen van onze website:','');
	if ((e_add==" ") || (e_add == null)) e_add="";
	window.location="mailto:"+e_add+"?subject= 'Actuele verkeersinformatie op www.verkeerscentrum.be'";
}

function doEmailFriend2(){
	ae_prompt(hw2, 'Vul hier het email adres in van de vriend die u op de hoogte wilt stellen van onze website:', '');
}

function hw2(n){
	if (n != 'opnieuw'){
		window.location="mailto:"+n+"?subject= 'Actuele verkeersinformatie op www.verkeerscentrum.be'";
	}
	else{
		window.location.reload();
	}
}

function doEmailFriend() {
	var ie6 = (jQuery.browser.msie && jQuery.browser.version < 7);	
        if(ie6) {
		var txt = 'Vul hier het email adres in van de vriend die u op de hoogte wilt stellen van onze website:';
		var adres = prompt(txt, "");
		if(adres != null) {
			window.location="mailto:"+adres+"?subject= 'Actuele verkeersinformatie op www.verkeerscentrum.be'";
		}
        } else {
		var txt = '<p>Vul hier het email adres in van de vriend die u op de hoogte wilt stellen van onze website:</p><center><p><input type="text" id="adres" name="adres"/></p>';
		jQuery.prompt(txt,{ 
			buttons:{Ok:true, Annuleren:false},
			callback: function(v,m){
			    var adres = m.find('#adres').val();
			    if(v) {
	                       window.location="mailto:"+adres+"?subject= 'Actuele verkeersinformatie op www.verkeerscentrum.be'";
			    }
			}
		});
	}
}



// events
ypSlideOutMenu.prototype.onactivate	= function() { }
ypSlideOutMenu.prototype.ondeactivate	= function() { }