/*
 * jQuery.ImageSwitch
 * Version: 1.0.2
 * http://www.hieu.co.uk/ImageSwitch/
 *
 * Copyright (c) 2009 Hieu Pham - http://www.hieu.co.uk
 * COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
 * http://www.opensource.org/licenses/cddl1.php
 *
 * Date: 13/03/2009
 * Revision: 50
 */
 var Debug=function(b,a){if(!$("#Debug")){$("body").append("<div id='Debug'></div>")}if(a){$("#Debug").html($("#Debug").html()+"<br/>"+b)}else{$("#Debug").html($("#Debug").html()+b)}};(function(a){a.fn.ImageSwitch=function(l,d){var f={Type:"FadeIn",NewImage:"",EffectOriginal:true,Speed:1000,StartLeft:50,StartTop:0,StartOpacity:0,EndLeft:-50,EndTop:0,EndOpacity:0,Direction:"RightLeft",Door1:"",Door2:""};var q=a.extend(f,l);var i=this;var h=0;var k;var p;var o;var j=function(){i.data("imageswitch",-1)};if(a.isFunction(d)){j=function(){d();a.data(this,"imageswitch",-1)}}var c=function(){i.parent().append("<img class='GrpEffectImg' id='"+k.replace("#","")+"'/>");a(k).attr("src",i.attr("src"));a(k).css("position","absolute");a(k).css("top",i.position().top);a(k).css("left",i.position().left);a(k).css("opacity",1);i.attr("src",q.NewImage);if(q.EffectOriginal){i.css("opacity",q.StartOpacity);i.animate({opacity:1},q.Speed)}a(k).animate({opacity:0},q.Speed,function(){a(k).remove();j()})};var g=function(r){a("body").append("<img class='GrpEffectImg' id='"+k.replace("#","")+"'/>");a(k).css("position","absolute");if(r){a(k).attr("src",q.NewImage);a(k).css("top",i.offset().top+q.StartTop);a(k).css("left",i.offset().left+q.StartLeft);a(k).css("opacity",q.StartOpacity);EndTop=i.offset().top;EndLeft=i.offset().left;EndOpacity=1}else{a(k).attr("src",i.attr("src"));i.attr("src",q.NewImage);a(k).css("top",i.offset().top);a(k).css("left",i.offset().left);a(k).css("opacity",1);EndTop=i.offset().top+q.EndTop;EndLeft=i.offset().left+q.EndLeft;EndOpacity=q.EndOpacity}a(k).animate({opacity:EndOpacity,top:EndTop,left:EndLeft},q.Speed,function(){i.attr("src",q.NewImage);a(k).remove();j()})};var b=function(u){var t=i.clone(true);i.wrap("<div id='GrpViewport-"+h+"'></div>");a("#GrpViewport-"+h).css("overflow","hidden");a("#GrpViewport-"+h).width(i.width());a("#GrpViewport-"+h).height(i.height());a("#GrpViewport-"+h).append("<img class='GrpEffectImg' id='"+k.replace("#","")+"'/>");a(k).css("position","absolute");var r=0;var s=0;switch(q.Direction){case"RightLeft":s=-i.width();break;case"LeftRight":s=i.width();break;case"TopDown":r=-i.height();break;case"DownTop":r=i.height();break}if(u){a(k).attr("src",q.NewImage);a(k).css("top",r);a(k).css("left",s);a(k).css("opacity",q.StartOpacity);EndTop=0;EndLeft=0;EndOpacity=1}else{a(k).attr("src",i.attr("src"));a(k).css("left",0);a(k).css("top",0);i.attr("src",q.NewImage);EndTop=r;EndLeft=s;EndOpacity=q.EndOpacity}if(i.css("position")!="absolute"){a("#GrpViewport-"+h).css("position","relative");i.css("position","absolute")}else{a("#GrpViewport-"+h).css("position","absolute");a("#GrpViewport-"+h).css("left",i.css("left"));a("#GrpViewport-"+h).css("top",i.css("top"));i.css("top",0);i.css("left",0)}if(q.EffectOriginal&&u){i.animate({top:-r,left:-s},q.Speed)}a(k).animate({opacity:EndOpacity,top:EndTop,left:EndLeft},q.Speed,function(){t.attr("src",q.NewImage);t.removeAttr("imageswitch");a("#GrpViewport-"+h).replaceWith(t);j()})};var n=function(){var t=i.clone(true);i.wrap("<div id='GrpViewport'></div>");a("#GrpViewport").css("overflow","hidden");a("#GrpViewport").width(i.width());a("#GrpViewport").height(i.height());a("#GrpViewport").append("<div class='GrpEffectDiv' id='"+p.replace("#","")+"'/>");a(p).attr("src",q.NewImage);a(p).css("position","absolute");a(p).css("background-color","#FFF");if(q.Door1.length>0){a(p).css("background",q.Door1)}a(p).width(i.width());a(p).height(i.height());var r=0;var s=0;switch(q.Direction){case"RightLeft":s=-i.width();break;case"LeftRight":s=i.width();break;case"TopDown":r=-i.height();break;case"DownTop":r=i.height();break}a(p).css("top",r);a(p).css("left",s);if(i.css("position")!="absolute"){a("#GrpViewport").css("position","relative");i.css("position","absolute")}else{a("#GrpViewport").css("position","absolute");a("#GrpViewport").css("left",i.css("left"));a("#GrpViewport").css("top",i.css("top"));i.css("top",0);i.css("left",0)}a(p).animate({top:0,left:0},q.Speed,function(){i.attr("src",q.NewImage);a(p).animate({top:r,left:s},q.Speed,function(){t.attr("src",q.NewImage);t.removeAttr("imageswitch");a("#GrpViewport").replaceWith(t);j()})})};var e=function(){var v=i.css("position");var r=i.css("left");var u=i.css("top");i.wrap("<div id='GrpViewport'></div>");a("#GrpViewport").css("overflow","hidden");a("#GrpViewport").width(i.width());a("#GrpViewport").height(i.height());a("#GrpViewport").append("<div class='GrpEffectDiv' id='"+p.replace("#","")+"'/>");a(p).css("position","absolute");a(p).css("background-color","#FFF");if(q.Door1.length>0){a(p).css("background",q.Door1)}a(p).width(i.width());a(p).height(i.height());a("#GrpViewport").append("<div class='GrpEffectDiv1' id='"+o.replace("#","")+"'/>");a(o).css("position","absolute");a(o).css("background-color","#FFF");if(q.Door2.length>0){a(o).css("background",q.Door2)}a(o).width(i.width());a(o).height(i.height());var s=0;var t=0;switch(q.Direction){case"RightLeft":t=-i.width();break;case"LeftRight":t=i.width();break;case"TopDown":s=-i.height();break;case"DownTop":s=i.height();break}a(p).css("top",s);a(p).css("left",t);a(o).css("top",-s);a(o).css("left",-t);if(!q.EffectOriginal){a(p).css("background","#FFF url("+q.NewImage+") no-repeat "+-t/2+"px "+-s/2+"px");a(o).css("background","#FFF url("+q.NewImage+") no-repeat "+t/2+"px "+s/2+"px")}if(i.css("position")!="absolute"){a("#GrpViewport").css("position","relative");i.css("position","absolute")}else{a("#GrpViewport").css("position","absolute");a("#GrpViewport").css("left",r);a("#GrpViewport").css("top",u);i.css("position","absolute");i.css("top",0);i.css("left",0)}a(p).animate({top:s/2,left:t/2},q.Speed,function(){i.attr("src",q.NewImage);if(!q.EffectOriginal){i.css("position",v);i.css("top",u);i.css("left",r);a("#GrpViewport").replaceWith(i)}else{a(p).animate({top:s,left:t},q.Speed,function(){i.css("position",v);i.css("top",u);i.css("left",r);a("#GrpViewport").replaceWith(i)})}});a(o).animate({top:-s/2,left:-t/2},q.Speed,function(){i.attr("src",q.NewImage);if(!q.EffectOriginal){j()}else{a(o).animate({top:-s,left:-t},q.Speed,function(){j()})}})};var m=function(s){var r=i.clone(true);if(i.css("z-index")=="auto"){i.css("z-index",100)}if(i.css("position")!="absolute"){i.css("position","relative")}a("body").append("<img class='GrpEffectImg'  id='"+k.replace("#","")+"'/>");a(k).css("position","absolute");a(k).css("top",i.offset().top);a(k).css("left",i.offset().left);if(s){a(k).css("opacity",q.StartOpacity);a(k).css("z-index",i.css("z-index")-1);a(k).attr("src",q.NewImage)}else{a(k).css("opacity",1);a(k).css("z-index",i.css("z-index")+1);a(k).attr("src",i.attr("src"));i.attr("src",q.NewImage)}if(Math.abs(q.EndTop)<i.height()&&Math.abs(q.EndLeft)<i.width()){EndTop=i.offset().top;EndLeft=i.offset().left+i.width()}else{EndTop=i.offset().top+q.EndTop;EndLeft=i.offset().left+q.EndLeft}EndOpacity=1;a(k).animate({opacity:EndOpacity,top:EndTop,left:EndLeft},q.Speed,function(){if(s){a(k).css("z-index",101)}else{EndOpacity=q.EndOpacity;a(k).css("z-index",2)}a(k).animate({opacity:EndOpacity,top:i.offset().top,left:i.offset().left},q.Speed,function(){r.attr("src",q.NewImage);r.removeAttr("imageswitch");i.replaceWith(r);a(k).remove();j()})})};return this.each(function(){i=a(this);if(!i.ImageAnimating()){h=a.data(i);i.data("imageswitch",h);k="#GrpEffectImg-"+h;p="#GrpEffectDiv1-"+h;o="#GrpEffectDiv2-"+h;var r=new Image();r.src=q.NewImage;a.ImagePreload(q.NewImage,function(){switch(q.Type){case"FadeIn":c();break;case"FlyIn":g(true);break;case"FlyOut":g(false);break;case"FlipIn":m(true);break;case"FlipOut":m(false);break;case"ScrollIn":b(true);break;case"ScrollOut":b(false);break;case"SingleDoor":n();break;case"DoubleDoor":e();break}})}})}})(jQuery);(function(a){a.fn.ImageAnimating=function(){if(this.data("imageswitch")>0){return true}else{return false}}})(jQuery);(function(a){a.fn.ImageStop=function(c,b,d){return this.each(function(){if(a(this).ImageAnimating()){var e=a.data(this,"imageswitch");a("#GrpEffectImg-"+e).stop(c,b);a("#GrpEffectDiv-"+e).stop(c,b);a("#GrpEffectDiv1-"+e).stop(c,b);a(this).stop(c,b);a("#GrpEffectImg-"+e).remove();a("#GrpEffectDiv-"+e).remove();a("#GrpEffectDiv1-"+e).remove();if(a.isFunction(d)){d()}}})}})(jQuery);(function(a){a.ImageStopAll=function(c,b,d){a(".GrpEffectImg").stop(c,b);a(".GrpEffectDiv").stop(c,b);a(".GrpEffectDiv1").stop(c,b);a(this).stop(c,b);a(".GrpEffectImg").remove();a(".GrpEffectDiv").remove();a(".GrpEffectDiv1").remove();a.data(this,"imageswitch",-1);if(a.isFunction(d)){d()}}})(jQuery);(function(a){a.ImagePreload=function(b,d){var c=new Image();c.src=b;if(a.isFunction(d)){a(c).load(d())}}})(jQuery);

(function(a){a.fn.fancyZoom=function(p){var p=p||{};var m=p&&p.directory?p.directory:"/images";var e=false;if(a("#zoom").length==0){var f=a.browser.msie?"gif":"png";var k='<div id="zoom" style="display:none;"> <table id="zoom_table" style="border-collapse:collapse; width:100%; height:100%;"> <tbody> <tr> <td class="tl" style="background:url('+m+"/tl."+f+') 0 0 no-repeat; width:20px; height:20px; overflow:hidden;" /> <td class="tm" style="background:url('+m+"/tm."+f+') 0 0 repeat-x; height:20px; overflow:hidden;" /> <td class="tr" style="background:url('+m+"/tr."+f+') 100% 0 no-repeat; width:20px; height:20px; overflow:hidden;" /> </tr> <tr> <td class="ml" style="background:url('+m+"/ml."+f+') 0 0 repeat-y; width:20px; overflow:hidden;" /> <td class="mm" style="background:#fff; vertical-align:top; padding:10px;"> <div id="zoom_content"> </div> </td> <td class="mr" style="background:url('+m+"/mr."+f+') 100% 0 repeat-y; width:20px; overflow:hidden;" /> </tr> <tr> <td class="bl" style="background:url('+m+"/bl."+f+') 0 100% no-repeat; width:20px; height:20px; overflow:hidden;" /> <td class="bm" style="background:url('+m+"/bm."+f+') 0 100% repeat-x; height:20px; overflow:hidden;" /> <td class="br" style="background:url('+m+"/br."+f+') 100% 100% no-repeat; width:20px; height:20px; overflow:hidden;" /> </tr> </tbody> </table> <a href="#" title="Close" id="zoom_close" style="position:absolute; top:0; left:0;"> <img src="'+m+"/closebox."+f+'" alt="Close" style="border:none; margin:0; padding:0;" /> </a> </div>';a("body").append(k);a("html").click(function(q){if(a(q.target).parents("#zoom:visible").length==0){l();}});a(document).keyup(function(q){if(q.keyCode==27&&a("#zoom:visible").length>0){l();}});a("#zoom_close").click(l);}var o=a("#zoom");var j=a("#zoom_table");var i=a("#zoom_close");var h=a("#zoom_content");var b=a("td.ml,td.mm,td.mr");this.each(function(q){a(a(this).attr("href")).hide();a(this).click(n);});return this;function n(w){if(e){return false;}e=true;var q=a(a(this).attr("href"));var u=p.width;var v=p.height;var r=window.innerWidth||(window.document.documentElement.clientWidth||window.document.body.clientWidth);var E=window.innerHeight||(window.document.documentElement.clientHeight||window.document.body.clientHeight);var C=window.pageXOffset||(window.document.documentElement.scrollLeft||window.document.body.scrollLeft);var B=window.pageYOffset||(window.document.documentElement.scrollTop||window.document.body.scrollTop);var F={width:r,height:E,x:C,y:B};var r=(u||q.width())+60;var E=(v||q.height())+60;var z=F;var A=Math.max((z.height/2)-(E/2)+B,0);var D=(z.width/2)-(r/2);var s=w.pageY;var t=w.pageX;i.attr("curTop",s);i.attr("curLeft",t);i.attr("scaleImg",p.scaleImg?"true":"false");a("#zoom").hide().css({position:"absolute",top:s+"px",left:t+"px",width:"1px",height:"1px"});g();i.hide();if(p.closeOnClick){a("#zoom").click(l);}if(p.scaleImg){h.html(q.html());a("#zoom_content img").css("width","100%");}else{h.html("");}a("#zoom").animate({top:A+"px",left:D+"px",opacity:"show",width:r,height:E},500,null,function(){if(p.scaleImg!=true){h.html(q.html());}d();i.show();e=false;});return false;}function l(){if(e){return false;}e=true;a("#zoom").unbind("click");g();if(i.attr("scaleImg")!="true"){h.html("");}i.hide();a("#zoom").animate({top:i.attr("curTop")+"px",left:i.attr("curLeft")+"px",opacity:"hide",width:"1px",height:"1px"},500,null,function(){if(i.attr("scaleImg")=="true"){h.html("");}d();e=false;});return false;}function c(s){a("#zoom_table td").each(function(u){var t=a(this).css("background-image").replace(/\.(png|gif|none)\"\)$/,"."+s+'")');a(this).css("background-image",t);});var r=i.children("img");var q=r.attr("src").replace(/\.(png|gif|none)$/,"."+s);r.attr("src",q);}function g(){if(a.browser.msie&&parseFloat(a.browser.version)>=7){c("gif");}}function d(){if(a.browser.msie&&a.browser.version>=7){c("png");}}};})(jQuery);

// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
$(window).load(function(){
	function switch_image(img_id){
		var collection_id = $(img_id).attr("collection");
		var current_image_id = "div#current-photo-"+collection_id;
		var largePath = $(img_id).attr("href");
		var largeAlt = $(img_id).attr("title");
		var desc = $(img_id).attr("desc");
		$("#largeImg-"+collection_id).ImageSwitch({NewImage:largePath}); 
		$("#largeImg-"+collection_id).attr({alt: largeAlt });
		$("div#desc-"+collection_id).html(desc);
		retrieve_tags($(img_id).attr("photo_id"));
	}
	
	function retrieve_tags(id){
		$.post("/photo/tags", { photo_id: id }, function(data){
			$("div#tag-list ul").html("");
			$("div.photo-tags").html("");
			var tag_list = "";
			var photo_tags = "";
			if($(data).find('phototag').length > 0 ){
				$(data).find('phototag').each(function(){
					var tag_id = "tag_" + $(this).find('id').text();
					var name = $(this).find('title').text();
					// tag_list += "<li id=\""+tag_id+"\" onclick=\"alert('asdas');\">" + name + "</li>";
					tag_list += "<li id=\""+tag_id+"\">" + name + "</li>";
					var photo_tag = document.createElement('div');
					photo_tag.id = "photo-"+tag_id;
					$("div.photo-tags").append(photo_tag);
					$(photo_tag).addClass("photo-tag-frame");
					$(photo_tag).css('top', $(this).find('top').text()+"px");
					$(photo_tag).css('left', $(this).find('left').text()+"px");
					$(photo_tag).css('width', $(this).find('width').text() + "px");
					$(photo_tag).css('height', $(this).find('height').text() + "px");
					// photo_tags += "<div id=\"photo-tag_"+tag_id+"\" class=\"photo-tag-frame\" style=\"top:"+top+"px;left:"+left+"px;width:"+width+"px;height:"+height+"px;\">";
				});
				$("div#tag-list").removeClass('empty-post-it').addClass('post-it');
				$("div#tag-list ul").html(tag_list);
			}else{
				$("div#tag-list").removeClass('post-it').addClass('empty-post-it');
			}
			// var tag_name = $(data).find('name').text();
			// var link = $(data).find('link').text();
			// if(status != 'fail'){
			// 	$("div#rating-"+ collection_id).text(updated_rating);
			// }
		}, "xml");
	}

	function reset_add_tags(){
		$("#tag-container").css("display", "none").css("position", "absolute");
		$("#resize-container").css('top', 0).css('left', 0);
		$("#tag-name").val("Tag");
		$("#url-name").val("Url");
	}
	
	$("#cancel-tag").click(function(){
		reset_add_tags();
	});

	$("a.thumb").click(function(){
		var current_image = this.id;
		switch_image(this);
		$("#current_item").html(current_image.replace(/media_/, ''));
		return false;
	});
	
	$(".one-up").click(function(){
		var collection_id = this.id;
		$.post("/collection/up", { id: collection_id, user_id: $(this).attr("user_id") }, function(data){
			var updated_rating = $(data).find('rating').text();
			var status = $(data).find('status').text();
			if(status != 'fail'){
				$("span#rating-"+ collection_id).text(updated_rating);
			}
		}, "xml");
		return false;
	});
	
	$("div.one-down").click(function(){
		var collection_id = $(this).attr("collection_id");
		$.post("/collection/down", { id: collection_id }, function(data){
			var updated_rating = $(data).find('rating').text();
			$("p#rating-"+collection_id).text(updated_rating);
		}, "xml");
	});
	
	$("a.fav-button").click(function(){
		var collection_id = $(this).attr("href");
		$.post("/collection/favup", { id: collection_id }, function(data){
			alert('saved');
		}, "xml");
		return false;
	});	

	// Adding tags, form function
	$("input#add_tag").click(function(){
		var selected_tag = $("select#tag_select :selected").val();
		var selected_tag_text = $("select#tag_select :selected").text();
		var current_tags = $("input#tag_tag").val();
		var tags = current_tags.split('|');
		// Check if tag is already in

		for(var index in tags){
			if(tags[index] == selected_tag)
				return false;
		}
		
		if(current_tags == "")
			$("input#tag_tag").val($("select#tag_select").val());
		else
			$("input#tag_tag").val(current_tags + '|' + selected_tag);
			
		old_tags = $("ul#add-tag-list").html();
		for(var tag in tags){
			$("ul#add-tag-list").html(old_tags + "<li id=\"tag_"+selected_tag+"\">"+ selected_tag_text +"</li>")
		}
	});

	// Create photo tag
	$("#resize-container").resizable({ containment: 'img.edit-image', scroll: false,
		resize: function(event, ui){
			sync_tag_info();
		}
	 }).draggable({ containment: 'img.edit-image', scroll: false,
		drag: function(event, ui){
			sync_tag_info();
		}
	});
	
	function sync_tag_info(){
		var cursorAt = $("#resize-container").position();
		var tagInfo_height = $("#resize-container").css('height').replace(/px/, "");
		$("#tag-info").css('top', cursorAt.top+parseInt(tagInfo_height)+20).css('left', cursorAt.left);
	}
	
	function create_photo_tag(_id,_top, _left, _width, _height){
		var photo_tag = document.createElement('div');
		var inside_frame = document.createElement('div');
		photo_tag.id = "photo-tag_"+_id;
		$("div.photo-tags").append(photo_tag);
		$(photo_tag).addClass("photo-tag-frame").css('top', _top).css('left', _left);
		$("#photo-tag_"+_id).append(inside_frame);
		$(inside_frame).addClass("inside-frame").css('width', _width).css('height', _height);
	}

	$("#tag-list li").live("mouseover",function(event){
		var tag_container = $("div.current-photo").position();
		var id = $(this).attr('id').replace(/tag_/, "");
		// photo-tags
		$("div#photo-tag_"+id).css('border', '4px solid #E8DFEA');
	}).live("mouseout",function(event){
		var id = $(this).attr('id').replace(/tag_/, "");
		$("div#photo-tag_"+id).css('border', '');
	});
	
	$(".photo-tag-frame").live("mouseover",function(event){
		var id = $(this).attr('id').replace(/photo-tag_/, "");
		$("li#tag_"+id).css('list-style-type', 'disc');
	}).live("mouseout",function(event){
		var id = $(this).attr('id').replace(/photo-tag_/, "");
		$("li#tag_"+id).css('list-style-type', 'none');
	});

	$("#save-tag").click(function(){
		var cur_img_pos = $("img.edit-image").position();
		var tag_container = $("#tag-container").position();
		var resize_container = $("#resize-container").position();
		var _top = (resize_container.top > 0 ) ? resize_container.top - 3 : resize_container.top;
		var _left = (resize_container.left > 0 ) ? resize_container.left - 3 : resize_container.left;
		var _width = parseInt($("#resize-container").css('width').replace(/px/, ''))+15;
		var _height = parseInt($("#resize-container").css('height').replace(/px/, ''))+15;
		var _tagName = $("#tag-name").val()
		var _link = $("#url-name").val();
		$.post("/photos/tag", { photo_id: $(this).attr("photo_id"),
								title: _tagName,
								link: _link,
		 						top: _top,
								left: _left,
								width: _width,
								height:_height
			}, function(data){
			$("div#tag-list ul").append("<li id=\"tag_"+$(data).find('id').text()+"\">" + _tagName + " <a class=\"delete-tag\" href=\""+$(data).find('id').text()+"\"> &nbsp; </a></li>");
			create_photo_tag($(data).find('id').text(), _top, _left, _width, _height);
			if ($("#tag-list").hasClass('empty-post-it')){
				$("#tag-list").removeClass('empty-post-it').addClass('edit-tag');
			}
		}, "xml");
		$("#tag-container").css("display", "none");
		reset_add_tags();
	});
	
	$("#add-tag").click(function(){
		$("#tag-container").css("position", "absolute").css("display", "block");
		sync_tag_info();
		return false;
	});

	// $("#edit-tag").click(function(){
	// 	$.post("/photos/delete_tag", { id: $(this).attr("href")}, function(data){
	// 	}, "xml");
	// 	return false;
	// });
	
	$(".delete-tag").live("click",function(event){
		var _id = $(this).attr("href");
		$.post("/photos/delete_tag", { id: _id }, function(data){
			$("#tag_"+_id).remove();
			$("#photo-tag_"+_id).remove();
			contents = $("#tag-list ul").html();
			if ( jQuery.trim(contents) == ""){
				$("div#tag-list").removeClass('post-it').addClass('empty-post-it');
			}
		}, "xml");

		return false;
	});

	//Login functions
	$('#login_link').fancyZoom();
	$('#feedback_link').fancyZoom();
	$('#signup_link').fancyZoom({width:350});
});