// -------------
//--- JQUERY ---
// -------------
$(document).ready(function () { //HTML DOM document is ready

	//image rollover
	$("a.roll").bind('mouseover focus', function(event) {
		$(this).find('img').attr("src", $(this).find('img').attr("src").split('_f1').join('_f2'))
	}).bind('mouseout blur', function(event) {/*mouseout*/
		$(this).find('img').attr("src", $(this).find('img').attr("src").split('_f2').join('_f1'))
	});

	//image lit
//	$("a.lit").bind,  function(event) {
//		$(this).find('img').attr("src", $(this).find('img').attr("src").split('_f1').join('_f2'))
//	};
	
	//table row rollover
	$("table.financial tbody tr").mouseover(function() {
		$(this).addClass("hover");
	}).mouseout(function() {
		$(this).removeClass("hover");
	});
	//table row rollover
	$("table.broker tbody tr").mouseover(function() {
		$(this).addClass("hover");
	}).mouseout(function() {
		$(this).removeClass("hover");
	});
	// Check All boxes
	$("#category_all").click(function() {
		var checked_status = this.checked;
		$("input[@name=category]").each(function()
		{
			this.checked = checked_status;
		});
	});	

	//open links in a new window - rel=external
	$("a[rel=external]").attr("target","_blank").each(function(n) {
		$(this).attr("title") !='' ? this.title=$(this).attr("title")+'. Opens in a new browser window.' : this.title='Opens in a new browser window.';
	});

	// add print link to tools
	//$("ul#tools li:last").before("<li><a class=\"printpage\" href=\"javascript:window.print()\">Print this page<\/a></li>");
	
	//rns popup
	//$("td .rnspopup").attr("title","Opens in a new browser window.").click(function() {
	//	window.open($(this).attr('href'),"rnspopup","scrollbars=1,statusbar=1,resizable=1,width=950,height=500'");return false;
	//});

	//form button rollovers
	$("form input.button").hover(highlight_btn,restore_btn);
	function highlight_btn(event) {$(this).addClass('button_f2');}
	function restore_btn(event) {$(this).removeClass('button_f2');}
	
	$("form input.button_save").hover(highlight_savebtn,restore_savebtn);
	function highlight_savebtn(event) {$(this).addClass('button_save_f2');}
	function restore_savebtn(event) {$(this).removeClass('button_save_f2');}

	$("form input.button_save").focus(highlight_savebtn);
	$("form input.button_save").blur(restore_savebtn);
	function restore_savebtn(event) {$(this).removeClass('button_save_f2');}

	$("form input.button_savenote").hover(highlight_savenotebtn,restore_savenotebtn);
	function highlight_savenotebtn(event) {$(this).addClass('button_savenote_f2');}
	function restore_savenotebtn(event) {$(this).removeClass('button_savenote_f2');}

	$("form input.button_savenote").focus(highlight_savenotebtn);
	$("form input.button_savenote").blur(restore_savenotebtn);
	function restore_savenotebtn(event) {$(this).removeClass('button_savenote_f2');}

	$("form input.submit").hover(highlight_btn2,restore_btn2);
	function highlight_btn2(event) {$(this).addClass('submit_f2');}
	function restore_btn2(event) {$(this).removeClass('submit_f2');}

	$("form input.submit").focus(highlight_btn2);
	$("form input.submit").blur(restore_btn2);
	function restore_btn2(event) {$(this).removeClass('submit_f2');}
	
	
	$("#confirmdelete input.submit").hover(highlight_btn2,restore_btn2);
	function highlight_btn2(event) {$(this).addClass('submit_f2');}
	function restore_btn2(event) {$(this).removeClass('submit_f2');}
	
	$("#confirmdelete input.submit").livequery('mouseover focus', function(event) {
		$(this).addClass('submit_f2');
	}).livequery('mouseout blur', function(event) {
		$(this).removeClass('submit_f2');
	});


	//Share price module tabs
//	$("ul#sharepricetabs li a").livequery('click', function(event) {
//		var urlData = $(this).attr('href').split("=");
//		var strPageId = urlData[1].split("&");
//		var strStockExchange = urlData[2].split("#");
//		$.get('managed_content/library/feature_panels/shareprice.asp', {'pageid' : strPageId[0], 'se' : strStockExchange[0]}, function(html){
//			$('div#sharepricemodule').html(html);
//		}); return false;
//	});


	//News module tabs
//	$("ul#newstabs li a").livequery('click', function(event) {
//		var urlData = $(this).attr('href').split("=");
//		var strPageId = urlData[1].split("&");
//		var strNewsType = urlData[2].split("#");
//		$.get('managed_content/modules/newslide.asp', {'pageid' : strPageId[0], 'news' : strNewsType[0], 'ajax' : 'true'}, function(html){
//			$('div#newsmodule').html(html);
//		}); return false;
//	});
	
	
	//show/hide graph details - regional profiles: financial
//	$("div.graphdetails").hide().before("<p class=\"clearboth bold\"><a href=\"#\" class=\"showdetails\">View chart figures</a></p>");
//	$("p .showdetails").click(function() {
//		if ($(this).parent().next().is(':hidden')) {
//			$(this).parent().next().slideDown("normal");$(this).text("Hide chart figures")
//		} else {
//			$(this).parent().next().slideUp("normal");$(this).text("View chart figures")
//		} return false;
//	});

});

// --------------------------------------
// --- DOWNLOAD KIT SELECT ALL BUTTON ---
// --------------------------------------
function selectDownload(){
	var intDownloads=document.getElementById('assetlist').elements.length;
	for(var i=3;i<intDownloads;i++){
		if(document.getElementById('assetlist').checkall.checked==true){
			document.getElementById('assetlist').elements[i].checked=true;
		}else{
			document.getElementById('assetlist').elements[i].checked=false;
		}
	}
}

// --------------------------------------
// --- PRESENTATIONS POPUP ---
// --------------------------------------
var _POPUP_FEATURES = 'location=0,statusbar=0,menubar=0,width=773,height=600';

function raw_popup(url, target, features) {
if (features ==""){
	theFeatures = _POPUP_FEATURES;
}else{
	theFeatures = features
}
var theWindow = window.open(url, target, theFeatures);
theWindow.focus();
return theWindow;
}

function link_popup(src, target, features) {
	return raw_popup(src, target, features);
}// ---- FUNCTIONS ---//
var changeTabs = function(layerId) {
	var showToggle=true;
	$("#toolstab_content > div").each(function(n) {
		if ($(this).hasClass("showtool")) {
			$(this).hide().removeClass("showtool");
			showToggle=false;
		}
	});
	if (showToggle==true) {
		$("#"+layerId).slideDown().addClass("showtool")
	} else {
		$("#"+layerId).show().addClass("showtool")
	};
}

var highlitghtTab = function(classname) {
	$("#toolstab > li > a").each(function(n) {
		if ($(this).hasClass(""+classname+"")) {
			$(this).addClass("lit");
		} else {
			$(this).removeClass("lit");	
		}
	});
}

var updateCount = function() {
	var total = 0;
	var strPages = "page";
	var strNotes = "note";
	$("#toolsdata td :checkbox:checked").each(function() {total=total+1;});
	if (total!=1) {strPages=strPages+"s";strNotes=strNotes+"s";}
	$(".savedpagesbuttons .total").text(total+" "+strPages+" selected");
	$(".notesbuttons .total").text(total+" "+strNotes+" selected");
};

var checkAll = function(boolean) {
	$("input[name=item]").each(function() {$("input[name=item]").attr('checked', boolean)});
	var selector_checked = $("#toolsdata tr td :checkbox:checked").length;
	if (selector_checked >0){
		$("#toolsdata tr td :checkbox:checked").each(function() {$("#toolsdata tr").addClass("selected")});
	} else {
		$("#toolsdata tr td :not:checkbox").each(function() {$("#toolsdata tr").removeClass("selected")});
	}
};

var updateNumbering = function() {
	$("#toolsdata td span.number").each(function(i){$(this).text(i+1);});
	$("#toolsdata button.delete").each(function(i){i=i+1;$(this).attr("id", "del_"+(i));});
};

var updateOrder = function(data) {
	var strList = $(":input[name=list]").val();
	var strOrder = $(":input[name=order]").val();
	$.post("managed_content/library/tools/fragment/reorder.asp", { update: data, order: strOrder, list: strList});
	$("#toolsdata tbody tr").each(function(i){i=i+1;$(this).attr("id", "id_"+(i));});
};

var outputList = function(url,div,message) {
	var strGetFields = $(":input:checkbox").serializeArray();
	var strItems =",";
	var strErrorText=div.html();
	jQuery.each(strGetFields, function(i, field){strItems=strItems+(field.value+",");});
	if (strItems===",") {
		if (strErrorText==="") {div.html(message);}
	} else {
		div.html("");
		window.open(url+strItems);
	}
}

var getCookie = function(name) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
		begin = dc.indexOf(prefix);
		if (begin != 0) return null;
	} else
		begin += 2;
	var end = document.cookie.indexOf(";", begin);
	if (end == -1)
		end = dc.length;
	return unescape(dc.substring(begin + prefix.length, end));
}
//--- FUNCTIONS END ---/



$(document).ready(function(){
	
	//--- TABS ---//
	$("#toolstab a.opensavepage").livequery('click', function(event) {
		changeTabs("savepagetab");
		highlitghtTab("opensavepage");
		return false;
	});
	$("a.opennotes").livequery('click', function(event) {
		changeTabs("notestab");
		highlitghtTab("opennotes");
		return false;
	});
	$("#toolstab a.openglossary").livequery('click', function(event) {
		$("div.glossarysearchresults").html("");
		$("input#glossarysearchterm").val("");
		changeTabs("glossarytab");
		highlitghtTab("openglossary");
		return false;
	});
	$("#toolstab_content a.closetab").livequery('click', function(event) {
		$(this).parent().parent().slideUp("slow").removeClass("showtool");
		$("#toolstab > li > a").each(function(n) {$(this).removeClass("lit");});
		return false;
	});
	//--- TABS END---//
	
	
	//--- SAVE PAGE ---//
	$("form.savepageform").submit(function() {
		var strSavepageurl=$(this.savepageurl).val()
		var strSavepageTitle=$(this.pagetitle).val()
		$("div.savepage,li.savepageform").load("managed_content/library/tools/fragment/savepage.asp", {
			savepageurl: strSavepageurl, 
			pagetitle: strSavepageTitle, 
			addpage: '1'
		}, function() {
			$("div.latestpages").load("managed_content/library/tools/fragment/latestpages.asp", {ajax: 'true'});
			$("span.pagecount").load("managed_content/library/tools/fragment/countpages.asp", {ajax: 'true'});
		});
		return false;
	})
	//--- SAVE PAGE END ---//


	//--- NOTES ---//
	$("form.notestool").livequery('submit', function(event) {
		var strPageTitle=$(this.pagetitle).val()
		var frmPageUrl=$(this.savepageurl).val()
		var NoteText=$(this.note).val()
		var strUpdate=$(this.updatenote).val()
		$("div.noteform").load("managed_content/library/tools/fragment/notes.asp", {
			note: NoteText,
			savepageurl: frmPageUrl,
			pagetitle: strPageTitle,
			addnote: '1',
			updatenote: strUpdate,
			requiredfields: 'note',
			ajax: 'true'
		}, function() {
			$("li.editnote").load("managed_content/library/tools/tools_shortcuts.asp .editnote", {ajax: 'true'});
			$("span.notecount").load("managed_content/library/tools/fragment/countnotes.asp", {ajax: 'true'});
		});
		return false;
	})
	$("#notestab a.vieweditnotes").livequery('click', function(event){
		var strHref=$(this).attr("href");
		$("div.noteform").load("managed_content/library/tools/fragment/notes.asp", { backtoform: 'true', href: strHref });
		return false;
	})
	//--- NOTES END ---//


	//--- GLOSSARY ---//
	if ( $("#glossarytab").length > 0 ) {
		$("#glossarysearchterm").autocomplete(glossaryterms, {
			minChars: 1,			/*minumun no. of characters before the results are displayed*/
			matchContains: false,	/*look inside (i.e. does "ba" match "foo bar") the search results*/
			scroll: true,			/*set to false to display first 10 results only*/
			selectFirst: false		/*first autocomplete value selected?*/
		});
	}
	$("form.glossarysearch").livequery('submit', function(event) {
		var strTerm=$(this.glossarysearchterm).val()
		$("div.glossarysearchresults").load("managed_content/library/tools/fragment/glossarysearch.asp", {
			glossarysearchterm: strTerm,
			glossarysearch: '1',
			ajax: 'true',
			requiredfields: 'glossarysearchterm'
		});
		//Omniture addition
		if( typeof(s) != 'undefined' ) {
			s.tl(this,'o','CR08 Report Tools: Glossary: '+strTerm);
		}
		//Omniture addition ends
		return false;
	})
	//--- GLOSSARY END ---//

	
	//--- TOOLS DATA TABLES ---//
	
	//--- select all/deselect all
	$("#toolsdata #select").html("<a href=\"#\" id=\"checkboxall\">Select all</a> | <a href=\"#\" id=\"checkboxnone\">Deselect all</a>");	
	$("#checkboxall").click(function() {checkAll(true);updateCount();return false;});
	$("#checkboxnone").click(function() {checkAll(false);updateCount();return false;});
	$("#toolsdata #reorder").text("Re-order");
	
	//--- count selected items
	$("#toolsdata td .count").click(function() {
		$(this).parents("tr").toggleClass("selected");
		updateCount();
		$("div.errormessage").html("")
	});
	
	//--- row hover state
	$("#toolsdata tbody tr").mouseover(function() {
			$(this).addClass("hover").find("td img").attr("src", $(this).find("td img").attr("src").split('_f1').join('_f2'))
		}).mouseout(function() {
			$(this).removeClass("hover").find("td img").attr("src", $(this).find("td img").attr("src").split('_f2').join('_f1'))
		;}
	);
	
	//--- Reorder (drag and drop)
	$("#toolsdata tbody td.dragme").addClass("dragmeimage")
	$("#toolsdata").tableDnD({
		onDragClass: "dragclass",
		dragHandle: "dragme",
		onDrop: function(table, row) {
			updateNumbering();
			updateOrder($.tableDnD.serialize())			
		}
	});
	
	//--- delete
	$("button.delete").livequery('click', function(event) {
		var strList = $(":input[name=list]").val();
		var strOrder = $(":input[name=order]").val();
		var strId = $(this).attr("id")
		$(this).parents("tr").find("td .close").not(':last').slideUp("slow").end()
		.filter(':last').slideUp("slow", function() { 
			var checkbox=$(this).parents("tr").find("td div div :checkbox:checked").length
			$(this).parents("tr").remove();
			if (checkbox > 0) {updateCount();}
			updateNumbering();	
			$.post("managed_content/library/tools/fragment/removeitem.asp", { deleterow: 'true', update: strId, order: strOrder, list: strList});
			
		}); return false;
	});
		
	//--- set number of items selected
	$('.savedpagesbuttons .total').text('0 pages selected')
	$('.notesbuttons .total').text('0 notes selected')
	
	
	
	//show/hide note
	$("div.opennote").hide().before("<p class=\"clearboth\"><a href=\"#\" class=\"opennote\">+ Open note</a></p>");
	$("a.opennote").click(function() {
		if ($(this).parent().next("div.opennote").is(':hidden')) {
			$(this).parent().next().slideDown("normal");
			$(this).text("- Close note")
		} else {
			$(this).parent().next().slideUp("normal");
			$(this).text("+ Open note")
		} return false;
	});
	
	
	//--- NOTES buttons
	$("input.downloadnotertf").click(function() {
		//Omniture addition
		if( typeof(s) != 'undefined' ) {
			s.tl(this,'o','CR08 Report Tools: Download note in RTF');
		}
		//Omniture addition ends																	
		if(/MSIE [1-6]/.test(navigator.userAgent)){
			//go to non-js version of the page
		} else {
			var errorDiv=$(this).parent().find("div.errormessage");
			var strOrder = $(":input[name=order]").val();
			outputList("managed_content/library/tools/fragment/downloadnotes.asp?order="+strOrder+"&items=",errorDiv,"Please select a note to download.");
			return false;
		}
	})
	$("input.downloadnotehtml").click(function() {
		//Omniture addition
		if( typeof(s) != 'undefined' ) {
			s.tl(this,'o','CR08 Report Tools: Print note');
		}
		//Omniture addition ends
		var errorDiv=$(this).parent().find("div.errormessage");
		var strOrder = $(":input[name=order]").val();
		outputList("managed_content/library/tools/fragment/printnotes.asp?order="+strOrder+"&items=",errorDiv,"Please select a note to print.");
		return false;
	})
	$("input.deletenote").click(function() {
		//Omniture addition
		if( typeof(s) != 'undefined' ) {
			s.tl(this,'o','CR08 Report Tools: Delete note');
		}
		//Omniture addition ends
		var strErrorDiv = $(this).parents("div.buttonwrapper").find("div.errormessage")							 
		var strGetFields = $(":input:checkbox").serializeArray();
		var strItems ="";
		var strErrorText=strErrorDiv.html();
		jQuery.each(strGetFields, function(i, field){strItems=strItems+(field.value+",");});
		if (strItems==="") {
			if (strErrorText==="") {strErrorDiv.html("Please select a note to delete.");}
		} else {
			strErrorDiv.html("");
			var strOrder=$(this.order).val()
			$("div#confirmdelete").load("managed_content/library/tools/fragment/confirmdeletenotes.asp", {
				ajax: 'true',
				item: strItems,
				order: strOrder
			});
		}; return false;
	})
	
	
	
	//--- SAVED PAGES buttons
	$("input.downloadpagepdf").click(function() {
		//Omniture addition
		if( typeof(s) != 'undefined' ) {
			s.tl(this,'o','CR08 Report Tools: Download page as PDF');
		}
		//Omniture addition ends
		//--- UPDATE COOKIE NAME & SITE URL
		var strID=getCookie('CR08')
	//	var strSiteUrl=	"http://www.prudentialreports.com/reports/cr2008/";
		var strSiteUrl=	"http://www.prudentialreports.com/2008cr";
	//	var strSiteUrl=	"http://prudential.webdevelopment/cr2009/";
		//--- UPDATE COOKIE NAME & SITE URL
		var errorDiv=$(this).parent().find("div.errormessage");
		var strOrder = $(":input[name=order]").val();
		outputList("http://files.the-group.net/library/_webcore/report_tools/createpdf/v1/index.cfm?site="+strSiteUrl+"/savedpages.asp?id="+strID+"__order="+strOrder+"__items=",errorDiv,"Please select a page to download.");
		return false;
	})
	$("input.downloadpagehtml").click(function() {
		//Omniture addition
		if( typeof(s) != 'undefined' ) {
			s.tl(this,'o','CR08 Report Tools: Download page as HTML');
		}
		//Omniture addition ends
		var errorDiv=$(this).parent().find("div.errormessage");
		var strOrder = $(":input[name=order]").val();
		outputList("savedpages.asp?print=true&order="+strOrder+"&items=",errorDiv,"Please select a page to print.");
		return false;
	})
	$("input.deletepage").click(function() {
		//Omniture addition
		if( typeof(s) != 'undefined' ) {
			s.tl(this,'o','CR08 Report Tools: Delete page');
		}
		//Omniture addition ends																	 
		var strErrorDiv = $(this).parents("div.buttonwrapper").find("div.errormessage")							 
		var strGetFields = $(":input:checkbox").serializeArray();
		var strItems ="";
		var strErrorText=strErrorDiv.html();
		jQuery.each(strGetFields, function(i, field){strItems=strItems+(field.value+",");});
		if (strItems==="") {
			if (strErrorText==="") {strErrorDiv.html("Please select a page to delete.");}
		} else {
			strErrorDiv.html("");
			var strOrder=$(this.order).val()
			$("div#confirmdelete").load("managed_content/library/tools/fragment/confirmdeletepages.asp", {
				ajax: 'true',
				item: strItems,
				order: strOrder
			});
		}; return false;
	})
	
	$("input.emailpage").livequery('click', function(event) {
		//Omniture addition
		if( typeof(s) != 'undefined' ) {
			s.tl(this,'o','CR08 Report Tools: Email page');
		}
		//Omniture addition ends																						 
		var strErrorDiv = $(this).parents("div.buttonwrapper").find("div.errormessage")							 
		var strGetFields = $(":input:checkbox").serializeArray();
		var strItems ="";
		var strErrorText=strErrorDiv.html();
		var strEmailaddress=$(":input[name=emailaddress]").val()
		jQuery.each(strGetFields, function(i, field){strItems=strItems+(field.value+",");});
		if (strItems==="") {
			if (strErrorText==="") {
				strErrorDiv.html("Please select a page to email.");
				$(":input[name=emailaddress]").val("");
			}
		} else {
			strErrorDiv.html("");
			$("div#notesemail").load("managed_content/library/tools/fragment/emailpages.asp", {
				ajax: 'true',
				email: 'true',
				emailaddress: strEmailaddress,
				requiredfields: 'emailaddress',
				item: strItems
			});
		}; return false;
	})
	//--- TOOLS DATA TABLES END ---//
});/* Copyright (c) 2007 Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Version: 1.0.2
 * Requires jQuery 1.1.3+
 * Docs: http://docs.jquery.com/Plugins/livequery
 */
(function($){$.extend($.fn,{livequery:function(type,fn,fn2){var self=this,q;if($.isFunction(type))fn2=fn,fn=type,type=undefined;$.each($.livequery.queries,function(i,query){if(self.selector==query.selector&&self.context==query.context&&type==query.type&&(!fn||fn.$lqguid==query.fn.$lqguid)&&(!fn2||fn2.$lqguid==query.fn2.$lqguid))return(q=query)&&false;});q=q||new $.livequery(this.selector,this.context,type,fn,fn2);q.stopped=false;$.livequery.run(q.id);return this;},expire:function(type,fn,fn2){var self=this;if($.isFunction(type))fn2=fn,fn=type,type=undefined;$.each($.livequery.queries,function(i,query){if(self.selector==query.selector&&self.context==query.context&&(!type||type==query.type)&&(!fn||fn.$lqguid==query.fn.$lqguid)&&(!fn2||fn2.$lqguid==query.fn2.$lqguid)&&!this.stopped)$.livequery.stop(query.id);});return this;}});$.livequery=function(selector,context,type,fn,fn2){this.selector=selector;this.context=context||document;this.type=type;this.fn=fn;this.fn2=fn2;this.elements=[];this.stopped=false;this.id=$.livequery.queries.push(this)-1;fn.$lqguid=fn.$lqguid||$.livequery.guid++;if(fn2)fn2.$lqguid=fn2.$lqguid||$.livequery.guid++;return this;};$.livequery.prototype={stop:function(){var query=this;if(this.type)this.elements.unbind(this.type,this.fn);else if(this.fn2)this.elements.each(function(i,el){query.fn2.apply(el);});this.elements=[];this.stopped=true;},run:function(){if(this.stopped)return;var query=this;var oEls=this.elements,els=$(this.selector,this.context),nEls=els.not(oEls);this.elements=els;if(this.type){nEls.bind(this.type,this.fn);if(oEls.length>0)$.each(oEls,function(i,el){if($.inArray(el,els)<0)$.event.remove(el,query.type,query.fn);});}else{nEls.each(function(){query.fn.apply(this);});if(this.fn2&&oEls.length>0)$.each(oEls,function(i,el){if($.inArray(el,els)<0)query.fn2.apply(el);});}}};$.extend($.livequery,{guid:0,queries:[],queue:[],running:false,timeout:null,checkQueue:function(){if($.livequery.running&&$.livequery.queue.length){var length=$.livequery.queue.length;while(length--)$.livequery.queries[$.livequery.queue.shift()].run();}},pause:function(){$.livequery.running=false;},play:function(){$.livequery.running=true;$.livequery.run();},registerPlugin:function(){$.each(arguments,function(i,n){if(!$.fn[n])return;var old=$.fn[n];$.fn[n]=function(){var r=old.apply(this,arguments);$.livequery.run();return r;}});},run:function(id){if(id!=undefined){if($.inArray(id,$.livequery.queue)<0)$.livequery.queue.push(id);}else
$.each($.livequery.queries,function(id){if($.inArray(id,$.livequery.queue)<0)$.livequery.queue.push(id);});if($.livequery.timeout)clearTimeout($.livequery.timeout);$.livequery.timeout=setTimeout($.livequery.checkQueue,20);},stop:function(id){if(id!=undefined)$.livequery.queries[id].stop();else
$.each($.livequery.queries,function(id){$.livequery.queries[id].stop();});}});$.livequery.registerPlugin('append','prepend','after','before','wrap','attr','removeAttr','addClass','removeClass','toggleClass','empty','remove');$(function(){$.livequery.play();});var init=$.prototype.init;$.prototype.init=function(a,c){var r=init.apply(this,arguments);if(a&&a.selector)r.context=a.context,r.selector=a.selector;if(typeof a=='string')r.context=c||document,r.selector=a;return r;};$.prototype.init.prototype=$.prototype;})(jQuery);/**
 * TableDnD plug-in for JQuery, allows you to drag and drop table rows
 * You can set up various options to control how the system will work
 * Copyright (c) Denis Howlett <denish@isocra.com>
 * Licensed like jQuery, see http://docs.jquery.com/License.
 *
 * Configuration options:
 * 
 * onDragStyle
 *     This is the style that is assigned to the row during drag. There are limitations to the styles that can be
 *     associated with a row (such as you can't assign a border--well you can, but it won't be
 *     displayed). (So instead consider using onDragClass.) The CSS style to apply is specified as
 *     a map (as used in the jQuery css(...) function).
 * onDropStyle
 *     This is the style that is assigned to the row when it is dropped. As for onDragStyle, there are limitations
 *     to what you can do. Also this replaces the original style, so again consider using onDragClass which
 *     is simply added and then removed on drop.
 * onDragClass
 *     This class is added for the duration of the drag and then removed when the row is dropped. It is more
 *     flexible than using onDragStyle since it can be inherited by the row cells and other content. The default
 *     is class is tDnD_whileDrag. So to use the default, simply customise this CSS class in your
 *     stylesheet.
 * onDrop
 *     Pass a function that will be called when the row is dropped. The function takes 2 parameters: the table
 *     and the row that was dropped. You can work out the new order of the rows by using
 *     table.rows.
 * onDragStart
 *     Pass a function that will be called when the user starts dragging. The function takes 2 parameters: the
 *     table and the row which the user has started to drag.
 * onAllowDrop
 *     Pass a function that will be called as a row is over another row. If the function returns true, allow 
 *     dropping on that row, otherwise not. The function takes 2 parameters: the dragged row and the row under
 *     the cursor. It returns a boolean: true allows the drop, false doesn't allow it.
 * scrollAmount
 *     This is the number of pixels to scroll if the user moves the mouse cursor to the top or bottom of the
 *     window. The page should automatically scroll up or down as appropriate (tested in IE6, IE7, Safari, FF2,
 *     FF3 beta
 * dragHandle
 *     This is the name of a class that you assign to one or more cells in each row that is draggable. If you
 *     specify this class, then you are responsible for setting cursor: move in the CSS and only these cells
 *     will have the drag behaviour. If you do not specify a dragHandle, then you get the old behaviour where
 *     the whole row is draggable.
 * 
 * Other ways to control behaviour:
 *
 * Add class="nodrop" to any rows for which you don't want to allow dropping, and class="nodrag" to any rows
 * that you don't want to be draggable.
 *
 * Inside the onDrop method you can also call $.tableDnD.serialize() this returns a string of the form
 * <tableID>[]=<rowID1>&<tableID>[]=<rowID2> so that you can send this back to the server. The table must have
 * an ID as must all the rows.
 *
 * Other methods:
 *
 * $("...").tableDnDUpdate() 
 * Will update all the matching tables, that is it will reapply the mousedown method to the rows (or handle cells).
 * This is useful if you have updated the table rows using Ajax and you want to make the table draggable again.
 * The table maintains the original configuration (so you don't have to specify it again).
 *
 * $("...").tableDnDSerialize()
 * Will serialize and return the serialized string as above, but for each of the matching tables--so it can be
 * called from anywhere and isn't dependent on the currentTable being set up correctly before calling
 *
 * Known problems:
 * - Auto-scoll has some problems with IE7  (it scrolls even when it shouldn't), work-around: set scrollAmount to 0
 * 
 * Version 0.2: 2008-02-20 First public version
 * Version 0.3: 2008-02-07 Added onDragStart option
 *                         Made the scroll amount configurable (default is 5 as before)
 * Version 0.4: 2008-03-15 Changed the noDrag/noDrop attributes to nodrag/nodrop classes
 *                         Added onAllowDrop to control dropping
 *                         Fixed a bug which meant that you couldn't set the scroll amount in both directions
 *                         Added serialize method
 * Version 0.5: 2008-05-16 Changed so that if you specify a dragHandle class it doesn't make the whole row
 *                         draggable
 *                         Improved the serialize method to use a default (and settable) regular expression.
 *                         Added tableDnDupate() and tableDnDSerialize() to be called when you are outside the table
 */
jQuery.tableDnD = {
    /** Keep hold of the current table being dragged */
    currentTable : null,
    /** Keep hold of the current drag object if any */
    dragObject: null,
    /** The current mouse offset */
    mouseOffset: null,
    /** Remember the old value of Y so that we don't do too much processing */
    oldY: 0,

    /** Actually build the structure */
    build: function(options) {
        // Set up the defaults if any

        this.each(function() {
            // This is bound to each matching table, set up the defaults and override with user options
            this.tableDnDConfig = jQuery.extend({
                onDragStyle: null,
                onDropStyle: null,
				// Add in the default class for whileDragging
				onDragClass: "tDnD_whileDrag",
                onDrop: null,
                onDragStart: null,
                scrollAmount: 5,
				serializeRegexp: /[^\-]*$/, // The regular expression to use to trim row IDs
				serializeParamName: null, // If you want to specify another parameter name instead of the table ID
                dragHandle: null // If you give the name of a class here, then only Cells with this class will be draggable
            }, options || {});
            // Now make the rows draggable
            jQuery.tableDnD.makeDraggable(this);
        });

        // Now we need to capture the mouse up and mouse move event
        // We can use bind so that we don't interfere with other event handlers
        jQuery(document)
            .bind('mousemove', jQuery.tableDnD.mousemove)
            .bind('mouseup', jQuery.tableDnD.mouseup);

        // Don't break the chain
        return this;
    },

    /** This function makes all the rows on the table draggable apart from those marked as "NoDrag" */
    makeDraggable: function(table) {
        var config = table.tableDnDConfig;
		if (table.tableDnDConfig.dragHandle) {
			// We only need to add the event to the specified cells
			var cells = jQuery("td."+table.tableDnDConfig.dragHandle, table);
			cells.each(function() {
				// The cell is bound to "this"
                jQuery(this).mousedown(function(ev) {
                    jQuery.tableDnD.dragObject = this.parentNode;
                    jQuery.tableDnD.currentTable = table;
                    jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev);
                    if (config.onDragStart) {
                        // Call the onDrop method if there is one
                        config.onDragStart(table, this);
                    }
                    return false;
                });
			})
		} else {
			// For backwards compatibility, we add the event to the whole row
	        var rows = jQuery("tr", table); // get all the rows as a wrapped set
	        rows.each(function() {
				// Iterate through each row, the row is bound to "this"
				var row = jQuery(this);
				if (! row.hasClass("nodrag")) {
	                row.mousedown(function(ev) {
	                    if (ev.target.tagName == "TD") {
	                        jQuery.tableDnD.dragObject = this;
	                        jQuery.tableDnD.currentTable = table;
	                        jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev);
	                        if (config.onDragStart) {
	                            // Call the onDrop method if there is one
	                            config.onDragStart(table, this);
	                        }
	                        return false;
	                    }
	                }).css("cursor", "move"); // Store the tableDnD object
				}
			});
		}
	},

	updateTables: function() {
		this.each(function() {
			// this is now bound to each matching table
			if (this.tableDnDConfig) {
				jQuery.tableDnD.makeDraggable(this);
			}
		})
	},

    /** Get the mouse coordinates from the event (allowing for browser differences) */
    mouseCoords: function(ev){
        if(ev.pageX || ev.pageY){
            return {x:ev.pageX, y:ev.pageY};
        }
        return {
            x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
            y:ev.clientY + document.body.scrollTop  - document.body.clientTop
        };
    },

    /** Given a target element and a mouse event, get the mouse offset from that element.
        To do this we need the element's position and the mouse position */
    getMouseOffset: function(target, ev) {
        ev = ev || window.event;

        var docPos    = this.getPosition(target);
        var mousePos  = this.mouseCoords(ev);
        return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
    },

    /** Get the position of an element by going up the DOM tree and adding up all the offsets */
    getPosition: function(e){
        var left = 0;
        var top  = 0;
        /** Safari fix -- thanks to Luis Chato for this! */
        if (e.offsetHeight == 0) {
            /** Safari 2 doesn't correctly grab the offsetTop of a table row
            this is detailed here:
            http://jacob.peargrove.com/blog/2006/technical/table-row-offsettop-bug-in-safari/
            the solution is likewise noted there, grab the offset of a table cell in the row - the firstChild.
            note that firefox will return a text node as a first child, so designing a more thorough
            solution may need to take that into account, for now this seems to work in firefox, safari, ie */
            e = e.firstChild; // a table cell
        }

        while (e.offsetParent){
            left += e.offsetLeft;
            top  += e.offsetTop;
            e     = e.offsetParent;
        }

        left += e.offsetLeft;
        top  += e.offsetTop;

        return {x:left, y:top};
    },

    mousemove: function(ev) {
        if (jQuery.tableDnD.dragObject == null) {
            return;
        }

        var dragObj = jQuery(jQuery.tableDnD.dragObject);
        var config = jQuery.tableDnD.currentTable.tableDnDConfig;
        var mousePos = jQuery.tableDnD.mouseCoords(ev);
        var y = mousePos.y - jQuery.tableDnD.mouseOffset.y;
        //auto scroll the window
	    var yOffset = window.pageYOffset;
	 	if (document.all) {
	        // Windows version
	        //yOffset=document.body.scrollTop;
	        if (typeof document.compatMode != 'undefined' &&
	             document.compatMode != 'BackCompat') {
	           yOffset = document.documentElement.scrollTop;
	        }
	        else if (typeof document.body != 'undefined') {
	           yOffset=document.body.scrollTop;
	        }

	    }
		    
		if (mousePos.y-yOffset < config.scrollAmount) {
	    	window.scrollBy(0, -config.scrollAmount);
	    } else {
            var windowHeight = window.innerHeight ? window.innerHeight
                    : document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight;
            if (windowHeight-(mousePos.y-yOffset) < config.scrollAmount) {
                window.scrollBy(0, config.scrollAmount);
            }
        }


        if (y != jQuery.tableDnD.oldY) {
            // work out if we're going up or down...
            var movingDown = y > jQuery.tableDnD.oldY;
            // update the old value
            jQuery.tableDnD.oldY = y;
            // update the style to show we're dragging
			if (config.onDragClass) {
				dragObj.addClass(config.onDragClass);
			} else {
	            dragObj.css(config.onDragStyle);
			}
            // If we're over a row then move the dragged row to there so that the user sees the
            // effect dynamically
            var currentRow = jQuery.tableDnD.findDropTargetRow(dragObj, y);
            if (currentRow) {
                // TODO worry about what happens when there are multiple TBODIES
                if (movingDown && jQuery.tableDnD.dragObject != currentRow) {
                    jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow.nextSibling);
                } else if (! movingDown && jQuery.tableDnD.dragObject != currentRow) {
                    jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow);
                }
            }
        }

        return false;
    },

    /** We're only worried about the y position really, because we can only move rows up and down */
    findDropTargetRow: function(draggedRow, y) {
        var rows = jQuery.tableDnD.currentTable.rows;
        for (var i=0; i<rows.length; i++) {
            var row = rows[i];
            var rowY    = this.getPosition(row).y;
            var rowHeight = parseInt(row.offsetHeight)/2;
            if (row.offsetHeight == 0) {
                rowY = this.getPosition(row.firstChild).y;
                rowHeight = parseInt(row.firstChild.offsetHeight)/2;
            }
            // Because we always have to insert before, we need to offset the height a bit
            if ((y > rowY - rowHeight) && (y < (rowY + rowHeight))) {
                // that's the row we're over
				// If it's the same as the current row, ignore it
				if (row == draggedRow) {return null;}
                var config = jQuery.tableDnD.currentTable.tableDnDConfig;
                if (config.onAllowDrop) {
                    if (config.onAllowDrop(draggedRow, row)) {
                        return row;
                    } else {
                        return null;
                    }
                } else {
					// If a row has nodrop class, then don't allow dropping (inspired by John Tarr and Famic)
                    var nodrop = jQuery(row).hasClass("nodrop");
                    if (! nodrop) {
                        return row;
                    } else {
                        return null;
                    }
                }
                return row;
            }
        }
        return null;
    },

    mouseup: function(e) {
        if (jQuery.tableDnD.currentTable && jQuery.tableDnD.dragObject) {
            var droppedRow = jQuery.tableDnD.dragObject;
            var config = jQuery.tableDnD.currentTable.tableDnDConfig;
            // If we have a dragObject, then we need to release it,
            // The row will already have been moved to the right place so we just reset stuff
			if (config.onDragClass) {
	            jQuery(droppedRow).removeClass(config.onDragClass);
			} else {
	            jQuery(droppedRow).css(config.onDropStyle);
			}
            jQuery.tableDnD.dragObject   = null;
            if (config.onDrop) {
                // Call the onDrop method if there is one
                config.onDrop(jQuery.tableDnD.currentTable, droppedRow);
            }
            jQuery.tableDnD.currentTable = null; // let go of the table too
        }
    },

    serialize: function() {
        if (jQuery.tableDnD.currentTable) {
            return jQuery.tableDnD.serializeTable(jQuery.tableDnD.currentTable);
        } else {
            return "Error: No Table id set, you need to set an id on your table and every row";
        }
    },

	serializeTable: function(table) {
        var result = "";
        var tableId = table.id;
        var rows = table.rows;
        for (var i=0; i<rows.length; i++) {
            if (result.length > 0) result += ",";
            var rowId = rows[i].id;
            if (rowId && rowId && table.tableDnDConfig && table.tableDnDConfig.serializeRegexp) {
                rowId = rowId.match(table.tableDnDConfig.serializeRegexp)[0];
            }

        //    result += tableId + '[]=' + rowId;
			result += rowId;
        }
        return ","+result+",";
	},

	serializeTables: function() {
        var result = "";
        this.each(function() {
			// this is now bound to each matching table
			result += jQuery.tableDnD.serializeTable(this);
		});
        return result;
    }

}

jQuery.fn.extend(
	{
		tableDnD : jQuery.tableDnD.build,
		tableDnDUpdate : jQuery.tableDnD.updateTables,
		tableDnDSerialize: jQuery.tableDnD.serializeTables
	}
);$(document).ready(function() {

	// open homepage jquery movie
    $('#homeslide a.start').click(function(){	

	var slidecontent = "managed_content/pages/1/slides/slidecontent.asp"; 

   	$('#homeslidecontent').load(slidecontent, showNewContent);

    function showNewContent() {
		$("#homeslidecontent #slidenav").hide("fast");
		if ($.browser.msie) { // IE fade fix
			$('#homeslidecontent').show();
			$('#homeslide').fadeOut(1500, showNavigation);
		} else {
			$('#homeslide').fadeOut(500);
			$('#homeslidecontent').fadeIn(1500, showNavigation);
		}
 		//metrics starts
		s.tl(true,'o','CR08 Slideshow: 1'); 
		//metrics ends
   }

	
	function showNavigation() {
		$('#homeslidecontent #slidenav').fadeIn(1500);	
	}
    return false;
    });

	//close image rollover
	$('#homeslidecontent ul.navbtn li a').live('focus', function(event) {
		$(this).find('img').attr("src", $(this).find('img').attr("src").split('_f1').join('_f2'))
	}).live('blur', function(event) {/*mouseout*/
		$(this).find('img').attr("src", $(this).find('img').attr("src").split('_f2').join('_f1'))
	});

	//close image rollover
	$('#homeslidecontent ul.navbtn li a').live('mouseover', function(event) {
		$(this).find('img').attr("src", $(this).find('img').attr("src").split('_f1').join('_f2'))
	}).live('mouseout', function(event) {/*mouseout*/
		$(this).find('img').attr("src", $(this).find('img').attr("src").split('_f2').join('_f1'))
	});
	
	var lastslide = 7 // was 3
	
	// next slide button
    $('#homeslidecontent a.next').livequery("click", function(){
		
		// get current slide number
		var slidearray = $(this).attr("href").substr(1).split("=");
		var loadslide = parseInt(slidearray[1]);
		
//		if (loadslide == 1) {
//			var currentslide = 3;	
//		} else {
//			var currentslide = (loadslide - 1);
//		}
		loadslide == 1 ? currentslide = lastslide : currentslide = (loadslide - 1);
//		if (!(loadslide < 3)) {
//			var nextslide = 1;
//		} else {
//			var nextslide = loadslide + 1;
//		}
		!(loadslide < lastslide) ? nextslide = 1 : nextslide = loadslide + 1;
		
		// set prevslide value
		loadslide == 1 ? prevslide = lastslide : prevslide = loadslide - 1;
		
		$('#slidecontent_' + currentslide).fadeOut(200, function() {
			//$("#slidecontent_" + loadslide + " .hptextcontent").hide("fast");														 
			$('#slidecontent_' + loadslide).fadeIn(1000, function() {
			//		$("#slidecontent_" + loadslide + " .hptextcontent").fadeIn(2000);

			  });   
		});

		//metrics starts
		var slideNo = $(this).attr("href").split("=")[1];
		s.tl(true,'o','CR08 Slideshow: ' + slideNo); 
		//metrics ends
		
		$('#homeslidecontent a.next').attr("href","index.asp?slide=" + nextslide);
		$('#homeslidecontent a.prev').attr("href","index.asp?slide=" + prevslide);
		
    return false;
    });

	// next slide button
    $('#homeslidecontent a.prev').livequery("click", function(){
		
		// get current slide number
		var slidearray = $(this).attr("href").substr(1).split("=");
		var loadslide = parseInt(slidearray[1]);
		
		// set currentslide value
		loadslide == lastslide ? currentslide = 1 : currentslide = (loadslide + 1);

		// set nextslide value
		!(loadslide < lastslide) ? nextslide = 1 : nextslide = loadslide + 1;

		// set prevslide value
		loadslide == 1 ? prevslide = lastslide : prevslide = loadslide - 1;
		
		$('#slidecontent_' + currentslide).fadeOut(200, function() {
			$("#slidecontent_" + loadslide + " .hptextcontent").hide("fast");														 
			$('#slidecontent_' + loadslide).fadeIn(1000, function() {
				$("#slidecontent_" + loadslide + " .hptextcontent").fadeIn(1500, function() {
					if ($.browser.msie) {
						$("#slidecontent_" + loadslide + " .hptextcontent").get(0).style.removeAttribute('filter');
					}
				});	
			});   
		});

		//metrics starts
		var slideNo = $(this).attr("href").split("=")[1];
		s.tl(true,'o','CR08 Slideshow: ' + slideNo); 
		//metrics ends
		
		$('#homeslidecontent a.next').attr("href","index.asp?slide=" + nextslide);
		$('#homeslidecontent a.prev').attr("href","index.asp?slide=" + prevslide);
		
    return false;
    });

});
