/**
 * Bootstrap.js - Bootstrap for all Javascript functionality
 * 
 * @author  Webstores <info at webstores dot nl>
 *           Copyright (c) Webstores internet totaalbureau <http://www.webstores.nl/>
 */
WS.DOM.ready(function() {
	
	// External links
	var a=document.getElementsByTagName('a');for(var i=0;i<a.length;i++){if(/external/.test(a[i].rel)){a[i].target='_blank';}}
	
	// Toggle input values
	var inputs=WS.DOM.getElementsByClass('toggle-value');inputs.forEach(function(el){var v=el.value;WS.Event.addEvent(el,'focus',function(){if(this.value==v){this.value='';}WS.addClass(this,'focus');});WS.Event.addEvent(el,'blur',function(){if(this.value==''){this.value=v;WS.removeClass(this,'focus');}});});
	
	// IE6 hover
	if(WS.browser.IE6 && $('navigation')){var hoverEls=$('navigation').getElementsByTagName('li');for(var i=0;i<hoverEls.length;i++){WS.Event.addEvent(hoverEls[i],'mouseover',function(){WS.addClass(this,'iehover');});WS.Event.addEvent(hoverEls[i],'mouseout',function(){WS.removeClass(this,'iehover');});}}
	
	// Splash
	// var splashTimeout = null;
	// jQuery('#establishments li').mouseenter(function(){var establishment=this.id.split('-')[1];splashTimeout=setTimeout(function(){jQuery('#splash-visual')[0].className=establishment;},250);});
	// jQuery('#establishments li').mouseleave(function(){if(splashTimeout){clearTimeout(splashTimeout);splashTimeout=null;}});
	jQuery('#splash-news ul').innerfade({speed:500,timeout:7000,containerheight:'40px'});
	
	// Carousels
	jQuery('#visual-thumbs-vp').jcarousel({scroll:5,animation:'slow',initCallback:function(carousel){jQuery('#visual-thumbs-prev').click(function(e){e.preventDefault();carousel.prev();});jQuery('#visual-thumbs-next').click(function(e){e.preventDefault();carousel.next();});}});
	jQuery('#organizer-scroller').jcarousel({scroll:1,animation:'slow',auto:7,wrap:'both'});
	jQuery('#ad-scroller').jcarousel({scroll:1,animation:'slow',auto:7,wrap:'both'});
	
	// Activity nav select boxes
	jQuery('.activity-quick select').change(function(){;window.location.href=this.options[this.selectedIndex].value;});
	
	// IE select box fix
	if(WS.browser.IE){
		jQuery('.activity-menu select').mouseleave(function(e){e.stopPropagation();});
		jQuery('#activity-nav li').hover(function(){jQuery(this).find('.activity-menu').show();},function(){jQuery(this).find('.activity-menu').hide();});
	}
	
	// Room select box
	jQuery('#room-select').change(function(){;window.location.href=this.options[this.selectedIndex].value;});
	
	// Colorbox
	jQuery('a.colorbox, a[rel="colorbox"]').colorbox({opacity:0.8,current:'Afbeelding {current} van {total}',previous:'Vorige',next:'Volgende',close:'Sluiten',slideshowStart:'Diavoorstelling starten',slideshowStop:'Diavoorstelling stoppen'});	
	if(jQuery('.tellafriend-toggle').length){jQuery('.tellafriend-toggle').each(function(){jQuery(this).colorbox({opacity:0.8,current:'Afbeelding {current} van {total}',previous:'Vorige',next:'Volgende',close:'Sluiten',slideshowStart:'Diavoorstelling starten',slideshowStop:'Diavoorstelling stoppen'});});}
	if(jQuery('.callmenow-toggle').length){jQuery('.callmenow-toggle').each(function(){jQuery(this).colorbox({opacity:0.8,current:'Afbeelding {current} van {total}',previous:'Vorige',next:'Volgende',close:'Sluiten',slideshowStart:'Diavoorstelling starten',slideshowStop:'Diavoorstelling stoppen'});});}
	
	// Accordions
	jQuery('#details-accordion').accordion({active:0,autoHeight:false,header:'.accordion-toggler'});
	jQuery('#faq-accordion').accordion({active:0,autoHeight:false});
	jQuery('#vacation-accordion').accordion({active:0,autoHeight:false});
	
	// Tickets form
	if($('ticket-form')){WS.hide('ticket-actions-overlay');var ticketFieldTimeout=false;var ticketField=new QuantityField('ticket-quantity',{onUpdate:function(el){if(/^[0-9]+$/.test(el.value)){if(ticketFieldTimeout){clearTimeout(ticketFieldTimeout);}ticketFieldTimeout=setTimeout(function(){sendTicketRequest();},500);}else{el.value=1;}}});WS.Event.addEvent($('ticket-rank'),'change',function(){sendTicketRequest();});}
	
	// Filters
	if($('room-filters')){
		var personMenu=new Menu('person-filter','person-filter-menu');var areaMenu=new Menu('area-filter','area-filter-menu');var emplacementMenu=new Menu('emplacement-filter','emplacement-filter-menu');WS.Event.addEvent('person-filter-cancel','click',function(e){WS.Event.stopEvent(e);personMenu.hide();});WS.Event.addEvent('area-filter-cancel','click',function(e){WS.Event.stopEvent(e);areaMenu.hide();});WS.Event.addEvent('emplacement-filter-cancel','click',function(e){WS.Event.stopEvent(e);emplacementMenu.hide();});WS.Event.addEvent('person-filter-submit','click',function(){personMenu.hide();});WS.Event.addEvent('area-filter-submit','click',function(){areaMenu.hide();});WS.Event.addEvent('emplacement-filter-submit','click',function(){emplacementMenu.hide();});
		jQuery('#person-slider').slider({animate:true,range:true,min:parseInt($('person-min').value),max:parseInt($('person-max').value),values:[parseInt($('person-min').value),parseInt($('person-max').value)],step:50,slide:function(event,ui){$('person-min').value=$('person-min-value').innerHTML=ui.values[0];$('person-max').value=$('person-max-value').innerHTML=ui.values[1];}});		
		jQuery('#area-slider').slider({animate:true,range:true,min:parseInt($('area-min').value),max:parseInt($('area-max').value),values:[parseInt($('area-min').value),parseInt($('area-max').value)],step:50,slide:function(event,ui){$('area-min').value=$('area-min-value').innerHTML=ui.values[0];$('area-max').value=$('area-max-value').innerHTML=ui.values[1];}});
		var roomFilter=new RoomFilterForm('room-filters-form','rooms-table');roomFilter.initialize();
	}
	
	// Webshop cart
	var webshopCart = new Cart('cart-products');

	// Webshop cart fixed when scrolling down 
	if($('cart-actions')) {
		var top = jQuery('#cart-actions').offset().top - parseFloat(jQuery('#cart-actions').css('marginTop').replace(/auto/, 0));
		jQuery(window).scroll(function (event) {
			// what the y position of the scroll is
			var y = jQuery(this).scrollTop();
			// whether that's below the form
	 		if (y >= top) {
			// if so, ad the fixed class
		    jQuery('#cart-actions').addClass('scroll-fixed');
		    } else {
				// otherwise remove it
				jQuery('#cart-actions').removeClass('scroll-fixed');
			}
		});
	}

	// Event ticket order form
	var evTicketForm = new EventTicketForm(jQuery('#event-tickets form')[0]);
	
	// Exhibition ticket order form
	var exTicketForm = new ExhibitionTicketForm(jQuery('#exhibition-tickets form')[0]);
	
	// Validation
	if($('subscribe-form')){var subscribeVal=new WS.Validation('subscribe-form');subscribeVal.initialize();}
	if($('contact-form')){var contactVal=new WS.Validation('contact-form');contactVal.initialize();}
	if($('tickets-form')){var ticketsVal=new WS.Validation('tickets-form',{onFail:function(){alert('U dient alle verplichte velden in te vullen en akkoord te gaan met de algemene voorwaarden');}});ticketsVal.initialize();}
	if($('relatiekaart-form')){var relatiekaartVal=new WS.Validation('relatiekaart-form',{onFail:function(){alert('U dient alle verplichte velden in te vullen');}});relatiekaartVal.initialize();}
	
	// Tabs
	var homeTabs=new Tabs('home-agenda-tabs');homeTabs.initialize();
	var hotelTabs=new Tabs('hotel-tabs');hotelTabs.initialize();
	
	// Footer togglers
	if($('footer-nav')){var togglers=WS.DOM.getElementsByClass('toggler',$('footer-nav'),'a');togglers.forEach(function(el){new Toggler(el,$(el.href.split('#')[1]),{parentOffset:1,followLink:true});});}

	if($('full-service-banner')){
		var bannerLink = $('full-service-banner');
		var flashVars={link: bannerLink.innerHTML};
		var params={wmode:'transparent'};
		swfobject.embedSWF('/swf/full-service-banner.swf','full-service-banner','240','100','8', null, flashVars, params, null, null);
	} 
});

// Cufon replacements
Cufon.replace('h1');
Cufon.replace('h1 span');
Cufon.replace('#login p');
Cufon.replace('.section h2,#visual h2,#menu h2,.page-actions h2,#attendants h2,#advance-booking-window h2,#attendants-search h2,#room-filters-form h2,#twitter,.activity-quick p,#room-quick-select .accent');
Cufon.replace('#visual-intro .date');
Cufon.replace('#login-form legend');

// Send ticket request
function sendTicketRequest(){WS.show('ticket-actions-overlay');var postBody='id='+$('event-id').value+'&quantity='+$('ticket-quantity').value+'&rankId='+$('ticket-rank').value;WS.Ajax.request(extra_url + '/calculate/ticket',function(response){parseTicketResponse(response);},postBody);};

// Ticket quantity response handler
function parseTicketResponse(json){var prices=WS.Util.parseJSON(json);WS.setText('grand-total','&euro; '+prices.total);WS.setText('service-total','&euro; '+prices.serviceCosts);WS.hide('ticket-actions-overlay');};
