/* contains:
jQuery
styleswitcher.js
linkPreview.js
jquery.tooltip.js
*/

/* ---- jQuery ---- */
$(document).ready(function(){
	// Text Size
	$('#text-size').addClass("show");
	$('li#text-medium a').click(function(){setActiveStyleSheet('Medium'); return false;});
	$('li#text-large a').click(function(){setActiveStyleSheet('Large'); return false;});
	$('li#text-xlarge a').click(function(){setActiveStyleSheet('X-Large'); return false;});

	// Map Tooltips
	$('#map area').Tooltip();
});

/* ---- styleswitcher.js ---- */
function setActiveStyleSheet(title) {var i, a, main;for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {a.disabled = true;if(a.getAttribute("title") == title) a.disabled = false;}}}
function getActiveStyleSheet() {var i, a;for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");}return null;}
function getPreferredStyleSheet() {var i, a;for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {if(a.getAttribute("rel").indexOf("style") != -1&& a.getAttribute("rel").indexOf("alt") == -1&& a.getAttribute("title")) return a.getAttribute("title");}return null;}
function createCookie(name,value,days) {if (days) {var date = new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires = "; expires="+date.toGMTString();}else expires = "";document.cookie = name+"="+value+expires+"; path=/";}
function readCookie(name) {var nameEQ = name + "=";var ca = document.cookie.split(';');for(var i=0;i < ca.length;i++) {var c = ca[i];while (c.charAt(0)==' ') c = c.substring(1,c.length);if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);}return null;}
window.onload = function(e) {var cookie = readCookie("style");var title = cookie ? cookie : getPreferredStyleSheet();setActiveStyleSheet(title);}
window.onunload = function(e) {var title = getActiveStyleSheet();createCookie("style", title, 365);}
var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);

/* ---- linkPreview.js ---- */
addEvent(window, 'load', linkPreview);
function addEvent(obj, evType, fn){if (obj.addEventListener){obj.addEventListener(evType, fn, false);return true;}else if (obj.attachEvent){var r = obj.attachEvent("on"+evType, fn);return r;}else {return false;}}
function linkPreview(){
	var links = document.getElementsByTagName("a");
	for (i=0; i<links.length; i++){
		var currentLink = links[i];
		var images = currentLink.getElementsByTagName("img");
		if (images.length == 0){
			var linkHref = currentLink.href;
			if (linkHref.match(/amazon.com/)){
				append(currentLink, "amazon");
			}else{
				checkLinks(linkHref, currentLink)
			}
		}
	}
}
function checkLinks(linkHref, currentLink){
	var linkHrefParts = linkHref.split(".");
	var extension = linkHrefParts[linkHrefParts.length - 1];
	extension = extension.replace("/","");
	if( extension in { doc:1, mp3:1, pdf:1, ppt:1, txt:1, wmv:1, xml:1, xls:1, zip:1 } ){
		append(currentLink, extension );
	}
}
function append(currentLink, extension){var span = document.createElement('span');span.innerHTML = "&nbsp;";currentLink.parentNode.insertBefore(span,currentLink.nextSibling);span.className = extension;}

/*
jquery.tooltip.js
Copyright (c) 2006 Jörn Zaefferer, Stefan Petre
Dual licensed under the MIT and GPL licenses: http://www.opensource.org/licenses/mit-license.php, http://www.gnu.org/licenses/gpl.html
*/
(function($){	
	var helper, tTitle, tBody, tUrl, current, oldTitle, tID,
	plugin = $.fn.Tooltip = function(settings){
		settings = $.extend($.extend({}, arguments.callee.defaults), settings || {});
		if(!helper){
			// create tooltip
			helper = $('<div id="tooltip"><h3></h3></div>').hide().css({position:'absolute', zIndex:3000}).appendTo('body');
			tTitle = $('h3', helper);
			tBody = $('p:eq(0)', helper);
			tUrl = $('p:eq(1)', helper);
		}
		$(this).filter('[@title]').each(function(){this.tSettings = settings;}).bind("mouseover", save).bind(settings.event, handle);
		return this;
	},
	handle = function(event){
		if(this.tSettings.delay) tID = setTimeout(show, this.tSettings.delay); else show();
		if(this.tSettings.track) $('body').bind('mousemove', update);
		update(event);
		$(this).bind('mouseout', hide);
	},
	save = function() {
		if(this == current || !this.title) return;
		current = this;
		var source = $(this), settings = this.tSettings;
		oldTitle = title = source.attr('title');
		source.attr('title','');
		if(settings.showBody){var parts = title.split(settings.showBody); tTitle.html(parts.shift()); tBody.empty(); for(var i = 0, part; part = parts[i]; i++){if(i < 0) tBody.append("<br/>"); tBody.append(part);} tBody.show();} else {tTitle.html(title); tBody.hide();}
		href = (source.attr('href') || source.attr('src'));
		if( settings.showURL && href ) tUrl.html(href.replace('http://', '')).show(); else  tUrl.hide();
		if(settings.extraClass){helper.addClass(settings.extraClass);}
		if (settings.fixPNG && $.browser.msie){helper.each(function(){if (this.currentStyle.backgroundImage != 'none'){var image = this.currentStyle.backgroundImage; image = image.substring(5, image.length - 2); $(this).css({'backgroundImage':'none', 'filter':"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')"}); tPNGfix = true;}});}
	},
	show = function(){
		tID = null;
		helper.show();
	},
	update = function(event){
		if(current == null){$('body').unbind('mousemove', update); return;}
		function pos(c){var p = c == 'X' ? 'Left' : 'Top'; return event['page' + c] || (event['client' + c] + (document.documentElement['scroll' + p] || document.body['scroll' + p])) || 0;}
		// position tooltip from mouse position
		helper.css({top: pos('Y') + -46 + 'px', left: pos('X') + -66 + 'px'});
	},
	hide = function(){
		if(tID) clearTimeout(tID);
		current = null;
		helper.hide();
		if(this.tSettings.extraClass){helper.removeClass( this.tSettings.extraClass);}
		$(this).attr('title', oldTitle).unbind('mouseout', hide);
		if(this.tSettings.fixPNG && $.browser.msie){helper.each(function(){$(this).css({'filter':'', backgroundImage:''});});}
	};
	// define default settings
	plugin.defaults = {
		delay: 250,
		event: "mouseover",
		track: true,
		showURL: false,
		showBody: null,
		extraClass: null,
		fixPNG: false
	};
})(jQuery);
