var pc1 = new Object();
var pc2 = new Object();

function initScripts(cycle) {
	setMiddleHeight();
	
	if (cycle) {
		pc1 = document.getElementById('cyclepic1');
		pc1.num = 1;
		pc1.oper = 0;
		pc1.cycle = picCycle;
		pc1.picloobj = document.getElementById('lowpic1');
		pc1.pichiobj = document.getElementById('highpic1');
		setTimeout("pc1.cycle()", 4000);
		
		pc2 = document.getElementById('cyclepic2');
		pc2.num = 2;
		pc2.oper = 0;
		pc2.cycle = picCycle;
		pc2.picloobj = document.getElementById('lowpic2');
		pc2.pichiobj = document.getElementById('highpic2');
		setTimeout("pc2.cycle()", 8000);
	}
}

function doNavButton(obj, state) {
	obj.style.background = 'url(images/navbg' + state + '100x100.png)';
	obj.style.backgroundRepeat = 'no-repeat';
	obj.style.backgroundPosition = 'center';
}

function gotoPage(target) {
	location.pathname = target;
}

function setMiddleHeight() {
	var string1, string2;
	
	if (document.all) {
		string1 = "document.all['";
		string2 = "']";
	} else if (document.getElementById) {
		string1 = "document.getElementById('";
		string2 = "')";
	}

	var content = eval(string1 + "maincontent" + string2);
	var section = eval(string1 + "mainsection" + string2);
	
	if (content.offsetHeight > 700) {
		section.style.height = content.offsetHeight + 'px';
	}
}

function picCycle() {
	if (this.oper == 0) {
		this.pichiobj.style.visibility = "visible";
		setOpacity(this.pichiobj, 0);
		setInterval('pc' + this.num + '.cycle()', 8000);
	}

	var j = 0;	
	for (var i = 0; i < 21; i++) {
		if (this.oper == 1) {
			j = 20 - i;
		} else {
			j = i;
		}
		setTimeout('setOpacity(pc' + this.num + '.pichiobj, '+ j +')',100*i);
	}
	
	if (++this.oper == 3) {
		this.oper = 1;
	}
}

function setOpacity(obj, alpha) {
	var ostyle = obj.style;
	if( ostyle.MozOpacity != undefined ) { //Moz and older
		ostyle.MozOpacity = alpha/20;
	}
	else if( ostyle.filter != undefined ) { //IE
		ostyle.filter = "alpha(opacity=' + alpha * 5 + ')";
		obj.filters.alpha.opacity = ( alpha * 5 );
	}
	else if( ostyle.opacity != undefined ) { //Opera
		ostyle.opacity = alpha/20;
	}
}

document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
		var classes = elem[i].className;
		if (myclass.test(classes)) {
			retnode.push(elem[i]);
		}
	}
	return retnode;
}; 

function initGallery() {
	var links = document.getElementsByClassName('gallerylink');
	var toplayer = document.getElementById('gallerytop');
	var topimage = document.getElementById('gallerypic');
	
	for (var i = 0; i < links.length; i++) {
		links[i].image = document.getElementById('gallery' + links[i].id);
		links[i].onmouseover = doEnlarge;
		links[i].onmouseout = doHide;
		links[i].toplayer = toplayer;
		links[i].topimage = topimage;
	}
}

function doEnlarge() {
	var container = document.getElementById('mainsection');
	var obj = this.image;
	var xpos = 0;
	var ypos = 0;
	while (obj != container) {
		obj = obj.offsetParent;
		xpos = xpos + obj.offsetLeft;
		ypos = ypos + obj.offsetTop;
	}
	this.toplayer.style.top = ypos + 12 - (this.image.offsetHeight / 2) + 'px';
	this.toplayer.style.left = xpos + 12 - (this.image.offsetWidth /2) + 'px';
	this.topimage.src = this.image.src;
	this.topimage.style.top = -12 + 'px';
	this.topimage.style.left = -12 + 'px';
	this.topimage.style.border = '2px solid black';
	this.toplayer.style.visibility = "visible";
}

function doHide() {
	this.toplayer.style.visibility = "hidden";
}

function doTips() {
	makeRequest('tips.html');
}

function makeRequest(url) {
	var http_request = false;

	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Trouble with XMLHTTP instance');
		return false;
	}

	http_request.onreadystatechange = function() { changeContents(http_request); };
	http_request.open('GET', url, true);
	http_request.send(null);
}

function changeContents(http_request) {
	try {
		if (http_request.readyState == 4) {
			if (http_request.status == 200) {
				document.getElementById('maintipsbox').innerHTML = http_request.responseText;
			} else {
				alert(http_request.status + ': Sorry, there was a problem with your request. Please try again.');
			}
		}
	}
	catch( e ) {
		alert('Caught Exception: ' + e.description);
	}
}

function getSiteLink (obj) {
	var text = prompt("Enter the URL here:", "http://");
	insertAtCaret(obj, "<A href=\"" + text + "\">", "</A>");
}

function getImageLink (obj) {
	var text = prompt("Enter image URL here:", "http://");
	insertAtCaret(obj, "<img style=\"float: left;\" src=\"" + text + "\" width=\"180\" />");
}

function insertAtCaret(obj, starttag, endtag) {
	var text = starttag + (endtag ? endtag : "");
	
	if(document.selection) {
		obj.focus();
		var orig = obj.value.replace(/\r\n/g, "\n");
		var range = document.selection.createRange();

		if(range.parentElement() != obj) {
			return false;
		}

		range.text = text;
		var actual = tmp = obj.value.replace(/\r\n/g, "\n");

		for(var diff = 0; diff < orig.length; diff++) {
			if(orig.charAt(diff) != actual.charAt(diff)) break;
		}

		for(var index = 0, start = 0; tmp.match(text) && (tmp = tmp.replace(text, "")) && index <= diff; index = start + text.length) {
			start = actual.indexOf(text, index);
		}
			
	} else if(obj.selectionStart) {
		var start = obj.selectionStart;
		var end   = obj.selectionEnd;

		obj.value = obj.value.substr(0, start) + text + obj.value.substr(end, obj.value.length);
	}
		
	if(start != null) {
		setCaretTo(obj, start + starttag.length);
	} else {
		obj.value += text;
	}
}
	
function setCaretTo(obj, pos) {
	if(obj.createTextRange) {
		var range = obj.createTextRange();
		range.move('character', pos);
		range.select();
	} else if(obj.selectionStart) {
		obj.focus();
		obj.setSelectionRange(pos, pos);
	}
}
