/******************************
 * Copyright© GardenaNet 2007 *
 * ****************************
 * info@gardena.net           *
 * ***************************/

// Funktion die mit dem event-handler onload in body gestartet wird
function load()
{
	painttablerows('prezzi', '#ffffff', '#EEEEEE');		// Preis-Tabellen formattieren
	painttablerows('productpricesrental', '#ffffff', '#eeeeee', 'selectedday');		// Preis-Tabellen formattieren
	start_sliding(document.getElementById('headerimg'), document.getElementById('headerimg2'));
	if (document.getElementById('adddaysonchange'))
	{
		var function1 = document.getElementById('arrival').onchange;
		document.getElementById('arrival').onchange = function(){if (typeof(function1)=='function')function1();calcprice();}
		var function2 = document.getElementById('departure').onchange;
		document.getElementById('departure').onchange = function(){if (typeof(function2)=='function')function2();calcprice();}
		var function3 = document.getElementById('days').onchange;
		document.getElementById('days').onchange = function(){if (typeof(function3)=='function')function3();calcprice();}
	}
	var topdaysobj = document.getElementById('topdays');
	if (topdaysobj)
	{
		var function4 = topdaysobj.onchange;
		topdaysobj.onchange = function(){if (typeof(function4)=='function')function4();get_products();}
		var function5 = document.getElementById('toparrival').onchange;
		document.getElementById('toparrival').onchange = function(){if (typeof(function5)=='function')function5();get_products();}
		var function6 = document.getElementById('topdeparture').onchange;
		document.getElementById('topdeparture').onchange = function(){if (typeof(function6)=='function')function6();get_products();}
	}
	if (typeof(calcprice) != 'undefined')
	{
		calcprice();
	}
	if (document.getElementById('getproductdata'))
	{
		check_fields('getproductdata');
	}
}

// Funktion zum abwechselnden darstellen der Farben bei Preistabellen
function painttablerows (tableclass, color1, color2, exception)
{
    if (tableclass == '')
	{
		tableclass = 'prezzi';
	}
    var tableobjects = document.getElementsByTagName('table');
    for (var i = 0; i < tableobjects.length; i++)
    {
        if (tableobjects[i].className == tableclass)
        {
            var color = color2;
            var trobjects = tableobjects[i].getElementsByTagName('tr');
            for (var a = 0; a < trobjects.length; a++)
            {
                var tdobjects = trobjects[a].getElementsByTagName('td');
                for (var b = 0; b < tdobjects.length; b++)
                {
                	if (typeof(exception) == 'undefined' || tdobjects[b].className != exception)
					{
						tdobjects[b].style.background = color;
					}
                }
                if (color == color1)
				{
                    color = color2;
				} else {
                    color = color1;
                }
            }
        }
	}
}

// Parameter für Slide-Show definieren
var slideshow_images = new Array();
var SlideShowSpeed = 6000;	// Geschwindigkeit in Millisekunden
var FadeSpeed = 7;	// je weniger desto schneller
var FadeStep = 3;	// je höher desto schneller
var CrossFadeDuration = 3;	// Fadedauer in Sekunden
var preLoad = false;		// Bilder nachladen
var jss = 1;				// Anfangsbild angeben

// Funktion zum starten der Slideshow
function start_sliding(obj, obj2)
{
	if (!obj || !slideshow_images || !slideshow_images.length) return;
	for (i = 0; i < slideshow_images.length; i += 1)
	{
		var src = slideshow_images[i];
		slideshow_images[i] = new Image();
		slideshow_images[i].src = src;
	}
	// bei Hintergrundfades muss ein weiteres div erzeugt werden
	if (obj2)
	{
		obj2.style.opacity = 0;
  		obj2.style.MozOpacity = 0;
    	obj2.style.KhtmlOpacity = 0;
    	obj2.style.filter = "alpha(opacity=0)";
		obj.style.zIndex = 1;
		obj2.style.zIndex = 2;
		slide_image_obj2 = obj2;
	}
	slide_image_obj = obj;
	window.setInterval('slide()', SlideShowSpeed);
}

// Funktion zum sliden von Bildern
var slide_image_obj = null;
var slide_image_obj2 = null;
var slide_image_objnr = 2;
var slide_image_interval = null;
var slide_image_nr = 1;
var slide_opacity = 0;
function slide()
{
	var version = parseFloat(navigator.appVersion.substr(22, 3));
	if (slide_image_obj.tagName.toLowerCase() == 'img')
	{
		if (document.all)
		{
			if (navigator.appName == 'Microsoft Internet Explorer' && (!isNaN(version) && version < 7))
			{}else{
				slide_image_obj.style.filter="blendTrans(duration=2)";
				slide_image_obj.style.filter="blendTrans(duration=CrossFadeDuration)";
				slide_image_obj.filters.blendTrans.Apply();
			}
		}
		slide_image_obj.src = slideshow_images[slide_image_nr].src;
		if (document.all)
		{
			if (navigator.appName == 'Microsoft Internet Explorer' && (!isNaN(version) && version < 7))
			{}else{
				slide_image_obj.filters.blendTrans.Play();
			}
		}
	}
	else
	{
		switch (slide_image_objnr)
		{
			case 1:
				slide_image_obj.style.backgroundImage = "url('"+slideshow_images[slide_image_nr].src+"')";
				slide_image_objnr = 2;
				break;
			case 2:
				slide_image_obj2.style.backgroundImage = "url('"+slideshow_images[slide_image_nr].src+"')";
				slide_image_objnr = 1;
				break;
		}
		slide_image_interval = window.setInterval('fade()', FadeSpeed);
	}
	slide_image_nr += 1;
	if (slide_image_nr >= slideshow_images.length) slide_image_nr = 0;
}

function fade()
{
	switch (slide_image_objnr)
	{
		case 1:
			var obj = slide_image_obj;
			var obj2 = slide_image_obj2;
			break;
		case 2:
			var obj = slide_image_obj2;
			var obj2 = slide_image_obj;
			break;
	}
	if (slide_opacity <= 100)
	{
		obj2.style.opacity = (slide_opacity / 100);
		obj2.style.MozOpacity = (slide_opacity / 100);
		obj2.style.KhtmlOpacity = (slide_opacity / 100);
		obj2.style.filter = "alpha(opacity=" + slide_opacity + ")";
		slide_opacity += FadeStep;
	} else {
		obj.style.opacity = 0;
		obj.style.MozOpacity = 0;
		obj.style.KhtmlOpacity = 0;
		obj.style.filter = "alpha(opacity=0)";
		slide_opacity = 0;
		obj2.style.zIndex = 1;
		obj.style.zIndex = 2;
		clearInterval(slide_image_interval);
		slide_image_interval = null;
	}
}

function showhide(show, hide)
{
	document.getElementById(show).style.display = '';
	document.getElementById(hide).style.display = 'none';
}

function getPageScroll()
{
	var xScroll, yScroll;

	if (self.pageYOffset)
	{
		yScroll = self.pageYOffset;
		xScroll = self.pageXOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
	{	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
		xScroll = document.documentElement.scrollLeft;
	}
	else if (document.body)
	{// all other Explorers
		yScroll = document.body.scrollTop;
		xScroll = document.body.scrollLeft;	
	}

	arrayPageScroll = new Array(xScroll,yScroll) 
	return arrayPageScroll;
}

// -----------------------------------------------------------------------------------

//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.com
// Edit for Firefox by pHaez
//
function getPageSize()
{
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY)
	{	
		xScroll = window.innerWidth + window.scrollMaxX;
		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 + 20;
		yScroll = document.body.offsetHeight + 30;
	}
	
	var windowWidth, windowHeight;
	
	if (self.innerHeight)
	{	// all except Explorer
		if (document.documentElement.clientWidth)
		{
			windowWidth = document.documentElement.clientWidth; 
		}
		else
		{
			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 = xScroll;		
	}
	else
	{
		pageWidth = windowWidth;
	}
	// wurde hinzugefügt, da die obere Abfrage nicht korrekt funktioniert!
	pageWidth = windowWidth;

	var arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight); 
	return arrayPageSize;
}

function calcprices(objid)
{
	var obj = document.getElementById('product'+objid);
	if (!obj)
	{
		return false;
	}
	var table = obj.getElementsByTagName('table')[0];
	if (!table)
	{
		return false;
	}
	var rows = table.getElementsByTagName('tr');
	if (!rows || rows.length != 4)
	{
		return false;
	}
	var basepricesobjs = rows[1].getElementsByTagName('td');
	var normalpricesobjs = rows[2].getElementsByTagName('td');
	var realpricesobjs = rows[3].getElementsByTagName('td');
	var prices = new Array();
	for (var i = 1; i < basepricesobjs.length; i += 1)
	{
		prices[i-1] = parseFloat(basepricesobjs[i].innerHTML.replace(',', '.'));
	}
	
	var senzascarponiobj = document.getElementById('senzascarponi'+objid);
	var conscarponiobj = document.getElementById('conscarponi'+objid);
	var conscarponitopobj = document.getElementById('conscarponitop'+objid);
	var concascoobj = document.getElementById('concasco'+objid);
	var assicurazioneobj = document.getElementById('assicurazione'+objid);
	
	var includedobj = document.getElementById('included'+objid);
	var scarponiinclusiobj = document.getElementById('scarponiinclusi'+objid);
	var cascoinclusoobj = document.getElementById('cascoincluso'+objid);
	var assicurazioneinclusaobj = document.getElementById('assicurazioneinclusa'+objid);
	
	var modelvalue = document.getElementById('model'+objid).value;
	var categoryvalue = document.getElementById('categoryid'+objid).value;
	var typevalue = document.getElementById('type'+objid).value;
	
	if (conscarponiobj.checked || conscarponitopobj.checked || concascoobj.checked || assicurazioneobj.checked)
	{
		includedobj.style.visibility = 'visible';
	}
	else
	{
		includedobj.style.visibility = 'hidden';
	}
	if (assicurazioneobj.checked)
	{
		for (var i = 0; i < prices.length; i += 1)
		{
			prices[i] = prices[i] * insurance;
		}
		assicurazioneinclusaobj.style.visibility = 'visible';
	}
	else
	{
		assicurazioneinclusaobj.style.visibility = 'hidden';
	}
	if (concascoobj.checked)
	{
		for (var i = 0; i < prices.length; i += 1)
		{
			if (modelvalue != 'Bambino')
			{
				prices[i] += extras_prices.casco.adults[i];
			}
			else
			{
				prices[i] += extras_prices.casco.childs[i];
			}
		}
		cascoinclusoobj.style.visibility = 'visible';
	}
	else
	{
		cascoinclusoobj.style.visibility = 'hidden';
	}
	if (conscarponiobj.checked)
	{
		for (var i = 0; i < prices.length; i += 1)
		{
			if (typevalue == 'snowboard')
			{
				if (modelvalue == 'Bambino')
				{
					prices[i] += extras_prices.scarponi.snowboard.childs[i];
				}
				else
				{
					prices[i] += extras_prices.scarponi.snowboard.adults[i];
				}
			}
			else
			{
				if (modelvalue == 'Baby')
				{
					prices[i] += extras_prices.scarponi.sci.baby[i];
				}
				else if (modelvalue == 'Bambino')
				{
					prices[i] += extras_prices.scarponi.sci.childs[i];
				}
				else
				{
					prices[i] += extras_prices.scarponi.sci.standard[i];
				}
			}
		}
		scarponiinclusiobj.style.visibility = 'visible';
	}
	else if (conscarponitopobj.checked)
	{
		for (var i = 0; i < prices.length; i += 1)
		{
			prices[i] += extras_prices.scarponi.sci.top[i];
		}
		scarponiinclusiobj.style.visibility = 'visible';
	}
	else
	{
		scarponiinclusiobj.style.visibility = 'hidden';
	}
	for (var i = 1; i < prices.length; i += 1)
	{
		normalpricesobjs[i].innerHTML = parseprice(prices[i-1]);
		realpricesobjs[i].innerHTML = parseprice(prices[i-1] * discount);
	}
}

function calcprice()
{
	var daysobj = document.getElementById('days');
	if (!daysobj) return false;
	var daysq = days = parseInt(daysobj.value);
	if (!days || days < 0) return false;
	if (days > 14)
	{
		alert(selectmaxdaystext);
		return false;
	}
	var price = prices[daysq];
	daysq -= 1;
	var pricecontainerobj = document.getElementById('pricecontainer');
	if (!pricecontainerobj) return false;
	pricecontainerobj.style.display = '';
	var priceobj = document.getElementById('price');
	if (!priceobj) return false;
	
	var scarponivalue = document.getElementById('scarponi').value;
	var cascovalue = document.getElementById('casco').value;
	var assicurazionevalue = document.getElementById('assicurazione').value;
	var modelvalue = document.getElementById('model').value;
	var categoryvalue = document.getElementById('category').value;
	var typevalue = document.getElementById('type').value;
	
	if (assicurazionevalue)
	{
		price = price * insurance;
	}
	if (cascovalue)
	{
		if (modelvalue != 'Bambino')
		{
			price += extras_prices.casco.adults[daysq];
		}
		else
		{
			price += extras_prices.casco.childs[daysq];
		}
	}
	if (scarponivalue == 'standard')
	{
		if (typevalue == 'snowboard')
		{
			if (modelvalue == 'Bambino')
			{
				price += extras_prices.scarponi.snowboard.childs[daysq];
			}
			else
			{
				price += extras_prices.scarponi.snowboard.adults[daysq];
			}
		}
		else
		{
			if (modelvalue == 'Baby')
			{
				price += extras_prices.scarponi.sci.baby[daysq];
			}
			else if (modelvalue == 'Bambino')
			{
				price += extras_prices.scarponi.sci.childs[daysq];
			}
			else
			{
				price += extras_prices.scarponi.sci.standard[daysq];
			}
		}
	}
	else if (scarponivalue == 'top')
	{
		price += extras_prices.scarponi.sci.top[daysq];
	}
	var pricetext = '<strike>'+parseprice(price)+'</strike> '+parseprice(price * discount);
	priceobj.innerHTML = pricetext;
}

function parseprice(price)
{
	price = Math.round(price * 100) / 100;
	price = String(price);
	price = price.split('.');
	if (typeof(price[1]) == 'undefined')
	{
		price[1] = '00';
	}
	else if(price[1].length == 1)
	{
		price[1] += '0';
	}
	return price.join(',');
}

var ajax_request = null;
var last_url = null;
function get_products() {
	if (!document.getElementById('products'))
	{
		return;
	}
	if (ajax_request && typeof(ajax_request) == 'object') ajax_request.abort();
	var options = {method:"POST"};
	// Daten aus dem Formular lesen
	var fields = document.getElementById('rentalshopfilter').getElementsByTagName('input');
	var fields2 = document.getElementById('rentalshopfiltertop').getElementsByTagName('input');
	var allfields = new Array();
	for (var i = 0; i < fields.length; i += 1)
	{
		allfields[allfields.length] = fields[i];
	}
	for (var i = 0; i < fields2.length; i += 1)
	{
		allfields[allfields.length] = fields2[i];
	}
	fields = allfields;
	var d = new Array('lang='+lang);
	for (var i = 0; i < fields.length; i += 1)
	{
		switch (fields[i].type)
		{
			case 'text':
				if (fields[i].value)
				{
					d[d.length] = fields[i].name+'='+escape(fields[i].value);
				}
				break;
			case 'radio':
			case 'checkbox':
				if (fields[i].checked)
				{
					d[d.length] = fields[i].name+'='+escape(fields[i].value);
				}
				break;
		}
	}
	options.postBody = d.join('&');
	if (options.postBody == last_url)
	{
		return;
	}
	last_url = options.postBody;
	ajax_request = Lokris.AjaxCall('/fileadmin/template/rentalshop/index.php', callback_products, options);
	
	var pleasewaitobj = document.getElementById('pleasewait');
	var pagesize = getPageSize();
	var pagescroll = getPageScroll();
	var top = ((pagesize[3]-250)/2) + pagescroll[1] - 400;
	pleasewaitobj.style.top = Math.round(top)+'px';
	pleasewaitobj.style.display = 'block';
}

function complete_filterform(formid, subformid) {
	var formobj = document.getElementById(formid);
	var subformobj = document.getElementById(subformid);
	if (!formobj || !subformid)
	{
		return true;
	}
	// Daten aus dem Formular lesen und ergänzen
	var fields = subformobj.getElementsByTagName('input');
	for (var i = 0; i < fields.length; i += 1)
	{
		switch (fields[i].type.toLowerCase())
		{
			case 'radio':
				if (!fields[i].checked) continue;
				break;
			case 'checkbox':
				if (!fields[i].checked) continue;
				break;
			case 'text':
				if (fields[i].value == '' || fields[i].value == 'kg' || fields[i].value == 'cm') continue;
				break;
			default:
				continue;
		}
		var input = document.createElement('input');
		input.type = 'hidden';
		input.name = fields[i].name;
		input.value = fields[i].value;
		formobj.appendChild(input);
	}
	return true;
}

function callback_products(string)
{
	document.getElementById('pleasewait').style.display = 'none';
	if (!string) return;
	ajax_request = null;
	document.getElementById('products').innerHTML = string;
	Lightbox.prototype.updateImageList();
}

function change_categories(type)
{
	var skicategoriesObj = document.getElementById('skicategories');
	var snowboardcategoriesObj = document.getElementById('snowboardcategories');
	if (type == 'ski')
	{
		var categories = snowboardcategoriesObj;
		skicategoriesObj.style.display = '';
		snowboardcategoriesObj.style.display = 'none';
	}
	else
	{
		var categories = skicategoriesObj;
		skicategoriesObj.style.display = 'none';
		snowboardcategoriesObj.style.display = '';
	}
	var inputObjs = categories.getElementsByTagName('input');
	for (var i = 0; i < inputObjs.length; i += 1)
	{
		inputObjs[i].checked = false;
	}
}