/* window 'on load' event attachment */
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != "function") {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

/* insert an element after a particular node */
function insertAfter(parent, node, referenceNode) {
	parent.insertBefore(node, referenceNode.nextSibling);
}

/* quick getElementbyID */
/* $('content') */
function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

/* grab Elements from the DOM by className */
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;
}

/* adds a className to an object */
/* addClass('a', 'active') */
function addClass(element, value) {
	if (!element.className) {
		element.className = value;
	} else {
		newClassName = element.className;
		newClassName += " ";
		newClassName += value;
		element.className = newClassName;
	}
}

/* removes a className of an object */
function removeClass(obj,cName){ return obj && (obj.className=obj.className.replace(new RegExp("^"+cName+"\\b\\s*|\\s*\\b"+cName+"\\b",'g'),'')); }

/* adds a className from an Attribute */
/* attrToClass('a','rel','external'); */
function attrToClass(el,attr,value){
	var els = document.getElementsByTagName(el);
	for (var i=0; i < els.length; i++){
		var elsAttr = els[i].getAttribute(attr);
		if (elsAttr == value) addClass(els[i],value);
	}
}

/* toggles an element by id */
function toggle(obj) {
	var el = $(obj);
	//var el = document.getElementById(obj);
	el.style.display = (el.style.display != 'none' ? 'none' : '' );
}

/* searches for a link with a className, and adds a trigger to open it in a new window */
function external2blank() {
	var externals = getElementsByClass('external',document,'*');
	for (i=0; i<externals.length; i++) { 
		externals[i].setAttribute('target','_blank');
	}
	//alert(externals.length);
}

/* searches for a link with a className, and adds a trigger to print the document */
/* send2print('print'); */
function send2print(printClass) {
	var printLink = getElementsByClass(printClass,document,'a');
	for(var i = 0; i < printLink.length; i++){
		printLink[i].onclick = function() {
			window.print();
			return false;
		}
	}
}

/* Checks if an input is filled */
function isFilled(field) {
  if (field.value.length < 1) {
    return false;
  } else {
    return true;
  }
}

/* Redirects to the combo's value */
function openDir(myCombo) {
	var newIndex = myCombo.selectedIndex;
	var geturl = myCombo.options[ newIndex ].value;
	if (!geturl || geturl == "#"  ) { // if there inst a value or value is #, dont do anything
		//alert("Elija una opción");
	} else {
		//window.location.assign(geturl); // opens in the same window
		window.open(geturl); // opens in a new window
	}
}
