function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function insertAfter(newElement,targetElement) {
  var parent = targetElement.parentNode;
  if (parent.lastChild == targetElement) {
    parent.appendChild(newElement);
  } else {
    parent.insertBefore(newElement,targetElement.nextSibling);
  }
}

function addClass(element,value) {
  if (!element.className) {
    element.className = value;
  } else {
    newClassName = element.className;
    newClassName+= " ";
    newClassName+= value;
    element.className = newClassName;
  }
}

/* set up history.back links */
function historyBack() {
    if (! document.getElementsByTagName) return; 
    var links = document.getElementsByTagName("a");
    for (var c=0; c<links.length; c++) { 
        var anchorlink = links[c]; 
        if (anchorlink.getAttribute("rel") == "previous") {           
            anchorlink.onclick = function() {
                                this.href='javascript:history.back()';
                                //return false;
                             }
        }
    }
}

/* 
open external link targets in new (_blank) window
params: pass a specific array of anchor elements (e.g. all within a certain container),
else function defaults to all anchors with rel='external'
*/
function externalLinks(targetAnchors) { 
    if (!document.getElementsByTagName) return; 
    if(! targetAnchors) {
        var anchors = document.getElementsByTagName("a");
        for (var i=0; i<anchors.length; i++) { 
            var anchor = anchors[i];
            if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "external" || anchor.parentNode.className=='external')) anchor.target = "_blank"; 
        }         
    } else {
        var anchors = targetAnchors;
        for (var i=0; i<anchors.length; i++) { 
            var anchor = anchors[i];
            anchor.target = "_blank";
        }
    }     
}

function preparePrintLinks() { 
    if (!document.getElementsByTagName) return; 
    var anchors = document.getElementsByTagName("a"); 
    for (var i=0; i<anchors.length; i++) { 
        var anchor = anchors[i]; 
        if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "print") {
        anchor.onclick = function() {
                                    window.print();
                                    return false;
                                    }
        } 
    } 
}

function confirmDelete(action, elementId, itemType) {
	if (action == 'delete') {
  	if (!elementId) {
    	var itemSelected = elementId;
    } else {
  		var itemSelected = document.getElementById(elementId).value;
    }
		if (itemSelected.length > 0 || (!itemSelected)) {
			var ans = confirm('Are you sure you want to delete this ' + itemType + '?');
			if (ans) {
				return true;
			} else {
				return false;
			}
		} else {
			alert('Please select a ' + itemType + ' to delete.');
			return false;
		}
	}

	return true;
}

function doPopup(element) {
    //triggerLink = document.getElementById(triggerId);
    triggerLink = element;
    triggerLink.onclick=function() {
                                    window.open(this.href, "newwin","top=0,left=0,width=600,height=210,scrollbars=yes");
                                    return false;
                                    }
}

function doInvoicePopup(element) {
    //triggerLink = document.getElementById(triggerId);
    triggerLink = element;
    triggerLink.onclick=function() {
                                    window.open(this.href, "newwin","top=0,left=0,width=860,height=800,scrollbars=yes");
                                    return false;
                                    }
}

function preparePopupLinks() {
  if (!document.getElementsByTagName) return; 
  var anchors = document.getElementsByTagName("a"); 
  for (var i=0; i<anchors.length; i++) { 
    var anchor = anchors[i]; 
    if(anchor.getAttribute("href")) {
			if(anchor.getAttribute("rel") == "popup") {
     		doPopup(anchor);
     	} else if(anchor.getAttribute("rel") == "invoice-popup") {
				doInvoicePopup(anchor);        
      }
  	}
	} 
}

function stylePopupWindows() {
	if(window.opener) {
		addClass(document.getElementsByTagName("body")[0],"popup");
  }
}

function reloadOpener() {
	window.opener.location.reload();
}

function helpPopups() {
	 if (!document.getElementsByTagName) return; 
	 var icons = document.getElementsByTagName('img');
	for(var i=icons.length-1; i> -1; i--) {
		if(icons[i].className=="icon") {
			icons[i].popup = icons[i].parentNode.getElementsByTagName('div')[0];
			
			icons[i].popup.style.display = "none";
			
			icons[i].onmouseover=function() {
				this.popup.style.display="block";
			};
			icons[i].onmouseout=function() {
				this.popup.style.display="none";
			};
		}
	}
}

function findPosStopAt(obj,stopat) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
	do
	{
		curleft += obj.offsetLeft;
		curtop  += obj.offsetTop;
	} while ((obj = obj.offsetParent) && obj!==stopat);
	
	
	return [curleft,curtop];
	}
}

function hasClass(ele,cls) {
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function addClass(ele,cls) {
	if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}
 
function removeClass(ele,cls) {
	if (hasClass(ele,cls)) {
		var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg,' ');
	}
}

function isie6()
{
	if (navigator.appName == 'Microsoft Internet Explorer')
	{
		var ua = navigator.userAgent;
		var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
		if (re.exec(ua) != null) rv = parseFloat( RegExp.$1 );
		if (rv < 7.0) return true;
	}
	return false;
}

addLoadEvent(stylePopupWindows);
addLoadEvent(historyBack);
addLoadEvent(externalLinks);
addLoadEvent(preparePrintLinks);
addLoadEvent(preparePopupLinks);
addLoadEvent(helpPopups);

