/* 
 * Cross-browser event handling, by Scott Andrew
 */
function addEvent(element, eventType, lamdaFunction, useCapture) {
	if (element.addEventListener) {
		element.addEventListener(eventType, lamdaFunction, useCapture);
		return true;
	} else if (element.attachEvent) {
		var r = element.attachEvent('on' + eventType, lamdaFunction);
		return r;
	} else {
		return false;
	}
}

/* 
 * Kills an event's propagation and default action
 */
function knackerEvent(eventObject) {
	if (eventObject && eventObject.stopPropagation) {
		eventObject.stopPropagation();
	}
	if (window.event && window.event.cancelBubble ) {
		window.event.cancelBubble = true;
	}
	
	if (eventObject && eventObject.preventDefault) {
		eventObject.preventDefault();
	}
	if (window.event) {
		window.event.returnValue = false;
	}
}

/* 
 * Safari doesn't support canceling events in the standard way, so we must
 * hard-code a return of false for it to work.
 */
function cancelEventSafari() {
	return false;		
}

/* 
 * Cross-browser style extraction, from the JavaScript & DHTML Cookbook
 * <http://www.oreillynet.com/pub/a/javascript/excerpt/JSDHTMLCkbk_chap5/index5.html>
 */
function getElementStyle(elementID, CssStyleProperty) {
	var element = document.getElementById(elementID);
	if (element.currentStyle) {
		return element.currentStyle[toCamelCase(CssStyleProperty)];
	} else if (window.getComputedStyle) {
		var compStyle = window.getComputedStyle(element, '');
		return compStyle.getPropertyValue(CssStyleProperty);
	} else {
		return '';
	}
}

/* 
 * CamelCases CSS property names. Useful in conjunction with 'getElementStyle()'
 * From <http://dhtmlkitchen.com/learn/js/setstyle/index4.jsp>
 */
function toCamelCase(CssProperty) {
	var stringArray = CssProperty.toLowerCase().split('-');
	if (stringArray.length == 1) {
		return stringArray[0];
	}
	var ret = (CssProperty.indexOf("-") == 0)
			  ? stringArray[0].charAt(0).toUpperCase() + stringArray[0].substring(1)
			  : stringArray[0];
	for (var i = 1; i < stringArray.length; i++) {
		var s = stringArray[i];
		ret += s.charAt(0).toUpperCase() + s.substring(1);
	}
	return ret;
}

/*
 * Disables all 'test' links, that point to the href '#', by Ross Shannon
 */
function disableTestLinks() {
  var pageLinks = document.getElementsByTagName('a');
  for (var i=0; i<pageLinks.length; i++) {
	if (pageLinks[i].href.match(/[^#]#$/)) {
	  addEvent(pageLinks[i], 'click', knackerEvent, false);
	}
  }
}

/* 
 * Cookie functions
 */
function createCookie(name, value, days) {
	var expires = '';
	if (days) {
		var date = new Date();
		date.setTime(date.getTime() + (days*24*60*60*1000));
		var expires = '; expires=' + date.toGMTString();
	}
	document.cookie = name + '=' + value + expires + '; path=/';
}

function readCookie(name) {
	var cookieCrumbs = document.cookie.split(';');
	var nameToFind = name + '=';
	for (var i = 0; i < cookieCrumbs.length; i++) {
		var crumb = cookieCrumbs[i];
		while (crumb.charAt(0) == ' ') {
			crumb = crumb.substring(1, crumb.length); /* delete spaces */
		}
		if (crumb.indexOf(nameToFind) == 0) {
			return crumb.substring(nameToFind.length, crumb.length);
		}
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name, '', -1);
}


function mailTo(){
	document.location.href="mailto:?body="+escape(document.location)+"&subject="+escape(document.title)+"&";	
}

function printPage(){
	window.print();	
}
/*
 * Clear Default Text: functions for clearing and replacing default text in
 * <input> elements.
 *
 * by Ross Shannon, http://www.yourhtmlsource.com/
 */

addEvent(window, 'load', init, false);

function init() {
	var formInputs = document.getElementsByTagName('input');
	for (var i = 0; i < formInputs.length; i++) {
		var theInput = formInputs[i];
		
		if (theInput.type == 'text' && theInput.className.match(/\bcleardefault\b/)) {  
			/* Add event handlers */		  
			addEvent(theInput, 'focus', clearDefaultText, false);
			addEvent(theInput, 'blur', replaceDefaultText, false);
			
			/* Save the current value */
			if (theInput.value != '') {
				theInput.defaultText = theInput.value;
			}
		}
	}
}

function clearDefaultText(e) {
	var target = window.event ? window.event.srcElement : e ? e.target : null;
	if (!target) return;
	
	if (target.value == target.defaultText) {
		target.value = '';
	}
}

function replaceDefaultText(e) {
	var target = window.event ? window.event.srcElement : e ? e.target : null;
	if (!target) return;
	
	if (target.value == '' && target.defaultText) {
		target.value = target.defaultText;
	}
}
function skypeLoad() {
	if (self.skypeLoader) {
		return;
	}

	var datenow = new Date;
	var unixtime_ms = datenow.getTime();
	var unixtime = parseInt(unixtime_ms/1000);

	var head = document.getElementsByTagName("head")[0];
	script = document.createElement('script');
	script.id = 'skypeLoader';
	script.type = 'text/javascript';
	script.src = '../dynamic/skype-me-cache.js?' + unixtime;
	head.appendChild(script);
}

// addEvent(window, 'load', skypeLoad, false);
// have to fire this immediately else js in the page will fail
skypeLoad();
fontSizeEnabled = (document.styleSheets)?1:0;

fontSizeDefault = 12;
fontSizeMax = 20;
fontSizeMin = 11;

window.fontSizeNow = 0;
window.fontSizeBefore = 0;

fontSizeDeltaMin = fontSizeMin - fontSizeDefault;
fontSizeDeltaMax = fontSizeMax - fontSizeDefault;

function fontSizeSet(size) {
	createCookie('fontSize', size, 1);
}

function fontSizeGet() {
	return parseInt(readCookie('fontSize'), 0);
}

function fontSizeApply() {
	if(fontSizeEnabled) {
		var i = 0;
		while(document.getElementById('fontresizable'+i)) {
			var size = document.getElementById('fontresizable'+i).style.fontSize.substring(0,2)
			var dimFont = parseInt(size,10)

			if (isNaN(dimFont)) { dimFont = fontSizeDefault; }

			dimFont += window.fontSizeNow - window.fontSizeBefore;

			if (dimFont > fontSizeMax) dimFont = fontSizeMax;
			if (dimFont < fontSizeMin) dimFont = fontSizeMin;

			document.getElementById('fontresizable'+i).style.fontSize = dimFont + 'px';
			i++;
		}
	}
}

function fontSizeBigger() {
	dimFont = window.fontSizeNow+1;
	if (dimFont <= fontSizeDeltaMax) {
		fontSizeSet(dimFont);
		window.fontSizeBefore = window.fontSizeNow;
		window.fontSizeNow = dimFont;
		fontSizeApply();
	}
} 

function fontSizeSmaller() {
	dimFont = window.fontSizeNow-1;
	if (dimFont >= fontSizeDeltaMin) {
		fontSizeSet(dimFont);
		window.fontSizeBefore = window.fontSizeNow;
		window.fontSizeNow = dimFont;
		fontSizeApply();
	}
}

function fontSizeLoader() {
	if (!fontSizeGet()) {
		fontSizeSet(0);
		window.fontSizeNow = 0;
		window.fontSizeBefore = window.fontSizeNow;
	} else {
		window.fontSizeNow = fontSizeGet();
		window.fontSizeBefore = 0;
	}

	fontSizeApply();
}

addEvent(window, 'load', fontSizeLoader, false);
