/* 

IGX base scripts


*/




/*################################################################################## IGX BASE Functions */

/*

	IGX BASE Functions
	
*/

/* Remove negative text-indent borders on links */
var theahrefs = document.getElementsByTagName('a');
//fix dotted line thing when link is OnClicked
for(var x=0;x!=theahrefs.length;x++){ theahrefs[x].onfocus = function stopLinkFocus(){this.hideFocus=true;}; }
//a:focus { -moz-outline-style: none; }   <-- this is found in the moz.css file to take care of firefox

/* Basic Toggle Functions */
function toggle(obj) {
	var el = document.getElementById(obj);
	if ( el.style.display != 'none' ) { el.style.display = 'none'; }
	else { el.style.display = ''; }
}

	/*
		Written by Jonathan Snook, http://www.snook.ca/jonathan
    	Add-ons by Robert Nyman, http://www.robertnyman.com
	*/
	function getElementsByClassName(oElm, strTagName, strClassName){
		var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
		var arrReturnElements = new Array();
		strClassName = strClassName.replace(/\-/g, "\\-");
		var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
		var oElement;
		for(var i=0; i<arrElements.length; i++){
			oElement = arrElements[i];      
			if(oRegExp.test(oElement.className)){
				arrReturnElements.push(oElement);
			}   
		}
		return (arrReturnElements)
	}
	
	/*
		Snook Knockoff to get any attribute with any value
		By Mark C.
	*/
	function getElementsByAttribute(oElm, strTagName, strAttType, strAttName){
		var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
		var arrReturnElements = new Array();
		strAttName = strAttName.replace(/\-/g, "\\-");
		var oRegExp = new RegExp("(^|\\s)" + strAttName + "(\\s|$)");
		var oElement;
		for(var i=0; i<arrElements.length; i++){
			oElement = arrElements[i];      
			if(oRegExp.test(oElement.getAttribute(strAttType))){
				arrReturnElements.push(oElement);
			}   
		}		
		return (arrReturnElements)
	}

	

/*############################################################################## Event Handler Functions */

/*

	EVENT HANDLERS
	
	By Matt Read (http://mattread.com/archives/2005/10/faking-two-column-text/)
	from: http://www.scottandrew.com/weblog/articles/cbs-events
*/	

function addEvent(obj, evType, fn, useCapture) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (obj.attachEvent) {
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	}
	else
		alert("Handler could not be attached");
}

function removeEvent(obj, evType, fn, useCapture) {
	if (obj.removeEventListener) {
		obj.removeEventListener(evType, fn, useCapture);
		return true;
	}
	else if (obj.detachEvent) {
		var r = obj.detachEvent("on"+evType, fn);
		return r;
	}
	else
		alert("Handler could not be removed");
}


/*########################################################################### Prototype Knockoffs Functions */

/*

	Shortcut scripts

*/

function $(id) {
	return document.getElementById(id);
}

function $2(id) {
	return document.getElementsByClassName(document.all,'*',id);
}

function $tags(name) {
	return document.getElementsByTagName(name);
}

function $new(type, id) {
	var element = document.createElement(type);
	if (id) element.id = id;
	return element;
}

function $text(text) {
	return document.createTextNode(text);
}



/*################################################################################## CSS Class Functions */

/*
	APPRENDCLASS and REMOVE CLASS
	scripts work in sync with CSS to remove/add classes. Functions will leave any 2nd class and only remove/add the 
	class designated by the 2nd parameter.
	
*/

/* Doesn't append if className already present */
function appendClass(elm, appClass)
{
var currClass = elm.className;
if(!(new RegExp('\\b'+appClass+'\\b').test(currClass)) )
elm.className += (currClass? ' ':'') + appClass;
}

function removeClass(elm, remClass)
{
elm.className = elm.className
.replace(new RegExp('\\s*'+remClass+'\\s*'),' ')
.trim();
} 

/* String trim function to clean up white space */
String.prototype.trim = function(){ return this.replace(/^\s*¦\s*$/g,"")} 


/* Pause functions to pause. To replace setTimeOut() */
function pause(millis)
{
        var date = new Date();
        var curDate = null;

        do { curDate = new Date(); }
        while(curDate-date < millis)
}






/*#################################################################### Proprietary Functions, Misc. Functions */

/*
	PLACEHOLDER
	placeholder script for form fields default value. function needs a proprietary attribute placeholder="" for the 		
	function to work
*/

function activatePlaceholders() {
	var detect = navigator.userAgent.toLowerCase();
	if (detect.indexOf("safari") > 0) return false;
	var inputs = document.getElementsByTagName("input");
	for (var i=0;i<inputs.length;i++) {
	  if (inputs[i].getAttribute("type") == "text") {
	   if (inputs[i].getAttribute("placeholder") && inputs[i].getAttribute("placeholder").length > 0) {
		inputs[i].value = inputs[i].getAttribute("placeholder");
		inputs[i].onclick = function() {
		 if (this.value == this.getAttribute("placeholder")) {
		  this.value = "";
		 }
		 return false;
		}
		inputs[i].onblur = function() {
		 if (this.value.length < 1) {
		  this.value = this.getAttribute("placeholder");
		 }
		}
	   }
	  }
	}
}

window.onload=function() {
	activatePlaceholders();
}


