/**
 * @author p.stenzel
 */

if(!com) var com={};
if(!com.videotaxi) com.videotaxi={};
if(!com.videotaxi.boxes) com.videotaxi.boxes={};

com.videotaxi.boxes = {
	bgDiv_mod: "<div id='modalbg' style='display:none;'></div>",
	fgDiv_mod: "<div id='modalfg' style='display:none;'>"
		+"<div id='modalfg_content'></div>"
	+"</div>",
	fgDiv_ol: "<div id='olfg' style='display:none;'>"
		+"<div id='olfg_content'>Test</div>"
	+"</div>",
	gesamtbreite: 0,
	clicked: null,
	viewporthoehe: 0,
	insertModal: function()	{
		try {
			if ($('olfg') && $('olfg').visible()) {
				this.closeOverlay(true, "vert");
			}
			
			if (!$('modalbg')) {
				$('body').insert(this.bgDiv_mod, {
					position: 'top'
				});
				$('body').insert(this.fgDiv_mod, {
					position: 'top'
				});
				$('modalfg').addClassName("rounded_bottom");
			}
			return true;
		} catch(e)	{
			alert("insertModal: "+e.message);
			return false;
		}
	},
	toggleModal: function(ani)	{
		/**
		 * Wenn der Flash-Player gefunden wurde, muss er ausgeblendet werden, weil sich Flash sonst über alles andere legt, auch über das Overlay
		 */
		if($('trailer') && $('Klappe_Trailer_Player') && $('Klappe_Trailer_Player').visible())	{
			$('Klappe_Trailer_Player').hide();
		}
		if(ani)	{
			try {
				if ($('modalfg').visible()) {
//					alert('toggle out');
					new Effect.SlideUp('modalfg',{
						afterFinish: function()	{
							$('modalbg').toggle();
							if($('Klappe_Trailer_Player') && !$('Klappe_Trailer_Player').visible())	{
								var screenshots_visible = false;
								var els = $$('[rotate=deferred]');
								if (els.length > 0) {
									els.each(function(el)	{
										if(el.visible())	screenshots_visible=true;
									})
								}
								if(!screenshots_visible)	$('Klappe_Trailer_Player').show();
							}
							/**
							 * falls die Box für eine Traileransicht verwendet wurde, 
							 * sollte das Trailerobjekt gelöscht werden.
							 */
//							var trailer = $('Klappe_Trailer_Player');
							var trailer = $('modalfg_content').select('[id="Klappe_Trailer_Player!"]');
							if ($('Klappe_Trailer_Player') && trailer) {
								$('Klappe_Trailer_Player').hide();
								$('Klappe_Trailer_Player').remove();
							}
						}
					});
				}
				else {
//					alert('toggle on');
					$('modalbg').toggle();
					new Effect.SlideDown('modalfg',{
						afterFinish: function()	{
							if($('modalbg').getStyle('position')=="absolute")	{
								var tmpString = ''+$('body').getHeight()+'px';
								$('modalbg').setStyle({
									height: tmpString
								})
							}
						}
					});
				}
			}	catch(e)	{
				var tmp = "";
				for(var test in e)	{
					tmp+=test+": "+e[test]+"\n";
				}
				alert("Fehler:\n"+tmp);
			}
		}	else	{
//			alert('no ani');
			$('modalbg').toggle();
			$('modalfg').toggle();
			if($('Klappe_Trailer_Player') && !$('Klappe_Trailer_Player').visible())	{
				var screenshots_visible = false;
				var els = $$('[rotate=deferred]');
				if (els.length > 0) {
					els.each(function(el)	{
						if(el.visible())	screenshots_visible=true;
					})
				}
				if(!screenshots_visible)	$('Klappe_Trailer_Player').show();
			}
		}
	},
	insertOverlay: function(el,orientation)	{
		this.gesamtbreite = $('body').offsetWidth;
		this.viewporthoehe = document.viewport.getHeight();
		
		if(el==this.clicked)	return false;
		
		this.clicked = el;
		
		if ($('olfg')) $('olfg').remove();
		$('body').insert(this.fgDiv_ol, {
			position: 'top'
		});

		return true;
	},
	positionOverlay: function(orientation,width)	{
		var el = this.clicked;

		var breite = 0;
		var hoehe = 0;
		var setWidth = false;
		
		if (orientation == "vert") {
			hoehe = (el.getHeight()/2)-3;
//			hoehe = parseInt(el.getStyle("marginTop").replace("px",""));
//			alert(hoehe);
			if(el.cumulativeOffset()[0]>(this.gesamtbreite/2))	{
//			    breite = (($('olfg').getWidth()-el.getWidth())*-1);
//			    breite = (($('olfg').getWidth()-el.getWidth())+2)*-1;
			    breite = (($('olfg').getWidth()-(el.getWidth()+8)))*-1;
			}
		}	else	{
			breite = parseInt(el.getStyle("marginLeft").replace("px",""))+3;
			hoehe = parseInt(el.getStyle("marginTop").replace("px",""))+3;
			
			if(el.getWidth()>$('olfg').getWidth())	{
				$('olfg_content').setStyle({width: (el.getWidth()-2)+'px'});
				//setWidth=true;
			}
		}
	
		$('olfg').clonePosition(el,{
			setHeight: false,
			setWidth: false,
			offsetLeft: breite,
			offsetTop: hoehe
		});
	},
	openOverlay: function(ani,orientation,width)	{
		$('olfg_content').setStyle({width: width+'px'});
		this.positionOverlay(orientation,width);

		var duration = 0.25;
		var element = $('olfg').cleanWhitespace();
		if (orientation == "vert") {
			if (ani) {
				if (this.clicked.viewportOffset()[1] < (this.viewporthoehe / 2)) {
					new Effect.SlideDown('olfg');
				}	else	{
					var hoehe = element.getHeight();
					element.setStyle({
						height: "0px"
					});
					element.toggle();
					new Effect.Parallel([new Effect.Move(element, {
						sync: true,
						y: (hoehe * -1),
						mode: 'relative'
					}), new Effect.Morph(element, {
						sync: true,
						style: {
							height: hoehe + 'px'
						}
					})], {
						duration: duration
					})
				}
			}
		}	else	{
			if (ani) {
				if (this.clicked.offsetLeft < (this.gesamtbreite / 2)) {
					new Effect.Grow("olfg",{direction:"top-left"});
				}	else	{
					new Effect.Grow("olfg",{direction:"top-right"});
				}
			}
		}
	},
	closeOverlay: function(ani,orientation)	{
		var duration = 0.25;
		if(ani)	{
			if (orientation == "vert") {
				if(!this.clicked){
					new Effect.SlideUp('olfg',{
						duration: duration
					});					
				}else{
					if ($(this.clicked.id).viewportOffset()[1] < (this.viewporthoehe / 2)) {
						new Effect.SlideUp('olfg',{
							duration: duration
						});
					}	else	{
						var element = $('olfg');
						var hoehe = element.getHeight();
						new Effect.Parallel([new Effect.Move(element, {
							sync: true,
							y: hoehe,
							mode: 'relative'
						}), new Effect.Morph(element, {
							sync: true,
							style: {
								height: '0px'
							},
							afterFinish: function(){
								element.toggle();
							}
						})], {
							duration: duration
						})
					}
				}
			}	else	{
				if (this.clicked.offsetLeft < (this.gesamtbreite / 2)) {
					new Effect.Shrink("olfg",{direction:"top-left"});
				}	else	{
					new Effect.Shrink("olfg",{direction:"top-right"});
				}
			}
		}	else	{
			$('olfg').remove();
		}
		this.clicked = null;
		if($('olfg_einleitung'))	$('olfg_einleitung').stopObserving('click');
	},
	togglePrelocked: function(el){
		if (el) {
			new Effect.SwitchOff(el);
		}	else	{
			var cookie = new Cookies;
			cookie.set("showall","true");
			
			el = $$(".prelocked");
			el.each(function(child)	{
				new Effect.SwitchOff(child);
			})
		}
	}
};


