/*************************************************
	-- CALCOLO DELL'ALTEZZA DEL MAIN --
*************************************************/

debug_msg = false;

function toDebug(string)
{
	if (debug_msg)
	{
		if((typeof window.console=="undefined")) {alert(string);}
		else {window.console.log(string);}
	}
}
   
function mainHeight()
{
	try 
		{
	//	inizializzazione delle variabili
		var main = $('main');
		var head = $('head');
		var colonnaSx = $('colonnaSx');
		var colonnaDx = $('colonnaDx');
		var container = $('container');
		var footer = $('footer');
		var container_offsetHeight = container.offsetHeight;
		if($('frm_dettagli_richiesta')) container_offsetHeight += 350;	
		var altezza_comune = Math.max(colonnaSx.offsetHeight, Math.max(colonnaDx.offsetHeight, container_offsetHeight))+20;
		var altezza_main = (head.offsetHeight) + altezza_comune + footer.offsetHeight;
		
	//	settaggi proporietà dei box contenitori
		colonnaSx.setStyle({'top':head.offsetHeight+'px','height':altezza_comune+'px'});
		colonnaDx.setStyle({'top':head.offsetHeight+'px','height':altezza_comune+'px'});
		container.setStyle({'top':head.offsetHeight+'px','height':altezza_comune+'px'});
		footer.setStyle({'top':head.offsetHeight+altezza_comune+'px'});
	//	posiziono le colonne a destra o sinistra in base alla classe (inizio)
		var sinistra = $$('.sinistra')[0];
		var centro = $$('.centro')[0];
		var destra = $$('.destra')[0];
		
		sinistra.setStyle({'left':'0px'});
		centro.setStyle({'left':sinistra.offsetWidth+sinistra.offsetLeft+1+'px'});
		destra.setStyle({'left':centro.offsetLeft+centro.offsetWidth+1+'px'});
	//	posiziono le colonne a destra o sinistra in base alla classe (fine)
	
		main.setStyle({'height': altezza_main + 'px'});
		
		//pulizia del contenuto: eliminazione dell' utlimo paragrafo vuoto
		if($('contenuto'))
		{
			var discendenti = $('contenuto').immediateDescendants();
			var discendenti_p = discendenti.findAll(function(n) { if (n.nodeName == 'P') return n; });
			var k = discendenti_p.size() - 1;
			if( k.length>=1 && (discendenti_p[k].empty() || discendenti_p[k].innerHTML == "\n&nbsp;\n" || discendenti_p[k].innerHTML == "&nbsp; ")) {discendenti_p[k].remove();}
		}
	}
	catch(e) 
	{ 
		toDebug(e.toString());
	}
}

function tableBg(el)
{
	try 
	{
		var righe = $$('#'+el+' tr');
		for (var i=0;i<righe.length;i++)
		{
			if(i%2 == 0) righe[i].setStyle({'background':'#E8F3FF'});
			else righe[i].setStyle({'background':'#D3E7FF'});
			if(i == 0) righe[0].setStyle({'background':'#C7DCF1', 'color': '#FFFFFF'});
		}
	}
	catch(e) {toDebug(e.toString());}
}


/*BOF FORM CONTATTI*/

//restituisco true in caso di errore
function validateFormElement(elem)
{
	if(elem.value=="")
	{
		errorOnFormElement(elem);
		return true;
	}
	else {return false;}
}


function validateHiddenElement(element)
{
	if(validateFormElement(element))
	{
		errorOnFormElement('fieldset_dettagli_richiesta');
		errorOnFormElement('fieldset_dettagli_preventivo');
		return true;
	}
	else return false;



}

function validateCheckBoxElement(elem)
{
	if(elem.checked){return false;}
	else
	{
		errorOnFormElement(elem.parentNode);	
		return true;
	}
}

function validateFormEmail(elem)
{
	var emailRegexp = RegExp('^[A-Za-z0-9._-]+[@]([A-Za-z0-9-]+[.])+([A-za-z]{2,4})$', 'i');
	if (emailRegexp.test(elem.value)){return false;}
	else
	{
		errorOnFormElement(elem);
		return true;
	}
}


function errorOnFormElement(elem)
{
	Effect.Shake(elem);
	new Effect.Highlight(elem);
}


function submitGuestBook()
{
	var d = new Date()
	param = d.getTime();
	var form = $('guestbooksign');
	document.forms['guestbooksign'].secure.value = param;

	//copio testo della text area
	if (document.forms['guestbooksign'].frm_tipo_richiesta.value=="richiesta preventivo"){document.forms['guestbooksign'].frm_messaggio.value=document.forms['guestbooksign'].frm_messaggio_a.value;}
	else{document.forms['guestbooksign'].frm_messaggio.value=document.forms['guestbooksign'].frm_messaggio_b.value;}

//inizio validazione
	var error_found = 0;
			
	if(validateFormElement(form.frm_nome)) error_found++;
	if(validateFormEmail(form.frm_email)) error_found++;
	if(validateFormElement(form.frm_telefono)) error_found++;
	if(validateCheckBoxElement(form.frm_privacy_a) && validateCheckBoxElement(form.frm_privacy_b)) error_found++;
	//if(validateHiddenElement(form.frm_tipo_richiesta)) error_found++;
//fine validazione	


	if(error_found==0)
	{
		Effect.BlindUp('form_email_all_fields');


		form.request({
		  onComplete: function()
			{ 	
				Effect.BlindDown('form_email_thanks');
				Form.reset('guestbooksign');
				return false; 
			}
		});

//		document.forms['guestbooksign'].submit();		
	}	
	return false;
}



function showOnClick(element)
{
	
	if($(element).style.display == '') return false;
	else
	{
		if(element == 'frm_dettagli_richiesta')
		{
			Effect.BlindUp($('frm_dettagli_preventivo'), {afterFinish: down=function()
			{
				Effect.BlindDown(element);				
				document.forms['guestbooksign'].frm_tipo_richiesta.value = 'richiesta informazioni';
			}});
		}
		else
		{
			Effect.BlindUp($('frm_dettagli_richiesta'), {afterFinish: down=function()
			{
				Effect.BlindDown($('frm_dettagli_preventivo'));
				document.forms['guestbooksign'].frm_tipo_richiesta.value = 'richiesta preventivo';
			}});
		}
	}
	
}

/*EOF FORM CONTATTI*/



/* BOF SCROLL DEI BOX */

var timer;
var moving = false;
var element_to_move;
var max_move;


function scrollingContent(el, clipHeight)
{
	var element = $(el);
	var element_dimension = element.getDimensions();
	var clip_element = element.up();
	var clip_dimension = clip_element.getDimensions();
	var scroll_container = clip_element.up();

	clip_element.setStyle({'clip': 'rect(0px,'+clip_dimension.width+'px,'+clipHeight+'px,0px)'});
	if(element_dimension.height > clipHeight)
	{
		var goUp = $$('#'+scroll_container.id+' .goUp')[0];
		var goDown = $$('#'+scroll_container.id+' .goDown')[0];
		var down_top = scroll_container.offsetHeight - goDown.offsetHeight;
		// settaggi freccia in alto
		goUp.setStyle({
			'top': '30px',
			'cursor': 'pointer'
		});
		goUp.onmouseover =function()
		{
			element_to_move = element;
			max_move = clipHeight;
			scrollUp();
		};
		goUp.onmouseout = function()
		{
			
			moving = false;
			clearTimeout(timer);
		}
		goUp.show();
		
		// settaggi per freccia in basso
		goDown.setStyle({
			'top': '50px',
			'cursor': 'pointer'
		});
		goDown.onmouseover =function()
		{
			element_to_move = element;
			max_move = clipHeight;
			scrollDown();
		};
		goDown.onmouseout = function()
		{
			moving = false;
			clearTimeout(timer);
		}
		goDown.show();
	}
	
}

function scrollUp()
{	
	if(element_to_move)
	{
		if(element_to_move.offsetTop>=0) return false;
		moving = true;
		new Effect.Move(element_to_move,{x:0,y:1, duration: 0.01});
		if(moving) timer = setTimeout(scrollUp,10);
		else return false;
	}
	return false;
}
function scrollDown()
{
	if(element_to_move)
	{
		if(element_to_move.offsetTop < -(element_to_move.offsetHeight - max_move)) return false;
		moving = true;
		new Effect.Move(element_to_move,{x:0,y:-1, duration: 0.01});
		if(moving) timer = setTimeout(scrollDown,10);
		else return false;
	}
	return false;
}

/* EOF SCROLL DEI BOX */

function toggleMenu(menu, toggler, disappear, toggler2)
{
	try
	{
		var menu = $(menu);
		var toggler = $(toggler);
		if(disappear) var disappear = $(disappear);
		if(toggler2) var toggler2 = $(toggler2);
		
		var figli_array = menu.descendants();
		var active = false;
		figli_array.each(function(el)
		{
			if(el.className.match('active')) 
			{
				active = true;
			}
		});
		
		//blocco menu di dani (preferivo il mio)
		active = false;
		
		toggler.setStyle({'cursor':'pointer'});
		if(!active) menu.hide();
		if(active && disappear) disappear.hide();
		toggler.onclick = function()
		{
			if(disappear && (disappear.getStyle('display') == 'block' || disappear.getStyle('display') == ''))
			{
				Effect.SwitchOff(disappear,{afterFinish:function()
				{
					Effect.toggle(menu, 'blind');
				}});
			}
			else if(disappear &&  disappear.getStyle('display') == 'none')
			{
				Effect.toggle(menu, 'blind',{afterFinish:function()
				{
					Effect.BlindDown(disappear);
				}});
			}
			else Effect.toggle(menu, 'blind');
		//	closeAll(menu);
		}
		
		if(toggler2)
		{
			toggler2.setStyle({'cursor':'pointer'});
			toggler2.onclick = function()
			{
				if(disappear && (disappear.getStyle('display') == 'block' || disappear.getStyle('display') == ''))
				{
					Effect.SwitchOff(disappear,{afterFinish:function()
					{
						Effect.toggle(menu, 'blind');
					}});
				}
				else if(disappear &&  disappear.getStyle('display') == 'none')
				{
					toggler2.onclick = function(){alert('ciao');}
					Effect.toggle(menu, 'blind',{afterFinish:function()
					{
						Effect.BlindDown(disappear);
					}});
				}
				else Effect.toggle(menu, 'blind');
				
			//	closeAll(menu);
			}
		}
	}
	catch(e)
	{
		toDebug(e.toString());
	}
}


function playVerticalMenu(menu)
{
	try
	{
		var menu = $(menu);
		var li1 = menu.immediateDescendants();
		li1.each(function(lv1)
		{
			var link_box = lv1.down('div.link_box');
			if(lv1.down('div.level-2'))
			{
				//toConsole(lv1.inspect() + ', '+lv1.innerHTML);
				var lv2_div = lv1.down('div.level-2');
				var lv2 = lv2_div.down('ul');
				var lv3 = lv2.immediateDescendants();
				var active = false;
				//	inizio modifiche per il parkhotelscattolica
					var lv2_div_height = $('flash-content').offsetHeight - 19;
					lv2_div.setStyle({'height': lv2_div_height + 'px'});
				
				//	fine modifiche per il parkhotelscattolica	
				lv3.each(function(el){if(el.className.match('active')){active = true;}});
				if(!active) lv2_div.hide();
				link_box.down('a').onclick = function(){return false;}
				if(!menu.hasClassName('home_page'))
				{
                    if(lv2_div.down('ul li.active')) Effect.toggle(lv2_div,'blind');
					link_box.onclick = function()
					{
						Effect.toggle(lv2_div,'blind');
						closeAll(lv2_div);
						if(lv2.down('ul')) playVerticalMenu(lv2);

						return false;
					}
				}
				else
				{
					link_box.onclick = function()
					{
						window.location.href = lv2.down('a').href;
						return false;
					}
				}
			}
			else link_box.onclick = function(){window.location.href  = link_box.down('a').href;}
		});
	}
	catch(e){toDebug(e.toString());}
}


function closeAll(opened)
{
	try
	{
		var boxes = $$('#sezioni-interne .level-2');
		boxes.each(function(el)
		{
			if(el != opened && (el.getStyle('overflow') == 'visible' || el.getStyle('display') == ''))
			Effect.BlindUp(el);
		});
	}
	catch(e){alert(e.toString());}
}







function showNewsletter()
{
try
{
	var overlay = $('my_overlay');
	var box = $('box-newsletter');
	var height_overlay = getPageSize()[1];
	var page_scroll  = getPageScroll()[1];
	Element.setStyle(overlay,{'top':'0px','height':height_overlay+'px'});
	Element.setStyle(box,{'top':page_scroll+'px'});
	overlay.onclick = function()
	{
		hideNewsletter();
	}
	Effect.Appear(overlay,{from:0.0,to:0.5,duration:0.5,afterFinish: newsletter=function()
	{
		Effect.SlideDown(box);
	}});
}
catch(e) {toDebug(e);}
}
function hideNewsletter()
{
try
{
	var overlay = $('my_overlay');
	var box = $('box-newsletter');
	Effect.SlideUp(box,{afterFinish:out=function()
	{
		Effect.Fade(overlay,{duration:0.2});
	}});
}
catch(e) {toDebug(e);}
}


function getPageScroll(){

	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('',yScroll) 
	return arrayPageScroll;
}

// -----------------------------------------------------------------------------------

//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}


	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}


/*************************************************
	-- RICHIAMO TUTTO UNA UNICA FUHNZIONE --
*************************************************/


function allFunctions() 
{
	mainHeight();
	if($('sezioni-interne')) playVerticalMenu('sezioni-interne');
	$('page_loading').hide();
	
}

Event.observe(window,'load',allFunctions);