/* Extracted from Prototype JS Library, http://prototype.conio.net/
 Written by Sam Stephenson, http://conio.net/ */
function $() {
  var elements = new Array();
  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string') element = (document.getElementById) ? document.getElementById(element) : eval("document.all."+element) ;
    if (arguments.length == 1) return element;
    elements.push(element);
  }
  return elements;
}
/* Function to grab all elements with a specific class name.
 Original written by Jonathan Snook, http://www.snook.ca/jonathan
 Add-ons by Robert Nyman, http://www.robertnyman.com 	
 Re-written by Zack Gilbert of Seen Creative, http://www.weareseencreative.com */
function getElementsByClass(className, elm, tag){
	if(elm == null) elm = document;
	if(tag == null) tag = '*';
	var elems = elm.getElementsByTagName(tag);
	var returnElems = new Array();
	className = className.replace(/\-/g, "\\-");
	var pattern = new RegExp("(^|\\s)" + className + "(\\s|$)");
	for(var i=0; i<elems.length; i++){
		if(pattern.test(elems[i].className)) returnElems.push(elems[i]);
	}
	return returnElems
}

/* Function to return the class attribute. IE and all other standards compliant browsers have different names for the class attribute object. */
function classAttr(){
	if((versionInfo.match(IE6)!= null)||(versionInfo.match(IE7)!= null)){
		class_att = 'className';
	}
	else {
		class_att = 'class';
	}
	
	return class_att;
	
}
/* Functions to add/remove event listeners to objects
	Written by John Resig, http://ejohn.org */
function addEvent( obj, type, fn ) {
	if (obj.addEventListener) obj.addEventListener( type, fn, false );
	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] );
	}
}

function removeEvent( obj, type, fn ) {
	if (obj.removeEventListener) obj.removeEventListener( type, fn, false );
	else if (obj.detachEvent) {
		obj.detachEvent( "on"+type, obj[type+fn] );
		obj[type+fn] = null;
		obj["e"+type+fn] = null;
	}
}
/* Functions to handle cross-browser events.
 Written by Zack Gilbert of Seen Creative, http://www.weareseencreative.com. */
/* get the target of an event object */
function getTarget(e) {
	return (e.target) ? e.target : e.srcElement;
}
/* Function to get object attribute text */
function getObjectAttribute(obj,attr){
	var attrValue = obj.getAttribute(attr);	
	return attrValue;
}

/* Function to get img extension */
function getImgExt(obj){
	var src = obj.getAttribute('src');

	var imgExtPosition = src.lastIndexOf('.') + 1;	//Get the extension. Add 1 to get only the extension, not .extension

	var extension;

	if(src.match('clearpixel.gif')){	//If IE and the image is a PNG, return 'png', because the PNG transparency function causes the img src to be clearpixel.gif.
		extension = 'png';
	}

	else {
		var extension = src.slice(imgExtPosition);
	}

	return extension;
}

/* Begin get URL parameter functions */
function getURLParameters(action) {
	var sURL = window.document.URL.toString();
	
	if (sURL.indexOf("?") > 0){
		var qsvs;
		//Split the url at the beginning of the query string.
		var arrParams = sURL.split("?");
		
		//Split the query string into name/value pairs.
		var fullqs = arrParams[1];
		var arrURLParams = fullqs.split("&");
		
		//Create 2 new arays to hold the parameter name and parameter value.
		var paramNames = new Array();
		var paramValues = new Array();
		
		for (var j=0;j<arrURLParams.length;j++) {
			//Split the name/value pairs into name and value.
			var sParam =  arrURLParams[j].split("=");
			
			//Set the value of the parameter name array.
			var arrParamNames = sParam[0];
			//Set the value of the parameter value array.
			var arrParamValues = unescape(sParam[1]);
			
			//Generate the arrays using the parameter names and parameter values.
			paramNames.push(arrParamNames);
			paramValues.push(arrParamValues);
		}
		qsvs = paramValues[0];
	}
	
	else {
		qsvs;
	}
	
	/*******************
	If action equals 'split', we want to return the value of the split query string. Currently, we are only concerned with the value of the position.
	If action does not equal 'split', we want to return the entire query string as one long string to be passed to a Flash movie. 05/03/06
	********************/
	if (action == 'split'){
		return qsvs;
	}
	else {
		return fullqs;
	}
}
/* End get URL parameter functions */

/* Begin get URL parameter by name function */
function getURLParameterByName(name) {
    var sURL = window.document.URL.toString();
	
    if (sURL.indexOf("?") > -1){
	    
	    //Split the url at the beginning of the query string.
	    var arrParams = sURL.split("?");
		
	    //Split the query string into name/value pairs.
	    var fullqs = arrParams[1];
	    var arrURLParams = fullqs.split("&");
		
	    for (var j=0;j<arrURLParams.length;j++) {
	    
	        if(arrURLParams[j].indexOf(name) > -1){
		        //Split the name/value pairs into name and value.
		        var qsValue =  arrURLParams[j].split("=")[1];
	            return qsValue;		            
		        break;
		    }
	    }
    }
}
/* End get URL parameter by name function */