(function(){
	var methods = {
		defaultValueActsAsHint: function(element){
			element = $(element);
			element._default = element.value;

			return element.observe('focus', function(){
				if(element._default != element.value) return;
				element.removeClassName('hint').value = '';
			}).observe('blur', function(){
				if(element.value.strip() != '') return;
				element.addClassName('hint').value = element._default;
			}).addClassName('hint');
		}
	};

	$w('input textarea').each(function(tag){ Element.addMethods(tag, methods) });
})();

var isCycling;
var aryDots;
var curDot;
var aryShots;
var curImage;
var isAnimating;
var CYCLE_INTERVAL = 5000;
var timer;

function setup(baseUrl) {
 	setupClickTracking(baseUrl);

	isCycling = true;
	aryDots = $$("#dots .dot a");
	curDot = aryDots[0];
	aryShots = $$("#screenshots ul li");
	curImage = aryShots[0];
	isAnimating = false;
	
	for(var i = 0; aryDots[i]; i++) {
		aryDots[i].onclick = function() {
			if(this == curDot || isAnimating) {
				return false;
			}
			
			for(var i = 0; i < aryDots.length; i++) {
				if(this == aryDots[i]) {
					isCycling = false;
					timer = null;
					cycleScreenShot(i, true);
					break;
				}
			}
			
			return false;
		}
		
		aryDots[i].onmouseover = function() {
			if(curDot != this || curDot.previousSibling.style.display == "none") {
				curDot.previousSibling.style.display = "none";
				this.previousSibling.style.display = "block";
			}
		}
		
		aryDots[i].onmouseout = function() {
			if(this != curDot) {
				this.previousSibling.style.display = "none";
			}
		}
	}
	
	timer = setTimeout("cycleScreenShot(1);", CYCLE_INTERVAL);
}

function cycleScreenShot(i, ignoreTimer) {
	if(aryDots[i] == curDot || isAnimating || (!isCycling && !ignoreTimer)) {
		return;
	}
	
	isAnimating = true;
	
	curDot.previousSibling.style.display = "none";
	curDot.parentNode.removeClassName("active");
	curDot = aryDots[i];
	curDot.parentNode.addClassName("active");
		
	Effect.Fade(curImage, { duration: .5 });
	curImage = $('ss' + aryDots[i].id);
	Effect.Appear(curImage, { duration: .5, afterFinish: function() { isAnimating = false; } });
	
	i = (i+1) % aryDots.length;
	
	if(isCycling) {
		timer = setTimeout("cycleScreenShot("+i+", false);", CYCLE_INTERVAL);
	}
}

function confirmNav(url) {
	if(confirm("This action is irreversible. Do you wish to continue?")) {
		if(url != "" && url != "undefined" && url != null) {
			window.location = url;
		}
		else return true;
	}
}

function xml(xmlString) {
	var parser;
	var xmlDoc;
	try {
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(xmlString);
	}
	catch(e) {
		try {
			parser = new DOMParser();
			xmlDoc = parser.parseFromString(xmlString,"text/xml");
		}
		catch(e) {
			alert(e.message);
			return false;
		}
	}
	
	return xmlDoc;
}

function popup(targetDiv, file, callBack) {
	setOpac();
	
	new Ajax.Request(file, {
		method: 'get',
		onSuccess: function(transport) { 
			// $('loading-indicator').style.display = "none";
			if(transport.responseText.length == 0) {
				return;
			}
			
			var scroll = getScrollXY();
			
			var element = Builder.node('div', {id:targetDiv});
			element.innerHTML = transport.responseText;
			
			WIDTH = "100%";
			element.style.width = WIDTH;
			element.style.position = "absolute";
			element.style.left = (scroll[0]) + "px";
			element.style.top = (scroll[1] + 100) + "px";
			element.style.zIndex = 1000;
			element.style.margin = "0 auto";
			
			document.body.appendChild(element);
			
			if(callBack) {
				callBack();
			}
		}
	});
}

function closePopup(divName) {
	var div = $(divName);
	if(div) {
		div.parentNode.removeChild(div);
		restoreOpac();
	}
}

var opacDiv = null;
function setOpac() {
	var scroll = getScrollXY();
	
	opacDiv = document.createElement('div');
	opacDiv.style.position = "absolute";
	opacDiv.style.left = "0px";
	opacDiv.style.top = "0px";
	opacDiv.style.width = document.body.clientWidth + scroll[0] + "px";
	opacDiv.style.height = document.body.clientHeight + scroll[1] + "px";
	opacDiv.style.backgroundColor = "#000000";
	opacDiv.style.zIndex = "999";
	opacDiv.style.opacity = 0;
	opacDiv.style.mozOpacity = 0;
	document.body.appendChild(opacDiv);
	
	$(opacDiv).morph('opacity:.5; -moz-opacity: .5', { duration: .3 });
	
	window.onresize = function() {
		var scroll = getScrollXY();
		opacDiv.style.width = document.body.clientWidth + scroll[0] + "px";
		opacDiv.style.height = document.body.clientHeight + scroll[1] + "px";
	};
}

function restoreOpac() {
	opacDiv.parentNode.removeChild(opacDiv);
	window.onresize = null;
}

function getScrollXY() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [ scrOfX, scrOfY ];
}

