var languages = new Array('de', 'en', 'ar');

var slideshow = {
	'paths': {
		'data_loader': '/assets/slideshow/get_data.php', 
		'image_loader': '/assets/slideshow/get_image.php'
	},
	'ratio': 1, 
	index: 0, 
	tween: {
		'options': {
			'link': 'cancel', 
			'duration': 1000, 
			'transition': Fx.Transitions.Sine.easeInOut
		}
	}, 
	bordersize:0
};

var slideshow_folder = null;
var data_loaded = false;
var window_loaded = false;
var images_loaded = false;
var map_data = null;

window.addEvent('domready', function(){
	/* Size slideshow */
	slideshow_size();
	/* Hide Interface for IE6 */
	if(isMSIE6()) slideshow_hideIface();
	/* Highlight menu */
	highlightMenu('mainmenu');
	highlightMenu('submenu');
	highlightMenu('subsubmenu');
	/* Create gMap */
	load_map();
});

window.addEvent('resize', function(){
	slideshow_resize();
});

window.addEvent('load', function(){
	/* Hide Interface for IE6 */
	window_loaded = true;
	if(isMSIE6() && data_loaded && images_loaded) slideshow_showIface();
});

function highlightMenu(mid){
	if($(mid) == null) return;
	var children = $(mid).getChildren('li');
	if(children.length == 0) return;
	for(var m=0; m<children.length; m++){
		var anker = children[m].getFirst('a');
		if(anker == null) continue;
		var href = anker.href;
		var href_file = href.substring(href.lastIndexOf('/')+1);
		if(anker.href == window.location.href){
			anker.addClass('active');
		}else if(href_file.toLowerCase() == 'index.html' || href_file.toLowerCase() == 'index.php'){
			var href_path = href.substring(0, href.lastIndexOf('/')+1);
			var win_path = window.location.href.substring(0, href_path.length);
			if(href_path.toLowerCase() == win_path.toLowerCase()){
				anker.addClass('active');
			}
		}
	}
}

function switch_language(lang){
	if(!languages.contains(lang)){
		alert('Language ' + lang + ' is invalid');
		return;
	}
	var uri = window.location.href;
	var uri_parts = uri.split('/');
	for(var part in uri_parts){
		if(languages.contains(uri_parts[part])){
			uri_parts[part] = lang;
		}
	}
	var nuri = uri_parts.join('/')
	window.location.href = nuri;
}

function load_map(){
	if(map_data == null) return;
	if(GBrowserIsCompatible()){
		var wins = window.getSize();
		var slidew = Math.ceil((wins.x.toInt() / 10)) * 10;
		var slideh = Math.ceil((wins.y.toInt() / 10)) * 10;
		slideshow.width = slidew;
		slideshow.height = slideh;
		slideshow.realwidth = wins.x.toInt();
		slideshow.realheight = wins.y.toInt();
		$('slideshow_slides_container').setStyle('width', slideshow.realwidth);
		$('slideshow_slides_container').setStyle('height', slideshow.realheight);
		$('slideshow_slides_overlay').setStyle('height', '92px');
		$('slideshow_slides_overlay').setStyle('background-color', '#000000');
		$('slideshow_slides_overlay').set('opacity', 0.7);
		$('slideshow_slides_overlay').setStyle('overflow', 'hidden');
		$('slideshow_overlay').setStyle('display', 'none');
		$$('div.content').setStyle('display', 'none');
		$('footer').setStyle('display', 'none');
		var map = new GMap2($(map_data.container));
		var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10,100));
		var topLeft = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(10,100));
		map.addControl(new GSmallMapControl(), topLeft);
		map.addControl(new GMapTypeControl(), topRight);
		map.setCenter(new GLatLng(map_data.lat, map_data.lon), map_data.zoom);

		var infoTabs = new Array();
		for(var m=0; m<map_data.marker.length; m++){
/*
			var point = new GLatLng(map_data.marker[m]['lat'], map_data.marker[m]['lon']);
			var marker = new GMarker(point);
			map.addOverlay(marker);
*/
			var marker = new GMarker(new GLatLng(map_data.marker[m]['lat'],map_data.marker[m]['lon']));
			if(map_data.marker[m]['bubble']){
				infoTabs.push(new GInfoWindowTab(map_data.marker[m]['bubbletitle'], map_data.marker[m]['bubbletext']));
				GEvent.addListener(marker, "click", function(){
					marker.openInfoWindowTabsHtml(infoTabs);
				});
			}
			map.addOverlay(marker);
			if(map_data.marker[m]['bubble']) marker.openInfoWindowTabsHtml(infoTabs);
		}

	}
	if(navigator.appName != "Microsoft Internet Explorer"){
		window.onunload = function(){
			GUnload();
		}
	}
}

function slideshow_size(){
	if(slideshow_folder == null) return;
	var wins = window.getSize();
	var slidew = Math.ceil((wins.x.toInt() / 10)) * 10;
	var slideh = Math.ceil((wins.y.toInt() / 10)) * 10;
	slideshow.width = slidew;
	slideshow.height = slideh;
	slideshow.realwidth = wins.x.toInt();
	slideshow.realheight = wins.y.toInt();
	$('slideshow_slides_container').setStyle('width', slideshow.realwidth);
	$('slideshow_slides_container').setStyle('height', slideshow.realheight);
	$('slideshow_slides_overlay').setStyle('width', slideshow.realwidth);
	if(slideshow_folder !== false){
		$('slideshow_slides_overlay').setStyle('height', slideshow.realheight);
		if($('slideshow_slides_overlay') != null && !isMSIE6()){
			$('slideshow_slides_overlay').setStyle('background-image', 'url(/assets/layout/bg_filter.png)');
			$('slideshow_slides_overlay').setStyle('background-position', 'center');
		}
		if($('slideshow_overlay') != null){
			var footerc = $('footer').getCoordinates();
			var nheight = $('slideshow_overlay').getStyle('height').toInt() + slideshow.realheight - footerc.bottom.toInt();
			$('slideshow_overlay').setStyle('height', nheight + 'px');
		}
	}
	slideshow_load();
}

function slideshow_resize(){
	if(slideshow_folder == null) return;
	var wins = window.getSize();
	var slidew = Math.ceil((wins.x.toInt() / 10)) * 10;
	var slideh = Math.ceil((wins.y.toInt() / 10)) * 10;
	if(slidew == slideshow.width && slideh == slideshow.height) return;
	images_loaded = false;
	slideshow_empty();
	slideshow_size();
}

function slideshow_load(){
	var jsonRequest = new Request.JSON({
		url: slideshow.paths.data_loader, 
		onComplete: function(data){
			slideshow_onload(data);
		}
	}).get({'folder':slideshow_folder, 'width':slideshow.width, 'height':slideshow.height});
}

function slideshow_onload(data){
	data_loaded = true;
	if(data.length > 1){
		slideshow.data = data;
		slideshow_init();
		if(isMSIE6() && window_loaded && images_loaded) slideshow_showIface();
	}else if(data.length == 1){
		slideshow_hideIface();
		slideshow_loadSingle(data[0]);
	}else{
		slideshow_hideIface();
	}
}

function slideshow_init(){
	var slides = new Array();
	for(var s=0; s<slideshow.data.length; s++){
		slideshow.data[s].view_width = (parseInt(slideshow.data[s].width, 10) > slideshow.width) ? slideshow.width : parseInt(slideshow.data[s].width, 10);
		var slide = new Element('div', {'class': 'slideshow_item'});
//		slide.setStyle('width', slideshow.data[s].view_width);
//		slide.setStyle('height', slideshow.height);
		slide.setStyle('width', slideshow.realwidth);
		slide.setStyle('height', slideshow.realheight);
		var image_loader_params = {'file':slideshow.data[s].src, 'width':slideshow.width, 'height':slideshow.height};
		var image_loader = slideshow.paths.image_loader + '?' + buildQueryString(image_loader_params);
		var image = new Element('img', {
			'src': image_loader, 
			'alt': '', 
			'rel': s, 
			'styles': {
				'display':'none'
			}, 
			'events': {
				'load': function(){
					this.setStyle('display', 'block');
					var yoff = slideshow.realheight.toInt() - this.getSize().y.toInt();
					this.setStyle('margin-top', Math.round(yoff / 2));
					this.setStyle('margin-left', Math.round((slideshow.realwidth.toInt() - this.getSize().x.toInt()) / 2));
					if(this.getParent('div') != null) this.getParent('div').setStyle('background-image', 'none');
					slideshow.data[parseInt(this.getProperty('rel'), 10)].loaded = true;
					slideshow_checkImagesLoaded();
				}
			}
		});
		slide.adopt(image);
		slides.push(slide);
	}
	$('slideshow_items').adopt(slides);
	$('slideshow_items').setStyle('width', slideshow_getWidth());
	slideshow.tween.id = new Fx.Tween($('slideshow_items'), slideshow.tween.options);
	$('slideshow_prev').addEvent('click', slideshow_prev);
	$('slideshow_next').addEvent('click', slideshow_next);
	slideshow_set(slideshow.index);
}

function slideshow_loadSingle(data){
	data.view_width = (data.width > slideshow.width) ? slideshow.width : data.width;
	var slide = new Element('div', {'class': 'slideshow_item'});
//	slide.setStyle('width', data.view_width);
//	slide.setStyle('height', slideshow.height);
	slide.setStyle('width', slideshow.realwidth);
	slide.setStyle('height', slideshow.realheight);
	var image_loader_params = {'file':data.src, 'width':slideshow.width, 'height':slideshow.height};
	var image_loader = slideshow.paths.image_loader + '?' + buildQueryString(image_loader_params);
	var image = new Element('img', {
		'src': image_loader, 
		'alt': '', 
		'styles': {
			'display' : 'none'
		}, 
		'events': {
			'load': function(){
				this.setStyle('display', 'block');
				var yoff = slideshow.realheight.toInt() - this.getSize().y.toInt();
				this.setStyle('margin-top', Math.round(yoff / 2));
				this.setStyle('margin-left', Math.round((slideshow.realwidth.toInt() - this.getSize().x.toInt()) / 2));
				if(this.getParent('div') != null) this.getParent('div').setStyle('background-image', 'none');
			}
		}
	});
	slide.adopt(image);
	$('slideshow_items').adopt(slide);
	$('slideshow_items').setStyle('width', slideshow.width);
}

function slideshow_empty(){
	if(slideshow_folder == null || slideshow_folder == false) return;
	$('slideshow_items').empty();
}

function slideshow_hideIface(){
	if($('slideshow_iface') != null) $('slideshow_iface').setStyle('display', 'none');
}

function slideshow_showIface(){
	if($('slideshow_iface') != null) $('slideshow_iface').setStyle('display', 'block');
}

function slideshow_checkImagesLoaded(){
	var loaded = 0;
	for(var s=0; s<slideshow.data.length; s++){
		if(slideshow.data[s].loaded) loaded++;
	}
	if(loaded == slideshow.data.length){
		images_loaded = true;
		if(isMSIE6() && window_loaded && data_loaded) slideshow_showIface();
	}
}

function slideshow_getOffset(index){
	return index * slideshow.realwidth;
	var offset = 0;
	for(var s=0; s<index; s++){
		offset += slideshow.data[s].view_width;
	}
	return offset;
}

function slideshow_getWidth(){
	return slideshow.data.length * slideshow.realwidth;
	var width = 0;
	for(var s=0; s<slideshow.data.length; s++){
		width += slideshow.data[s].view_width + slideshow.bordersize;
	}
	return width;
}

function slideshow_prev(){
	slideshow.index = (slideshow.index > 0) ? slideshow.index - 1 : slideshow.data.length - 1;
	slideshow.tween.id.start('left', (slideshow_getOffset(slideshow.index) + (slideshow.index * slideshow.bordersize)) * -1);
}

function slideshow_next(){
	slideshow.index = (slideshow.index < slideshow.data.length - 1) ? slideshow.index + 1 : 0;
	slideshow.tween.id.start('left', (slideshow_getOffset(slideshow.index) + (slideshow.index * slideshow.bordersize)) * -1);
}

function slideshow_set(index){
	slideshow.index = index.toInt();
	slideshow.tween.id.start('left', (slideshow_getOffset(slideshow.index) + (slideshow.index * slideshow.bordersize)) * -1);
}

function buildQueryString(obj){
	var query = new Array();
	for(var name in obj){
		query.push(name + '=' + obj[name]);
	}
	return query.join('&');
}

function isMSIE6(){
	if(Browser.Engine.name.toLowerCase() == 'trident' && Browser.Engine.version <= 4) return true;
	return false;
}

