
// usage: log('inside coolFunc', this, arguments);
window.log = function(){
  log.history = log.history || [];
  log.history.push(arguments);
  if(this.console) {
      arguments.callee = arguments.callee.caller;
      console.log( Array.prototype.slice.call(arguments) );
  }
};
(function(b){function c(){}for(var d="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profileEnd,time,timeEnd,trace,warn".split(","),a;a=d.pop();)b[a]=b[a]||c})(window.console=window.console||{});


/////

$(function() {
    $("#big_menu a")
        .mouseover(function() { 
            $('img',this).css("background-image", $('img',this).css("background-image").replace("labels.png", "hoverlabels.png"));
        })
        .mouseout(function() { 
            $('img',this).css("background-image",$('img',this).css("background-image").replace("hoverlabels.png", "labels.png"));	
        });

    $("#news a")
        .mouseover(function() { 
		    news.pauze();
            $('img',this).attr("class",$('img',this).attr('class')+'_');
			
        })
        .mouseout(function() { 
		    news.unpauze();
            $('img',this).attr("class",$('img',this).attr('class').replace('_',''));
        });		
});

function $$() {
	function get$(el){
		if (typeof el == 'string') el = document.getElementById(el);
		return el;
	}
	if (arguments.length == 1) return get$(arguments[0]);
    var elements=[];
    for (var i=0, length=arguments.length;i<length;i++) elements.push($(arguments[i]));
   	return elements;
}

////

function EngineError(name, message) {
  this.name = name;
  this.message = message;
}

EngineError.prototype = new Error();

///////////

Array.prototype.in_array = function (element) {
 for (var values in this) {
    if (this[values] == element) return values
 }
 return false;
};

///////////


function show_message(id,msg) {
 $(id).html(msg);	
}

function show_info(id,tekst,duration) {
   $(id).html(tekst);
   if (duration==undefined) duration=2500;
   setTimeout(function() { $(id).html('')}, duration);	 	
}

function handle_engine_error(exception) {
  var html = ( exception.message === undefined ) ? "" : exception.message;
  var name = ( exception.name === undefined ) ? "Engine Error" : exception.name;
  $('#main').css('background','#ffaf23').html(name+'<br><br>'+html);
}

function handle_javascript_error(exception) {
  if ( exception.stack === undefined ) { // No useful information, so don't bother the user
    $('#main').css('background','#ffaf23').html("Runtime Error<br><br>An internal error occured, please try again later");	
    return;
  }

  var html =""
    + ( exception.name === undefined ? "Runtime Error" : exception.name ) + "<br /><br />"
    + ( exception.message === undefined ? "" : exception.message + "<br />" )
    + "<br />"
    + ( exception.fileName === undefined ? "" : exception.fileName + "<br />" )
    + ( exception.lineNumber === undefined ? "" : exception.lineNumber + "<br />" )
    + "<br />"
    + ( exception.stack === undefined ? "" : exception.stack + "<br />" );

  $('#main').css('background','#ffaf23').html(name+'<br>'+html);
}



function ajax_return(data) {
  try {
    eval(data);
  }
  catch(e) {
    if ( e instanceof EngineError) {
      handle_engine_error(e);
    } else if ( e instanceof Error ) {
      handle_javascript_error(e);
    }
	return false;
  }
  return true;
}


Number.prototype.totime= function() {  // absolute time (geen unix time)
  if (this<10000000) var t=parseInt(this,10),h=Math.floor(t/3600),m=Math.floor(t/60)%60,s=t%60,str='';
  else var t=new Date(parseInt(this,10) * 1000),h=t.getHours(),m=t.getMinutes(),s=t.getSeconds();
  if (h<10) h='0'+h;if (m<10) m='0'+m;if (s<10) s='0'+s;
  return h+':'+m+':'+s;
}

Number.prototype.todate= function() {  // unix time -> full time
   var d=new Date(parseInt(this,10)*1000),m=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],dag=d.getDate();
   if (dag<10) dag='0'+dag;
   return dag+'-'+m[d.getMonth()]+'-'+d.getFullYear();
}

Number.prototype.to_string= function() {
  var s,t=parseInt(Math.floor(this),10).toString(),l=t.length,offset=l%3,space='<span class="font50"> </span>',sign='';
  if (t<0) { 
   if (l<5) return t;  
   if (offset==1) offset=4;
  }
  if (l<4) return t;  
  s='<nobr>'+t.substr(0,offset);
  for (var i=offset;i<l;i+=3) s=s+space+t.substr(i,3);
  return s+"</nobr>";
}
////

function show_news(nr) {
	
 $('#news_main span').addClass('hidden');
 $('#news'+nr).removeClass('hidden');
  
 var allbuttons=$('#news_buttons a');
 for (var i=0,l=allbuttons.length;i<l;i++) allbuttons[i].firstChild.className="buttongfx";
 allbuttons[nr-1].firstChild.className="hoverbuttongfx";
 
 news.set_news(nr);
}

var news = function() {
  var that={},add_n=1,n=0,news_nr=1;
  var max_news=1;
  that.set_news=function(i) {
	 news_nr=i;
	 n=0;
  }
  that.pauze=function() { add_n=0;}
  that.unpauze=function() {add_n=1;}
  	
  var tick = function() {
	n=n+add_n;
    setTimeout(tick, 1000); 
// code wordt geladen.. dus check als news er niet is dat ie zichzelf disabled
	 if (n>15) {
    	n=0;
		news_nr++;
		if (news_nr>max_news) news_nr=1;
		show_news(news_nr);
	 } 
  };
  
  set_max_news=function() {
	max_news=$('#news_buttons a').length;  
  }
  set_max_news();
  tick();  
  return that;
}();


/////////////

function Tabs(tabarea) {
  var tabs=[]; // tabs
  var divs=[]; // divs
  var activeTab=0;
  var that={};

  
  // eerste UL ophalen... daarna alle li & a tags! LETOP er mogen geen spaces voorkomen!
  var temp=$$(tabarea).getElementsByTagName('ul')[0].firstChild;
  tabs.push(temp);
  temp.firstChild.firstChild.unselectable='on';   
  while (temp.nextSibling){
    temp=temp.nextSibling;
    tabs.push(temp);
    temp.firstChild.firstChild.unselectable='on'; 
  }
  var nodes=$$(tabarea).childNodes;
  for (var i=0,length=nodes.length;i<length;i++) if (nodes[i].tagName=='DIV') {
		 divs.push(nodes[i]);
		 nodes[i].className+=' hiddentab';
  };
  var maxtabs=tabs.length,maxdivs=divs.length;
  
  that.deactivate = function() {
	 for (i=0;i<maxdivs;i++) {
       divs[i].className=divs[i].className.replace('activetab','hiddentab');
     }
	 for (i=0;i<maxtabs;i++) {
       tabs[i].id="";
     }
  };
  
  that.activate=function(tabnr) {
    divs[tabnr].className=divs[tabnr].className.replace('hiddentab','activetab');
	tabs[tabnr].id="active";
  }; 
  
  that.clean=function() {
     for (i=0;i<maxdivs;i++) {
       divs[i].className=divs[i].className.replace('activetab','')
       divs[i].className=divs[i].className.replace('hiddentab','')
	 }
     for (i=0;i<maxtabs;i++) {
       tabs[i].id="";
     }
  };

  that.execute=function(tabnr) {  // voer een handler functie uit
	that.deactivate();
	divs[tabnr].className=divs[tabnr].className.replace('hiddentab','activetab');
    tabs[tabnr].id="active";
	tabs[tabnr].onclick();
  };
  

  that.handler=function(tabnr,functie) {   // na de normale onclick events wordt de functie 'functie' uitgevoerd;
	tabs[tabnr].onclick=function() {
	 that.deactivate();
	 divs[tabnr].className=divs[tabnr].className.replace('hiddentab','activetab');
	 tabs[tabnr].id="active";
     functie();
	};
  };
  
  for (i=0;i<maxtabs;i++) {
	  tabs[i].onclick=function(i) {
		  return function() {
   	        that.deactivate();	
		    divs[i].className=divs[i].className.replace("hiddentab","activetab");
			tabs[i].id="active";
		  }
	  }(i);
  };  
  
  divs[activeTab].className=divs[activeTab].className.replace('hiddentab','activetab');
  tabs[activeTab].id="active";
  
  return that;
    
};

	
/////////////////////////////

 function message_bold() {
	$('#chatmessage').val('[b]'+$('#chatmessage').val()+'[/b]');  
 }
 function message_italic() {
	$('#chatmessage').val('[i]'+$('#chatmessage').val()+'[/i]');  	 
 }
 function message_underline() {
	$('#chatmessage').val('[u]'+$('#chatmessage').val()+'[/u]');  	 
 }
 
 function close_message_link() {
   $('#chatbox_popup').css('display','none').html('');	 
 }
 function message_link_finish() {
	var html='';
	message_link_txt=$('#message_link_id').val();  
	if (message_link_txt!='') {
	  html='[url='+message_link+']'+message_link_txt+'[/url]';
	} else html='[url]'+message_link+'[/url]';
	$('#chatmessage').val($('#chatmessage').val()+html);
	close_message_link();
 }
 function message_link_text() {
	message_link=$('#message_link_id').val();
	var html='Link text (optional)<br><input id="message_link_id" value="" size="40" maxlength="128"> <input type="button" value="Enter" onclick="message_link_finish()"> <input type="button" value="Cancel" onclick="close_message_link()">';
	$('#chatbox_popup').html(html);
 }
 
 function message_link() {
	var html='Enter the URL<br><input id="message_link_id" value="http://www." size="40" maxlength="128"> <input type="button" value="Enter" onclick="message_link_text()"> <input type="button" value="Cancel" onclick="close_message_link()">';
	$('#chatbox_popup').css('display','block').html(html);
 }

 function add_smiley(smiley) {
	$('#chatmessage').val($('#chatmessage').val()+smiley); 
 }
 
 function send_message() {

   var message=$('#chatmessage').val();
   if (message!="") {
	 $('#chatmessage').val(''); 
     $.get('chatbox.php?send_message='+message, function (data ) {ajax_return(data); $('#chatbox').scrollbar_update('bottom');});
   }

   return false;
 }
 

 function add_message(message_id,time,color,user_name,message) {
    if (last_message_id<message_id) last_message_id=message_id;

	var html='';
	
	if (!short_chat) html="<span class='chattime'>"+time.totime()+"</span> ";
	
	html+="<b class='color"+color+"'>"+user_name+"</b>> "+message+"<br>";
	 
	$('#chatbox').scrollbar_html($('#chatbox').scrollbar_html()+html);
	$('#chatbox').scrollbar_update('feed');
 }
 

 function poll_messages() {
	$.get('chatbox.php?new_messages='+last_message_id, ajax_return); 
	setTimeout(poll_messages,20000);
 }

