// JavaScript Document
var liveboxAccordion;
var liveboxDragable;
var CycleZonesPE;
var weatherZone;
var weatherZone_divs;
var webcamsZone;
var webcamsZone_divs;
var mediasZone;
var mediasZone_divs;
var dragStarted = false;

var showLiveBox = function(ongIndex) {
	if($$('.menu-live-box').size()) Effect.Fade($$('.menu-live-box')[0],{duration:.5});
	if($('live-box')) {
		if(!Element.visible($('live-box').parentNode)) Effect.Appear($('live-box').parentNode,{duration:.5, afterFinish:function(){ if(typeof ongIndex != "undefined") liveboxAccordion.activate($$('#live-box .accordion_toggle')[ongIndex-1]); }});
		createCookie('liveboxvisible',1,30);
	}
}
var closeLivebox = function() {
	if($$('.menu-live-box').size()) Effect.Appear($$('.menu-live-box')[0],{duration:.5});
	Effect.Fade($('live-box').parentNode,{duration:.5});
	eraseCookie('liveboxvisible');
}
var activateLivebox = function() {
	liveboxAccordion = new accordion('live-box'); 
	var handleOnStart = function(evt) {
		dragStarted = true;
	}
	var handleOnEnd = function(evt) {
		dragStarted = false;
		saveLiveboxPos();
		createCookie('liveboxvisible',1,30);
	}
	liveboxDragable = new Draggable($('live-box').parentNode,{ handle:"eldeplace", onStart:handleOnStart, onEnd:handleOnEnd, starteffect:null, endeffect:null });
	
	// Set the livebox position
	//var divResa = $$('.reserver')[0];
	//divResaOffset = divResa.cumulativeOffset();
	//$('live-box').parentNode.setStyle({'position':'absolute','width':'235px','top':(divResa.getHeight()+45)+'px'});
	
	// Init Weather zone cycles
	CycleZonesPE = new PeriodicalExecuter(cycleZones, 5);
	// Init next & previous buttons
	var verticalAccordions = $$('.accordion_toggle');
	verticalAccordions.each(function(accordion, index) {
		if(index == 0) {
			weatherZone = $(accordion.next(0));
		}
		if(index == 2) {
			webcamsZone = $(accordion.next(0));
		}
	});
	Event.observe(weatherZone.getElementsByClassName('livebox_prev')[0],'click',cycleZones.bindAsEventListener(CycleZonesPE, -1));
	Event.observe(weatherZone.getElementsByClassName('livebox_next')[0],'click',cycleZones.bindAsEventListener(CycleZonesPE, 1));
	Event.observe(webcamsZone.getElementsByClassName('livebox_prev')[0],'click',cycleZones.bindAsEventListener(CycleZonesPE, -1));
	Event.observe(webcamsZone.getElementsByClassName('livebox_next')[0],'click',cycleZones.bindAsEventListener(CycleZonesPE, 1));
	Event.observe(mediasZone.getElementsByClassName('livebox_prev')[0],'click',cycleZones.bindAsEventListener(CycleZonesPE, -1));
	Event.observe(mediasZone.getElementsByClassName('livebox_next')[0],'click',cycleZones.bindAsEventListener(CycleZonesPE, 1));
	if($$('.menu-live-box').size() == 0) {
		Effect.Appear($('live-box').parentNode);
	}
	else {
		//if(readCookie('liveboxvisible')	) showLiveBox();
	}
}
var initLivebox = function() {
	if($('live-box')) {
		// Get livebox container and remove it from the dom to attach it to the document body
		var resa_div = $$('.reserver')[0];
		var resa_div_offset = resa_div.cumulativeOffset();
		var resa_div_bottom = resa_div_offset.top + (resa_div.getHeight());
		var livebox_obj = Element.remove($('live-box').parentNode);
		// Restore livebox position 
		if(readCookie('liveboxposx') && readCookie('liveboxposy')) {
			Element.setStyle(livebox_obj,{"top":readCookie('liveboxposy')+'px',"left":readCookie('liveboxposx')+'px'});
		}
		else {
			Element.setStyle(livebox_obj,{"top":(resa_div_bottom+10)+'px',"left":(resa_div_offset.left-9)+'px'});
		}
		document.body.appendChild(livebox_obj);
		var verticalAccordions = $$('.accordion_toggle');
		verticalAccordions.each(function(accordion, index) {
			$(accordion.next(0)).setStyle({
				height: '0px'
			});
			if(index == 0) {
				weatherZone = $(accordion.next(0));
				weatherZone_divs = Element.select(weatherZone, 'div');
				weatherZone_divs.each(function(div, index) {
					if(index > 0) div.hide();
				});
			}
			if(index == 1) {
			
			}
			if(index == 2) {
				webcamsZone = $(accordion.next(0));
				webcamsZone_divs = Element.select(webcamsZone, 'div');
				webcamsZone_divs.each(function(div, index) {
					if(index > 0) div.hide();
				});
			}
			if(index == 3) {
				mediasZone = $(accordion.next(0));
				mediasZone_divs = Element.select(mediasZone, 'div');
				mediasZone_divs.each(function(div, index) {
					if(index > 0) div.hide();
				});
			}
		});
		// IE 6 hack to make links clickable inside divs with alpha PNGs
		if(Prototype.Browser.IE && parseFloat(navigator.appVersion.split("MSIE")[1]) < 7) {
			$('live-box').select("a").each(function(alink) { Element.setStyle(alink,{"position":"relative","z-index":1}); } );
		}
		//Event.observe(window,"load",activateLivebox);
		activateLivebox.defer();
		document.observe("livebox:adjustpos", function(event) {
			var resa_div = $$('.reserver')[0];
			var resa_div_offset = resa_div.cumulativeOffset();
			var resa_div_dimensions = resa_div.getDimensions();
			var top = resa_div_offset.top;
			var left = resa_div_offset.left;
			var right = resa_div_offset.left + resa_div_dimensions.width;
			var bottom = resa_div_offset.top + resa_div_dimensions.height;

			var livebox_parent = $('live-box').parentNode;
			
			var overlap = Position.within(livebox_parent, left, top) || Position.within(livebox_parent, right, top) || Position.within(livebox_parent, left, bottom) || Position.within(livebox_parent, right, bottom);
			if(overlap) {
				livebox_parent.setStyle({"top":(bottom+10)+"px"});
				saveLiveboxPos();
			}
		});
	}
}
var cycleZones = function (pe, step) {
	var currentVisibleDiv;
	if(step) CycleZonesPE.stop();
	if(!dragStarted) {
		if(weatherZone.visible()) {
			weatherZone_divs.each(function(div, index) {
				if(div.visible()) {
					currentVisibleDiv = index;
					throw $break;
				}
			});
			nextVisible = currentVisibleDiv + (step ? step : 1);
			if(nextVisible >= weatherZone_divs.size()) nextVisible = 0;
			if(nextVisible < 0) nextVisible = weatherZone_divs.size()-1;
			weatherZone_divs[currentVisibleDiv].hide();
			weatherZone_divs[nextVisible].show();
		}
		if(webcamsZone.visible()) {
			webcamsZone_divs.each(function(div, index) {
				if(div.visible()) {
					currentVisibleDiv = index;
					throw $break;
				}
			});
			nextVisible = currentVisibleDiv + (step ? step : 1);
			if(nextVisible >= webcamsZone_divs.size()) nextVisible = 0;
			if(nextVisible < 0) nextVisible = webcamsZone_divs.size()-1;
			webcamsZone_divs[currentVisibleDiv].hide();
			webcamsZone_divs[nextVisible].show();
		}
		if(mediasZone.visible()) {
			mediasZone_divs.each(function(div, index) {
				if(div.visible()) {
					currentVisibleDiv = index;
					throw $break;
				}
			});
			nextVisible = currentVisibleDiv + (step ? step : 1);
			if(nextVisible >= mediasZone_divs.size()) nextVisible = 0;
			if(nextVisible < 0) nextVisible = mediasZone_divs.size()-1;
			mediasZone_divs[currentVisibleDiv].hide();
			mediasZone_divs[nextVisible].show();
		}
	}
}
var saveLiveboxPos = function() {
	var offset = $('live-box').parentNode.cumulativeOffset();
	//console.log("Livebox position : " + offset);
	createCookie('liveboxposx',offset.left,30);
	createCookie('liveboxposy',offset.top,30);
}
document.observe("dom:loaded",initLivebox);