// initialize after DOM load
$(document).ready(function(){

	// link bits
	linkTargets();

	// font size controls
	fontInit();

	// print control
	printInit();
		
});






// LINKS
function linkTargets() {
	$('a.offsite').click(function() { window.open(this.href); return false; });
	$('a.newwin').click(function() { window.open(this.href); return false; });
	$('a.download').click(function() { window.open(this.href); return false; });
	$("a.image-group").unbind('click');
	$("a.image-group").fancybox();
};





// PRINT APPENDER -----------------------

// insert print code
function printInit() {
	$('li.printer').append('<a title="Print this page..."></a>');
	$('li.printer a').click(function() { window.print(); return false; });
};



// THE FONT RESIZER - (may benefit from having size limits?) -----------------------

// insert font resizer code, launch resizer function
function fontInit() {
	$('li.textdec').append('<a title="Decrease the text size..."></a>');
	$('li.textres').append('<a title="Reset the text size..."></a>');
	$('li.textinc').append('<a title="Increase the text size..."></a>');
	$(document).fontResize();
};

// add font resizer function to jQuery
jQuery.fn.fontResize = function() {

	// configure
	var resizeType = "SelectElement";
	var resizeSelectElement = "div#body";
	var resizeStep = "1.0";
	var resizeCookieTime = "31";

	var resizeElements = new Array();
	var initialFontSizes = new Array();
	var savedFontSizes = new Array();
	var cookieFontSizes = new Array();

	var buttonDec = "li.textdec";
	var buttonRes = "li.textres";
	var buttonInc = "li.textinc";

	// set targets
	if (resizeType == "") {
		resizeElements[0] = "div#innerbody";
	} else if (resizeType == "SelectElement") {
		resizeElements = resizeSelectElement.split(',');
	}

	// set initial font size(s)
	for (var i = 0; i < resizeElements.length; i++) {
		initialFontSizes[i] = parseFloat($(""+resizeElements[i]+"").css("font-size"));
	}

	// process any cookie based saved sizes
	if ( jQuery.cookie("RelishFontSizes") ) { savedFontSizes = jQuery.cookie("RelishFontSizes").split(','); }

	if (savedFontSizes != null) {

		if (savedFontSizes.length != resizeElements.length) {
			savedFontSizes = [];
		} else {
			for (var i = 0; i < resizeElements.length; i++) {
				$(""+resizeElements[i]+"").css("font-size", savedFontSizes[i] + "px");
			}
		}
	}

	// add functions to buttons
	$(""+buttonInc+"").click(function() {
		for (var i = 0; i < resizeElements.length; i++) {
			var newFontSize = parseFloat($(""+resizeElements[i]+"").css("font-size"));
			newFontSize = newFontSize + parseFloat(resizeStep);
			$(""+resizeElements[i]+"").css("font-size", newFontSize+"px");
			cookieFontSizes[i] = newFontSize;
		}
		jQuery.cookie("RelishFontSizes", cookieFontSizes, {expires: parseInt(resizeCookieTime), path: '/'});
	});

	$(""+buttonDec+"").click(function() {
		for (var i = 0; i < resizeElements.length; i++) {
			var newFontSize = parseFloat($(""+resizeElements[i]+"").css("font-size"));
			newFontSize = newFontSize - parseFloat(resizeStep);
			$(""+resizeElements[i]+"").css("font-size", newFontSize+"px");		 
			cookieFontSizes[i] = newFontSize;
		}
		jQuery.cookie("RelishFontSizes", cookieFontSizes, {expires: parseInt(resizeCookieTime), path: '/'});
	});

	$(""+buttonRes+"").click(function() {
		for (var i = 0; i < resizeElements.length; i++) {
			$(""+resizeElements[i]+"").css("font-size", initialFontSizes[i]);			 
			cookieFontSizes[i] = initialFontSizes[i];
		}
		jQuery.cookie("RelishFontSizes", cookieFontSizes, {expires: parseInt(resizeCookieTime), path: '/'});
	});
}












/**
 * 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') { // name and value given, set cookie

		options = options || {};
		if (value === null) {
			value = '';
			options = $.extend({}, options); // clone object since it's unexpected behavior if the expired property were changed
			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(); // use expires attribute, max-age is not supported by IE
		}

	// NOTE Needed to parenthesize options.path and options.domain
	// in the following expressions, otherwise they evaluate to undefined
	// in the packed version for some reason...

		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 { // only name given, get cookie

		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]);
				// Does this cookie string begin with the name we want?
				if (cookie.substring(0, name.length + 1) == (name + '=')) {
					cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
					break;
				}
			}
		}
		return cookieValue;
	}
};
