// 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;
		yScroll = document.body.offsetHeight;
	}

	var windowWidth, windowHeight;

//	console.log(self.innerWidth);
//	console.log(document.documentElement.clientWidth);

	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;
	}

//	console.log("xScroll " + xScroll)
//	console.log("windowWidth " + windowWidth)

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){
		pageWidth = xScroll;
	} else {
		pageWidth = windowWidth;
	}
//	console.log("pageWidth " + pageWidth)

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
	return arrayPageSize;
}
//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.com
//
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;
}

var current_img_box_width = 250;
var current_img_box_height = 250;
var overlay_image = "";
var overlay_data_cache = new Array();
var Overlay = Class.create();

Overlay.prototype = {

	loaded_images: new Array(),
	initialize: function ()
	{

		//var obj_body = document.getElementsByTagName("body");
		/*var obj_overlay = document.createElement("div");
		obj_overlay.setAttribute('id','overlay');
		obj_overlay.style.display = 'none';
		obj_overlay.onclick = function() { myOverlay.close(); }
		obj_body.appendChild(obj_overlay);*/
		//obj_body.appendChild('<div id="overlay"></div><div id="content_container" align="center"><div id="outer_container"></div></div>');
		//obj_body.innerHTML += '<div id="overlay"></div><div id="content_container" align="center"><div id="outer_container"></div></div>';
		//document.write('<div id="overlay" style="display:none"></div><div id="content_container" align="center"><div id="outer_container"></div></div>');

		//$('overlay').hide();
		//$('content_container').hide();
		//pause(10);

	},
	start: function(type, param_1, param_2, buttons,load_buttons,width,def_height,resize_overlay)
	{

		myTooltip.close();
		$('overlay').hide();
		$('content_container').hide();
		current_img_box_width = 250;
		current_img_box_height = 250;
		if(resize_overlay==null)
		{
			resize_overlay = true;
		}else{
			resize_overlay = false;
		}
		overlay_image = "";
		overlay_data_cache = new Array();
		var size = getPageSize();
		var content = "";
		$('overlay').setStyle({'width' : size[0]+'px','height' : size[1]+'px', 'opacity': 0.6});
		
		$('content_container').innerHTML = "";
		var page_scroll = getPageScroll();
		this.disable_select_boxes();
		if(type == 'box')
		{
			current_img_box_height = 10;
			if(load_buttons == null)
			{
				load_buttons = true;
			}
			if(buttons != null)
			{
				if(load_buttons!=false)
				{
					var buttons_show = '<br /><br /><div align="center" id="confirm_buttons">'+overlay_buttons[buttons]+'</div>';
				}else{
					var buttons_show = '<br /><br /><div align="center" id="confirm_buttons">'+buttons+'</div>';
				}
			}else{
				var buttons_show = "";
			}
			content += '<div id="content">';
			content += '	<div id="box_header" style="width:100%" >';
			content += '		<table id="header_table" width="100%" cellpadding="4" cellspacing="1" border="0" class="maintable">';
			content += '			<tr>';
			//content += '				<td class="tablehead2">';
			//content += '					<table width="100%" height="1">';
			//content += '						<tr>';
			content += '							<td align="left" class="tablehead" width="100%"><strong>'+param_1+'</strong></td>';
			content += '							<td align="right" class="tablehead" nowrap="nowrap" align="center"><a href="javascript:myOverlay.close();" style="text-decoration: none;"><b>X</b></a></td>';
			//content += '						</tr>';
			//content += '					</table>';
			//content += '				</td>';
			content += '			</tr>';
			content += '			<tr>';
			content += '				<td class="tablea" colspan="2" id="content_content" style="vertical-align:top"></td>';
			content += '			</tr>';
			content += '		</table>';
			content += '	</div>';
			content += '</div>';
			$('content_container').innerHTML += content;
			$('content_content').hide();
			$('content_container').setStyle({'top' : '100px'});
			Effect.Appear('overlay',{duration:0.5,from: 0.0, to: 0.6});
			$('content_content').setStyle({'width' : current_img_box_width+'px','height' : current_img_box_height+'px' });
			
			if(width != null || def_height != null)
			{
				current_img_box_height=75;
				if(!resize_overlay)
				{
					current_img_box_width = width;
					$('content').setStyle({'width' : width+'px'});
				}
				$('content_content').setStyle({'width' : current_img_box_width+'px','height' : current_img_box_height+'px'});
				myOverlay.resize_content(width,def_height,false,false);
			}
			$('content_content').show();
			Effect.Appear('content_container',{delay: 0.5});
			
			
			$('content_content').innerHTML = param_2+buttons_show;
			
			
			if(buttons!=null && buttons!='' && $('button_1'))
			{
				setTimeout("$('button_1').focus();", 1000);
				setTimeout("$('button_1').focus();", 1000);
			}
		}
		if(type == 'image')
		{
			content += '<div id="content">';
			content += '	<div id="box_header" style="width:100%;height:250px" >';
			content += '		<table id="header_table" width="1000" cellpadding="4" cellspacing="1" border="0" class="maintable">';
			content += '			<tr id="box_header2">';
			//content += '				<td class="tablehead2">';
			//content += '					<table width="100%" height="1">';
			//content += '						<tr>';
			content += '							<td align="left" class="tablehead" style="width:100%" width="100%"><strong>'+overlay_image_title+'</strong></td>';
			content += '							<td align="right" class="tablehead" nowrap="nowrap" width="0%" align="center"><a href="javascript:myOverlay.close();" style="text-decoration: none;"><b>X</b></a></td>';
			//content += '						</tr>';
			//content += '					</table>';
			//content += '				</td>';
			content += '			</tr>';
			content += '			<tr height="100%" id="box_content">';
			content += '				<td class="tablea" id="content_content" colspan="2" align="center"></td>';
			content += '			</tr>';
			if(param_2 == 'gallery')
			{
				content += '			<tr height="100%" id="overlay_text_box">';
				content += '				<td class="tablea" id="overlay_text" colspan="2" align="center" valign="middle"></td>';
				content += '			</tr>';
			}
			content += '		</table>';
			content += '	</div>';
			content += '</div>';
			//content += '<div id="loading">';
			//content += '	<img src="loader.gif" style="vertical-align:middle;"/>';
			//content += '</div>';

			$('content_container').innerHTML += content;
			if(param_2== ' gallery')
			{
				$('overlay_text').hide();
			}
			//$('box_header2').hide();
			$('content').setStyle({'width' : '250px','height' :'1px','vertical-align' : 'top'});
			$('content_content').innerHTML = '<img id="loader" src="'+overlay_loader+'" /><img id="overlay_image" />';
			$('content_content').setStyle({'width' : '250px','height' :'250px','vertical-align' : 'top'});
			$('content_container').setStyle({'top' : '40px'});
			Effect.Appear('overlay',{duration:0.5,from: 0.0, to: 0.6});

			$('overlay_image').hide();
			overlay_image = param_1;
			setTimeout("Effect.Appear('content_container');", 1000);
			this.image_loader(param_2,param_1);
		}
		$('content_container').setStyle({'top' : page_scroll[1] + size[3] / 20+'px', 'left' : page_scroll[0]+'px'});
		//
		//$('content_container').show();







	},
	get_image_data: function(type,id,loaded_function)
	{
		if(type=="gallery")
		{
			if(overlay_data_cache[id] == null)
			{
				new Ajax.Request(link('gallery,ajax,action=get_data|id='+id), {
					method: 'get',
					onSuccess: function(transport,json) {
					
							img_preloader = new Image();
						
							img_preloader.onload = function()
							{
								img_preloader.onload .onload=function(){};
								
								json.image_data = new Object();
								json.image_data['width'] = img_preloader.width;
								json.image_data['height'] = img_preloader.height;
								
								overlay_data_cache[id] = json;
								if(loaded_function != null)
								{

									loaded_function(json);
								}
								
							}
							my_image = server_path+"/uploads/gallery/large/"+json.image['gallery_img'];
							img_preloader.src = my_image;
							/*
							myOverlay.loaded_images[id] = new Object();
							myOverlay.loaded_images[id]['img'] = img_preloader;
							myOverlay.loaded_images[id]['width'] = img_preloader.width;
							myOverlay.loaded_images[id]['hieght'] = img_preloader.height;
							*/
						

					}
				});
			}else{
				var data = overlay_data_cache[id];
				if(loaded_function != null)
				{
					loaded_function(data);
				}
			}
		}
	},
	image_loader: function(type,id,loaded)
	{
		if(loaded==null)
		{
			loaded = false;
		}
		if(type=='gallery')
		{
			this.get_image_data(type,id,function(data)
			{
				overlay_image = server_path+"/uploads/gallery/large/"+data.image['gallery_img'];
				if(loaded)
				{
					setTimeout('myOverlay.loading_ready(false);',750);
				}else{
					myOverlay.resize_content(data.image_data['width']+20,data.image_data['height']+20,true,false);
				}

				if((data.prev_image != null && data.prev_image != "") || (data.next_image != null && data.next_image != ""))
				{

					var overlay_text = "";
					overlay_text += '<table>';
					overlay_text += '	<tr valign="center">';
					if(data.prev_image != null && data.prev_image != "")
					{
						overlay_text += '		<td><a href="javascript:void(0);" onclick="myOverlay.load_image(\'gallery\',\''+data.prev_image['gallery_id']+'\')">'+icon_prev+'</a></td>';
					}
					if(data.image['gallery_name'] != "" || data.image['gallery_descr'] != "")
					{
						overlay_text += "<td class=\"tablea\">";
						if(data.image['gallery_name'] != "")
						{
							overlay_text += '<b>'+data.image['gallery_name']+'</b><br />';
						}
						if(data.image['gallery_descr'] != "")
						{
							overlay_text += data.image['gallery_descr'];
						}
						overlay_text += "</td>";
					}
					if(data.next_image != null && data.next_image != "")
					{		
						overlay_text += '		<td><a href="javascript:void(0);" onclick="myOverlay.load_image(\'gallery\',\''+data.next_image['gallery_id']+'\')">'+icon_next+'</td>';
					}
					overlay_text += '	</tr>';
					overlay_text += '</table>';
					$('overlay_text').innerHTML = overlay_text;
					
					
					if(data.prev_image != null && data.prev_image != "")
					{
						myOverlay.get_image_data(type,data.prev_image['gallery_id']);	
					}
					if(data.next_image != null && data.next_image != "")
					{
						myOverlay.get_image_data(type,data.next_image['gallery_id']);
					}
					
				}

			});


		}else{
			img_preloader = new Image();

			img_preloader.onload = function()
			{
				//myOverlay.resize_content(img_preloader.width,img_preloader.height,param_1);
				setTimeout('myOverlay.resize_content('+(img_preloader.width+20)+','+(img_preloader.height+20)+',true)',100);
				img_preloader.onload=function(){};
			}
			img_preloader.src = id;
		}
	},
	load_image: function(type,id)
	{
		if(overlay_data_cache[id]!=null)
		{
			$('overlay_image').hide();
			myOverlay.resize_content(overlay_data_cache[id].image_data['width']+20,overlay_data_cache[id].image_data['height']+20,false,true);
			this.image_loader(type,id,true);
		}else{
	
			//$('content').setStyle({'width' : '250px','height' :'1px','vertical-align' : 'top'});
			$('content_content').innerHTML = '<img id="loader" src="'+overlay_loader+'" /><img id="overlay_image" />';
			//$('overlay_text').hide();
	
			$('overlay_image').hide();
			this.image_loader(type,id);
		}
		
	},
	loading_ready: function(loader)
	{
		var delay1 = 2;
		if(loader==null)
		{
			loader = true;
		}
		if(loader)
		{
			Effect.SwitchOff('loader',{duration: 1,queue: 'loader'});
		}else{
			delay1 = 0;
		}
		$('overlay_image').src = overlay_image;
		//overlay_image = new Image();
		//img.src = img;
		//$('content_content').innerHTML += '\n<img id="overlay_image" src="'+img+'" />';
		Effect.Appear('overlay_image',{delay:delay1,duration:1,queue: 'loader'});
		Effect.Appear('overlay_text',{delay:3,duration:1,queue: 'loader'});
		//Effect.Appear('box_header2',{delay:3,duration:3,queue: 'loader'})
		//setTimeout("", 1000);
		//setTimeout(";", 1000);
		//pause(1000);
		//this.resize_content(current_img_box_width,current_img_box_height+500,false);
	},
	disable_select_boxes: function()
	{
		var selects = document.getElementsByTagName("select");
		for (i = 0; i != selects.length; i++) {
			selects[i].style.visibility = "hidden";
		}
	},
	enable_select_boxes: function()
	{
		var selects = document.getElementsByTagName("select");
		for (i = 0; i != selects.length; i++) {
			selects[i].style.visibility = "visible";
		}
	},
	resize_content: function (width,height,loading_ready,loaded)
	{
		if(loaded)
		{
			var delay = 0;
		}else{
			var delay = 1;
		}

		//alert(caption_height);

		//alert(current_height);
		//width = width+border;
		//height = height+border;
		var diff_width = current_img_box_width-width;
		var diff_height = Math.abs(current_img_box_height-height);
		if(diff_width != 0 && width != null)
		{
			var x_scale = (width / current_img_box_width) * 100;
			
			new Effect.Scale('content', x_scale,{scaleY: false,duration: 0.5,delay:delay,scaleContent:false});
		}
		if(diff_height != 0 && height != null)
		{
			var y_scale = (height / current_img_box_height) * 100;
			
			new Effect.Scale('content_content', y_scale,{scaleX: false,delay: delay,duration: 0.5,scaleContent:false});
		}
		
		//$('content').setStyle({'width' : '1px','height' :'1px','vertical-align' : 'middle'});
		//alert(x_scale+","+y_scale);





		
		
		//$('loader').hide();
		//new Effect.Scale('box_content',50,{scaleY: false});
		current_img_box_width = width;
		current_img_box_height = height;
		if (navigator.appVersion.indexOf("MSIE")!=-1){ pause(250); } else { pause(100);}
		if(loading_ready == true)
		{
			setTimeout('myOverlay.loading_ready();',750);
		}
		//alert(current_img_box_height);

	},


	close: function ()
	{
		if($('overlay_image'))
		{
			Effect.Fade('content_container',{duration: 0.5,queue: 'close'});
			$('overlay_image').remove();
			setTimeout('myOverlay.resize_content("150","150");',2000);
			//Effect.BlindUp('content_container',{delay: 2,queue: 'close'});
		}else{
			Effect.BlindUp('content_container',{duration: 1,delay:1,queue: 'close'});
			//Effect.SwitchOff('content_container');
		}

		//Effect.SwitchOff('content_container');
		//setTimeout("Effect.Fade('overlay')", 1000);
		Effect.Fade('overlay',{delay: 1,queue: 'close'});
		setTimeout("$('overlay').hide();",2000);
		this.enable_select_boxes();



	}
}
function pause(ms){
	var date = new Date();
	curDate = null;
	do{var curDate = new Date();}
	while( curDate - date < ms);
}
function confirm_message(text,link)
{
	var confirm = {link: link};
	var buttons = overlay_buttons['confirm'].evaluate(confirm);
	overlay('box','Bestätigung',text,buttons,false);
}
var myOverlay = new Overlay;
function overlay(type, param_1, param_2, buttons, load_buttons, width, def_height, resize_overlay)
{
	myOverlay.start(type, param_1, param_2, buttons, load_buttons, width, def_height, resize_overlay);
}

