/******************************************
	URL OBJECT METHODS
/*****************************************/

/**
 * url object constructor.
 * @param url string typicaly "document.url".
 */

var currentpage = 'home';
var pmod = 'CNT_page';

function __url(url){
	this.url=unescape(url);

	this.location = '';
	this.vars= new Array(1);
	this.vals= new Array(1);

	// methods
	this.getUrl			= url_getUrl;
	this.getVar			= url_getVar;
	this.getVarIndex= url_getVarIndex;
	this.getVars		= url_getVars;
	this.parse			=	url_parse;
	this.setVar			= url_setVar;

	// init
	this.parse();
}

/**
 * extract location and get vars and add them to the url object.
 */
function url_parse(){
	var a_url = this.url.split('?');

	this.location = a_url[0];
	if(a_url.length==1){ a_url[1]='';}

	var getVars = a_url[1];
	var gvars = getVars.split('&');
	var v;

	for(var i=0;i<gvars.length;i++){
		v=gvars[i].split('=');	
		if(v.length==1){v[1]='';}
		this.setVar(v[0],v[1]);
	}
}

function url_setVar(name,value){
	var l=this.getVarIndex(name);
	if(!l){ l=this.vars.length; }

	this.vars[l]	= name;
	this.vals[l]	= value;
}

function url_getVarIndex(name){
	for(var i=1;i<this.vars.length;i++){
		if(this.vars[i]==name){
			return i;
		}
	}
	return false;
}

function url_getVar(name){
	var index=this.getVarIndex(name);
	if(index){
		return this.vals[index];
	}
	return false;
}

function url_getVars(){
	var vars = new Array();
	for(var i=1;i<this.vars.length;i++){
		vars[vars.length]=escape(this.vars[i])+'='+escape(this.vals[i]);		
	}
	return vars.join('&');
}

function url_getUrl(){
	return this.location+'?'+this.getVars();
}

var pageType=null;

/******************************************
	ONLOAD OBJECT METHODS
/*****************************************/

/**
 * onload object constructor.
 */
function __onload(){
	this.events			= new Array(0);
	this.addEvent		=onload_addEvent;
	this.execEvents	=onload_execEvents;
}

/**
 * add an event to be executed when the page is loaded.
 * @param code string code to be evaluated.
 */
function onload_addEvent(code){
	this.events[this.events.length]	= code;
	return true;
}

/**
 * execute onload events.
 * This method is typicaly called by the "body.onload()" event.
 * (onload="oOnload.execEvents();")
 */
function onload_execEvents(){
	for(var i=0;i<this.events.length;i++){
		eval(this.events[i]);
	}
	return true;
}


/******************************************
 GLOBAL FUNCTIONS	
/*****************************************/

function displayToggle(el_id){
	
	el=document.getElementById(el_id);
	if(!el.style.display || el.style.display=='none'){
		el.style.display='visible';	
	}
	else{
		el.style.display='none';	
	}
}

function loadId(id){
	oUrl.setVar('id',id);
	self.location.href=oUrl.getUrl();
}

function newAdminWin(url, name){
	if(!name){name='cms';}
	window.open(
		url,
		name,
		'height=500,width=500,locationbar=0,personalbar=0,menubar=0,toolbar=0,scrollbar=1,scrollbars=yes'
	);
}
function getWinHeight() {
	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 setMainHeight(){
	document.getElementById('main').style.height = getWinHeight()-100 + 'px';
}

/******************************************
 CREATE OBJECT INSTANCES 
/*****************************************/

var oUrl		= new __url(document.URL);
var oOnload = new __onload(); 

//oOnload.addEvent('setMainHeight()');
window.onresize = function(){
	//setMainHeight();
}

function updateMainContent(mod,page){
	
	// Update main container 
	var url = '?mod=' + mod + '&page=' + page + '&xhrrequest=1';
	
	currentpage = page;
	pmod = mod;
		
	new Ajax.Request(url, {	 	
	 	onSuccess: function(f) {
        	var html = f.responseText;
      		var omenu = $('main_content');
	 			if(omenu){	 	
					omenu.innerHTML = html;
	 			}
        	},		    
         onFailure: function(f) {
     		   alert('Error ' + f.status + ' -- ' + f.statusText);
    		},		    
	 		asynchronous:true, 
	 		evalScripts:true
	 	}	 	
	 );	
}

// TODO evalScripts doenst seams to work
function updateLastMenuLeft(idmenu){
	lastmenuleft = idmenu;	
}

function updateLeftMenu(parent){
	
	// Update Left Menu
	 var url = '?mod=CNT_menu&xhrrequest=1&menu=left&menuparent=' + parent;
	  
	 // Get Menu Item
	 new Ajax.Request(url, {	 	
	 	    onSuccess: function(f) {
        		var html = f.responseText;        		
      			var omenu = $('menuleft');
	 				if(omenu){	 					
						omenu.innerHTML = html;
	 				}
        	 },		    
        	 onFailure: function(f) {
     		   alert('Error ' + f.status + ' -- ' + f.statusText);
    		},		    
	 		asynchronous:true, 
	 		evalScripts:true
	 	}	 	
	 );
	 
}

var startbanner = 'l'; // From left to right
var startbannerpx = 100; // Start postion

function moveBanner(){

	var b = $('banner_dekrediter');
	if(b){
		// Init posti
		if(b.offsetLeft < 1){			
			if(window.innerWidth){
				mid = window.innerWidth;
			}
			else{
				mid = document.body.clientWidth;
			}
			mid = mid / 2;	
			$('banner_dekrediter').setStyle({'left' : mid - 260+"px"});
			startbannerpx = mid - 260;
			new PeriodicalExecuter(moveBannerDiv, 0.03);
		}
	}
}

function moveBannerDiv(){
			
	var b = $('banner_dekrediter');
	var left = Number(b.style.left.replace(/px/, ''))
	var newleft = 0;
	
	var pix = 3;
	var maxr = 400 + startbannerpx;
	if(startbanner == 'l'){
		newleft = left + pix;
	}
	else{
		newleft = left - pix;
	}
	if((newleft < startbannerpx) || (newleft > maxr)){
		if(newleft > maxr){
			startbanner = 'r';
			newleft = newleft - pix;
		}
		else{
			startbanner = 'l';
			newleft = left + pix;
		}
	}
	$('banner_dekrediter').setStyle({'left':newleft+"px"});
}


/**
*  Change src of image to make hightligt effect
*  @param id of img tage
*  @param Upate when item is clicked
*/

function hiLiteMenu(idmenu, update){
		
	var amenu = idmenu.split('_');
	var menu = amenu[0];
	
	// Get object 
	var obj = $(idmenu);
	if(obj){
					
		// Getting img source
		var src = obj.src;

		// remove extension 	
		var img = src.substring(0, src.length - 4);
					
		// Deteminate if image if higlighted at the moment or not
		var checkhi = img.substring(img.length,img.length-2);
			
		// Do nothing when it's the current item
		// But processed when the item is clicked		
		if(((lastmenuleft != idmenu) && (lastmenutop != idmenu)) || (update == 1)){			
						
			// Change back to normal when is no
			if((checkhi == 'hi') && (update != 1)){
				var newsrc = src.substring(0, src.length - 6);				
			}
			else{
				// If image is clicked				
				// It can be already change bij mouse over event
				if(update == 1){
					if (checkhi == 'hi'){
						var newsrc = img;
					}
					else{
						var newsrc = img + 'hi';
					}
				}
				// Normal change to hightled
				else{				
					var newsrc = img + 'hi';
				}
			}
		
			// Add extension
			newsrc = newsrc + '.png';
					
			// Update current img
			obj.src = newsrc;
		}
				
		// Reset lasted clicked menu item
		// or noting changes
		if(menu == 'menuleft' && update == 1 && lastmenuleft != idmenu){
			
			// Reset Old One
			var oldhi = lastmenuleft;		
		//alert($(oldhi).src)				
			$(oldhi).src = $(oldhi).src.substring(0, $(oldhi).src.length - 6) + '.png';
									
			// Update last
			lastmenuleft = idmenu;						
		}
		
		// Reset lasted clicked menu item		
		// or noting changes
		if(menu == 'menutop' && update == 1 && lastmenutop != idmenu){
							
			// Reset Old One
			if(lastmenutop.length > 0){
				var oldhi = $(lastmenutop);
				oldhi.src = oldhi.src.substring(0, oldhi.src.length - 6) + '.png';
			}
									
			// Update last
			lastmenutop = idmenu;						
		}

		
	}
			
}

function submitform_contact(formid,divid,url){
	
	var errors = false;
	
	var required = new Array('voorletters','achternaam','email');
	var errorsdesc = new Array();
	
	errorsdesc['voorletters'] = 'Voorletters zijn verplicht';
	errorsdesc['achternaam'] = 'Achternaam is verplicht';
	errorsdesc['email'] = 'E-mail is verplicht';
	
	required.each(function(field) {		
		var obj = $(field);		
		if(obj){			
			if (obj.value == ''){				
				errors = true;
				if(errorsdesc[field]){
					alert(errorsdesc[field]);
				}
				else{
					alert(field + ' niet ingevuld');
				}
			}
		}  		
	});
	
	
	if(errors == false){
		submitform(formid,divid,url);
	}
}

function submitform_apply(formid){
	
	var errors = false;
	
	var required = new Array('roepnaam','achternaam','email');
	var errorsdesc = new Array();
	
	errorsdesc['roepnaam'] = 'Roepnaam is verplicht';
	errorsdesc['achternaam'] = 'Achternaam is verplicht';
	errorsdesc['email'] = 'E-mail is verplicht';
	
	required.each(function(field) {		
		var obj = $(field);		
		if(obj){			
			if (obj.value == ''){				
				errors = true;
				if(errorsdesc[field]){
					alert(errorsdesc[field]);
				}
				else{
					alert(field + ' niet ingevuld');
				}
			}
		}  		
	});
	
	if(errors == false){
		document.getElementById(formid).submit();
	}
}

function submitform(formid,divid,url){
	
	var form = $(formid);
	
	krediterform =  new Ajax.Updater(
	
		divid,  // DIV id must be declared before the method was called
        url,    // URL
        {
        	asynchronous:true, 
        	parameters:Form.serialize(form), 
        	method:'post',
          	onComplete:function(res){          		
          	},
          	onFailure: function(t) {
        			alert('Error ' + t.status + ' -- ' + t.statusText);
    		}
        } // Options         
	);
	
	scrollTo(0,0);
}
 

if(BrowserDetect.browser == 'Explorer'){
	if(BrowserDetect.version < 7) {
		var supported = true;
	}
}

var realSrc;
var blankSrc = "img/blank.gif";

function propertyChanged() {
   if (!supported) return;

   var pName = event.propertyName;
   if (pName != "src") return;
   // if not set to blank
   if ( ! new RegExp(blankSrc).test(src))
      fixImage();
};

function fixImage() {

   var element = $('img_banner_dekrediter');

   // get src
   var src = element.src;


   // set blank image
   element.src = blankSrc;

   // set filter
   element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/slogan.png')";
   
}

function myToggle(id) {
	new Effect.toggle(id, 'blind');
	var controller = $('controller_'+id);
	controller.innerHTML = (controller.innerHTML.match(/\+./)) ? '[--]' : '[+]';
}

