//------------------------------------------
// Shortcut for getElementByID()
//------------------------------------------
function $() {
	var elements = [];
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == "string") {
			element = document.getElementById(element);
			if (arguments.length == 1 && element) return element;
			if(element) elements.push(element);
		}
	}
	if(elements.length) return elements;
	else return false;
}
//------------------------------------------
// Get any element by it's Class
//------------------------------------------
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
//------------------------------------------
// Cross browser addEvent
//------------------------------------------
function addEvent( obj, type, fn ) {
	// Check for dom load events
	if(type == 'DOMContentLoaded') { DomLoaded.load(fn); return; }
		
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}
var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();
addEvent(window,'unload',EventCache.flush);
//------------------------------------------
// Prevent the default action of an event
//------------------------------------------
function preventDefault(e) {
	if(!e) e = window.event;
	if(e.preventDefault) {
		e.preventDefault(); 
	} else {
		e.returnValue = false;
	}
}
// ----------------------------------------------
// Check if DOM available (http://www.cherny.com)
// ----------------------------------------------
var DomLoaded =
{
	onload: [],
	ready: false,
	loaded: function()
	{
		DomLoaded.ready = true;
		for (z = 0;z < DomLoaded.onload.length;z++) {
			if (!DomLoaded.onload[z].done) {
				DomLoaded.onload[z]();
				DomLoaded.onload[z].done = true;
			}
		}
	},
	load: function(fireThis)
	{
		this.onload.push(fireThis);
		if (DomLoaded.ready) {
			DomLoaded.loaded();
			return;
		}
		if (document.addEventListener) 
			document.addEventListener("DOMContentLoaded", DomLoaded.loaded, null);
		if (/KHTML|WebKit/i.test(navigator.userAgent))
		{ 
			var _timer = setInterval(function()
			{
				if (/loaded|complete/.test(document.readyState))
				{
					clearInterval(_timer);
					delete _timer;
					DomLoaded.loaded();
				}
			}, 10);
		}
		/*@cc_on @*/
		/*@if (@_win32)
		var proto = "src='javascript:void(0)'";
		if (location.protocol == "https:") proto = "src=//0";
		document.write("<scr"+"ipt id=__ie_onload defer " + proto + "><\/scr"+"ipt>");
		var script = document.getElementById("__ie_onload");
		script.onreadystatechange = function() {
			if (this.readyState == "complete") {
				DomLoaded.loaded();
			}
		};
		
		/*@end @*/
		
		// window.onload = DomLoaded.loaded;
	}
};
//------------------------------------------
// EXTERNAL
//------------------------------------------
function prepExternalLinks() {
	if (document.getElementsByTagName) {
		var texts = getElementsByClass("text", document.body, "div");
		for (var i = 0, l = texts.length; i < l; i++) {
			var anchors = texts[i].getElementsByTagName("a");
			for (var j = 0, m = anchors.length; i < m; i++) {
				var anchor = anchors[j];
				if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external")
					anchor.target = "_blank";
			}
		}
	}
}
addEvent(window,'DOMContentLoaded',prepExternalLinks);
//------------------------------------------
// SEARCH
//------------------------------------------
function prepSearch() {
	if (document.getElementById) {
		var s = $("s");
		if (s) {
			s.value = s.title;
			switchFocusBlur(s, "Search Solid Workshop");
			var form = s.parentNode;
			while(form && form.tagName.toLowerCase() != "form") {
				form = form.parentNode;
			}
			if (form !== null) {
				addEvent(form, 'submit', function(e) {
					var sb = $("s");
					if (sb) {
						if (sb.value != sb.title) {
							window.location.href = "http://www.solidworkshop.com/search/" + escape(sb.value);
						}
						preventDefault(e);
					}
				});
			}
		}
	}
}
addEvent(window,'DOMContentLoaded',prepSearch);
//------------------------------------------
// COMMENT FORM
//------------------------------------------
var LABEL_AUTHOR = "Name";
var LABEL_EMAIL = "Email";
var LABEL_URL = "http://";
var LABEL_COMMENT = "Message";
addEvent(window,'load',prepCommentForm);
function prepCommentForm() {
	if (document.getElementById) {
		var commentform = $("commentform");
		if (commentform) {
			var author = $("author");
			if (author) {
				author.value = LABEL_AUTHOR;
				switchFocusBlur(author, LABEL_AUTHOR);
			}
			var email = $("email");
			if (email) {
				email.value = LABEL_EMAIL;
				switchFocusBlur(email, LABEL_EMAIL);
			}
			var url = $("url");
			if (url) {
				url.value = LABEL_URL;
				switchFocusBlur(url, LABEL_URL, false);
			}
			var comment = $("comment");
			if (comment) {
				comment.value = LABEL_COMMENT;
				switchFocusBlur(comment, LABEL_COMMENT);
			}
		}
	}
}
//------------------------------------------
// SWITCH FOCUS BLUR
//------------------------------------------
function switchFocusBlur(el, value, clear) {
	if (clear != false) {
		addEvent(el, 'focus', function() {
			if (this.value == value)
				this.value = "";
			else {
				this.select();
			}
		});
	}
	addEvent(el, 'blur', function() {
		if (this.value.length == 0)
			this.value = value;
	});}