// - Facebox
// - Cursormessage
// - Suggest
// - Constrain (form validatie)

//*****************************************************************************************************************
// Facebox
//*****************************************************************************************************************
(function($){$.facebox=function(data,klass){$.facebox.loading()
if(data.ajax)fillFaceboxFromAjax(data.ajax)
else if(data.image)fillFaceboxFromImage(data.image)
else if(data.div)fillFaceboxFromHref(data.div)
else if($.isFunction(data))data.call($)
else $.facebox.reveal(data,klass)}
$.extend($.facebox,{settings:{opacity:0.5,overlay:true,loadingImage:'/images/loading.gif',closeImage:'/images/facebox/closelabel.gif',imageTypes:['png','jpg','jpeg','gif'],faceboxHtml:'\
    <div id="facebox" style="display:none;"> \
      <div class="popup"> \
        <table> \
          <tbody> \
            <tr> \
              <td class="tl"/><td class="b"/><td class="tr"/> \
            </tr> \
            <tr> \
              <td class="b"/> \
              <td class="body"> \
                <div class="content" id="faceboxcontent"> \
                </div> \
                <div class="footer"> \
                  <a href="#" class="close"> \
                    <img src="/images/facebox/closelabel.gif" title="close" class="close_image" /> \
                  </a> \
                </div> \
              </td> \
              <td class="b"/> \
            </tr> \
            <tr> \
              <td class="bl"/><td class="b"/><td class="br"/> \
            </tr> \
          </tbody> \
        </table> \
      </div> \
    </div>'},loading:function(){init()
if($('#facebox .loading').length==1)return true
showOverlay()
$('#facebox .content').empty()
$('#facebox .body').children().hide().end().append('<div class="loading"><img src="'+$.facebox.settings.loadingImage+'"/></div>')
$('#facebox').css({top:getPageScroll()[1]+(getPageHeight()/10),left:385.5}).show()
$(document).bind('keydown.facebox',function(e){if(e.keyCode==27)$.facebox.close()
return true})
$(document).trigger('loading.facebox')},reveal:function(data,klass){$(document).trigger('beforeReveal.facebox')
if(klass)$('#facebox .content').addClass(klass)
$('#facebox .content').append(data)
$('#facebox .loading').remove()
$('#facebox .body').children().fadeIn('normal')
$('#facebox').css('left',$(window).width()/2-($('#facebox table').width()/2))
$(document).trigger('reveal.facebox').trigger('afterReveal.facebox')},close:function(){$(document).trigger('close.facebox')
return false}})
$.fn.facebox=function(settings){init(settings)
function clickHandler(){$.facebox.loading(true)
var klass=this.rel.match(/facebox\[?\.(\w+)\]?/)
if(klass)klass=klass[1]
fillFaceboxFromHref(this.href,klass)
return false}
return this.click(clickHandler)}
function init(settings){if($.facebox.settings.inited)return true
else $.facebox.settings.inited=true
$(document).trigger('init.facebox')
makeCompatible()
var imageTypes=$.facebox.settings.imageTypes.join('|')
$.facebox.settings.imageTypesRegexp=new RegExp('\.'+imageTypes+'$','i')
if(settings)$.extend($.facebox.settings,settings)
$('body').append($.facebox.settings.faceboxHtml)
var preload=[new Image(),new Image()]
preload[0].src=$.facebox.settings.closeImage
preload[1].src=$.facebox.settings.loadingImage
$('#facebox').find('.b:first, .bl, .br, .tl, .tr').each(function(){preload.push(new Image())
preload.slice(-1).src=$(this).css('background-image').replace(/url\((.+)\)/,'$1')})
$('#facebox .close').click($.facebox.close)
$('#facebox .close_image').attr('src',$.facebox.settings.closeImage)}
function getPageScroll(){var xScroll,yScroll;if(self.pageYOffset){yScroll=self.pageYOffset;xScroll=self.pageXOffset;}else if(document.documentElement&&document.documentElement.scrollTop){yScroll=document.documentElement.scrollTop;xScroll=document.documentElement.scrollLeft;}else if(document.body){yScroll=document.body.scrollTop;xScroll=document.body.scrollLeft;}
return new Array(xScroll,yScroll)}
function getPageHeight(){var windowHeight
if(self.innerHeight){windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowHeight=document.documentElement.clientHeight;}else if(document.body){windowHeight=document.body.clientHeight;}
return windowHeight}
function makeCompatible(){var $s=$.facebox.settings
$s.loadingImage=$s.loading_image||$s.loadingImage
$s.closeImage=$s.close_image||$s.closeImage
$s.imageTypes=$s.image_types||$s.imageTypes
$s.faceboxHtml=$s.facebox_html||$s.faceboxHtml}
function fillFaceboxFromHref(href,klass){if(href.match(/#/)){var url=window.location.href.split('#')[0]
var target=href.replace(url,'')
$.facebox.reveal($(target).clone().show(),klass)}else if(href.match($.facebox.settings.imageTypesRegexp)){fillFaceboxFromImage(href,klass)}else{fillFaceboxFromAjax(href,klass)}}
function fillFaceboxFromImage(href,klass){var image=new Image()
image.onload=function(){$.facebox.reveal('<div class="image"><img src="'+image.src+'" /></div>',klass)}
image.src=href}
function fillFaceboxFromAjax(href,klass){$.get(href,function(data){$.facebox.reveal(data,klass)})}
function skipOverlay(){return $.facebox.settings.overlay==false||$.facebox.settings.opacity===null}
function showOverlay(){if(skipOverlay())return
if($('facebox_overlay').length==0)
$("body").append('<div id="facebox_overlay" class="facebox_hide"></div>')
$('#facebox_overlay').hide().addClass("facebox_overlayBG").css('opacity',$.facebox.settings.opacity).show()
return false}
function hideOverlay(){if(skipOverlay())return
$("#facebox_overlay").fadeOut(100)
return false}
$(document).bind('close.facebox',function(){$(document).unbind('keydown.facebox')
$('#facebox').fadeOut(function(){$('#facebox .content').removeClass().addClass('content')
hideOverlay()
$('#facebox .loading').remove()})})})(jQuery);


//*****************************************************************************************************************
// Cursormessage
//*****************************************************************************************************************
if(jQuery){(function($){$.cursorMessageData={};$(window).ready(function(e){if($('#cursorMessageDiv').length==0){$('body').append('<div id="cursorMessageDiv">&nbsp;</div>');$('#cursorMessageDiv').hide();}
$('body').mousemove(function(e){$.cursorMessageData.mouseX=e.pageX;$.cursorMessageData.mouseY=e.pageY;if($.cursorMessageData.options!=undefined)$._showCursorMessage();});});$.extend({cursorMessage:function(message,options){if(options==undefined)options={};if(options.offsetX==undefined)options.offsetX=5;if(options.offsetY==undefined)options.offsetY=5;if(options.hideTimeout==undefined)options.hideTimeout=5000;var hideCursorMessage=function(){$('#cursorMessageDiv').html(message).fadeOut('slow');};$('#cursorMessageDiv').stop(1,1);$('#cursorMessageDiv').fadeIn('100').html(message);if(jQuery.cursorMessageData.hideTimoutId!=undefined)clearTimeout(jQuery.cursorMessageData.hideTimoutId);jQuery.cursorMessageData.hideTimoutId=setTimeout(hideCursorMessage,options.hideTimeout);jQuery.cursorMessageData.options=options;$._showCursorMessage();},_showCursorMessage:function(){$('#cursorMessageDiv').css({top:($.cursorMessageData.mouseY+$.cursorMessageData.options.offsetY)+'px',left:($.cursorMessageData.mouseX+$.cursorMessageData.options.offsetX)})}});})(jQuery);}


//*****************************************************************************************************************
// Suggest
//*****************************************************************************************************************
(function($){$.suggest=function(input,options){var $input=$(input).attr("autocomplete","off");var $results=$(document.createElement("ul"));var timeout=false;var prevLength=0;var cache=[];var cacheSize=0;var boxwidth=$(input).css("width");$results.addClass(options.resultsClass).appendTo('body');resetPosition();$(window).load(resetPosition).resize(resetPosition);$input.blur(function(){setTimeout(function(){$results.hide()},200);});try{$results.bgiframe();}catch(e){}
if($.browser.mozilla)
$input.keypress(processKey);else
$input.keydown(processKey);function resetPosition(){var offset=$input.offset();$results.css({top:(offset.top+input.offsetHeight)+'px',left:offset.left+'px'});}
function processKey(e){if((/27$|38$|40$/.test(e.keyCode)&&$results.is(':visible'))||(/^13$|^9$/.test(e.keyCode)&&getCurrentResult())){if(e.preventDefault)
e.preventDefault();if(e.stopPropagation)
e.stopPropagation();e.cancelBubble=true;e.returnValue=false;switch(e.keyCode){case 38:prevResult();break;case 40:nextResult();break;case 9:case 13:selectCurrentResult();break;case 27:$results.hide();break;}}else if($input.val().length!=prevLength){if(timeout)
clearTimeout(timeout);timeout=setTimeout(suggest,options.delay);prevLength=$input.val().length;}}
function suggest(){var q=$.trim($input.val());if(q.length>=options.minchars){cached=checkCache(q);if(cached){displayItems(cached['items']);}else{$.get(options.source,{q:q},function(txt){$results.hide();var items=parseTxt(txt,q);displayItems(items);addToCache(q,items,txt.length);});}}else{$results.hide();}}
function checkCache(q){for(var i=0;i<cache.length;i++)
if(cache[i]['q']==q){cache.unshift(cache.splice(i,1)[0]);return cache[0];}
return false;}
function addToCache(q,items,size){while(cache.length&&(cacheSize+size>options.maxCacheSize)){var cached=cache.pop();cacheSize-=cached['size'];}
cache.push({q:q,size:size,items:items});cacheSize+=size;}
function displayItems(items){if(!items)
return;if(!items.length){$results.hide();return;}
var html='';for(var i=0;i<items.length;i++)
html+='<li>'+items[i]+'</li>';$results.html(html).show();$results.css("width",boxwidth);$results.children('li').mouseover(function(){$results.children('li').removeClass(options.selectClass);$(this).addClass(options.selectClass);}).click(function(e){e.preventDefault();e.stopPropagation();selectCurrentResult();});}
function parseTxt(txt,q){var items=[];var tokens=txt.split(options.delimiter);for(var i=0;i<tokens.length;i++){var token=$.trim(tokens[i]);if(token){token=token.replace(new RegExp(q,'ig'),function(q){return'<span class="'+options.matchClass+'">'+q+'</span>'});items[items.length]=token;}}
return items;}
function getCurrentResult(){if(!$results.is(':visible'))
return false;var $currentResult=$results.children('li.'+options.selectClass);if(!$currentResult.length)
$currentResult=false;return $currentResult;}
function selectCurrentResult(){$currentResult=getCurrentResult();if($currentResult){$input.val($currentResult.text());$results.hide();if(options.onSelect)
options.onSelect.apply($input[0]);}}
function nextResult(){$currentResult=getCurrentResult();if($currentResult)
$currentResult.removeClass(options.selectClass).next().addClass(options.selectClass);else
$results.children('li:first-child').addClass(options.selectClass);}
function prevResult(){$currentResult=getCurrentResult();if($currentResult)
$currentResult.removeClass(options.selectClass).prev().addClass(options.selectClass);else
$results.children('li:last-child').addClass(options.selectClass);}}
$.fn.suggest=function(source,options){if(!source)
return;options=options||{};options.source=source;options.delay=options.delay||100;options.resultsClass=options.resultsClass||'ac_results';options.selectClass=options.selectClass||'ac_over';options.matchClass=options.matchClass||'ac_match';options.minchars=options.minchars||1;options.delimiter=options.delimiter||'\n';options.onSelect=options.onSelect||false;options.maxCacheSize=options.maxCacheSize||65536;this.each(function(){new $.suggest(this,options);});return this;};})(jQuery);



//*****************************************************************************************************************
// Constrain (form validatie)
//*****************************************************************************************************************
(function($){$.fn.constrain=function(opt){opt=$.extend(true,{},{limit:{},prohibit:{chars:"",regex:false},allow:{chars:"",regex:false}},opt);function isProhibitedByLimit(input,e){var prohibited=false;$.each(opt.limit,function(token,idx){var max=this;if(token.charCodeAt(0)==e.which){prohibited=max<0?false:max<$(input).val().split(token).length;return false;}});return prohibited;};function isConfigured(item){return item.chars.length>0||(item.regex&&item.regex.length>0);};function match(item,input,e){var arr=item.chars.split("");for(var i in arr){var token=arr[i];if(token.charCodeAt(0)==e.which){return true;}}
if(item.regex){var re=new RegExp(item.regex);if(re.test(String.fromCharCode(e.which))){return true;}}
return false;};function isProhibited(input,e){if(e.which==0||e.which==8||e.which==27){return false;}
var prohibit=isConfigured(opt.prohibit)?match(opt.prohibit,input,e):false;var allow=isConfigured(opt.allow)?match(opt.allow,input,e):true;var limited=isProhibitedByLimit(input,e);return prohibit||!allow||limited;};return this.each(function(){$(this).keypress(function(e){if(isProhibited(this,e)){e.preventDefault();}});});};$.fn.numeric=function(opt){opt=$.extend(true,{},{onblur:true,format:""},opt);var parts=opt.format.split(".");var precision=parts.length>1?parts[1].length:false;return this.each(function(){var allowRe="\\d";if(opt.format.indexOf(".")>-1){allowRe+="\\.";}
if(opt.format.indexOf(",")>-1){allowRe+=",";}
var constraintOptions={allow:{regex:"["+allowRe+"]"},limit:{".":1}};$(this).constrain(constraintOptions);if(precision){$(this).blur(function(e){var n=parseFloat($(this).val());if(!isNaN(n)){var val=$(this).val();$(this).val($.formatNumber(val,opt.format));}});if(!opt.onblur){var prec=new RegExp("\\d+\\.*\\d{0,"+precision+"}");$(this).keyup(function(e){if((e.which<48&&e.which>57)||(e.which<96&&e.which>105)){return;}
var val=$(this).val();$(this).val(val.match(prec));});}}});};})(jQuery);(function($){$.numericFormat=$.numericFormat||{};$.numericFormat.formats=$.numericFormat.formats||new Array();$.extend({formatNumber:function(num,format){function _numberFormat(num,format,context){function createNewFormat(format,formatName){var code="var "+formatName+" = function(num){\n";code+="num = num.replace(/,/,'');";var formats=format.split(";");switch(formats.length){case 1:code+=createTerminalFormat(format);break;case 2:code+="return (num < 0) ? _numberFormat(num,\""
+escape(formats[1])
+"\", 1) : _numberFormat(num,\""
+escape(formats[0])
+"\", 2);";break;case 3:code+="return (num < 0) ? _numberFormat(num,\""
+escape(formats[1])
+"\", 1) : ((num == 0) ? _numberFormat(num,\""
+escape(formats[2])
+"\", 2) : _numberFormat(num,\""
+escape(formats[0])
+"\", 3));";break;default:code+="throw 'Too many semicolons in format string';";break;}
return code+"};";};function createTerminalFormat(format){if(format.length>0&&format.search(/[0#?]/)==-1){return"return '"+escape(format)+"';\n";}
var code="var val = (context == null) ? new Number(num) : Math.abs(num);\n";var thousands=false;var lodp=format;var rodp="";var ldigits=0;var rdigits=0;var scidigits=0;var scishowsign=false;var sciletter="";m=format.match(/\..*(e)([+-]?)(0+)/i);if(m){sciletter=m[1];scishowsign=(m[2]=="+");scidigits=m[3].length;format=format.replace(/(e)([+-]?)(0+)/i,"");}
var m=format.match(/^([^.]*)\.(.*)$/);if(m){lodp=m[1].replace(/\./g,"");rodp=m[2].replace(/\./g,"");}
if(format.indexOf('%')>=0){code+="val *= 100;\n";}
m=lodp.match(/(,+)(?:$|[^0#?,])/);if(m){code+="val /= "+Math.pow(1000,m[1].length)+"\n;";}
if(lodp.search(/[0#?],[0#?]/)>=0){thousands=true;}
if((m)||thousands){lodp=lodp.replace(/,/g,"");}
m=lodp.match(/0[0#?]*/);if(m){ldigits=m[0].length;}
m=rodp.match(/[0#?]*/);if(m){rdigits=m[0].length;}
if(scidigits>0){code+="var sci = toScientific(num,val,"
+ldigits+", "+rdigits+", "+scidigits+", "+scishowsign+");\n"
+"var arr = [sci.l, sci.r];\n";}
else{if(format.indexOf('.')<0){code+="val = (val > 0) ? Math.ceil(val) : Math.floor(val);\n";}
code+="var arr = round(val,"+rdigits+").toFixed("+rdigits+").split('.');\n";code+="arr[0] = (val < 0 ? '-' : '') + leftPad((val < 0 ? arr[0].substring(1) : arr[0]), "
+ldigits+", '0');\n";}
if(thousands){code+="arr[0] = addSeparators(arr[0]);\n";}
code+="arr[0] = reverse(injectIntoFormat(reverse(arr[0]), '"+escape(reverse(lodp))+"', true));\n";if(rdigits>0){code+="arr[1] = injectIntoFormat(arr[1], '"+escape(rodp)+"', false);\n";}
if(scidigits>0){code+="arr[1] = arr[1].replace(/(\\d{"+rdigits+"})/, '$1"+sciletter+"' + sci.s);\n";}
return code+"return arr.join('.');\n";};function toScientific(num,val,ldigits,rdigits,scidigits,showsign){var result={l:"",r:"",s:""};var ex="";var before=Math.abs(val).toFixed(ldigits+rdigits+1).trim('0');var after=Math.round(num,new Number(before.replace(".","").replace(new RegExp("(\\d{"+(ldigits+rdigits)+"})(.*)"),"$1.$2"))).toFixed(0);if(after.length>=ldigits){after=after.substring(0,ldigits)+"."+after.substring(ldigits);}
else{after+='.';}
result.s=(before.indexOf(".")-before.search(/[1-9]/))-after.indexOf(".");if(result.s<0){result.s++;}
result.l=(val<0?'-':'')+leftPad(after.substring(0,after.indexOf(".")),ldigits,"0");result.r=after.substring(after.indexOf(".")+1);if(result.s<0){ex="-";}
else if(showsign){ex="+";}
result.s=ex+leftPad(Math.abs(result.s).toFixed(0),scidigits,"0");return result;};function reverse(str){var res="";for(var i=str.length;i>0;--i){res+=str.charAt(i-1);}
return res;};function escape(string){return string.replace(/('|\\)/g,"\\$1");};function leftPad(val,size,ch){var result=new String(val);if(ch==null){ch=" ";}
while(result.length<size){result=ch+result;}
return result;};function round(num,decimals){if(decimals>0){var m=num.toFixed(decimals+1).match(new RegExp("(-?\\d*)\.(\\d{"+decimals+"})(\\d)\\d*$"));if(m&&m.length){return new Number(m[1]+"."+leftPad(Math.round(m[2]+"."+m[3]),decimals,"0"));}}
return num;};function addSeparators(val){var s=reverse(val).replace(/(\d{3})/g,"$1,");return reverse(s).replace(/^(-)?,/,"$1");};function injectIntoFormat(val,format,stuffExtras){var i=0;var j=0;var result="";var revneg=val.charAt(val.length-1)=='-';if(revneg){val=val.substring(0,val.length-1);}
while(i<format.length&&j<val.length&&format.substring(i).search(/[0#?]/)>=0){if(format.charAt(i).match(/[0#?]/)){if(val.charAt(j)!='-'){result+=val.charAt(j);}
else{result+="0";}
j++;}
else{result+=format.charAt(i);}
++i;}
if(revneg&&j==val.length){result+='-';}
if(j<val.length){if(stuffExtras){result+=val.substring(j);}
if(revneg){result+='-';}}
if(i<format.length){result+=format.substring(i);}
return result.replace(/#/g,"").replace(/\?/g," ");};var formatName="numFormat"+$.numericFormat.formats.length++;eval(createNewFormat(format,formatName));return eval(formatName);};if(!$.numericFormat.formats[format]){$.numericFormat.formats[format]=_numberFormat(num,format);};return $.numericFormat.formats[format](num);}});})(jQuery);



//*****************************************************************************************************************
// Overige functies
//*****************************************************************************************************************
jQuery(document).ready(function($) {
	$(".semitranslinks").css("opacity","0.35");
	$(".semitransrechts").css("opacity","0.35");
	$(".menu").css("opacity","0.8");
	
  $('a.box').facebox();

	$(".link").hover(function(){
		$(this).addClass("link_hover");
	},function(){
		$(this).removeClass("link_hover");
	});

})


function toggledisplay(el){
	if ($('#'+el).css("display")=="block")
		$('#'+el).fadeOut("200");
	else
		$('#'+el).fadeIn("200");
}
