var IE = (navigator.appName == 'Microsoft Internet Explorer');
var mouse_left = false;
var mouse_right = false;
var mouse_middle = false;

var day_names = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
var month_names = [
	'January',
	'February',
	'March',
	'April',
	'May',
	'June',
	'July',
	'August',
	'September',
	'October',
	'November',
	'December'
];

google_ad_client = "pub-7883928137193814";
google_ad_width = 160;
google_ad_height = 600;
google_ad_format = "160x600_as";
google_ad_type = "image";
google_ad_channel = "";

function sprintf () {
	var format = arguments[0];
	var pattern = /%(s|d)/;
	var match = format.search(pattern);
	var count = 1;
	while (match >= 0) {
		var key = format.substr(match, 2);
		var value = arguments[count];
		if (key == '%d') { value = parseInt(value); }
		else if (key == '%s') { value = value.toString(); }
		format = format.substr(0, match) + value + format.substr(match+2);
		match = format.search(pattern);
		count++;
	}
	return format;
}

function screenWidth () {
	return parseInt(IE ? document.body.clientWidth : window.innerWidth);
}

function screenHeight () {
	return parseInt(IE ? document.body.clientHeight : window.innerHeight);
}

function findPosX (obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY (obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function removeChildren (obj) {
	while (obj.firstChild) { obj.removeChild(obj.firstChild); }
}

function getEvent (e) {
	return (typeof e == 'undefined') ? window.event : e;
}

function getTarget (e) { 
	return e.target ? e.target : e.srcElement;
}

function getToTarget (e) {
	return e.relatedTarget ? e.relatedTarget : e.toElement;
}

function getMouseClick (e) {
	// button 1 (left), button 2 (middle), button 3 (right)
	var button = 0;
	if (e.which) { button = e.which; }
	else {
		if (e.button == 2) { button = 3; }
		else if (e.button == 4) { button = 2; }
		else { button = e.button; }
	}

	if (button == 1) { mouse_left = true; }
	else if (button == 2) { mouse_middle = true; }
	else if (button == 3) { mouse_right = true; }
}

function getMouseX (e) {
	return e.pageX ? e.pageX : e.clientX;
}

function getMouseY (e) {
	return e.pageY ? e.pageY : e.clientY;
}

function pad (number, digits) {
 	var str = '';
	if (digits == 4 && number < 1000) { str += '0'; }
	if (digits >= 3 && number < 100) { str += '0'; }
	if (digits >= 2 && number < 10) { str += '0'; }
	return str + number;
}

function dump (str) {
	if (!document.test || !document.test.dump) { return; }

	if (document.test.dump.value != '') { document.test.dump.value += "\n"; }
	document.test.dump.value += str;
}

function printStructure (obj, level) {
	if (!document.test || !document.test.dump) { return ''; }

	if (obj.nodeType == 3) { return ''; }

	var text = '';
	var spacer = '';

	for (var i=0; i<level*2; i++) { spacer += ' '; }

	// Fetch tag and attributes
	var list = [];
	for (var i=0; i<obj.attributes.length; i++) {
		var attr = obj.attributes[i];
		list.push(sprintf('%s="%s"', attr.name, attr.value));
	}

	// Print start tag
	text += sprintf("%s<%s %s>\n", spacer, obj.nodeName, list.join(' '));

	// Print child
	for (var i=0; i<obj.childNodes.length; i++) {
		text += printStructure(obj.childNodes[i], level+1);
	}

	// Print end tag
	text += sprintf("%s</%s>\n", spacer, obj.nodeName);

	return text;
}

function findNode (obj, tag) {
	if (obj.nodeName.toLowerCase() == tag) { return obj; }
	
	for (var i=0; i<obj.childNodes.length; i++) {
		var search = findNode(obj.childNodes[i], tag);
		if (search) { return search; }
	}
	return;
}

function chomp (str) {
	return str.replace(/^\s*/, '').replace(/\s*$/, '');
}

//-------------------------------------------------------//
// COOKIE FUNCTIONS                                      //
//-------------------------------------------------------//

function setCookie (key, value, days) {
	var date = new Date();
	var expdate = (days ? days : 365) * 24 * 60 * 60 * 1000;

	date.setTime(date.getTime()+(days*24*60*60*1000));
	document.cookie = sprintf('%s=%s; expires=%s; path=/', key, value, date.toGMTString());
}

function getCookie (key) {
	var pieces = document.cookie.split(';');
	for (var i=0; i<pieces.length; i++) {
		if (!pieces[i]) { break; }
		var pair = pieces[i].split('=');
		var name = chomp(pair[0]);
		var value = chomp(pair[1]);
		if (name == key) { return value; }
	}
	return;
}

