// Optimalworks Wordpress theme JavaScript
// (C) Optimalworks Ltd, http://www.optimalworks.net/

// start
function Main() {

	// search box handler
	var sf = DOM.Id("search");
	var s = DOM.Id("s");
	if (sf && s) {
		new Event(sf, "submit", function(evt) { var s = DOM.Id('s'); if (s.value == "" || s.value == s.defaultValue) evt.Raised.StopDefaultAction(); });
		new Event(s, "focus", ClearDefault);
		new Event(s, "blur", ResetDefault);
	}

	// email link
	EmailLink();
	
	// quotes box
	QuotesInit();
	
	// analytics
	if (typeof urchinTracker != "undefined") { _uacct = "UA-114126-2"; urchinTracker(); }
}

// clear default value from input box
function ClearDefault(evt) {
	if (evt.Raised.Element.value == evt.Raised.Element.defaultValue) evt.Raised.Element.value = "";
}

// reset empty input back to its default value
function ResetDefault(evt) {
	if (evt.Raised.Element.value == '' && evt.Raised.Element.defaultValue != '') evt.Raised.Element.value = evt.Raised.Element.defaultValue;
}

// email link
function EmailLink() {
	var email = DOM.Id("emaillink");
	if (email && email.nodeName.toLowerCase() == "a") {
		var addr = email.firstChild.nodeValue;
		var newaddr = addr.replace(/ \(at\) /i, "@");
		if (newaddr != addr) {
			email.setAttribute("href", "mailto:"+newaddr);
			Graphic.ClassApply(email, "email");
			DOM.SetText(email, newaddr);
		}
	}
}

// initialise fading quotes
var quotes, activeq, qOpac = 100;
var qPause = 5000, qOpacStep = -2, qAnimDelay = 10;

function QuotesInit() {

	quotes = DOM.Tags("q", "header");
	if (quotes.length > 1) {

		// show a random quote
		activeq = Math.round(Math.random()*(quotes.length-0.5));
		if (activeq > 0) {
			Graphic.ClassRemove(quotes[0], "active");
			Graphic.ClassApply(quotes[activeq], "active");
		}

		// start fade out
		setTimeout(QuoteFade, qPause);

	}
}

// fade or show quote
function QuoteFade() {

	var reset = false;
	qOpac += qOpacStep;

	if (qOpac <= 0) {
		qOpac = 0;
		Graphic.ClassRemove(quotes[activeq], "active");
		activeq++;
		if (activeq >= quotes.length) activeq = 0;
		reset = true;
	}

	if (qOpac >= 100) {
		qOpac = 100;
		reset = true;
	}

	Graphic.Opacity(quotes[activeq], qOpac);

	if (reset) {
		qOpacStep *= -1;
		Graphic.ClassApply(quotes[activeq], "active");
		setTimeout(QuoteFade, qPause*(qOpac/100));
	}
	else setTimeout(QuoteFade, qAnimDelay);

}

// page load event
new Event(window, "load", Main);