ZoomPic = new Image();

var drag;
var page_size;
var current_pointer_element;


function externalLinks() {
    if (!document.getElementsByTagName) return;
    var anchors = document.getElementsByTagName("a");
    for (var i=0; i<anchors.length; i++) {
        var anchor = anchors[i];
        if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") {
            anchor.target = "_blank";
        }
    }
}

function noSpam() {
    var a = document.getElementsByTagName("a");
    for (var i = a.length-1; i >= 0; i--) {
      if (a[i].className.search(/\bemail\b/) != -1) {
        var email = a[i].firstChild.data + "@" + a[i].lastChild.data;
        a[i].innerHTML = email;
        a[i].href = "mailto:" + email;
      }
    }
}


document.observe("dom:loaded", function() { 

	externalLinks();
	noSpam();
	
	page_size = parseInt(document.viewport.getHeight());
										
});


function mousemove(e) {
	
	  if($("ViewLayer")) return false;
	
	
		if(current_pointer_element) {
	
			var pX = Event.pointerX(e);
			var pY = Event.pointerY(e);
			
			var main_img 	= $(current_pointer_element.getElementsByTagName("img")[0]);
			
			if(checkBrowserName('MSIE')) offset = $(main_img).cumulativeScrollOffset()[1];
			else offset = 0;
			
			var main_x		= main_img.viewportOffset()[0];
			var main_y		= main_img.viewportOffset()[1] + offset;
			

			// Create Container

			
			if(!$('th_overlay')) { 
				overlay_top = document.createElement("div"); 
				overlay_top.setAttribute("id","th_overlay"); 
				document.getElementsByTagName('body')[0].appendChild(overlay_top);
			}
			
			if(pX>=main_x && pY>=main_y && pX<(main_x+main_img.width)&& pY<(main_y+main_img.height)) $('th_overlay').show();
			else $('th_overlay').hide();
			
			if(pX>=main_x && pY>=(main_y+37.5) && pX<(main_x+main_img.width)&& pY<(main_y+main_img.height)-37.5) {
				
				$('th_overlay').setStyle({	 width:(main_img.width-4) + "px",
											 height:"73px",
											 border:"2px solid #ccff43", 
											 backgroundImage:"url("+main_img.src+")",
											 backgroundPosition:"-2px " + (main_y-pY+37.5) + "px",
											 zIndex:30,
											 top:(pY-37.5) + "px",
											 left: main_x +"px",
                       "cursor":"pointer", 
											 position:"absolute",
											 display:"block"
											 });
				
				
				$('galerie_image').setStyle({top:((main_y-pY+37.5)*5) + "px"})
				
				$('th_overlay').onclick = function () { 		
          CreateViewer($(current_pointer_element).getAttribute("glhref"), 0, 1);
          return false;
				}
				
				
			} 
			
			 
		}
		
		
}


Event.observe( window, 'load', function() {
	
	
	if($('projekt_galerie')) {
		
		FullSizeTransform('projekt_galerie');	
		ConverToScrollArea('projekt_galerie');	
		
		var anchors = $('projekt_galerie').getElementsByTagName("img");

		for (var i=0; i<anchors.length; i++) {
		var anchor = anchors[i].parentNode;
			
			
			
			anchor.onmouseover = function () { if(this.getAttribute("activ")=='0') { new Effect.Opacity(this.getElementsByTagName("img")[0], {duration:0.2, from:1, to:0.7}); } }
			anchor.onmouseout =  function () { if(this.getAttribute("activ")=='0') { new Effect.Opacity(this.getElementsByTagName("img")[0], {duration:0.2, from:0.7, to:1}); } }
			
						
			anchor.onclick = function () {
			
			    if(this == current_pointer_element) {	 
					  CreateViewer(this.getAttribute("glhref"), 0, 1);
					  return false;
					}
					 
					CleanUpActiv();
					
					current_pointer_element = this;

					$(this).setAttribute("activ", "1");
					$(this).getElementsByTagName("img")[0].setOpacity(0.4);
					
				
				
					$('preloader').show();
				
					$('galerie_image').src = this.href;
					
					$('galerie_image').onload = function() {
					
						if(drag) drag.destroy(); 
						
						min_pos = $('galerie_image').getHeight() - $('projekt_viewer').getHeight();
				
						top_pos = ($('projekt_viewer').getHeight() - $('galerie_image').getHeight()) / 2 ;
						
						new Effect.Opacity(this, {duration:0.4, from:0, to:1});
						
						
						drag = new Draggable($('galerie_image'), { 
								 revert: false, 
								 snap: [1, 1], 
								 range: $R(-min_pos,0), 
								 constraint:'vertical' 
					  });
						
						$('preloader').hide();
							
					}
					
					
       
					
					return false;
			}
		}
			
	}
	
										
	if($('projekt_viewer')) {
	
	  var min_pos = $('galerie_image').getHeight() - $('projekt_viewer').getHeight();

	  var top_pos = ($('projekt_viewer').getHeight() - $('galerie_image').getHeight()) / 2; 
	  $('galerie_image').style.top = top_pos + "px";
	  
	  drag = new Draggable($('galerie_image'), { 
			revert: false, 
			snap: [5, 5], 
			range: $R(-min_pos,0), 
			 constraint:'vertical' 
	  });
		
	}
	
	
	if($('nv_sub')) {
		FullSizeTransform('nv_sub');	
		ConverToScrollArea('nv_sub');
	}
	
	
	if($('text_content')) {
	FullSizeTransform('text_content');	
		ConverToScrollArea('text_content');	
	
	}
	
	
	if($('projekt')) {
		
		FullSizeTransform('projekt');	
		ConverToScrollArea('projekt');	
	}
	
	$('preloader').hide();
	
	
	Event.observe(document,'mousemove',mousemove, false);
	
	
});


Event.observe(document.onresize ? document : window, "resize", function() {
				
			page_size = parseInt(document.viewport.getHeight());	
				
			if($('projekt_galerie')) { FullSizeTransform('projekt_galerie'); }
			if($('nv_sub'))			 { FullSizeTransform('nv_sub');   }
			if($('projekt')) 		 { FullSizeTransform('projekt'); }
													
});   
	



function checkBrowserName(name){
   var agent = navigator.userAgent.toLowerCase();
   if (agent.indexOf(name.toLowerCase())>-1) {
     return true;
   }
   return false;
 }



function CleanUpActiv() {

		var anchors = $('projekt_galerie').getElementsByTagName("img");

		for (var i=0; i<anchors.length; i++) {
		var anchor = $(anchors[i]);
		
			anchor.parentNode.setAttribute("activ", "0");
			anchor.setOpacity(1.0);
		
		}
	
}

function FullSizeTransform(obj) {
	
	if(page_size) {
	  transform_to = (page_size - (parseInt($(obj).getStyle('top'))) ) - 3;
	  if(transform_to > 0) $(obj).setStyle({height:transform_to+"px"});
	}
		 
}

function ConverToScrollArea(element) {
	
	if($(element).childNodes.length != '0') {
		
	    var scrollbar_div = document.createElement('div');
		scrollbar_div.setAttribute("id","scrollbar_track");
		
		var scroll_track_div = document.createElement('div');
		scroll_track_div.setAttribute("id","scrollbar_handle");
		
		scrollbar_div.appendChild(scroll_track_div);
		
		var scroll_content_div = document.createElement('div');
		
		scroll_content_div.innerHTML = $(element).innerHTML;
		scroll_content_div.setAttribute("id","content");
		
		$(element).innerHTML = "";
		$(element).appendChild(scrollbar_div);
		$(element).appendChild(scroll_content_div);
			
	
	    var scrollbar = new Control.ScrollBar(scroll_content_div, scrollbar_div);
	
			if("nv_sub" == element) {
				if(document.getElementsByTagName) {
					el = $(element).getElementsByTagName("strong")[0];
					if(el) 	scrollbar.scrollTo(el,true);
	
				}
			}
			
		
		}
		
	
}






function CreateViewer(ImagePath, TextOption, CloseOption) {

		if($("ViewLayer")) RemoveViewer();

		// CalScreen
		higth_content = $(document.body).getHeight();
		higth_screen = (document.documentElement.clientHeight) ? document.documentElement.clientHeight : window.innerHeight;
		viewer_higth = (higth_content>higth_screen) ? higth_content : higth_screen;

		// CreateBG
		div = $(document.createElement('div'));

		
		div.setAttribute("id", "ViewLayer");
		
		div.setStyle({	"position":"absolute", 
							zIndex:"100", 
							"top":"0", 
							"left":"0", 
							"backgroundColor":"#000000", 
							"width":"100%", 
							"height": viewer_higth + "px"
						});
						
		div.setOpacity(0.0);
		
		
		
		div.onclick = function() { RemoveViewer(); }
	
		fadeobg = document.body.appendChild(div);
		new Effect.Opacity($(fadeobg), { duration:0.3, from:0, to:0.5 });
		
		// CreateContainer
		div = $(document.createElement('div'));
		//div.setOpacity(0.95);
		div.setAttribute("id", "ViewContainer");

		
		div.setStyle({	"position":"absolute", 
					 	"backgroundImage":'url(js/load.gif)',
						zIndex:"101", 
						"top":"50%", 
						"left":"50%", 
						"backgroundColor":"#FFFFFF", 
						"width":"300px",
						"marginLeft":"-150px",
						"marginTop": (getYOffset()-40) +"px",
						"height":"80px",
						"border":"8px solid #ffffff",
						"overflow":"hidden",
						"backgroundPosition":"center center"
						});
		
		viewer = document.body.appendChild(div);
		viewer.onclick = RemoveViewer;
		
		
		if(TextOption) {
			
			$("ViewContainer").innerHTML = "<div>" + TextOption + "</div>";
			TextObj = $($("ViewContainer").getElementsByTagName("div")[0]);
			TextObj.setStyle({"marginTop":"60px", "textAlign":"center"});
			
		}
		
		if(ImagePath){
			
			ZoomPic.src = ImagePath;
			ZoomPic.onload = function () {
				
					new Effect.Morph($("ViewContainer"), { 
					style:"margin-left:-" + (this.width/2) + "px; margin-top:-" + (this.height/2+6) + "px; width:" + this.width + "px; height:" + (this.height-4) + "px", 
					duration:0.6});
					
					$("ViewContainer").setStyle({"backgroundImage":'url(' + this.src + ')'});
					
			}

		}
		
		
		if(CloseOption) {
		
			$("ViewContainer").innerHTML = "<img src=\"js/wclose.png\">";
			CloseImageObj = $($("ViewContainer").getElementsByTagName("img")[0]);
			CloseImageObj.setStyle({
							"marginRight":"12px",
							"marginTop":"10px",
							"cursor":"pointer",
							"float":"right"
							});
			
			
			CloseImageObj.setAttribute("align", "right");
			
			CloseImageObj.setOpacity(0.0);
			
			new Effect.Opacity(CloseImageObj, {duration:1, from:0, to:1 });
			
		}
		
		
		

}


function getYOffset() { 
   
	var pageY; 
	
	if(typeof(window.pageYOffset)=='number') { pageY=window.pageYOffset; }    
	else { pageY=document.documentElement.scrollTop;  }  

	return pageY; 
}

function RemoveViewer() {
	
	ZoomPic.src ="";
	
	if($('ViewLayer')) {
		new Effect.Opacity($('ViewLayer'), {
						   duration:0.5, 
						   from:0.5, 
						   to:0, 
						   afterFinish:function () {  document.body.removeChild($('ViewLayer')); }
						   });
	}
	
	if($('ViewContainer')) {
		new Effect.Opacity($('ViewContainer'), {
						   duration:0.3, 
						   from:1, 
						   to:0, 
						   afterFinish:function () {  document.body.removeChild($('ViewContainer'));}
						   });
	}
	
}
