function plp(){}
plp.init=function(){
	plp.ie6=navigator.userAgent.indexOf('MSIE 6.0')>-1;
	//Column balancer
	plp.googleTracker()
	if (parseInt($(".leftNav").css("height"))>parseInt($(".bodyContent").css("height"))){$(".bodyContent").css("height",$(".leftNav").css("height"))}
	plp.errorSet();
	$("body").data("dev","");
	if (/letters\/\d+/.test(window.location.href)){plp.letterViewer();}
	if (/\/letters\/.*?\/[\d+\/]*/.test(window.location.href) || /letters\/\d+/.test(window.location.href)){plp.letterClickBind();}
	if (typeof pageLevelInit=="function"){
		pageLevelInit();
	}
}

plp.loadFont=function(font_obj){
	$("body").append('<script type="text/javascript" src="/media/fonts/' + font_obj.js_file + '">');
	Cufon.now();
}

plp.renderFont=function(selector_text,font_family){
	Cufon.replace(selector_text,{fontFamily:font_family});
}

plp.errorSet=function(){
	$("div.errSet div.heading a:last").bind("click",plp.errorDisplay_Click);
	var objErrs=$("div.errSet > ul > li");
	for (var i=0;i<objErrs.length;i++){
		$("#id_" + objErrs[i].className).parent().find("label").css({'color':'red','font-size':'13px'});
		
	}
}
plp.errorDisplay_Click=function(){
	var setClass;
	var actFunction;
	if ($(this).hasClass("expandError")){
		setClass="collapseError";
		actFunction=function(){$("div.errSet ul").show()};
	} else {
		setClass="expandError";
		actFunction=function(){$("div.errSet ul").hide()};
	}
	$(this).attr("className",setClass);
	actFunction();
	return false;
}


plp.letterViewer=function(){
	$("head").append('<link rel="StyleSheet" href="/media/css/hideContent.css" type="text/css" />');
	if ($("#veilBackDiv").length>0){
		$("#veilBackDiv").height(VEIL.getViewportHeight()).width(VEIL.getViewportWidth());
	}
	if (typeof document.getElementById("letter_wrapper").font_data!="undefined"){jQuery("#letter_wrapper").data("font_data",document.getElementById("letter_wrapper").font_data);}
	if (typeof document.getElementById("letter_wrapper").image_data!="undefined"){jQuery("#letter_wrapper").data("image_data",document.getElementById("letter_wrapper").image_data);}
	var local_data={'font_data':jQuery("#letter_wrapper").data("font_data"),'image_data':jQuery("#letter_wrapper").data("image_data")};
	plp.fontLoaderPreview();
	jQuery("#wrapEnv").remove();
	if (navigator.userAgent.indexOf('MSIE 7')==-1){
		$("#letter_wrapper div.footer ul li a").css("display","inline");
	}
	$("div.footer ul").css("margin-left","10px").find("li a").css("display","block")
	
	$("h2.greeting").css({"font-size":  local_data.font_data.bold.pixel_size + "px","margin":"0px","padding":"0px","font-weight":"bold"})
	plp.renderFont("h2.greeting",local_data.font_data.bold.name);
	$("#letter_wrapper div.letter_content").height($("#letter_wrapper div.letter_content").height()+22-$("#letter_wrapper h2.greeting:first").height())
	$("#letter_wrapper").find("div.footer").show();
	
	$("div.letter_content").css("line-height",local_data.font_data.bold.line_height + "px");
	
	
	
	//Set Paging for letter
	jQuery("div.main div.read_more span.page_up,div.main div.read_more span.page_dn").bind("click",plp.letterPaging);
	
	//Flip through images
	jQuery("#img_clip div.cap_nav a").bind("click",plp.letterImageRotator);
	
	//Close Letter
	jQuery("#letter_wrapper a.close_img").bind("click",function(){
		$("#letter_wrapper").parent().hide();
		$("#letter_wrapper").css("background","white");
		try{
			VEIL.cleanup();
			$("#veilBackDiv").remove();
		}catch(err){
			if (typeof $("body")[0].pageVeilBackID!="undefined"){
				$($("body")[0].pageVeilBackID).remove();
				$($("body")[0].pageVeilFrontID).remove();
			}
			$("#veilBackDiv").remove();
		};
		setTimeout(function(){$("#letter_wrapper").parent().remove();},100);
		return false;
	});
	
	$("#letter_wrapper div.read_more h2, .readMoreLinks").hover(
		function(e){
			if($("#letter_wrapper")[0].hoverTimeout!=undefined){clearTimeout($("#letter_wrapper")[0].hoverTimeout);}
			plp.readMoreHover(e.originalEvent.type);
		},function(e){
			var ie8ScopeEvent = e.originalEvent.type;
			$("#letter_wrapper")[0].hoverTimeout=setTimeout(function(){
				plp.readMoreHover(ie8ScopeEvent);
			},200);;
	});
	plp.readMoreHover=function(eventType){
		if ($("ul.readMoreLinks li").length>0){
			switch(eventType){
				case "mouseover":
					$("#letter_wrapper div.read_more").css("position","relative");
					if (plp.ie6){$("#letter_wrapper div.read_more h2").css("background","url(/media/img/indicator_arrow_dn.gif) no-repeat 3px 7px #EFEAE4");} else {$("#letter_wrapper div.read_more h2").css("background","url(/media/img/indicator_arrow_dn.png) no-repeat 3px 7px #EFEAE4");}
					$("#letter_wrapper div.read_more ul.readMoreLinks").css("display","block").css("position","absolute");
					break;
				case "mouseout":
					$("#letter_wrapper div.read_more").css("position","").css("background","");
					$("#letter_wrapper div.read_more h2").css("background","");
					$("#letter_wrapper div.read_more ul.readMoreLinks").css("display","").css("position","");
					if (plp.ie6){$("#letter_wrapper div.read_more h2").css("background","url(/media/img/indicator_arrow.gif) no-repeat 3px 7px");}
					break;
			}
		}
	}
	
	if (!plp.ie6){
		setTimeout(function(){
			$("#div.letter_content").css({"font-size":local_data.font_data.standard.pixel_size + "px","line-height":local_data.font_data.standard.line_height + "px"});
			plp.renderFont("div.letter_content",local_data.font_data.standard.name);
			$("[id=letter_content_cover]").remove();
			$("div.letter_content").find("*").css("visibility","visible");
			//THIS IS AN UGLY HACK
			//To-Do, figure out the leading/trailing blank spaces in the freaking render
			if ($("cufon").length>0 && navigator.userAgent.indexOf('MSIE 8')==-1){
				
				//$(".letter_content ol").prev().remove().end().next().remove();
				$(".letter_content cufon").each(function(){if($.trim($(this).text()).length==0){$(this).remove();};})
				$("div.letter_content").find("h2.greeting").nextAll("p").nextAll(":not(div.reset)").remove();
				/*
				if(navigator.userAgent.indexOf('MSIE')<0){
					jQuery("div.letter_content p").next(":not(.reset)").remove();
				}
				*/
			}
			plp.letterPageBalance();
		},100);
	} else {
		setTimeout(function(){$("[id=letter_content_cover]").remove();$("div.letter_content").find("*").css({"visibility":"visible","line-height":"18px"});plp.letterPageBalance();},100);
	}
}


plp.letterPageBalance=function(){
	//Make the letter content height equal to a page height
	jQuery("div.letter_content div.reset").height(0)
	var new_reset_height = jQuery("div.letter_content").height()-(jQuery("div.letter_content").attr("scrollHeight")%jQuery("div.letter_content").height())
	if (new_reset_height>450){
		var last_vis=jQuery("div.letter_content *:last").prev();
		last_vis.height(last_vis.height() + new_reset_height-jQuery("div.letter_content").height()-1)
	} else {
		jQuery("div.letter_content div.reset").height(new_reset_height);
	}
	jQuery("div.letter_content")[0].scrollTop=0;
}

plp.letterPaging=function(){
		jQuery("div.main div.read_more span.page_up,div.main div.read_more span.page_dn").unbind("click",plp.letterPaging);
		var local_data={"dir":($(this).hasClass("page_up"))?0:1,"content_area":$("div.letter_content:visible:first")};
		//local_data={"dir":1,"content_area":$("div.letter_content:visible:first")};
		local_data["cur"]=local_data.content_area.attr("scrollTop");
		local_data["max"]=local_data.content_area.attr("scrollHeight");
		local_data["pane"]=local_data.content_area.height();
		local_data["scroll"]=local_data.pane/3;
		if (local_data.dir==1){local_data["new_top"]=(local_data.cur+local_data.scroll>=local_data.max)?local_data.max-local_data.scroll:local_data.cur+local_data.scroll;}
		else {local_data["new_top"]=(local_data.cur-local_data.scroll<0)?0:local_data.cur-local_data.scroll;}
		local_data.content_area.animate({"scrollTop":local_data.new_top},350,function(){jQuery("div.main div.read_more span.page_up,div.main div.read_more span.page_dn").bind("click",plp.letterPaging);});
		local_data["page"]=1+Math.round(local_data.new_top/local_data.pane);
		$("#letter_wrapper div.read_more div.page_nav strong").text(local_data.page);
}

plp.letterImageRotator=function(){
		var local_data={}
		local_data["current_id"]=$("#img_clip img.display_img").attr("src").match(/\/image\/viewer\/(\d+)\//i)[1];
		local_data["image_list"]=jQuery("#letter_wrapper").data("image_data");
		var i=0;
		for (i=0;i<local_data["image_list"].length;i++){
			if (local_data["image_list"][i].id==local_data["current_id"]){
				break;
			}
		}
		local_data["next_img"]=(i==local_data["image_list"].length-1)?local_data["image_list"][0]:local_data["image_list"][i+1];
		local_data["prev_img"]=(i==0)?local_data["image_list"][local_data["image_list"].length-1]:local_data["image_list"][0];
		if($(this).hasClass("next")){
			$("#img_clip img.display_img").attr("src","/image/viewer/" + local_data["next_img"].id + "/");
			$("#img_clip div:cap_nav span:first").text(local_data["next_img"].caption);
		} else {
			$("#img_clip img.display_img").attr("src","/image/viewer/" + local_data["prev_img"].id + "/");
			$("#img_clip div:cap_nav span:first").text(local_data["prev_img"].caption);
		}
		return false;
}

plp.letterClickBind=function(){
	$("li[id*=letter_] a").bind("click",function(){
		//jQuery.rule('#letter_wrapper div.letter_content > *{ visibility:hidden}').appendTo('style');
		local_data={"display_id":"letter_presentation"}
		local_data["letter_id"]=$(this).attr("href").replace(/\/letters\/(\d+)\//,"$1");
		local_data["target_img"] = $(this).find("img")
		local_data["window_height"]=VEIL.getViewportHeight()-30+"px";
		local_data["gallery_info"]=$("body")[0].gallery_data[local_data.letter_id];
		scroll(0,0);
		VEIL.show(document.createElement("div"));
		local_data["super_impose_image_id"]='img' + new UUID().id.replace(/-/g,'')
		local_data["super_impose_image_src"]=local_data["target_img"].attr("src").replace(/png/,'gif')
		local_data["super_impose_image"]=$("<img />");
		local_data["super_impose_image"].attr("id",local_data["super_impose_image_id"]).attr("src",local_data["super_impose_image_src"])
		local_data["super_impose_image"].css({"position":"absolute","top":local_data["target_img"].offset().top + "px","left":local_data["target_img"].offset().left + "px"});
		$("body").append(local_data["super_impose_image"]);
		local_data["final_position"]={"top":local_data.gallery_info.position_top,"left":parseInt((($("body").width()-local_data["target_img"].width())/2)+local_data.gallery_info.position_left)};
		jQuery.getJSON('/json/letter/' + local_data["letter_id"] + '/',function(result){
			local_data["result_data"]=result;
		})
		local_data["super_impose_image"].animate({top:local_data["final_position"].top + 38 + "px",left:local_data["final_position"].left + "px"},500,function(){
			var loadResult=function(){
				$("body").append($(document.createElement("div")).attr("id","wrapEnv").css("width",local_data.result_data.gallery_data.content_width + "px").css("height",local_data.result_data.gallery_data.content_height + "px").css("margin-top","40px").css("position","absolute").css("top","0px").css("left",($("body").width()-local_data.result_data.gallery_data.content_width)/2 + "px"));
				$("#wrapEnv").append("<div style='width:" + local_data.result_data.gallery_data.content_width + "px;" + local_data.result_data.gallery_data.content_height + "px;' id='" + local_data["display_id"] + "'></div>");
				swfobject.embedSWF(
					local_data.result_data.animation.folder + local_data.result_data.gallery_data.swf_file,
					local_data["display_id"],
					local_data.result_data.gallery_data.content_width,
					local_data.result_data.gallery_data.content_height,
					"9.0.0",
					null,
					{},
					{'wmode':'transparent','bgcolor':'#FFF','allowfullscreen':'true','allowscriptaccess':'always'},
					{},
					function(e){plp.contentLoader(local_data);}
				);
				
			}
			setTimeout(function(){
				var pend_results = function(){
					if (typeof local_data["result_data"]=="undefined"){
						setTimeout(pend_results,500);
					} else {
						loadResult();
					}
				}
				pend_results();
			},250);
		});
		return false;
	});
}

plp.contentLoader=function(){
	setTimeout(function(){$("#" + local_data["super_impose_image_id"]).remove();},75);
	var loader_routine=function(){
		if (typeof $("body")[0].pageVeilBackID!="undefined"){$("#veilBackDiv").remove();}
		$("head").append('<link rel="StyleSheet" href="/media/css/hideContent.css" type="text/css" />');
		local_data["html_loader"]=document.createElement("div");
		$("body").append(local_data["html_loader"]);
		local_data["html_loader"].innerHTML = local_data.result_data.rendered;		
		plp.loadFont(local_data.result_data.font_data.bold);
		if (!plp.ie6){
			plp.loadFont(local_data.result_data.font_data.standard);
		}
		jQuery("#letter_wrapper").data("font_data",local_data.result_data.font_data);
		jQuery("#letter_wrapper").data("image_data",local_data.result_data.images);
		plp.fontLoaderPreview();
		setTimeout(plp.letterViewer,200);
	}
	setTimeout(loader_routine,parseInt(local_data.result_data.gallery_data.animation_pause));
}

plp.fontLoaderPreview=function(){
	$("div.letter_content").append($("<div></div>").attr("id","letter_content_cover").css({"height":$("div.letter_content").height()+"px","width":$("div.letter_content").width()}))
	$("#letter_content_cover").append($("<img src='/media/img/ajax-loader.gif' alt='' />"));
	$("#letter_content_cover img").css({"visibility":"visible","position":"absolute","top":parseInt(($("#letter_content_cover").height()-100)/2) + "px","left":parseInt(($("#letter_content_cover").width()-100)/2) + "px"})
}


plp.googleTracker=function(){
    var domJSGA=document.createElement("script");
    domJSGA.src=(("https:" == document.location.protocol) ? "https://ssl." : "http://www.") + 'google-analytics.com/ga.js';
    domJSGA.type="text/javascript";
    domJSGA.loadState=0
    document.getElementsByTagName("head")[0].appendChild(domJSGA)
    domJSGA.pageTracker=function(){
        if (typeof _gat=="object"){
            var pageTracker = _gat._getTracker("UA-3869537-11");
            pageTracker._trackPageview();
        } else {
            setTimeout(domJSGA.pageTracker,100);
        }
    }
    domJSGA.pageTracker()
}

plp.noCacheLink=function(srcLink){
	if (srcLink.indexOf("?")==-1){
		return srcLink + "?_nocache=" + new Date().getTime();
	} else {
		return srcLink.split("?")[0] + "?_nocache=" + new Date().getTime() + "&" + srcLink.split("?").slice(1).join("?");
	}
}

$(document).ready(function(){
	plp.init();
});

