
var initColor = "";
var prefs = {};

$(document).ready(
	function() {
		// INITIALIZE PREFERENCES
		initPrefs();
		
		// CUSTOMIZE SITE
		initColor = $("body").attr("class");
		if(initColor == "" || initColor == null) {
			initColor = "blue";	
		}
		
		// OTHER INIT FUNCTIONS
		if($("#home").length == 1){
			homepageGo();
		}
		makeSubNavGo();
		zebraStripes();
		textSizeSlider();
		customizeSite();
		$("#featured-nav").disableSelect();
		$("#featured").featureScroll();
		$("#extras").photoScroll();
		$("#photos").photoScroll({displayUp:3});
		$(".weather a:has(.story-img)").lightBox();
	}
);



/*------ CUSTOMIZE SITE ------*/
function closeCustomize(){
	$(document).ready(
	function() {
		$("#customizesite").slideUp("fast");
		$("#selectcolor label.selected").removeClass("selected");
		$("body").removeClass();
		$("body").addClass(initColor);
	});
}

function customizeSite(){
	$("p.customize").click(
		function(){
			if($("#customizesite").is(":visible")){
				closeCustomize();
			} else {
				$("#selectcolor label." + initColor).addClass("selected");
				$("#customizesite").slideDown("fast");
			}
		}
	);
	$("#selectcolor input").click(
		function(){
			var color = $(this).val();
			$("body").removeClass();
			$("body").addClass(color);
			$(this).parent().find("label.selected").removeClass("selected");
			$(this).next().addClass("selected");
			$(this).blur();
		}
	);
	$("a.close").click(
		function(){
			closeCustomize();
			return false;
		}
	);
	
}
/*------ END CUSTOMIZE SITE ------*/

/*------ TEXT SIZE SLIDER ------*/
/*-----Requires Jquery UI------*/
function textSizeSlider(){
	var initialSize = parseFloat(prefs.text);
	$("#story").css({fontSize: initialSize});
	$('.sliderbar').slider(
		{
			handle: '.slidercontrol',
			startValue: initialSize,
			min: 12,
			max: 24,
			slide: function(e, ui) {
				$("#story").css({fontSize: ui.value});
				prefs.text = ui.value;
				updatePrefs();
			}
		}
	);
}
/*------ END TEXT SIZE SLIDER ------*/

/*------ ZEBRA STRIPES ------*/
function zebraStripes(){
	$(".module:not(#subnav) li:odd").addClass("alt");
	$("ul.extended-subnav li:odd").addClass("alt");
	$("ul.current-subnav li:odd").addClass("alt");
	$(".errmsg li:odd").removeClass("alt");
}
/*------ END ZEBRA STRIPES ------*/

/*------ MAKE SUBNAV GO ------*/
function makeSubNavGo() {
	var count;
	var displayCount;
	if($("#home").length != 1){
		$(".extended-subnav").hide();
	}
	$("a:has(span.collapse)").click(
		function(){
			return false;
		}
	);
	$(".extended-subnav").each(
		function(){
			var thisID = $(this).parent().parent().parent().data("IDnum");
			var total = $(this).find("li").length-1;
			curmodule = getModule(thisID);
			if(getProp(thisID, "numlinks") > 0){
				count = parseFloat(getProp(thisID, "numlinks"));
			} else {
				if($("#home").length == 1){
					count = 5;	
				} else {
					count = total+1;	
				}
			}
			displayCount = count-1;
			(count >= total) ? (count = total) : (null);
			(displayCount == total) ? ($(this).parent().parent().find("span.add").addClass("fade")) : (null);
			$(this).data("numberOfArticles",count);
			$(this).find("li:gt("+displayCount+")").hide();
		}		
	);
	$("span.add").click(
		function(){
			var parentList = $(this).parent().parent().parent().find("ul.extended-subnav");
			var currentCount = parentList.data("numberOfArticles");
			var total = parentList.find("li").length-1;
			(currentCount > total) ? (null) : (currentCount++);
			(currentCount > total) ? ($(this).addClass("fade")) : (null);
			var displayCount = currentCount-1;
			(currentCount >= 0) ? ($(this).next().removeClass("fade")) : (null);
			parentList.find("li:eq("+displayCount+")").show();
			parentList.data("numberOfArticles",currentCount);
			if($("#home").length == 1){
				var thisID =  $(this).parent().parent().parent().parent().data("IDnum");
				setProp(thisID, "numlinks", currentCount);
			}
			if($(parentList).parent().is(":visible")){
				return false;
			} else {
				$(parentList).show();
				$(this).parent().parent().find("span.png").addClass("open");
				$(parentList).parent().slideDown("fast");
				$(parentList).parent().parent().next().show("fast");
				return false;
			}
		}
	);
	$("span.subtract").click(
		function(){
			var parentList = $(this).parent().parent().parent().find("ul.extended-subnav");
			var currentCount = parentList.data("numberOfArticles");
			var total = parentList.find("li").length-1;
			var displayCount = (currentCount != 1) ? (currentCount-1) : (currentCount);
			(currentCount != 1) ? (currentCount--) : (null);
			(currentCount < 2) ? ($(this).addClass("fade")) : (null);
			parentList.find("li:eq("+displayCount+")").hide();
			(currentCount <= total) ? ($(this).prev().removeClass("fade")) : (null);
			parentList.data("numberOfArticles",currentCount);
			if($("#home").length == 1){
				var thisID =  $(this).parent().parent().parent().parent().data("IDnum");
				setProp(thisID, "numlinks", currentCount);
			}
			if($(parentList).parent().is(":visible")){
				return false;
			} else {
				$(parentList).show();
				$(this).parent().parent().find("span.png").addClass("open");
				$(parentList).parent().slideDown("fast");
				$(parentList).parent().parent().next().show("fast");
				return false;
			}
			
		}
	
	);
	$("a:has(span.collapse)").click(
		function(){
			if($(this).find("span.collapse span.open").length==1){
				if ($(this).hasClass("islink")) return false;
				$(this).find("span.collapse span").removeClass("open");
				$(this).parent().find("ul").slideUp("fast");
			} else {
				if ($(this).hasClass("islink")) return false;
				$(this).find("span.collapse span").addClass("open");
				$(this).parent().find("ul").slideDown("fast");
			}
		}
	);
}
/*------ END MAKE SUBNAV GO ------*/

/*------ HOMEPAGE GO ------*/
/*------ Requires Jquery UI for sortable ------*/
function homepageGo(){
	//$("span.collapse span.png").addClass("open");
	$("ul.extended-subnav:hidden").show();
	$("ul.sortable .module").each(
		function(){
			var obj = $(this);
			var IDnum = obj.attr("id").split("m")[1];
			obj.attr("id",IDnum);
			obj.data("IDnum",IDnum);
			var thisID = obj.data("IDnum");
		}
	);
	
	
	$("a:has(span.collapse)").find("span.collapse span.png").click(
		function(){
			var parentElement = $(this).parent().parent().parent().find(".content-hide");
			var parentList = $(this).parent().parent().parent().find("ul.extended-subnav");
			var obj = $(this);
			var thisID = $(this).parent().parent().parent().parent().data("IDnum");
			if($(parentElement).is(":visible")){
				$(this).removeClass("open");
				$(parentElement).slideUp("fast");
				$(parentList).slideUp("fast");
				//$(this).toggleClass("collapse");
				$(this).parent().parent().parent().parent().find("h4").slideUp("fast");
				setProp(thisID, "collapsed", 1);
			} else {
				$(this).addClass("open");
				$(parentElement).slideDown("fast");
				$(parentList).slideDown("fast");
				$(this).parent().parent().parent().find("ul").show();
				//$(this).toggleClass("collapse");
				$(this).parent().parent().parent().parent().find("h4").slideDown("fast");
				setProp(thisID, "collapsed", 0);
			}
			return false;
		}
	);
	
	$("a:has(span.collapse)").click(
		function(){
			var url = $(this).attr("href");
			if (!$(this).hasClass("islink")) location.href=url;
			return false;
		}							
	);
	
	$('ul.sortable').each(
			function (i){
				$('ul.sortable:eq('+i+') .module').each(
					function(j){
						var obj = $(this);
						var thisID = obj.data("IDnum");
						setProp(thisID, "column", i+1);
						setProp(thisID, "priority", j+1);
					}
				);	
			}
		);

	
	$('ul.sortable').sortable({
		forcePlaceholderSize: true,
		items: '.module',
		placeholder: 'space',
		opacity: 0.6,
		connectWith: ['ul.sortable'],
		start: function(event, ui) {
			$(".column .module").zIndexFix();
			ui.helper.css("z-index","10000");
		},
		stop: function(event,ui) {
			$('ul.sortable').each(
				function (i){
					$('ul.sortable:eq('+i+') .module').each(
						function(j){
							var obj = $(this);
							var thisID = obj.data("IDnum");
							setProp(thisID, "column", i+1);
							setProp(thisID, "priority", j+1);
						}
					);	
				}
			);
		}
	});
}
/*------ END HOMEPAGE GO ------*/

/*------ EQUALIZE COLUMNS ------*/
function equalizeColumns(){
	var heights = new Array();
	var maxHeights = new Array();
	var colHeight;

	$("ul.sortable").each(
		function(i) {
			heights[i] = new Array();
			var list = "ul.sortable:eq("+i+") div.module";
			$(list).each(
				function(j){
					heights[i][j] = $(this).outerHeight(true);
				}			 
			);
			maxHeights[i] = Array.sum(heights[i]);
		}
	);
	
	newColHeight = Array.max(maxHeights);
	$("ul.sortable").css("height",newColHeight);
	$("#home .column:has(ul.sortable)").css("height",newColHeight);
};
/*------ END EQUALIZE COLUMNS ------*/

/*------ JQUERY PLUGINS -----*/

/*------ FEATURED SCROLL -----*/
(function($) {  
	$.fn.featureScroll = function(options) {
		defaults = {
			listDisplayUp: 1,
			navDisplayUp: 4,
			listScrollRate: 496,
			navScrollRate: 56,
			scrollInterval:5000,
			pauseTimeout:10000,
			offClass: "fade",
			nextBtn: "p.forward",
			prevBtn: "p.backward"
		}
		var options = $.extend(defaults, options);
		
		var listIndex = 0;
		var navIndex = 0;
		var moveIndex = 0;
		var total = $("#featured-list td").length;
		var moveTotal = total-options.navDisplayUp;
		var intervalID;
		var timerID;
		
		var obj;
		var listDiv;
		var navDiv;
		return this.each(function() {
			obj = $(this);
			listDiv = obj.find("#featured-list");
			navDiv = obj.find("#featured-nav-list");
			
			obj.find("#featured-nav").show();
			listDiv.css("overflow","hidden");
			listDiv.scrollLeft(0);
			navDiv.scrollLeft(0);
			obj.find(options.prevBtn).addClass(options.offClass);
			obj.find(options.nextBtn).addClass(options.offClass);
			
			navDiv.find("img").addClass(options.offClass);
			navDiv.find("img:eq(0)").removeClass(options.offClass);
			makeAutoScrollGo();
			navListControl();
			if(moveTotal>0){
				obj.find(options.nextBtn).removeClass(options.offClass);
			}
		});
		function makeAutoScrollGo(){
			intervalID = setInterval(autoMoveFeatured, options.scrollInterval);	
		}
		function autoMoveFeatured(){
			(listIndex < total-options.listDisplayUp) ? (listIndex++):(listIndex = 0);
			(navIndex < total-1) ? (navIndex++):(navIndex = 0);
			var listScrollAmount = options.listScrollRate*listIndex;
			var navScrollAmount = options.navScrollRate*navIndex;
			
			navDiv.find("img").addClass(options.offClass);
			navDiv.find("img:eq("+navIndex+")").removeClass(options.offClass);
			listDiv.animate({scrollLeft: listScrollAmount});
			navDiv.animate({scrollLeft: navScrollAmount});
			moveIndex = navIndex;
			checkArrows();
		}
		
		function checkArrows(){
			if(moveIndex > 0){
				obj.find(options.prevBtn).removeClass(options.offClass);	
			} else {
				obj.find(options.prevBtn).addClass(options.offClass);	
			}
			if(moveIndex >= moveTotal){
				moveIndex = moveTotal;
				obj.find(options.nextBtn).addClass(options.offClass);
			} else {
				obj.find(options.nextBtn).removeClass(options.offClass);	
			}
			if(moveTotal <= 0){
				obj.find(options.prevBtn).addClass(options.offClass);	
				obj.find(options.nextBtn).addClass(options.offClass);	

			}
		}
		
		function navListControl(){
			checkArrows();			
			navDiv.find("img").click(
				function(){
					clearTimeout(timerID);
					clearInterval(intervalID);
					timerID = setTimeout(makeAutoScrollGo,options.pauseTimeout);
					var clickIndex = navDiv.find("img").index(this);
					var clickListScrollAmount = options.listScrollRate * clickIndex;
					var clickNavScrollAmount = options.navScrollRate * clickIndex;
					
					navDiv.find("img").addClass(options.offClass);
					navDiv.find("img:eq("+clickIndex+")").removeClass(options.offClass);
					listDiv.animate({scrollLeft: clickListScrollAmount});
					navDiv.animate({scrollLeft: clickNavScrollAmount});
					
					listIndex = clickIndex;
					navIndex = clickIndex;
					moveIndex = clickIndex;
					checkArrows();
				}
			);
			obj.find(options.prevBtn).click(
				function(){
					moveNavList("previous");
				}
			);
			obj.find(options.nextBtn).click(
				function(){
					moveNavList("next");					
				}
			);
			function moveNavList(direction){
				clearTimeout(timerID);
				clearInterval(intervalID);
				timerID = setTimeout(makeAutoScrollGo,options.pauseTimeout);
				switch(direction){
					case "previous":
						obj.find(options.nextBtn).removeClass(options.offClass);
						(moveIndex > 0) ? (moveIndex--):(moveIndex = 0);
						if(moveIndex == 0){
							obj.find(options.prevBtn).addClass(options.offClass);	
						}
						break;
					case "next":
						obj.find(options.prevBtn).removeClass(options.offClass);
						(moveIndex < moveTotal) ?(moveIndex++):(moveIndex = moveTotal);
						if(moveIndex == moveTotal){
							obj.find(options.nextBtn).addClass(options.offClass);	
						}
						break;
				}
				var moveNavScrollAmount = options.navScrollRate * moveIndex;
				navDiv.animate({scrollLeft: moveNavScrollAmount});
				checkArrows();
			}
		}

	}
})(jQuery);  
/*------ FEATURED SCROLL -----*/


/*------ PHOTO SCROLL -----*/
var lastScroll = 0;
(function($) {  
	$.fn.photoScroll = function(options) {
		var defaults = {
			scrollRate: 138,
			displayUp: 5,
			offClass: "fade",
			nextBtn: "p.forward",
			prevBtn: "p.backward"
		}
		var options = $.extend(defaults, options);
		var obj;
		var scrollDiv;
		var index = 0;
		var total;
		return this.each(function() {
			obj = $(this);
			scrollDiv = obj.find(".photo-scroll div");
			total = obj.find(".photo-scroll td").size()-options.displayUp;
			scrollDiv.scrollLeft(0);
			scrollDiv.css("overflow","hidden");
			obj.find(options.prevBtn).addClass(options.offClass);
			obj.find(options.nextBtn).addClass(options.offClass);
			if(total > 0){
				obj.find(options.nextBtn).removeClass(options.offClass);
				obj.find(options.prevBtn).mousedown(
					function(){
						moveScroll("previous");
					}
				);
				obj.find(options.nextBtn).mousedown(
					function(){
						moveScroll("next");
					}
				)
			}
		});
		function moveScroll(direction){
			switch(direction){
				case "previous":
					obj.find(options.nextBtn).removeClass(options.offClass);
					(index > 0) ? (index--):(index = 0);
					if(index == 0){
						obj.find(options.prevBtn).addClass(options.offClass);	
					}
					break;
				case "next":
					obj.find(options.prevBtn).removeClass(options.offClass);
					(index < total) ?(index++):(index = total);
					if(index == total){
						obj.find(options.nextBtn).addClass(options.offClass);	
					}
					break;
			}
			scrollAmount = options.scrollRate*index;
			if (scrollAmount != lastScroll) scrollDiv.animate({scrollLeft: scrollAmount},"fast");
			lastScroll = scrollAmount;
		}
	}
})(jQuery);  
/*------ END PHOTO SCROLL -----*/

/*------ DISABLE SELECT -----*/
(function($) {  
	$.fn.disableSelect = function() {
		return this.each(function() {
		var obj = $(this);					  
		obj.css({'MozUserSelect' : 'none'});
		obj.bind('selectstart', function() {return false;})
		obj.mousedown(function() {return false;});
	  });
	}
})(jQuery);
/*------ END DISABLE SELECT -----*/

/*------ Z-INDEX FIX -----*/
(function($) {  
	$.fn.zIndexFix = function() {
		return this.each(function() {
		var obj = $(this);
		var thisIndex = 1000;
		obj.css('z-index', thisIndex);
		thisIndex -= 10;
	  });
	}
})(jQuery);
/*------ END Z-INDEX FIX -----*/

/*------ AJAX CALENDAR FUNCTIONS -----*/
function updateCalendar(cid, f, month, day) {
	$("#calendar" + cid).load("calendar-plugin.php?cid=" + cid + "&f=" + f + "&month=" + month + "&day=" + day);
}
function updateArchiveCalendar(month, day) {
	$("#archive_calendar").load("archive-calendar.php?month=" + month + "&day=" + day);
}
/*------ END AJAX CALENDAR FUNCTIONS -----*/



/**
 * PREFERENCE MANAGEMENT
 */
function initPrefs() {
	// Try to get preferences from cookie (JSON).
	var cprefs = $.evalJSON($.cookie("prefs"));
	cprefs = (cprefs != null ? cprefs : {});
	prefs = {
		text: (cprefs.text != null ? cprefs.text : 12),
		color: (cprefs.color != null ? cprefs.color : "blue"),
		disabled: (cprefs.disabled != null ? cprefs.disabled : []),
		module: (cprefs.module != null && !isArray(cprefs.module) ? cprefs.module : Object())
	}
	debug($.cookie("prefs"));
	debug($.toJSON(prefs));
}

function updatePrefs() {
	jprefs = $.toJSON(prefs);
	$.cookie('prefs', jprefs, {expires: 3650, path: "/"});
	debug(jprefs);
}

function getModule(id) {
	// Define module if not already set.
	if (typeof(prefs.module[id]) == "undefined") prefs.module[id] = [-1, -1, -1, -1];
	return prefs.module[id];
}

function getProp(id, property) {
	curmodule = getModule(id);
	propid = getPropID(property);
	if (curmodule[propid] != null) return curmodule[propid];
	return false;
}

function setProp(id, property, val) {
	propid = getPropID(property);
	var curmodule = getModule(id);
	curmodule[propid] = val;
	updatePrefs();
}

// Translates property name to property ID.
function getPropID(property) {
	// Get property ID based on name.
	switch(property) {
		case "column":
			propid = 0;
			break;
		case "priority":
			propid = 1;
			break;
		case "numlinks":
			propid = 2;
			break;
		case "collapsed":
			propid = 3;
			break;
	}
	
	return propid;
}

function isArray(obj) {
	return (obj.constructor.toString().indexOf("Array") != -1);
}
/**
 * END PREFERENCE MANAGEMENT
 */


/*------ UTILITY FUNCTIONS -----*/
function debug(what) {
	if (typeof(console) != "undefined") console.log(what);
}
Array.max = function(array){
	return Math.max.apply( Math, array );
};
Array.min = function(array){
	return Math.min.apply( Math, array );
};
Array.sum = function(array){
	for(var i=0,sum=0;i<array.length;sum+=array[i++]);
	return sum;
}
function openLink(url, width, height) {
	var linkWindow = window.open(url, "linkWindow", "location=1,status=1,scrollbars=1,menubar=1,resizable=1,width=" + width + ",height=" + height);
	return false;
}
/*------ END UTILITY FUNCTIONS -----*/


/*------ JQUERY COOKIE -----*/
/**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */
jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options=$.extend({},options);options.expires=-1;}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}expires='; expires='+date.toUTCString();}var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}return cookieValue;}};/*--/* ---- END JQUERY COOKIE -----*/

/**
 * jQuery lightBox plugin
 * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/)
 * and adapted to me for use like a plugin from jQuery.
 * @name jquery-lightbox-0.5.js
 * @author Leandro Vieira Pinho - http://leandrovieira.com
 * @version 0.5
 * @date April 11, 2008
 * @category jQuery plugin
 * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com)
 * @license CC Attribution-No Derivative Works 2.5 Brazil - http://creativecommons.org/licenses/by-nd/2.5/br/deed.en_US
 * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin
 */
(function($){$.fn.lightBox=function(settings){settings=jQuery.extend({overlayBgColor:'#000',overlayOpacity:0.8,fixedNavigation:false,imageLoading:'images/lightbox-ico-loading.gif',imageBtnPrev:'images/lightbox-btn-prev.gif',imageBtnNext:'images/lightbox-btn-next.gif',imageBtnClose:'images/lightbox-btn-close.gif',imageBlank:'images/lightbox-blank.gif',containerBorderSize:10,containerResizeSpeed:400,txtImage:'Image',txtOf:'of',keyToClose:'c',keyToPrev:'p',keyToNext:'n',imageArray:[],activeImage:0},settings);var jQueryMatchedObj=this;function _initialize(){_start(this,jQueryMatchedObj);return false;}
function _start(objClicked,jQueryMatchedObj){$('embed, object, select').css({'visibility':'hidden'});_set_interface();settings.imageArray.length=0;settings.activeImage=0;if(jQueryMatchedObj.length==1){settings.imageArray.push(new Array(objClicked.getAttribute('href'),objClicked.getAttribute('title')));}else{for(var i=0;i<jQueryMatchedObj.length;i++){settings.imageArray.push(new Array(jQueryMatchedObj[i].getAttribute('href'),jQueryMatchedObj[i].getAttribute('title')));}}
while(settings.imageArray[settings.activeImage][0]!=objClicked.getAttribute('href')){settings.activeImage++;}
_set_image_to_view();}
function _set_interface(){$('body').append('<div id="jquery-overlay"></div><div id="jquery-lightbox"><div id="lightbox-container-image-box"><div id="lightbox-container-image"><img id="lightbox-image"><div style="" id="lightbox-nav"><a href="#" id="lightbox-nav-btnPrev"></a><a href="#" id="lightbox-nav-btnNext"></a></div><div id="lightbox-loading"><a href="#" id="lightbox-loading-link"><img src="'+settings.imageLoading+'"></a></div></div></div><div id="lightbox-container-image-data-box"><div id="lightbox-container-image-data"><div id="lightbox-image-details"><span id="lightbox-image-details-caption"></span><span id="lightbox-image-details-currentNumber"></span></div><div id="lightbox-secNav"><a href="#" id="lightbox-secNav-btnClose"><img src="'+settings.imageBtnClose+'"></a></div></div></div></div>');var arrPageSizes=___getPageSize();$('#jquery-overlay').css({backgroundColor:settings.overlayBgColor,opacity:settings.overlayOpacity,width:arrPageSizes[0],height:arrPageSizes[1]}).fadeIn();var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]}).show();$('#jquery-overlay,#jquery-lightbox').click(function(){_finish();});$('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function(){_finish();return false;});$(window).resize(function(){var arrPageSizes=___getPageSize();$('#jquery-overlay').css({width:arrPageSizes[0],height:arrPageSizes[1]});var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]});});}
function _set_image_to_view(){$('#lightbox-loading').show();if(settings.fixedNavigation){$('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();}else{$('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();}
var objImagePreloader=new Image();objImagePreloader.onload=function(){$('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]);_resize_container_image_box(objImagePreloader.width,objImagePreloader.height);objImagePreloader.onload=function(){};};objImagePreloader.src=settings.imageArray[settings.activeImage][0];};function _resize_container_image_box(intImageWidth,intImageHeight){var intCurrentWidth=$('#lightbox-container-image-box').width();var intCurrentHeight=$('#lightbox-container-image-box').height();var intWidth=(intImageWidth+(settings.containerBorderSize*2));var intHeight=(intImageHeight+(settings.containerBorderSize*2));var intDiffW=intCurrentWidth-intWidth;var intDiffH=intCurrentHeight-intHeight;$('#lightbox-container-image-box').animate({width:intWidth,height:intHeight},settings.containerResizeSpeed,function(){_show_image();});if((intDiffW==0)&&(intDiffH==0)){if($.browser.msie){___pause(250);}else{___pause(100);}}
$('#lightbox-container-image-data-box').css({width:intImageWidth});$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({height:intImageHeight+(settings.containerBorderSize*2)});};function _show_image(){$('#lightbox-loading').hide();$('#lightbox-image').fadeIn(function(){_show_image_data();_set_navigation();});_preload_neighbor_images();};function _show_image_data(){$('#lightbox-container-image-data-box').slideDown('fast');$('#lightbox-image-details-caption').hide();if(settings.imageArray[settings.activeImage][1]){$('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show();}
if(settings.imageArray.length>1){$('#lightbox-image-details-currentNumber').html(settings.txtImage+' '+(settings.activeImage+1)+' '+settings.txtOf+' '+settings.imageArray.length).show();}}
function _set_navigation(){$('#lightbox-nav').show();$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({'background':'transparent url('+settings.imageBlank+') no-repeat'});if(settings.activeImage!=0){if(settings.fixedNavigation){$('#lightbox-nav-btnPrev').css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnPrev').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}}
if(settings.activeImage!=(settings.imageArray.length-1)){if(settings.fixedNavigation){$('#lightbox-nav-btnNext').css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnNext').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}}
_enable_keyboard_navigation();}
function _enable_keyboard_navigation(){$(document).keydown(function(objEvent){_keyboard_action(objEvent);});}
function _disable_keyboard_navigation(){$(document).unbind();}
function _keyboard_action(objEvent){if(objEvent==null){keycode=event.keyCode;escapeKey=27;}else{keycode=objEvent.keyCode;escapeKey=objEvent.DOM_VK_ESCAPE;}
key=String.fromCharCode(keycode).toLowerCase();if((key==settings.keyToClose)||(key=='x')||(keycode==escapeKey)){_finish();}
if((key==settings.keyToPrev)||(keycode==37)){if(settings.activeImage!=0){settings.activeImage=settings.activeImage-1;_set_image_to_view();_disable_keyboard_navigation();}}
if((key==settings.keyToNext)||(keycode==39)){if(settings.activeImage!=(settings.imageArray.length-1)){settings.activeImage=settings.activeImage+1;_set_image_to_view();_disable_keyboard_navigation();}}}
function _preload_neighbor_images(){if((settings.imageArray.length-1)>settings.activeImage){objNext=new Image();objNext.src=settings.imageArray[settings.activeImage+1][0];}
if(settings.activeImage>0){objPrev=new Image();objPrev.src=settings.imageArray[settings.activeImage-1][0];}}
function _finish(){$('#jquery-lightbox').remove();$('#jquery-overlay').fadeOut(function(){$('#jquery-overlay').remove();});$('embed, object, select').css({'visibility':'visible'});}
function ___getPageSize(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=window.innerWidth+window.scrollMaxX;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;}
var windowWidth,windowHeight;if(self.innerHeight){if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;}else{windowWidth=self.innerWidth;}
windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;}
if(yScroll<windowHeight){pageHeight=windowHeight;}else{pageHeight=yScroll;}
if(xScroll<windowWidth){pageWidth=xScroll;}else{pageWidth=windowWidth;}
arrayPageSize=new Array(pageWidth,pageHeight,windowWidth,windowHeight);return arrayPageSize;};function ___getPageScroll(){var xScroll,yScroll;if(self.pageYOffset){yScroll=self.pageYOffset;xScroll=self.pageXOffset;}else if(document.documentElement&&document.documentElement.scrollTop){yScroll=document.documentElement.scrollTop;xScroll=document.documentElement.scrollLeft;}else if(document.body){yScroll=document.body.scrollTop;xScroll=document.body.scrollLeft;}
arrayPageScroll=new Array(xScroll,yScroll);return arrayPageScroll;};function ___pause(ms){var date=new Date();curDate=null;do{var curDate=new Date();}
while(curDate-date<ms);};return this.unbind('click').click(_initialize);};})(jQuery);



/*
 * jQuery JSON Plugin
 * version: 2.1 (2009-08-14)
 *
 * This document is licensed as free software under the terms of the
 * MIT License: http://www.opensource.org/licenses/mit-license.php
 *
 * Brantley Harris wrote this plugin. It is based somewhat on the JSON.org 
 * website's http://www.json.org/json2.js, which proclaims:
 * "NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.", a sentiment that
 * I uphold.
 *
 * It is also influenced heavily by MochiKit's serializeJSON, which is 
 * copyrighted 2005 by Bob Ippolito.
 */

(function($){$.toJSON=function(o)
{if(typeof(JSON)=='object'&&JSON.stringify)
return JSON.stringify(o);var type=typeof(o);if(o===null)
return"null";if(type=="undefined")
return undefined;if(type=="number"||type=="boolean")
return o+"";if(type=="string")
return $.quoteString(o);if(type=='object')
{if(typeof o.toJSON=="function")
return $.toJSON(o.toJSON());if(o.constructor===Date)
{var month=o.getUTCMonth()+1;if(month<10)month='0'+month;var day=o.getUTCDate();if(day<10)day='0'+day;var year=o.getUTCFullYear();var hours=o.getUTCHours();if(hours<10)hours='0'+hours;var minutes=o.getUTCMinutes();if(minutes<10)minutes='0'+minutes;var seconds=o.getUTCSeconds();if(seconds<10)seconds='0'+seconds;var milli=o.getUTCMilliseconds();if(milli<100)milli='0'+milli;if(milli<10)milli='0'+milli;return'"'+year+'-'+month+'-'+day+'T'+
hours+':'+minutes+':'+seconds+'.'+milli+'Z"';}
if(o.constructor===Array)
{var ret=[];for(var i=0;i<o.length;i++)
ret.push($.toJSON(o[i])||"null");return"["+ret.join(",")+"]";}
var pairs=[];for(var k in o){var name;var type=typeof k;if(type=="number")
name='"'+k+'"';else if(type=="string")
name=$.quoteString(k);else
continue;if(typeof o[k]=="function")
continue;var val=$.toJSON(o[k]);pairs.push(name+":"+val);}
return"{"+pairs.join(", ")+"}";}};$.evalJSON=function(src)
{if(typeof(JSON)=='object'&&JSON.parse)
return JSON.parse(src);return eval("("+src+")");};$.secureEvalJSON=function(src)
{if(typeof(JSON)=='object'&&JSON.parse)
return JSON.parse(src);var filtered=src;filtered=filtered.replace(/\\["\\\/bfnrtu]/g,'@');filtered=filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']');filtered=filtered.replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered))
return eval("("+src+")");else
throw new SyntaxError("Error parsing JSON, source is not valid.");};$.quoteString=function(string)
{if(string.match(_escapeable))
{return'"'+string.replace(_escapeable,function(a)
{var c=_meta[a];if(typeof c==='string')return c;c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
return'"'+string+'"';};var _escapeable=/["\\\x00-\x1f\x7f-\x9f]/g;var _meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};})(jQuery);

/*------ END JQUERY PLUGINS -----*/