// JavaScript Document
function positionFrog()
{
	var banner = $("#banner")[0];
	var pos = findPos(banner);
	var frog = $("#frog")[0];
	var sitemap = $("#sitemap")[0];
	
	with (frog.style)
	{
		position = "absolute";
		left = pos.left + banner.offsetWidth - 200 + "px";
		top = pos.top + "px";
		display = "block";
	}
	with (sitemap.style)
	{
		position = "absolute";
		left = pos.left + banner.offsetWidth - 200 + "px";
		top = pos.top + 20 + "px";
		display = "block";
	}
}

function getLink()
{
	var form = document.forms[0];
	var el = createElement('input', {type: 'hidden', name: 'getLink'});
	el.value = 1;
	form.appendChild(el);
	form.submit();
}

function addOnload(func)
{
	if (typeof window.onload != 'function')
		window.onload = func;
	else
	{
		var oldOnload = window.onload;
		window.onload = function()
		{
			oldOnload();
			func();
		}
	}
}

function setCookie(name, value, time)
{
	if (!time) time = 60*60*24*365;
	
	var d = new Date();
	var t = new Date(d.getTime() + time);
	t = t.toGMTString();
		
	document.cookie = name + "=" + escape(value) + ";expires=" + t + ";path=/;domain=.ecause.ca";
}

function openWindow(url, w, h)
{
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars=no,resizable';
	win = window.open(url, 'myWindow', winprops);

	if (win)
	{
		if (parseInt(navigator.appVersion) >= 4) { win.window.focus();}
		return win;
	}
	
	return null;
}

function submitFormOnEnter(event, form)
{
	if (getKey(event) == 13)
		form.submit();
}

function doOnEnter(event, func)
{	
	if (getKey(event) == 13)
		func();
}

function getKey(event)
{
	return window.event ? window.event.keyCode : (event ? event.which : (event.keyCode ? event.keyCode : 0));
}

function selectAll(form, isChecked)
{
	var inputs = form.getElementsByTagName('input');
	if (inputs)
	{
		for (var i = 0; i < inputs.length; i++)
		{
			if (inputs[i].type == 'checkbox')
				inputs[i].checked = isChecked;
		}
	}
}

function setBackgroundText(textboxID, value)
{
	bgTextColor = "#999999";
	normalColor = "#000000";
	
	var textbox = document.getElementById(textboxID);
	if (textbox.value != "")
		return;

	textbox.value = value;
	textbox.style.color = bgTextColor;
	
	textbox.onfocus = function() { if (textbox.value == value) {textbox.value = ''; textbox.style.color = normalColor;} }
	textbox.onblur = function() { if (textbox.value == '') {textbox.value = value; textbox.style.color = bgTextColor;} }

	if (textbox.form)
	{
		if (typeof textbox.form.onsubmit == 'function')
		{
			oldOnsubmit = textbox.form.onsubmit;
			textbox.form.onsubmit = function() { oldOnsubmit(); if (textbox.value == value) textbox.value = ''; return true; }
		}
		else
			textbox.form.onsubmit = function() { if (textbox.value == value) textbox.value = ''; return true; }
	}
}

function getUploadForm(callback, callbackArgs, finishArgs)
{
	var form = document.createElement('form');
	form.method = "post";
	form.enctype = "multipart/form-data";
	form.encoding = "multipart/form-data";
	form.action = "upload.php"
	if (callback) form.action += '?callback=' + callback;
	if (callbackArgs) form.action += '&callbackArgs=' + callbackArgs;
	if (finishArgs) form.action += '&finishArgs=' + finishArgs;
	form.target = "uploader";
		
	var fileInput = createElement('input', {name: 'upload'});
	fileInput.id = 'fileupload';
	fileInput.type = "file";
	fileInput.onchange = function()
	{
		if (validateUpload(this))
		{
			var image = new Image();
			image.id = 'loadingAnimation';
			image.src = 'images/loadingAnimation.gif';
			copyPos(this, image);
			this.parentNode.insertBefore(image, this);
			this.style.visibility = "hidden";
		}
	};
	
	var iframe = createElement('iframe', {name: 'uploader'});
	iframe.id = 'uploader';
	iframe.src = "#";
	iframe.style.width = "0px";
	iframe.style.height = "0px";
	iframe.style.border = "0px solid #FFFFFF";
	
	form.appendChild(fileInput);
	form.input = fileInput;
	
	return {'form':form, 'iframe':iframe};
}

function finishUpload(result, upload)
{
	var anim = $("#loadingAnimation")[0];
	anim.parentNode.removeChild(anim);
	$("#fileupload")[0].style.visibility = "visible";
	if (result && result != '')
	{
		var image = new Image();
		image.src = "uploads/small/" + result;

		var link = createElement('a', {target: '_blank', href: 'uploads/' + result});
		link.appendChild(image);
	}
	else
	{
		var link = document.createTextNode("Error uploading image");
	}

	if (upload && upload != '')
	{
		$("#"+upload)[0].innerHTML = '';
		$("#"+upload)[0].appendChild(link);
	}
}

function createElement(elName, attributes)
{
	if (!name) name = "";
	
	if (window.attachEvent) // if IE
	{
		attrText = '';
		for (var name in attributes)
			attrText += ' ' + name + '="' + attributes[name] + '"';

		return document.createElement('<' + elName + attrText + '>');
	}
	else
	{
		var e = document.createElement(elName);
		for (var name in attributes)
			e[name] = attributes[name];
		
		return e;
	}
}

function getElementsByClassName(className)
{
	var els = document.getElementsByTagName('*');	
	var result = [];
	
	for (var i = 0; i < els.length; i++)
	{
		if (els[i].className == className)
			result[result.length] = els[i];
	}
	
	return result;
}

function validateUpload(file)
{
	var imageExtensions = ['gif', 'jpeg', 'jpg', 'jpe', 'jif', 'jfif', 'jfi', 'png'];
	
	var filename = file.value;
	
	var split = filename.split('.');
	var extension = split[split.length - 1];
	
	var valid;

	if ((valid = arraySearch(imageExtensions, extension)) == -1)
		alert('File must be image (jpeg, gif or png)');
	
	if (valid != -1)
	{
		file.form.submit();
		return true;
	}
	return false;
}

function tooltip(text)
{
	if (text && text != "")
	{
		var tooltip = document.tooltipElm ? document.tooltipElm : document.createElement('div');
		tooltip.className = 'tooltip';
		tooltip.innerHTML = text;
		document.body.appendChild(tooltip);
		
		document.tooltipElm = tooltip;
		
		addEvent(document, 'mousemove', getMousePos, false);
	}
	else
	{
		if (document.tooltipElm && document.tooltipElm.parentNode)
			document.tooltipElm.parentNode.removeChild(document.tooltipElm);
		removeEvent(document, 'mousemove', getMousePos, false);
	}
}


function getMousePos(e) {
	var IE = document.all ? true : false;

	if (IE)
	{
		mouse_x = event.clientX + document.body.scrollLeft
		mouse_y = event.clientY + document.body.scrollTop
	}
	else
	{
		mouse_x = e.pageX
		mouse_y = e.pageY
	}  

	document.tooltipElm.style.left = mouse_x + "px";
	document.tooltipElm.style.top = mouse_y + 20 + "px";
}

function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
	}
}

function removeEvent(elm, evType, fn, useCapture) {
	if (elm.removeEventListener) {
		elm.removeEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.detachEvent) {
		return elm.detachEvent('on' + evType, fn);
	}
	else {
		elm['on' + evType] = null;
	}
}

function arraySearch(array, value)
{
	for (var i = 0; i < array.length; i++)
		if (array[i].toLowerCase() == value.toLowerCase())
			return i;

	return -1;
}

function copyPos(copyee, copier)
{
	var pos = findPos(copyee);
	with (copier.style)
	{
		position = "absolute";
		left = pos.left + "px";
		top = pos.top + "px";
	}
}

function findPos(obj)
{
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return {left:curleft, top:curtop};
}

function setUpload(result)
{
	$("#Image")[0].value = result;
	var remove = $("#remove")[0];
	remove.style.height = "14px";
	remove.innerHTML = '<a href="#" onclick="removeUpload(); return false">Remove upload</a>';
}

function removeUpload()
{
	$("#Image")[0].value = '';
	$("#upload")[0].innerHTML = '';
	$("#remove")[0].innerHTML = '';
	$("#file")[0].value = '';
}

function addRow(tableID, html)
{
	var table = $("#"+tableID);
	if (table && table.length > 0)
		table = table[0];

	var row = table.insertRow(-1);
	var cell = row.insertCell(0);
	cell.innerHTML = html;
}
