<%# 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 = null;
	this.tagList = $("ul#gallery_tag_list");
	this.initialize = function(callbackFn){
		$(document).ready(function(){
			bindHandlers();
		})
		var bindHandlers = function(){
			$("#filter .filter_btns a").click(function(){
				if(!$(this).hasClass("active")){
					$(this).addClass("active");
					if(g.urlVars.length == 0)
						window.location = "albums?" + $(this).attr("href");
					else
						window.location = window.location.href +"&"+ $(this).attr("href");
				}else{
					$(this).removeClass("active");
					var loc = window.location.href;
					var url = loc.replace($(this).attr("href")+"&","");
					if(url == loc)
						url = loc.replace($(this).attr("href"),"");

					if(url.charAt(url.length-1)=="&" || url.charAt(url.length-1)=="?")
						url = url.substr(0,url.length-1);
				    window.location = url;
				}
			})
			$("#filter .filter-clear a").click(function(){
				var loc = window.location.href;
				var url = null;
				var forwhat = $(this).attr("for");
				$("#filter ."+forwhat+" a.active").each(function(){
					$(this).removeClass("active");
					url = loc.replace($(this).attr("href")+"&","");
					if(url == loc)
						url = loc.replace($(this).attr("href"),"");

					if(url.charAt(url.length-1)=="&" || url.charAt(url.length-1)=="?")
						url = url.substr(0,url.length-1);
					loc = url;
				})
				window.location = url;
			})
		}
		
	}
	this.makeNewAlbum = function(path){
		$.get(path,function(html){
			rcom.modalWindow({loadHtml:html,width:320,height:320,"closeBtn":false},function(dom){
				$("form#new_gallery_album").submit(function(){
					var validated = true;
					$(this).find(".error").removeClass("error");
					$(this).find(".validate").each(function(){
						if(!$(this).val()){
							validated = false;
							$(this).parent().addClass("error");
						}
					})
					if(!validated)
						return false;
				})
				dom.find("#album_name_close_btn").click(function(){
					rcom.modalWindowClose();
				})
			})

		})
	}
	this.deleteAlbum = function(id){
		if(confirm("<%= I18n.t('gallery.del_album?') %>")){
			$.ajax({
				type: "DELETE",
				url : id,
				success : function(){
					window.location = "../albums";
				}
			})
		}
	}

	this.loadAlbums = function(id){
		g.albumArea.find(".rghead .rgfn a").click(function(){g.makeNewAlbum($(this).attr("href"))});
		g.albumArea.addClass('o_gallery');
		g.albumArea.find("#imgholder").empty();
		if(id!="all"){
			var cids = [];
			var tids = [];
			var href = null;
			console.log(cids);
		    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
		    for(var i = 0; i < hashes.length; i++){
		        hash = hashes[i].split('=');
		        if(hash[0]=="cat"){
		        	cids.push(hash[1]);
		        	href = "cat="+hash[1];
		    	}else if(hash[0]=="tag"){
		    		tids.push(hash[1]);
		    		href = "tag="+hash[1];
		    	}
		        $("#filter .filter_btns a[href='"+href+"']").addClass("active");
		    }
		    if(cids.length == 0)
		    		cids = "all";
		}else{
			var cids = "all";
		}
		$.getJSON("get_albums",{cid:cids,tid:tids},function(categories){
			$.each(categories,function(x,category){
				$.each(category,function(i,album){
					album.description = (album.description?album.description:"<%= I18n.t('gallery.no_description') %>")
					if(album.cover == "default")
						var $img = $("<div class='rgalbum'><a title='"+album.description+"' href='"+album.show_path+"'><img src='../../../assets/gallery/default.jpg' /></a><span class='albumname'>"+album.name+"</span><span class='categoryname'>"+album.category_name+"</span><span class='tagnames'></span></div>");
					else
						var $img = $("<div class='rgalbum'><a title='"+album.description+"' href='"+album.show_path+"'><img src='"+album.cover_path+"' /></a><span class='albumname'>"+album.name+"</span><span class='categoryname'>"+album.category_name+"</span><span class='tagnames'></span></div>");
					var tag_string = "";
					for(tag in album.tag_names){
						tag_string+= '<span class="label label-tags">' + album.tag_names[tag] + '</span>';
					}
					$img.find(".tagnames").html(tag_string);
					g.albumArea.find("#imgholder").append($img);
				})
			})
		})
	}
	this.loadImages = function(id){
		var panelopen = false;
		$('.bt-tag').click(function(){
			$(this).toggleClass("active");
			var $tag_panel = $('#tag_panel'),
				tag_panel_position = 0;

			if( $tag_panel.css('right') == '0px' ){
				tag_panel_position = -200;
			}
			$tag_panel.animate({'right':tag_panel_position}, 300);

			g.albumArea
				.delay(200)
				.animate({'margin-right':tag_panel_position+200},300);
			return false;
		});
		g.albumArea.find("#tag_search_box").keyup(function(e){
			sval = $(this).val();
			if(sval == "<%= I18n.t('gallery.search_tags') %>")
					sval = "";
			sval = sval.replace(/(^\s*)|(\s*$)/g,'');
			if(sval){
				var re1 = new RegExp("^[\u4E00-\uFA29]*$"); //Chinese character range 
				var re2 = new RegExp("^[\uE7C7-\uE7F3]*$");
				if ((re1.test(sval) && (re2.test(sval)))){
					$("#gallery_tag_list li span:not(:contains("+sval+"))").parent().slideUp();
				}else{
					$("#gallery_tag_list li span:not(:containsi("+sval+"))").parent().slideUp();
				}
			}else{
				$("#gallery_tag_list li").slideDown();
			}
		})
		g.albumArea.find("#tag_panel .bt-save").click(function(){
			g.saveTags(id,"album");
		})
		g.albumArea.find(".rghead .rgfn .bt-add").click(function(){
			showUploadPanel();
		})
		g.albumArea.find(".rghead .rgfn .bt-del").click(function(){
			g.deleteAlbum(id);
		})
		$("#upload_panel_holder").remove();
		var uploadpanel = $('<div id="upload_panel_holder"><div class="rgfn"><a class="bt-cls btn btn-primary pull-right" title="Close" href="" onclick="return false;"><i class="icon-remove icon-white"></i>Close Panel</a></div></div>');
		var frame = $('<iframe id="upload_panel" width="100%" scrolling="no" height="294" frameborder="0" src="'+id+'/upload_panel"></iframe>');
		uploadpanel.find(".bt-cls").click(function(){
			uploadpanel.hide("slide");
			frame.remove();
			g.loadImages(id);
			panelopen = false;
		})
		var showUploadPanel = function(){
			if(!panelopen){
				uploadpanel.prepend(frame);
				uploadpanel.show("slide");
				panelopen = true;
			}
		}
		
		g.albumArea.addClass('o_album');
		g.albumArea.find(".rghead .rgfn").append(uploadpanel);
		g.albumArea.find("#imgholder").empty();
		$.getJSON(id+"/imgs",function(album){
			$.each(album.images,function(i,image){
				var thumb = image.file.thumb.url;
				image.description = (image.description?image.description:"<%= I18n.t('gallery.no_description') %>")
				var $img = $("<div class='rgphoto'><a title='"+image.description+"' href='"+image.theater_link+"'><img src='"+thumb+"'/></a></div>");
				g.albumArea.find("#imgholder").append($img);
			})
			g.tagList.find("input").attr("checked",false);
			if(typeof album.tag_names == "undefined"){
				$.each(album.tags,function(i,tag){
					g.tagList.find("li[data-content="+tag+"] input").attr("checked",true);
				})
			}else{
				$.each(album.tag_names,function(i,tagname){
					$li = $("<li><label>"+tagname+"</label><span style='display:none;'>"+tagname+"</span></li>");
					g.tagList.append($li);
				})
			}
			
		})
	}
	this.loadTheater = function(id){
		var imageArray;
		var imagecount = 0;
		var picHeight = 0;
		var bindHandlers = function(){
			var $slidelist = $('.slidelist'),
				$rslide = $('.rslide'),
				$rslidenav = $('.rslidenav'),
				$img = $("#main_pic img"),
				wHeight = $(window).height();

				$("#main_pic").height(picHeight);
				$img.height("100%");
			
			$('.bt-tag').click(function(){
				if(!$(this).hasClass("active"))
					updatePhotoTag();
				$(this).toggleClass("active");
				var $tag_panel = $('#tag_panel'),
					tag_panel_position = 0;

				if( $tag_panel.css('right') == '0px' ){
					tag_panel_position = -200;
				}
				$tag_panel.animate({'right':tag_panel_position}, 300);

				g.albumArea
					.delay(200)
					.animate({'margin-right':tag_panel_position+200},300);
				return false;
			});
			var updatePhotoTag = function(){
				var tags = imageArray[imagecount].tag_ids;
				if(tags.length > 0 && g.tagList.find("li").length == 0){
					var tagnames = imageArray[imagecount].tag_names;
					g.tagList.empty();
					for(i in tagnames){
						$li = $("<li><label>"+tagnames[i]+"</label><span style='display:none;'>"+tagnames[i]+"</span></li>");
						g.tagList.append($li);
					}
				}else if(tags.length > 0 && g.tagList.find("li").length > 0) {
					g.tagList.find("input").attr("checked",false);
					for(tag in tags){
						g.tagList.find("li[data-content="+tags[tag]+"] input").attr("checked",true);
					}
				}else if(tags.length == 0){
					if(g.tagList.find("input").length == 0)
						g.tagList.empty();
					else
						g.tagList.find("input").attr("checked",false);
				}
			}
			g.albumArea.find("#tag_search_box").keyup(function(e){
				sval = $(this).val();
				if(sval == "<%= I18n.t('gallery.search_tags') %>")
						sval = "";
				sval = sval.replace(/(^\s*)|(\s*$)/g,'');
				if(sval){
					var re1 = new RegExp("^[\u4E00-\uFA29]*$"); //Chinese character range 
					var re2 = new RegExp("^[\uE7C7-\uE7F3]*$");
					if ((re1.test(sval) && (re2.test(sval)))){
						$("#gallery_tag_list li span:not(:contains("+sval+"))").parent().slideUp();
					}else{
						$("#gallery_tag_list li span:not(:containsi("+sval+"))").parent().slideUp();
					}
						
				}else{
					$("#gallery_tag_list li").slideDown();
				}
			})
			g.albumArea.find("#tag_panel .bt-save").click(function(){
				g.saveTags(imageArray[imagecount]._id,"pic",function(tagids){
					imageArray[imagecount].tag_ids = tagids;					
				})
			})
			$(".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(picHeight );
				}else{
					 $("#main_pic").height(wHeight);
					// $img.height("100%");
					$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(){
					$img.attr({"src":dom.attr("data-content"),"height":picHeight+"px"});
					$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){
					      window.history.pushState({path:pageurl},'',pageurl);
					    }
					}else{
				   		window.location.hash = pageurl;
				   	}
				    // $(".slideinfo b.info").text(imageArray[imagecount].title);
				    if($('.bt-tag').hasClass("active"))
				    	updatePhotoTag();
				    $(".slideinfo .info").text(imageArray[imagecount].description);
				    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.url});
				$(".navP").attr({"href":imageArray[prev]._id,"data-content":imageArray[prev].file.url});
			};
			if(imageArray.length > 1)
				updateNavigation();
		}
		
		var preparestage = function(albumid){
			$.getJSON("../albums/"+albumid+"/imgs",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.find(".bt-back").attr("href","../albums/"+albumid);
		g.albumArea.find(".bt-edit").attr("href","../albums/"+albumid+"/edit");	
		g.albumArea.css("margin-bottom","0");
		picHeight = $(window).height() - ($("#orbit-bar").outerHeight() + $("#orbit_gallery .form-actions").outerHeight());
		preparestage(albumid);
		
	}

	this.editAlbum = function(id){
		var bindHandlers = function(){
			$(".nav .nav-tabs a").click(function(){
				$(".tab_content .tab-pane").hide();
			})
			$(".description_loader .edit_fn .bt-cover").click(function(){
				$(".bt-cover").removeClass("setcover active btn-primary");
				$(".bt-cover span").removeClass("icon-white icon-star").addClass("icon-star-empty");
				$(this).addClass("setcover active btn-primary");
				$(this).find("span").removeClass("icon-star-empty").addClass("icon-white icon-star");
				$.post("set_cover",{"imageid":$(this).attr("for")});
			})
			$(".description_loader .edit_fn .bt-dels").click(function(){
				$(this)
					.toggleClass("setdelete btn-danger active")
					.find('span').toggleClass('icon-white');
				if($(".description_loader .edit_fn .setdelete").length > 0)
					g.albumArea.find(".rghead .rgfn .bt-save").show();

				if($(this).hasClass("active")){
					$(this).parent().parent().find("input.del_field").val(true);
				}else{
					$(this).parent().parent().find("input.del_field").val(false);
				}
				delete_cover();
			})
			var delete_cover = function(){
				if($(".description_loader .setcover").parent().find(".bt-dels").hasClass("active")){
					$("input.del_cover").val(true);
				}else{
					$("input.del_cover").val(false);
				}
			}
			var current_element_for_tags = null;
			var current_element_no = null;
			$('.bt-tag').click(function(){
				var has_class = false;
				if($(this).hasClass("active"))
					has_class = true;

				$('.bt-tag').removeClass("active");
				$(this).toggleClass("active");
				var count = 0;
				$('.bt-tag').each(function(){
					if($(this).hasClass("active"))
						count++;
				})
				if(has_class){
					$(this).removeClass("active");
					count = 0;
				}
				var $tag_panel = $('#tag_panel'),
					tag_panel_position = 0;
					if(count == 1)
						tag_panel_position = 0
					else if(count == 0){
						if( $tag_panel.css('right') == '0px' ){
							tag_panel_position = -200;
						}
					}
				
				$tag_panel.animate({'right':tag_panel_position}, 300);

				g.albumArea
					.delay(200)
					.animate({'margin-right':tag_panel_position+200},300);
				
				current_element_for_tags = $(this).attr("href");
				if(count == 1){
					current_element_no = $(this).parent().attr("no");
					if(imageTagArray[current_element_no].id == current_element_for_tags){
						g.tagList.find("input").attr("checked",false);
						for(tag in imageTagArray[current_element_no].tags){
							g.tagList.find("li[data-content="+imageTagArray[current_element_no].tags[tag]+"] input").attr("checked",true);
						}
					}
				}
				return false;
			});
			g.albumArea.find("#tag_search_box").keyup(function(e){
				sval = $(this).val();
				if(sval == "<%= I18n.t('gallery.search_tags') %>")
						sval = "";
				sval = sval.replace(/(^\s*)|(\s*$)/g,'');
				if(sval){
					var re1 = new RegExp("^[\u4E00-\uFA29]*$"); //Chinese character range 
					var re2 = new RegExp("^[\uE7C7-\uE7F3]*$");
					if ((re1.test(sval) && (re2.test(sval)))){
						$("#gallery_tag_list li span:not(:contains("+sval+"))").parent().slideUp();
					}else{
						$("#gallery_tag_list li span:not(:containsi("+sval+"))").parent().slideUp();
					}
				}else{
					$("#gallery_tag_list li").slideDown();
				}
			})
			g.albumArea.find("#tag_panel .bt-save").click(function(){
				g.saveTags(current_element_for_tags,"pic",function(tagids){
					imageTagArray[current_element_no].tags = tagids;
				})
			})
			var tempval;
			$(".txtchange").focus(function(){
				tempval = $(this).val();
			}).keyup(function(){
				if($(this).val() != tempval)
					g.albumArea.find(".rghead .rgfn .bt-save").show();
			})
			
		}
		g.albumArea.addClass('o_album_edit');
		var imageTagArray = null;
		$.getJSON("images_tags",function(data){
			imageTagArray = eval(data);
		})
		bindHandlers();
	}
	this.saveTags = function(id,tagsfor,callbackFn){
		var tagids = new Array();
		g.tagList.find("li input:checked").each(function(){
			tagids.push($(this).parent().attr("data-content"));
		})
		$.post("../save_tags",{"id":id,"tag":tagsfor,"tids":tagids},function(){
			if(typeof callbackFn == "function")
				callbackFn.call(this,tagids);
		})	
	}
}
galleryAPI.prototype.locale = "en";
