/***********************************************
	Hide/Show an element
***********************************************/
function setStyle(objId, style, value) {
    document.getElementById(objId).style[style] = value;
}

function toggleLayer(objid, stateis) {
	if (stateis == 'off') {
		setStyle(objid,'visibility','hidden');
	} else if (stateis == 'on') {
		setStyle(objid,'visibility','visible');		
	} else {
		if (document.getElementById(objid).style['visibility'] == 'hidden') {
			setStyle(objid,'visibility','visible');
		} else {
			setStyle(objid,'visibility','hidden');
		}
	}
}
/***********************************************
	Custom scrollbar
***********************************************/
var undefined;

function getFirstNodeOfType(nodeType,parent) {
	parent = (parent) ? parent : document;
	for ( var m = parent.firstChild; m != null; m = m.nextSibling ) {
		switch (nodeType) {
			case Node.ELEMENT_NODE:
				if (m.nodeType == 1) return m;
				break;
			case Node.TEXT_NODE:
				if (m.nodeType == 3) return m;
				break;
		}
	}
	return null;
}

function getFirstElementOfClass(tagName,className,root) {
    var nodeOfInterest, kids;
    root = (root) ? root : window.document;
    kids = root.getElementsByTagName(tagName);
    for ( var j = 0; j < kids.length; j++ ) {
        if ( kids[j].className.indexOf(className) != -1 ) nodeOfInterest = kids[j];
    }
    return nodeOfInterest;
}

function getElementsByClassName(tagName,className,root) {
    var nodesOfInterest, kids;
    root = (root) ? root : window.document;
    nodesOfInterest = new Array();
    kids = root.getElementsByTagName(tagName);
    for ( var j = 0; j < kids.length; j++ ) {
        if ( kids[j].className.indexOf(className) != -1 ) nodesOfInterest[nodesOfInterest.length] = kids[j];
    }
    return nodesOfInterest;
}

function getFirstAncestorOfTagName(n,tagName) {
	//alert('entering recurse');
	if (!n.parentNode) {
		return;
	} else if (n.parentNode.nodeName == tagName.toUpperCase()) {
		return n.parentNode;
	} else {
		getFirstAncestorOfTagName(n.parentNode,tagName);
	}
}

function getFirstChildOfTagName(n,tagName) {
	tagName = tagName.toUpperCase();
	if (n.hasChildNodes()) {
		for ( var i = 0; i < n.childNodes.length; i++ ) {
			if ( n.childNodes[i].nodeName == tagName ) {
				return n.childNodes[i];
			}
		}
	}
	return;
}

function addEventListeners(EventSource,EventType,EventHandler,captures) {
	captures = (captures) ? captures : false;
	if ( document.addEventListener ) {
		EventSource.addEventListener(EventType,EventHandler,captures);
	} else if (document.attachEvent) {
		EventType = "on" + EventType;
		EventSource.attachEvent(EventType,EventHandler);
	} else {
		EventType = "on" + EventType;
		EventSource[EventType] = EventHandler;
	}
}

function removeEventListeners(EventSource,EventType,EventHandler,captures) {
	captures = (captures) ? captures : false;
	if ( document.removeEventListener ) {
		EventSource.removeEventListener(EventType,EventHandler,captures);
	} else if (document.detachEvent) {
		EventType = "on" + EventType;
		EventSource.detachEvent(EventType,EventHandler);
	} else {
		EventType = "on" + EventType;
		EventSource[EventType] = null;
	}
}

function getEvent(evt) {
	return (evt) ? evt : (window.event) ? window.event : null;
}

function getTarget(evt) {
	return (evt.target) ? evt.target : (evt.srcElement) ? evt.srcElement : null;
}

function getCurrentTarget(evt,currentTarget) {
	return (evt.currentTarget) ? evt.currentTarget : (currentTarget) ? currentTarget : (this) ? this : null;
}

function getPos(n,evt) {
	if (n == 'X') {
		return (evt.pageX) ? evt.pageX : (document.documentElement.scrollLeft) ? (document.documentElement.scrollLeft + evt.clientX) : (document.body.scrollLeft) ? (document.body.scrollLeft + evt.clientX) : evt.clientX;
	} else {
		return (evt.pageY) ? evt.pageY : (document.documentElement.scrollTop) ? (document.documentElement.scrollTop + evt.clientY) : (document.body.scrollTop) ? (document.body.scrollTop + evt.clientY) : evt.clientY;
	}
}

function getInnerDimension(n) {
	if (n == 'W') {
			return (window.innerWidth) ? window.innerWidth : (document.documentElement.clientWidth) ? document.documentElement.clientWidth : (document.body.clientWidth) ? document.body.clientWidth : 0;
	} else {
			return (window.innerHeight) ? window.innerHeight : (document.documentElement.clientHeight) ? document.documentElement.clientHeight : (document.body.clientHeight) ? document.body.clientHeight : 0;	
	}
}

function bubbleCancel(evt) {
	if (!evt) return;
	if (evt.stopPropagation) {
		evt.stopPropagation();
		evt.preventDefault();
	} else if (typeof evt.cancelBubble != undefined) {
		evt.cancelBubble = true;
		evt.returnValue = false;
	} else {
		return false;
		evt = null;
	}
}

var isOpera = false;
var isSafari = false;
var isIE5Mac = false;
var isIEWin = false;
var isIEWin50 = false;
var isIEWin55plus = false;

function UADetect() {
	var UA = navigator.userAgent;
	//document.write(UA);
	if (UA.indexOf("Opera") != -1)
		isOpera = true;
	else if (UA.indexOf("AppleWebKit") != -1)
		isSafari = true;
	else if (UA.indexOf("Mac") != -1 && UA.indexOf("MSIE ") != -1)
		isIE5Mac = true;
	else if (UA.indexOf("Win") != -1 && UA.indexOf("MSIE") != -1 && UA.indexOf("Opera") == -1) {
		isIEWin = true;
		if (UA.indexOf("MSIE 5.0") != -1)
			isIEWin50 = true;
		else
			isIEWin55plus = true;
	}
}

UADetect();

var wrapper;
var column;
var handle;
var clipArray = new Array();
var H;
var target;
var posY;
var deltaY;

function scrollDownHandle(evt) {
   evt = (evt) ? evt : event;
   target = (evt.target) ? evt.target : evt.srcElement;
   posY = (evt.pageY) ? evt.pageY : (document.documentElement.scrollTop) ? (document.documentElement.scrollTop + evt.clientY) : evt.clientY;
   if (target.id == "handle") {
	   deltaY = posY - parseInt(handle.style.top);
   } else {
	   deltaY = 30;
   }
   moveScroll(evt);
   addEventListeners(document,"mousemove",scrollMoveHandle);
   addEventListeners(document,"mouseup",scrollUpHandle);	
   bubbleCancel(evt);
}

function scrollMoveHandle(evt) {
   	evt = (evt) ? evt : event;
	posY = (evt.pageY) ? evt.pageY : (document.documentElement.scrollTop) ? (document.documentElement.scrollTop + evt.clientY) : evt.clientY;
	moveScroll(evt);
   	bubbleCancel(evt);
}

function scrollUpHandle(evt) {
   evt = (evt) ? evt : event;
   removeEventListeners(document,"mousemove",scrollMoveHandle);
   removeEventListeners(document,"mouseup",scrollUpHandle);		
   bubbleCancel(evt);
}

function moveScroll(evt) {
	var ha = (document.getElementById('column').clientHeight - 330) / 330;
	posY = posY - deltaY;
	posY = (posY < 0) ? 0 : posY;
	posY = (posY > 330) ? 330 : posY;
	handle.style.top = posY + "px";
	column.style.top = -(posY * ha) + "px";
//	column.style.height = (H + posY) + "px";	
}

function init() {
	var ha = document.getElementById('column').clientHeight
	if  (ha > 330) {
		wrapper = document.getElementById("wrapper");
		column = document.getElementById("column");
		column.onmousedown = function (event) { event.cancelBubble = true; };
		handle = document.getElementById("handle");
		addEventListeners(wrapper,"mousedown",scrollDownHandle);
		addEventListeners(handle,"mousedown",scrollDownHandle);
		H = parseInt(column.style.height);
		setStyle('handle','visibility','visible');
		bgIS = "transparent url('http://www.denveradvertising.com/dev/wp-content/themes/denver_ad/images/stripe.gif') repeat-y top right";
		setStyle('wrapper','background',bgIS);
	}
}
/***********************************************
	Mouseover To Change Nav Menu Images
***********************************************/
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
//	toggleLayer('talkForm',1);
	init();
}

function MM_swapImgRestore() { //v3.0
	var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
	var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
