/**
Javascript for Nevco
**/

function init() {
	setTabEvents();
	setInputEvents();
	
	// toggle init
	toggle.init();
}

/************************
Toggle
************************/
var toggle = {};

toggle.init = function () {
	if ($("a.toggle")) {
		$("a.toggle").each(function(index) {
			if (!$("#" + $(this).attr("rel")).hasClass("closed")) {
				
				if (!$(this).hasClass("toggle-section")) {
					$(this).text("Hide Details");
					$(this).toggleClass("toggle-close");
				}
				else { 
					$(this).append(" <span> (click to hide)</span>");
				}
			}
			else {
				if ($(this).hasClass("toggle-section")) {
					$(this).toggleClass("toggle-section-close");
					$(this).append(" <span>(click to view)</span>");
				}
			}
		});
		
		// default 'details' toggle and line toggle
		$('a.toggle').click(function(event) {
			event.preventDefault();
			
			// get toggle container id
			var toToggle = $(this).attr("rel");
			
			$("#" + toToggle).toggle();
			$("#" + toToggle).toggleClass('closed');
			
			if (!$(this).hasClass("toggle-section")) {
				$(this).toggleClass("toggle-close");
				if ($(this).hasClass("toggle-close")) {
					$(this).text("Hide Details");
				}
				else {
					$(this).text("See Details");	
				}
			}
			else {
				// for line toggle in cart
				$(this).toggleClass("toggle-section-close");
				$(this).find("span").remove();
				if ($(this).hasClass("toggle-section-close")) {
					$(this).append(" <span>(click to view)</span>");
				}
				else {
					$(this).append(" <span>(click to hide)</span>");
				}
			}
		});
	}
	
}

/************************
 Input Events
************************/
function setInputEvents() {
	if (document.getElementById) {
		
		//clear email a friend input value on click
		if (document.getElementById("email_address")) {
			var emailFriend_input = document.getElementById("email_address");
			emailFriend_input.onclick = function(event) {
				this.setAttribute("value", "");
			}
		}
		
		//clear search input value on click
		if (document.getElementById("search")) {
			
			var search_input = document.getElementById("search");
			
			search_input.onclick = function(event) {
				this.setAttribute("value", "");	
			}
		}
		
		// set onclick event for email a colleague 'send' button
		if (document.getElementById("email_send")) {
			var send_btn = document.getElementById("email_send");
			send_btn.onclick = sendEmail;
		}
	}
	else { return; }
}

/************************
 Tabs
************************/
function setTabEvents() {
	if (document.getElementsByTagName) {
		var anchorElems = document.getElementsByTagName("a");
		for (var i=0; i<anchorElems.length; i++) {
			if (anchorElems[i].id.indexOf("tab") != -1) {
				anchorElems[i].onclick = tabClick;
			}
		}
	}
	else { return; }
}

function tabClick(event) {
	
	// disable active tab and section
	disableActiveTab();
	
	// set or remove 'active' class to tab
	this.className = "active";
	
	// show content associated with new active tab
	var divId = this.id.substr(4);
	document.getElementById(divId).className = "";
	
	return false;
		
}

function disableActiveTab() {

	var anchorElems = document.getElementsByTagName("a");
	for (var i=0; i<anchorElems.length; i++) {
		if (anchorElems[i].className == "active") {
			var activeTab = anchorElems[i];
		}
	}
	
	activeTab.className = "";
	
	// hide content associated with tab
	var divId = activeTab.id.substr(4);
	document.getElementById(divId).className = "hidden";
}

/************************
 Send Email to Colleague
************************/
myLightWindow = null;
function sendEmail(event) {
	// clear response messages, if any
	clearResponseMessages();
	
	// check that input field is not empty or does not have default text
	if (document.getElementById("email_address").value == "enter email address" || document.getElementById("email_address").value == "") {
		responseMessage("Please enter a valid email address", "error_email");
	}
	else {
		// open lightwindow with form
		if (myLightWindow == null) {
			myLightWindow = new lightwindow();
		}
		
		var email_address = document.getElementById("email_address").value;
		
		myLightWindow.activateWindow({
			href: 'http://www.nevco.com/products/email_form.php?email='+email_address+'&url='+escape(window.location.href), 
			title: 'Email A Colleague',
			width: 340,
			height: 200
		});
	}
}

/************************
 Scoreboard Flash resize
************************/

function setScoreboardHeight(newHeight) {
	if (document.getElementById("scoreboardHolder")) {
		var scoreboard = document.getElementById("scoreboardHolder");
		scoreboard.style.height = newHeight + "px";
	}
}

/************************
 Display launch button (build a board)
************************/

function displayLaunchBtn() {
	if (document.getElementsByTagName("oject")) {
		var launchBtn = document.getElementById("launch_btn");
		launchBtn.style.display = "block";
	}
}

/************************
 Error Messages Utility
************************/
function responseMessage(msgText, id) {
	
	// check for param values
	if (msgText != undefined && id != undefined) {
		if (document.getElementById(id)) {
			var msgHolder = document.getElementById(id);
			var msgTxt = document.createTextNode(msgText);
		}
		else {
			return;
		}
	}
	else {
		return;
	}
	
	// adds message to DOM tree
	function newMessage() {
		// remove any previous message
		clearMessage();
		
		// append new message
		msgHolder.appendChild(msgTxt);
	}
	
	// clear message
	function clearMessage() {
		if (msgHolder.childNodes[0]) {
			msgHolder.removeChild(msgHolder.childNodes[0]);
		}
	}
	
	newMessage();
}

function clearResponseMessages() {
	
	// clear success message
	if (document.getElementById("success")) {
		var success = document.getElementById("success");
		if (success.childNodes[0]) {
			success.removeChild(success.childNodes[0]);
		}
	}
	
	// clear general error message
	if (document.getElementById("general_error")) {
		var general_error = document.getElementById("general_error");
		if (general_error.childNodes[0]) {
			general_error.removeChild(general_error.childNodes[0]);
		}
	}
	
	// clear all span error messages
	var elems = document.getElementsByTagName("*"); 
	for (var i=0;i<elems.length;i++) {
		// check if it has 'error_' as part of id
		if ( elems[i].getAttribute("id") && elems[i].getAttribute("id").indexOf("error_") != -1) {
			if (elems[i].childNodes[0]) {
				elems[i].removeChild(elems[i].childNodes[0]);
			}
		}
	}
}

/************************
 DOM OnLoad Event
************************/
/*
 * (c)2006 Jesse Skinner/Dean Edwards/Matthias Miller/John Resig
 * Special thanks to Dan Webb's domready.js Prototype extension
 * and Simon Willison's addLoadEvent
 *
 * For more info, see:
 * http://www.thefutureoftheweb.com/blog/adddomloadevent
 * http://dean.edwards.name/weblog/2006/06/again/
 * http://www.vivabit.com/bollocks/2006/06/21/a-dom-ready-extension-for-prototype
 * http://simon.incutio.com/archive/2004/05/26/addLoadEvent
 * 
 *
 * To use: call addDOMLoadEvent one or more times with functions, ie:
 *
 *    function something() {
 *       // do something
 *    }
 *    addDOMLoadEvent(something);
 *
 *    addDOMLoadEvent(function() {
 *        // do other stuff
 *    });
 *
 */
 
addDOMLoadEvent = (function(){
    // create event function stack
    var load_events = [],
	load_timer,
	script,
	done,
	exec,
	old_onload,
	init = function () {
	    done = true;

	    // kill the timer
	    clearInterval(load_timer);

	    // execute each function in the stack in the order they were added
	    while (exec = load_events.shift())
		exec();

	    if (script) script.onreadystatechange = '';
	};

    return function (func) {
	// if the init function was already ran, just run this function now and stop
	if (done) return func();

	if (!load_events[0]) {
	    // for Mozilla/Opera9
	    if (document.addEventListener)
		document.addEventListener("DOMContentLoaded", init, false);

	    // for Internet Explorer
	    /*@cc_on @*/
	    /*@if (@_win32)
		document.write("<script id=__ie_onload defer src=//0><\/scr"+"ipt>");
		script = document.getElementById("__ie_onload");
		script.onreadystatechange = function() {
		    if (this.readyState == "complete")
			init(); // call the onload handler
		};
	    /*@end @*/

	    // for Safari
	    if (/WebKit/i.test(navigator.userAgent)) { // sniff
		load_timer = setInterval(function() {
		    if (/loaded|complete/.test(document.readyState))
			init(); // call the onload handler
		}, 10);
	    }

	    // for other browsers set the window.onload, but also execute the old window.onload
	    old_onload = window.onload;
	    window.onload = function() {
		init();
		if (old_onload) old_onload();
	    };
	}

	load_events.push(func);
    }
})();

/*****************
Add Functions that need to fire when page loads
*****************/
addDOMLoadEvent(init);

