<%# encoding: utf-8 %>
$.extend($.expr[':'], {
	'containsi': function (elem, i, match, array) {
		return (elem.textContent || elem.innerText || '').toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
	}
});
var galleryAPI = function(){
	g = this;
	this.urlVars = rcom.getUrlVars();
	this.albumArea = $("#orbit_gallery");
	this.loadArea = "theater";
	this.tagList = $(".taglist ul");
	this.loading = $("#loading");
	// this.authenticated = false;
	this.initialize = function(callbackFn){
		 if(g.loadArea == "theater"){
 			if(rcom.getInternetExplorerVersion()!=-1){
 				var photo_id = window.location.hash.replace("#","");
				if(photo_id){
					var params = rcom.getUrlVars();
					var url = window.location.href.split("?")[0];
					params["image_id"] = photo_id;
					for(i=0;i<params.length;i++){
						if(i == 0)
							url+="?"+params[i]+"="+params[params[i]];
						else
							url+="&"+params[i]+"="+params[params[i]];
						 
					}
 					window.location.href = url;
				}
 			}
 		}

	}

	this.loadTheater = function(albumid,id){
		var imageArray;
		var imagecount = 0;
		// var picHeight = 0;
		g.loadstart();
		var bindHandlers = function(){
			var $slidelist = $('.slidelist'),
				$rslide = $('.rslide'),
				$rslidenav = $('.rslidenav'),
				$img = $("#main_pic img"),
				wHeight = $(window).height();

				$("#main_pic").height("auto");
				$img.css("height","auto");
			
			var updatePhotoTag = function(){
				var tagnames = imageArray[imagecount].tag_names;
				g.tagList.empty();
				for(tag in tagnames){
					g.tagList.append("<li>"+tagnames[tag]+"</li>");
				}
				
			}
			
			
			$(".slidectrl a.togglelist").click(function(){
				var rslide_h = $rslide.outerHeight();
				if ( $slidelist.height() < 1 ){
					$slidelist.stop().animate({'height':rslide_h - 30}, 300);
					$slidelist.find("ul").show();
				} else {
					$slidelist.stop().animate({'height':'0px'}, 300);
					$slidelist.find("ul").hide();
				}
			})
			$(".slidectrl .togglescreen").click(function(){
				toggleFullscreen();
			})
			$(".slidectrl .browserfullscreen").click(function(){
				browserFullScreen();
			})
			$slidelist.find(".list_element").click(function(){
				imagecount = parseInt($(this).parent().attr("for"));
				changeImage($(this));
			})
			$rslidenav.find(".navN").click(function(){
				nextpic($(this));
			})
			$rslidenav.find("a.navP").click(function(){
				prevpic($(this));
			})
			$("#nextpic").click(function(){
				nextpic($(this));
			})

			$(document).keydown(function(e){
			    if (e.keyCode == 37){ 
			    	prevpic($rslidenav.find(".navP"));
			       return false;
			    }
			    if(e.keyCode == 39){
			    	nextpic($rslidenav.find(".navN"));
			    	return false;
			    }
			    if(e.keyCode == 27){
			    	toggleFullscreen();
			    	$rslide.removeClass('browserFullScreen');
			    	return false;
			    }
			    if(e.keyCode == 70 || e.keyCode == 102){
			    	if($rslide.hasClass("fullscreen"))
			    	 browserFullScreen();
			    }
			});
			var browserFullScreen = function(){
				var el = document.documentElement,
      				rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen;
    			rfs.call(el);
			}
			$(window).resize(function(){
				if(window.innerWidth == screen.width && window.innerHeight == screen.height) {
					$rslide.addClass('browserFullScreen');
				} else {
					$rslide.removeClass('browserFullScreen');
				}
			})
			var nextpic = function(dom){
				if(imagecount == imageArray.length - 1)
					imagecount = 0;
				else
					imagecount++;
				changeImage(dom);
			}
			var prevpic = function(dom){
				if(imagecount == 0)
					imagecount = imageArray.length - 1
				else
					imagecount--;
				changeImage(dom);
			}
			var toggleFullscreen = function(){
				if($rslide.hasClass("fullscreen")){
					$rslide.css("position","relative");
					$rslide.removeClass("fullscreen");
					$(".slidectrl .browserfullscreen").hide();
					$img.css({"padding":""})
					$("#main_pic").height("auto");
				}else{
					$("#main_pic").height(wHeight);
					$img.css("height","auto");
					$rslide.css("position","");
					$rslide.addClass("fullscreen");
					$img.css({"padding":($rslide.height()-$img.height())/2})
					$(".slidectrl .browserfullscreen").show();
				}
			}
			var changeImage = function(dom){
				var pageurl = dom.attr('href');

				$img.fadeOut(200,function(){
					g.loadstart();
					if($rslide.hasClass("fullscreen")){
						
						$img.attr({"src":dom.attr("data-content")}).css("height","100%").load(function(){
							g.loadcomplete();
							$img.fadeIn(200);
						});
					}else{
						$img.attr({"src":dom.attr("data-content")}).css("height","auto").load(function(){
							g.loadcomplete();
							$img.fadeIn(200);
						});;
					}
	 				if($rslide.hasClass("fullscreen")){
	 					$img.css({"padding":($rslide.height()-$img.height())/2})
	 				}
	 				$slidelist.stop().animate({'height':'0px'}, 300);
					$slidelist.find("ul").hide();
					if(rcom.getInternetExplorerVersion() == -1){
					    if(pageurl!=window.location){
					    	pageurl = window.location.pathname+"?id="+albumid+"&controller_action=theater&image_id="+pageurl;
					      window.history.pushState({path:pageurl},'',pageurl);
					    }
					}else{
				   		window.location.hash = pageurl;
				   	}
				    // $(".slideinfo b.info").text(imageArray[imagecount].title);
				    	updatePhotoTag();
				    if(imageArray[imagecount].description)
				    	$(".slideinfo .info").text(imageArray[imagecount].description);
				    else
				    	$(".slideinfo .info").text("");
				    if(imageArray.length > 1)
				    	updateNavigation();
			    })

			}
			var updateNavigation = function(){
				var next, prev;
				if(imagecount == 0){
					next = 1;
					prev = imageArray.length - 1; 
				}else if(imagecount == imageArray.length - 1){
					next = 0
					prev = imageArray.length - 2;
				}else{
					next = imagecount + 1;
					prev = imagecount - 1;
				}
				$(".navN").attr({"href":imageArray[next]._id,"data-content":imageArray[next].file.theater.url});
				$(".navP").attr({"href":imageArray[prev]._id,"data-content":imageArray[prev].file.theater.url});
			};
			if(imageArray.length > 1)
				updateNavigation();
		}
		
		var preparestage = function(albumid){
			$.getJSON("/panel/gallery/front_end/albums/"+albumid+"/imgs",{"inner":true},function(album){
				imageArray = eval(album.images);
				$.each(album.images,function(i,image){
					if(image._id == id)
						imagecount = i;
				})
				bindHandlers();
			})
		}
		// if(rcom.getInternetExplorerVersion()!=-1){
		//  	var url_constructor = window.location.href.split("/");
		// 	var url = "";
		// 	for(x=0;x<=url_constructor.length-1;x++){
		// 		if(x == url_constructor.length-1){
		// 			url+="#!/"+url_constructor[x];
		// 		}else{
		// 	   		url+=url_constructor[x]+"/";
		// 	   	}
		// 	 }
			 
		// 	 window.location.href = url;
		// }
		
		var albumid = $("#main_pic").attr("data-content");
		g.albumArea.css("margin-bottom","0");
		// picHeight = $(window).height() - ($("#orbit-bar").outerHeight() + $("#orbit_gallery .form-actions").outerHeight());
		preparestage(albumid);
		
	}
	this.loadcomplete = function(){
		g.loading.hide();
	}
	this.loadstart = function(){
		g.loading.show();
	}

}
galleryAPI.prototype.locale = "en";
