/* =========================================================================================================== *
	DOMAssistant is developed by Robert Nyman, http://www.robertnyman.com, and it is released according to the
	Creative Commons Attribution-ShareAlike 2.5 license (http://creativecommons.org/licenses/by-sa/2.5/deed.en)
	For more information, please see http://www.robertnyman.com/domassistant
 * =========================================================================================================== */
/*var DOMAssistant = {
	
	methodsToAdd : [],
	
	init : function (){
		this.applyMethod.call(window, "util", this.util);
		window.DOMAssistant = this;
	},
	
	applyMethod : function (method, func){
		if(typeof this[method] != "function"){
			this[method] = func;
		}
	},
	
	addMethods : function (elm){
		if(elm){
			var elms = (elm.constructor == Array)? elm : [elm];
			for(var i=0; i<elms.length; i++){	
				for(var j=0; j<this.methodsToAdd.length; j++){
	            	this.applyMethod.call(elms[i], this.methodsToAdd[j][0], this.methodsToAdd[j][1]);
	            }
			}
		}
	},
	
	util : function (){
		var elm = null;
		if(document.getElementById){
			elm = (arguments.length > 1)? [] : null;
			var current;
			for(var i=0; i<arguments.length; i++){
				current = arguments[i];
				if(typeof current != "object"){
					current = document.getElementById(current);
				}
				if(arguments.length > 1){
					elm.push(current);
				}
				else{
					elm = current;
				}
			}
			DOMAssistant.addMethods(elm);
		}
		return elm;
    }
}
DOMAssistant.init();

DOMAssistant.initCSS = function (){
	this.addCSSMethods();
};

DOMAssistant.addCSSMethods = function (){
	if(typeof HTMLElement == "function"){		
		HTMLElement.prototype.addClass = this.addClass;
		HTMLElement.prototype.removeClass = this.removeClass;
		HTMLElement.prototype.hasClass = this.hasClass;
		HTMLElement.prototype.getStyle = this.getStyle;
	}
	this.methodsToAdd.push(["addClass", this.addClass]);
	this.methodsToAdd.push(["removeClass", this.removeClass]);
	this.methodsToAdd.push(["hasClass", this.hasClass]);
	this.methodsToAdd.push(["getStyle", this.getStyle]);
};

DOMAssistant.addClass = function (className){
	var currentClass = this.className;
	if(!new RegExp(("(^|\\s)" + className + "(\\s|$)"), "i").test(currentClass)){
		this.className = currentClass + ((currentClass.length > 0)? " " : "") + className;
	}
	return this.className;
};

DOMAssistant.removeClass = function (className){
	var classToRemove = new RegExp(("(^|\\s)" + className + "(\\s|$)"), "i");
	this.className = this.className.replace(classToRemove, "").replace(/^\s+|\s+$/g, "");
	return this.className;
},

DOMAssistant.hasClass = function (className){
	return new RegExp(("(^|\\s)" + className + "(\\s|$)"), "i").test(this.className);
};

DOMAssistant.getStyle = function (cssRule){
	var cssVal = "";
	if(document.defaultView && document.defaultView.getComputedStyle){
		cssVal = document.defaultView.getComputedStyle(this, "").getPropertyValue(cssRule);
	}
	else if(this.currentStyle){
		cssVal = cssRule.replace(/\-(\w)/g, function (match, p1){
			return p1.toUpperCase();
		});
		cssVal = this.currentStyle[cssVal];
	}
	return cssVal;
};

DOMAssistant.initCSS();*/

/* =================================================================== *
 * DOM functions													   *
 * =================================================================== */

// for old browsers that don't have the push method
if(typeof Array.push == undefined) {
	Array.prototype.push = function(value) {
		this[this.length] = value;                                                              
	}
}

// javascript trim() function
if(typeof String.trim == undefined) {
	String.prototype.trim = function() {
		return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,"");
	}
}

/* addEvent() adapted from Dustin Diaz
 * http://www.dustindiaz.com/rock-solid-addevent/
 * used to add event listeners to the page
 */

function addEvent(obj,type,fn) {
	if(obj) {
	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["e"+type+fn] = fn;
		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); // fixes IE memory leak issues

/*function preventDefault(e) {
	if (e.preventDefault) {
		e.preventDefault();
	} else {
		e.returnValue = false;
	}
}*/


/* =================================================================== *
 * functions to handle the display of the form elements				   *
 * =================================================================== */

function handleBlur(elem) {
	if($(this).val() == "") {
		searchForm.sf.removeClass("hasContent");
	}
}

function handleKeyup(elem) {

}

var searchForm = {
	sf: null,
	init : function() {
		if(!document.getElementsByTagName) return false;
		searchForm.sf = $("#search");
		if(searchForm.sf) {
			searchForm.sf.children("input").each(function() {
				$(this).blur(function(){
					if($(this).val() == "") {
						searchForm.sf.removeClass("hasContent");
					}
				}).keyup(function(){
					if($(this).val() != "") {
						searchForm.sf.addClass("hasContent");
					}
				});
			});
			/*searchForm.handleBG(sfInput);
			addEvent(sfInput,"blur",searchForm.handleBG);
			addEvent(sfInput,"keyup",searchForm.handleBG);*/
		}
	}/*,
	handleBlur : function(node) {
		var target = node.target || node.srcElement || null;
		if(target != null) {
			node = target;
		}
		if(node.val().trim() === "") {
			searchForm.sf.removeClass("hasContent");
		} 
	},
	handleKeyup : function(node) {
		var target = node.target || node.srcElement || null;
		if(target != null) {
			node = target;
		}
		if($(this).val() != "") {
			searchForm.sf.addClass("hasContent");
		}
	}*/
}
addEvent(window,"load",searchForm.init);

var requestForm = {
	fields: [],
	init : function() {
		if(!document.getElementsByTagName) return false;
		var rf = $("#requestForm");
		if(rf) {
			rf.find("input").each(function() {
				if(this.type == "text") {
					requestForm.fields.push(this);
				}
			});
			rf.find("textarea").each(function() {
				requestForm.fields.push(this);
			});
			/*for(var i=0;i<rfInputs.length;i++) {
				if(rfInputs[i].type == "text") {
					requestForm.fields.push(rfInputs[i]);
				}
			}
			for(var t=0;t<rfTextareas.length;t++) {
				requestForm.fields.push(rfTextareas[t]);
			}*/
			for(var f=0;f<requestForm.fields.length;f++) {
				$(requestForm.fields[f]).blur(function() {
					if($(this).val() == "") {
						$(this).parent().removeClass("hasContent");
					}
				}).keyup(function() {
					if($(this).val() != "") {
						$(this).parent().addClass("hasContent");
					}
				});
				/*requestForm.handleBG(requestForm.fields[f]);
				addEvent(requestForm.fields[f],"blur",requestForm.handleBG);
				addEvent(requestForm.fields[f],"keyup",requestForm.handleBG);*/
			}
		}
	}/*,
	handleBG : function(node) {
		var target = node.target || node.srcElement || null;
		if(target != null) {
			node = target;
		}
		if(node.value.trim() === "") {
			$(node.parentNode).removeClass("hasContent");
		} else {
			$(node.parentNode).addClass("hasContent");
		}
	}*/
}
addEvent(window,"load",requestForm.init);


var leadformrequestForm = {
	fields: [],
	init : function() {
		if(!document.getElementsByTagName) return false;
		var rf = $("#leadformrequestForm");
		if(rf) {
			rf.find("input").each(function() {
				if(this.type == "text") {
					leadformrequestForm.fields.push(this);
				}
			});
			rf.find("textarea").each(function() {
				leadformrequestForm.fields.push(this);
			});
			/*for(var i=0;i<rfInputs.length;i++) {
				if(rfInputs[i].type == "text") {
					leadformrequestForm.fields.push(rfInputs[i]);
				}
			}
			for(var t=0;t<rfTextareas.length;t++) {
				leadformrequestForm.fields.push(rfTextareas[t]);
			}*/
			for(var f=0;f<leadformrequestForm.fields.length;f++) {
				$(leadformrequestForm.fields[f]).blur(function() {
					if($(this).val() == "") {
						$(this).parent().removeClass("hasContent");
					}
				}).keyup(function() {
					if($(this).val() != "") {
						$(this).parent().addClass("hasContent");
					}
				});
				/*requestForm.handleBG(requestForm.fields[f]);
				addEvent(leadformrequestForm.fields[f],"blur",leadformrequestForm.handleBG);
				addEvent(leadformrequestForm.fields[f],"keyup",leadformrequestForm.handleBG);*/
			}
		}
	}/*,
	handleBG : function(node) {
		var target = node.target || node.srcElement || null;
		if(target != null) {
			node = target;
		}
		if(node.value.trim() === "") {
			$(node.parentNode).removeClass("hasContent");
		} else {
			$(node.parentNode).addClass("hasContent");
		}
	}*/
}
addEvent(window,"load",leadformrequestForm.init);


var jobseekerForm = {
	fields: [],
	init : function() {
		if(!document.getElementsByTagName) return false;
		var jf = $("#jobseekerForm");
		if(jf) {
			jf.find("input").each(function() {
				if(this.type == "text") {
					jobseekerForm.fields.push(this);
				}
			});
			jf.find("textarea").each(function() {
				jobseekerForm.fields.push(this);
			});
			/*for(var i=0;i<jfInputs.length;i++) {
				if(jfInputs[i].type == "text") {
					jobseekerForm.fields.push(jfInputs[i]);
				}
			}
			for(var t=0;t<jfTextareas.length;t++) {
				jobseekerForm.fields.push(jfTextareas[t]);
			}*/
			for(var f=0;f<jobseekerForm.fields.length;f++) {
				$(jobseekerForm.fields[f]).blur(function() {
					if($(this).val() == "") {
						$(this).removeClass("hasContent");
					}
				}).keyup(function() {
					if($(this).val() != "") {
						$(this).parent().addClass("hasContent");
					}
				});
				/*jobseekerForm.handleBG(jobseekerForm.fields[f]);
				addEvent(jobseekerForm.fields[f],"blur",jobseekerForm.handleBG);
				addEvent(jobseekerForm.fields[f],"keyup",jobseekerForm.handleBG);*/
			}
		}
	}/*,
	handleBG : function(node) {
		var target = node.target || node.srcElement || null;
		if(target != null) {
			node = target;
		}
		if(node.value.trim() === "") {
			$(node.parentNode).removeClass("hasContent");
		} else {
			$(node.parentNode).addClass("hasContent");
		}
	}*/
}
addEvent(window,"load",jobseekerForm.init);
