// place Functions here 
//--------------------------------------------------------------------------------




// Generic PopUp Function
function popUp(wname,url,width,height,statusbar,scrollbars,resizable,toolbar){

	//define height and width if they are not passed
	//as arguments
	if(!height)
		height=300;
	if(!width)			
		width=500;
	if(!scrollbars)			
		scrollbars="yes";
	if(!resizable)			
		resizable="no";
	if(!toolbar)			
		toolbar="no";
	if(!statusbar)			
		toolbar="no";

	var theWidth = width;
	var theHeight = height;

		
	x = (640 - theWidth)/2, y = (480 - theHeight)/2;

  	if (screen) {
      		y = (screen.availHeight - theHeight)/2;
      		x = (screen.availWidth - theWidth)/2;
  		}
	if (screen.availWidth > 1800) { 
		x = ((screen.availWidth/2) - theWidth)/2; 
  		} 

		
	var settings = "status=" + statusbar + "toolbar=" + toolbar + ",resizable=" + resizable + ",height=" + height + ",width=" + width + ",scrollbars=" + scrollbars + ',width='+theWidth+',height='+theHeight+',screenX='+x+', screenY='+y+', top='+y+',left='+x;
	PopWin = window.open(url,wname,settings);
	PopWin.focus();
}

//--------------------------------------------------------------------------------						
//Pulling Data from Other Web pages with XMLHTTP 
function RemoteScriptXMLHTTPGetPage(ExternalPageURL){
	var xmlhttp = null;
		
	try {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {
	try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");} catch (E) {
	xmlhttp = false; }
	 }
	if (xmlhttp) {
	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	xmlhttp.open("get", ExternalPageURL,true);
	xmlhttp.onreadystatechange= function() {
	if (xmlhttp.readyState==4) { document.write(xmlhttp.responseText) ; } 
	} 
	xmlhttp.send(null) 
	}
}

//--------------------------------------------------------------------------------
// News Feed HTML from Feedburner formating

 function feedflareon(objpar) {
  	 for (i=0; i<objpar.childNodes.length; i++){
    	 if (objpar.childNodes[i].tagName=="DIV") {
			    obj = objpar.childNodes[i];
			    for (a=0; a<obj.childNodes.length; a++){
						 if (obj.childNodes[a].className=="feedflare") {	
						   	obj.childNodes[a].style.display="block";
								obj.childNodes[a].style.visibility="visible";
						}
					}
    	 }
     }
 }
 function feedflareoff(objpar) {
  	 for (i=0; i<objpar.childNodes.length; i++){
    	 if (objpar.childNodes[i].tagName=="DIV") {
			    obj = objpar.childNodes[i];
			    for (a=0; a<obj.childNodes.length; a++){
						 if (obj.childNodes[a].className=="feedflare") {	
						   	obj.childNodes[a].style.display="none";
								obj.childNodes[a].style.visibility="hidden";
						}
					}
    	 }
     }
 }




//--------------------------------------------------------------------------------
// Click Tracks related functions

function openStdDemo()
{
url = "ctdata/clicktracks_overview.html" ;
popup = window.open( url, 'demowindow', 'toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no, resizable=no,width=1010,height=696,left=2,top=10' );
popup.focus();
}

function openGetCTSerial()
{
url = "ctdata/WordVerification_Check.asp" ;
						var x = 0;
						var y = 0;
          	var theWidth = 400;
          	var theHeight = 300;
           if (screen) {
             		y = (screen.availHeight - theHeight)/2;
             		x = (screen.availWidth - theWidth)/2;
            }
            if (screen.availWidth > 1800) { 
          	    x = ((screen.availWidth/2) - theWidth)/2; 
            } 	
popup = window.open( url, 'serialwindow', 'toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no, resizable=no,width='+theWidth+',height='+theHeight+',screenX='+x+', screenY='+y+', top='+y+',left='+x);
popup.focus();
}

function openSmallDemo( name , width, height )
{
	popup = window.open( "http://www.clicktracks.com/demos_small/" + name + '.php', 'clicktracks', 'toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=no,width=' + width + ',height=' + height + ',left=2,top=10' );
	popup.focus();
}

//--------------------------------------------------------------------------------

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function getWindowHeight() {
	var windowHeight = 0;
	if (typeof(window.innerHeight) == 'number') {
		windowHeight = window.innerHeight;
	}
	else {
		if (document.documentElement && document.documentElement.clientHeight) {
			windowHeight = document.documentElement.clientHeight;
		}
		else {
			if (document.body && document.body.clientHeight) {
				windowHeight = document.body.clientHeight;
			}
		}
	}
	return windowHeight;
}
function getWindowWidth() {
	var windowWidth = 0;
	if (typeof(window.innerWidth) == 'number') {
		windowWidth = window.innerWidth;
	}
	else {
		if (document.documentElement && document.documentElement.clientWidth) {
			windowWidth = document.documentElement.clientWidth;
		}
		else {
			if (document.body && document.body.clientWidth) {
				windowWidth = document.body.clientWidth;
			}
		}
	}
	return windowWidth;
}
//--------------------------------------------------------------------------------


function ShowID(sObjID) {
  if (document.getElementById(sObjID)) {
     obj = document.getElementById(sObjID);
		 obj.style.display="block";
  }
}		

function HideID(sObjID) {
  if (document.getElementById(sObjID)) {
     	 obj = document.getElementById(sObjID);
			 obj.style.display="none";
	}
}		
				
//--------------------------------------------------------------------------------				

function pte(theImage,doResize) {
//Function for broken images management. replaces broken image with a transparent 1x1pixel image 
// and also resizes it down, if specified
   if (theImage.src !== '/images/spacer.gif') {	 
	 		theImage.src = '/images/spacer.gif';
	 }
   if (doResize==1) {
	 		theImage.width=1;
	 		theImage.height=1;
   }
}
//--------------------------------------------------------------------------------


		function setFooter(contentHeight,AdjContainer) {

			if (document.getElementById) {
				var windowHeight = getWindowHeight();
				if (windowHeight > 0) {


						 if (contentHeight > 0) {

							   if (document.getElementById(AdjContainer+'right')) {
					         var footerElement = document.getElementById(AdjContainer+'right');
							     footerElement.style.height = (contentHeight)  + 'px';
                 }
							   if (document.getElementById(AdjContainer+'left')) {
					          var footerElement2 = document.getElementById(AdjContainer+'left');
							     footerElement2.style.height = (contentHeight)  + 'px';
                 }
							   if (document.getElementById('nav'+AdjContainer+'right')) {
					          var footerElement3 = document.getElementById('nav'+AdjContainer+'right');
							     footerElement3.style.height = (contentHeight)  + 'px';
                 }
							   if (document.getElementById('nav'+AdjContainer+'left')) {
					          var footerElement4 = document.getElementById('nav'+AdjContainer+'left');
							     footerElement4.style.height = (contentHeight)  + 'px';
						     }

							   if (document.getElementById('mid'+AdjContainer+'right')) {
					          var footerElement6 = document.getElementById('mid'+AdjContainer+'right');
							     footerElement6.style.height = (contentHeight)  + 'px';
                 }
							   if (document.getElementById('mid'+AdjContainer+'left')) {
					          var footerElement5 = document.getElementById('mid'+AdjContainer+'left');
							     footerElement5.style.height = (contentHeight)  + 'px';
						     } 



						 }

					
				}
			}
		}


	function setFooterHomepage(contentHeight,AdjContainer) {

			if (document.getElementById) {
				var windowHeight = getWindowHeight();
				if (windowHeight > 0) {


						 if (contentHeight > 0) {

							   if (document.getElementById("floaterrighthome")) {
					         var footerElementA = document.getElementById("floaterrighthome");
							     footerElementA.style.height = (contentHeight)  + 'px';
                 }
							   if (document.getElementById("floaterlefthome")) {
					          var footerElementB = document.getElementById("floaterlefthome");
							     footerElementB.style.height = (contentHeight)  + 'px';
                 }
		
							   if (document.getElementById("midfloaterrighthome")) {
					          var footerElementC = document.getElementById("midfloaterrighthome");
							     footerElementC.style.height = (contentHeight)  + 'px';
                 }
							   if (document.getElementById("midfloaterlefthome")) {
					          var footerElementD = document.getElementById("midfloaterlefthome");
							     footerElementD.style.height = (contentHeight)  + 'px';
								}
						 }

					
				}
			}
		}
		
		
//--------------------------------------------------------------------------------		   

/* document.getElementsBySelector(selector)
   - returns an array of element objects from the current document
     matching the CSS selector. Selectors can contain element names, 
     class names and ids and can be nested. For example:
     
       elements = document.getElementsBySelect('div#main p a.external')
     
     Will return an array of all 'a' elements with 'external' in their 
     class attribute that are contained inside 'p' elements that are 
     contained inside the 'div' element which has id="main"

   New in version 0.4: Support for CSS2 and CSS3 attribute selectors:
   See http://www.w3.org/TR/css3-selectors/#attribute-selectors

   Version 0.4 - Simon Willison, March 25th 2003
   -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows
   -- Opera 7 fails 
*/

function getAllChildren(e) {
  // Returns all children of element. Workaround required for IE5/Windows. Ugh.
  return e.all ? e.all : e.getElementsByTagName('*');
}

document.getElementsBySelector = function(selector) {
  // Attempt to fail gracefully in lesser browsers
  if (!document.getElementsByTagName) {
    return new Array();
  }
  // Split selector in to tokens
  var tokens = selector.split(' ');
  var currentContext = new Array(document);
  for (var i = 0; i < tokens.length; i++) {
    token = tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');;
    if (token.indexOf('#') > -1) {
      // Token is an ID selector
      var bits = token.split('#');
      var tagName = bits[0];
      var id = bits[1];
      var element = document.getElementById(id);
      if (tagName && element.nodeName.toLowerCase() != tagName) {
        // tag with that ID not found, return false
        return new Array();
      }
      // Set currentContext to contain just this element
      currentContext = new Array(element);
      continue; // Skip to next token
    }
    if (token.indexOf('.') > -1) {
      // Token contains a class selector
      var bits = token.split('.');
      var tagName = bits[0];
      var className = bits[1];
      if (!tagName) {
        tagName = '*';
      }
      // Get elements matching tag, filter them for class selector
      var found = new Array;
      var foundCount = 0;
      for (var h = 0; h < currentContext.length; h++) {
        var elements;
        if (tagName == '*') {
            elements = getAllChildren(currentContext[h]);
        } else {
            elements = currentContext[h].getElementsByTagName(tagName);
        }
        for (var j = 0; j < elements.length; j++) {
          found[foundCount++] = elements[j];
        }
      }
      currentContext = new Array;
      var currentContextIndex = 0;
      for (var k = 0; k < found.length; k++) {
        if (found[k].className && found[k].className.match(new RegExp('\\b'+className+'\\b'))) {
          currentContext[currentContextIndex++] = found[k];
        }
      }
      continue; // Skip to next token
    }
    // Code to deal with attribute selectors
    if (token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)) {
      var tagName = RegExp.$1;
      var attrName = RegExp.$2;
      var attrOperator = RegExp.$3;
      var attrValue = RegExp.$4;
      if (!tagName) {
        tagName = '*';
      }
      // Grab all of the tagName elements within current context
      var found = new Array;
      var foundCount = 0;
      for (var h = 0; h < currentContext.length; h++) {
        var elements;
        if (tagName == '*') {
            elements = getAllChildren(currentContext[h]);
        } else {
            elements = currentContext[h].getElementsByTagName(tagName);
        }
        for (var j = 0; j < elements.length; j++) {
          found[foundCount++] = elements[j];
        }
      }
      currentContext = new Array;
      var currentContextIndex = 0;
      var checkFunction; // This function will be used to filter the elements
      switch (attrOperator) {
        case '=': // Equality
          checkFunction = function(e) { return (e.getAttribute(attrName) == attrValue); };
          break;
        case '~': // Match one of space seperated words 
          checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); };
          break;
        case '|': // Match start with value followed by optional hyphen
          checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); };
          break;
        case '^': // Match starts with value
          checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) == 0); };
          break;
        case '$': // Match ends with value - fails with "Warning" in Opera 7
          checkFunction = function(e) { return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length); };
          break;
        case '*': // Match ends with value
          checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) > -1); };
          break;
        default :
          // Just test for existence of attribute
          checkFunction = function(e) { return e.getAttribute(attrName); };
      }
      currentContext = new Array;
      var currentContextIndex = 0;
      for (var k = 0; k < found.length; k++) {
        if (checkFunction(found[k])) {
          currentContext[currentContextIndex++] = found[k];
        }
      }
      // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);
      continue; // Skip to next token
    }
    // If we get here, token is JUST an element (not a class or ID selector)
    tagName = token;
    var found = new Array;
    var foundCount = 0;
    for (var h = 0; h < currentContext.length; h++) {
      var elements = currentContext[h].getElementsByTagName(tagName);
      for (var j = 0; j < elements.length; j++) {
        found[foundCount++] = elements[j];
      }
    }
    currentContext = found;
  }
  return currentContext;
}

/* That revolting regular expression explained 
/^(\w+)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/
  \---/  \---/\-------------/    \-------/
    |      |         |               |
    |      |         |           The value
    |      |    ~,|,^,$,* or =
    |   Attribute 
   Tag
*/



var needle = "";

document.getElementByClassName = function(needle) { 
  var xpathResult = document.evaluate('//*[@class = needle]', document, null, 0, null); 
  var outArray = new Array(); 
  while ((outArray[outArray.length] = xpathResult.iterateNext())) { 
  } 
  return outArray; 
} 



document.getElementsByClass = function (needle)
{
  var         my_array = document.getElementsByTagName("*");
  var         retvalue = new Array();
  var        i;
  var        j;

  for (i = 0, j = 0; i < my_array.length; i++)
  {
    var c = " " + my_array[i].className + " ";
    if (c.indexOf(" " + needle + " ") != -1)
      retvalue[j++] = my_array[i];
  }
  return retvalue;
}

	    

	function contactcheckform() {
		if (document.contentform.cname.value == '') {
			alert('Please enter your Name (Full Name).');
			document.contentform.cname.focus();
			return false;
		} else {
			if (document.contentform.cemail.value == '') {
				alert('Please enter your Email Address.');
				document.contentform.cemail.focus();
				return false;
			} else {
					if (document.contentform.ccomment.value == '') {
					  alert('Please enter your Message.');
					  document.contentform.ccomment.focus();
				   	return false;
				 	} else {
						return true;
					}
 			}
		}
	}
//*****************************************************************************	
	
function checkInt(str) {
  if (!str) return 0;
  var ok = "";
  for (var i = 0; i < str.length; i++) {
    var ch = str.substring(i, i+1);
    if (ch < "0" || "9" < ch) { 
      alert("Only integer input is allowed!\n\n" 
        + parseInt(ok) + " will be used because '" 
        + str + "' is invalid.\nYou may correct "
        + "this entry and try again.");
        return parseInt(ok);
     }
       else ok += ch;
  }
  return parseInt(str);
}

function checkDecimal(str) {
  if (!str) return 0;
  var ok = "";
  for (var i = 0; i < str.length; i++) {
    var ch = str.substring(i, i+1);
    if ((ch < "0" || "9" < ch) && ch != '.') {
      alert("Only numeric input is allowed!\n\n" 
      + parseFloat(ok) + " will be used because '" 
      + str + "' is invalid.\nYou may correct "
      + "this entry and try again.");
      return parseFloat(ok);
    }
    else ok += ch;
  }
return str;
}
//*****************************************************************************

/* parseUri JS v0.1, by Steven Levithan (http://badassery.blogspot.com)
Splits any well-formed URI into the following parts (all are optional):
----------------------
• source (since the exec() method returns backreference 0 [i.e., the entire match] as key 0, we might as well use it)
• protocol (scheme)
• authority (includes both the domain and port)
    • domain (part of the authority; can be an IP address)
    • port (part of the authority)
• path (includes both the directory path and filename)
    • directoryPath (part of the path; supports directories with periods, and without a trailing backslash)
    • fileName (part of the path)
• query (does not include the leading question mark)
• anchor (fragment)
*/
function parseUri(sourceUri){
    var uriPartNames = ["source","protocol","authority","domain","port","path","directoryPath","fileName","query","anchor"];
    var uriParts = new RegExp("^(?:([^:/?#.]+):)?(?://)?(([^:/?#]*)(?::(\\d*))?)?((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[\\?#]|$)))*/?)?([^?#/]*))?(?:\\?([^#]*))?(?:#(.*))?").exec(sourceUri);
    var uri = {};
    
    for(var i = 0; i < 10; i++){
        uri[uriPartNames[i]] = (uriParts[i] ? uriParts[i] : "");
    }
    
    // Always end directoryPath with a trailing backslash if a path was present in the source URI
    // Note that a trailing backslash is NOT automatically inserted within or appended to the "path" key
    if(uri.directoryPath.length > 0){
        uri.directoryPath = uri.directoryPath.replace(/\/?$/, "/");
    }
    
    return uri;
}



//*****************************************************************************

function addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// cross-browser event handling for IE5+,  NS6 and Mozilla
// By Scott Andrew
//don't use, use addLoadEvent instead (Roy)
{
  if (elm.addEventListener){
    elm.addEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.attachEvent){
    var r = elm.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be removed");
  }
}


function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}
//*****************************************************************************

function setclass(sID,sClass) {
    if (document.getElementById(sID)) {	
        ntf = document.getElementById(sID);
        ntf.setAttribute('className',sClass); // IE way
				ntf.className = sClass;
    }	
}


//*****************************************************************************

function GetPageYPos() {
var ScrollTop = document.body.scrollTop;
 

if (ScrollTop == 0)
{
    if (window.pageYOffset)
        ScrollTop = window.pageYOffset;
    else
        ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
}

return ScrollTop;

}

function GetPageYPos2() {
 var y = 0;
 if( typeof( window.pageYOffset ) == 'number' ) {
 // Netscape
        y = window.pageYOffset;
    } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
        // DOM
        y = document.body.scrollTop;
    } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        // IE6 standards compliant mode
        y = document.documentElement.scrollTop;
    }
    return  y; 
}

function getScrollXY() {
    var x = 0, y = 0;
    if( typeof( window.pageYOffset ) == 'number' ) {
        // Netscape
        x = window.pageXOffset;
        y = window.pageYOffset;
    } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
        // DOM
        x = document.body.scrollLeft;
        y = document.body.scrollTop;
    } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        // IE6 standards compliant mode
        x = document.documentElement.scrollLeft;
        y = document.documentElement.scrollTop;
    }
    return [x, y];
}
   

  

//*****************************************************************************


function SetOpacity(elem, opacityAsInt)
{


	var opacityAsDecimal = opacityAsInt;
	
	if (opacityAsInt > 100)
		opacityAsInt = opacityAsDecimal = 100; 
	else if (opacityAsInt < 0)
		opacityAsInt = opacityAsDecimal = 0; 
	
	opacityAsDecimal /= 100;
	if (opacityAsInt < 1)
		opacityAsInt = 1; // IE7 bug, text smoothing cuts out if 0
	
	elem.style.opacity = opacityAsDecimal;
	elem.style.filter  = "alpha(opacity=" + opacityAsInt + ")";
  
}


function FadeOpacity(elemId, fromOpacity, toOpacity, time, fps)
//elemId = ID of Dom object to  animate
//fromOpacity = starting opacity (1-100)
//toOpacity = final opacity (1-100)
//time = time the animation should take in milliseconds
//fps = frames per sec for the animation, higher fps=smoother anim
//
{
	var steps = Math.ceil(fps * (time / 1000));
	var delta = (toOpacity - fromOpacity) / steps;
	
	FadeOpacityStep(elemId, 0, steps, fromOpacity, delta, (time / steps));
}

function FadeOpacityStep(elemId, stepNum, steps, fromOpacity, delta, timePerStep)
{
    SetOpacity(document.getElementById(elemId), Math.round(parseInt(fromOpacity) + (delta * stepNum)));

    if (stepNum < steps)
        setTimeout("FadeOpacityStep('" + elemId + "', " + (stepNum+1) + ", " + steps + ", " + fromOpacity + ", " + delta + ", " + timePerStep + ");", timePerStep);
}

//*****************************************************************************

function changeOpac(iopacity, objid) { 
  if (document.getElementById(objid)) {
    var objopac = document.getElementById(objid); 
    if (iopacity==0) {
	   iopacity=1;
	//  HideID(objid);
	}
	  //ShowID(objid);
	  objopac.style.opacity = (iopacity / 100); 
      objopac.style.MozOpacity = (iopacity / 100); 
      objopac.style.KhtmlOpacity = (iopacity / 100); 
      objopac.style.filter = "alpha(opacity=" + iopacity + ")"; 
	
  }	
} 

function opacity(objid, opacStart, opacEnd, millisec) { 
    //speed for each frame 
    var speed = Math.round(millisec / 100); 
    var timer = 0; 

    //determine the direction for the blending, if start and end are the same nothing happens 
    if(opacStart > opacEnd) { 
        for(i = opacStart; i >= opacEnd; i--) { 
            setTimeout("changeOpac(" + i + ",'" + objid + "')",(timer * speed)); 
            timer++; 
        } 
    } else if(opacStart < opacEnd) { 
        for(i = opacStart; i <= opacEnd; i++) 
            { 
            setTimeout("changeOpac(" + i + ",'" + objid + "')",(timer * speed)); 
            timer++; 
        } 
    } 
} 





function hidevideooverlay() {
  if (document.getElementById("displaybox")) {
   var thediv=document.getElementById("displaybox");
   thediv.style.top = -2000;
  } 
  if (document.getElementById("displaybox2")) {
    var thediv2=document.getElementById("displaybox2");
    thediv2.style.top = -2000;
  }
  changeOpac(100,"bodycontent");

}  

function stopplayer() {


  var thediv=document.getElementById("displaybox");
  var thediv2=document.getElementById("displaybox2");
  
  thediv.style.top = -2000;
  thediv2.style.top = -2000;
  
  changeOpac(100,"bodycontent");
  stopplay();
  
  
  //HideID("displaybox");
  //HideID("displaybox2");
  //return false;
}

//window.onload = function()
function setmousescrolleventlistener() {
  //adding the event listerner for Mozilla
  if(window.addEventListener) document.addEventListener('DOMMouseScroll', stopplayer, false);
  //for IE/OPERA etc
  document.onmousewheel = stopplayer;
}



function showoverlay() {
	//ShowID("displaybox2");
	//ShowID("displaybox");
	changeOpac(50,"bodycontent");
	changeOpac(75,"displaybox");
	
	
  //if (document.getElementById("bodycontent")) {
//    var objopac = document.getElementById("bodycontent"); 
//	SetOpacity(objopac,20);
//  }		
	
	
    var thediv=document.getElementById("displaybox");
	var thediv2=document.getElementById("displaybox2");


	y0 = GetPageYPos();
	thediv.style.top=y0;
	thediv.style.left=0;
	var y1 = getWindowHeight();
	var x1 = getWindowWidth();
	var y2 = y0 + ((y1 - 720) /2);
	var x2 = (x1 - 540) /2 ;
	thediv2.style.top=y2;
	thediv2.style.left=x2;
	
	var oimgov=document.getElementById("imageoverlay");
	oimgov.scrollTop=0;
	
	
	
	HideID("imageoverlay");
	HideID("asciibw");
	HideID("theovimg");
	HideID("btnimgv");
	HideID("btntxtv");

}

function embedvimeo(videoid, wrapdiv) {
  setvidbtn(wrapdiv);
    
  var vimeourl1 = "http://vimeo.com/moogaloop.swf?clip_id=";
  var vimeourl2 = "&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=FFFF00&amp;fullscreen=1";
  var vimeourl =  vimeourl1+videoid+vimeourl2;
  
  swfobject.embedSWF(vimeourl, "vid"+wrapdiv, "720", "540", "9.0.0");    
  
  showvidprops(videoid);
}

function setvidbtn(wrapdiv) {
 var lis = document.getElementsBySelector("#"+wrapdiv+" span.vidbtn"); 
 for (var i=0;i<lis.length;i++) {
     lis[i].className="vidbtn BigGreen";
 }
 
 var lis3 = document.getElementsBySelector("#"+wrapdiv+" .vidprop");
 for (var i=0;i<lis3.length;i++) {
     lis3[i].style.display="none";
 }
 
}

function showvidprops(vid) {
var lis3 = document.getElementsBySelector(".vid"+vid);
 for (var i=0;i<lis3.length;i++) {
     lis3[i].style.display="";
 }

}

function initializevidgrp(wrapdiv,mainvid) {
  embedvimeo(mainvid, wrapdiv);
  var lis2 = document.getElementsBySelector("#"+wrapdiv+" span.vidbtn");
  lis2[0].className="vidbtn BigGreenNull";
  showvidprops(mainvid);
}  



function osdminit()
{
//  var lis = document.getElementsByTagName("li");

  var lis = document.getElementsBySelector("span.vidbtn");

  for (var i=0;i<lis.length;i++) {
     lis[i].onmouseover = function()   {
   	     this.style.cursor='pointer';
      };
     lis[i].onmouseout = function()  {
          this.style.cursor='default';
     };
   }
};

//*****************************************************************************



var scrollIncrement = 15;

var blockTrackClick = false;
var scrollInterval;
var scrollHoldInterval = 250;
var activeScrollArea = null;
var activeScrollResetTimer;

function SetScrollAreaActive(elem)
{
	clearTimeout(activeScrollResetTimer);
	activeScrollArea = elem;
}

function SetScrollAreaInactive(elem)
{
	activeScrollResetTimer = setTimeout("activeScrollArea = null", 100);
}

function StartScrollUp(elem)
{
	ScrollUp(elem);
	scrollInterval = setInterval("ScrollUp('" + elem + "');", scrollHoldInterval);
}

function StartScrollDown(elem)
{
	ScrollDown(elem);
	scrollInterval = setInterval("ScrollDown('" + elem + "');", scrollHoldInterval);
}

function StopScroll()
{
	clearInterval(scrollInterval);
}

function ScrollUp(elem)
{
	var scrollPos = GetTopScrollAmount(elem) + scrollIncrement;
	if (scrollPos > 0) scrollPos = 0;
	document.getElementById(elem + "_ScrollingArea").style.top = scrollPos + "px";
	
	SetScrollBarPercentage(elem, GetScrollPercentage(elem));
}

function ScrollDown(elem)
{
	var scrollPos = GetTopScrollAmount(elem) - scrollIncrement;
	scrollHeight = GetScrollHeight(elem);
	if (scrollPos < (-1 * scrollHeight)) scrollPos = (-1 * scrollHeight);
	document.getElementById(elem + "_ScrollingArea").style.top = scrollPos + "px";
	
	SetScrollBarPercentage(elem, GetScrollPercentage(elem));
}

function ScrollBarTrackClick(elem, event)
{
	if (blockTrackClick) return;
	
	var y, yMove;
	
	if (browser.isIE)
		y = window.event.clientY + document.documentElement.scrollTop  + document.body.scrollTop;
	if (browser.isNS)
		y = event.clientY + window.scrollY;
	
	if (y > GetPosY(document.getElementById(elem + "_Gripper")))
	{
		ScrollDown(elem);
		ScrollDown(elem);
	}
	else
	{
		ScrollUp(elem);
		ScrollUp(elem);
	}
}

function GetTopScrollAmount(elem)
{
	return GetPosY(document.getElementById(elem + "_ScrollingArea")) - GetPosY(document.getElementById(elem + "_Content"));
}

function GetScrollHeight(elem)
{
	return document.getElementById(elem + "_ScrollingArea").offsetHeight - document.getElementById(elem + "_Content").offsetHeight;
}

function GetTrackDistance(elem)
{
	return document.getElementById(elem + "_GripperContainer").offsetHeight - document.getElementById(elem + "_Gripper").offsetHeight;
}

function GetGripperPosition(elem)
{
	return GetPosY(document.getElementById(elem + "_Gripper")) - GetPosY(document.getElementById(elem + "_GripperContainer"));
}

function GetScrollBarPercentage(elem)
{
	var topOffset = GetGripperPosition(elem);
	var trackDistance = GetTrackDistance(elem);
	
	return topOffset / trackDistance;
}

function SetScrollBarPercentage(elem, percentage)
{
	GetTrackDistance(elem)
	
	document.getElementById(elem + "_Gripper").style.top = Math.floor(GetTrackDistance(elem) * percentage) + "px";
}

function GetScrollPercentage(elem)
{
	return -1 * (GetTopScrollAmount(elem) / GetScrollHeight(elem));
}

function SetScrollPercentage(elem, percentage)
{
	document.getElementById(elem + "_ScrollingArea").style.top = (-1 * Math.floor(GetScrollHeight(elem) * percentage)) + "px";
}

function SetScrollbarHeight(elem)
{
	var visiblePercentage = document.getElementById(elem + "_Content").offsetHeight / document.getElementById(elem + "_ScrollingArea").offsetHeight;
	
	if (visiblePercentage > 1)
		visiblePercentage = 1;
	
	var gripperHeight = Math.floor(document.getElementById(elem + "_GripperContainer").offsetHeight * visiblePercentage);
	
	if (gripperHeight < 20)
		gripperHeight = 20;
	
	document.getElementById(elem + "_Gripper").style.height = gripperHeight + "px";
}

function GetPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent) 
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;

	return curleft;
}

function GetPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;

	return curtop;
}




//*****************************************************************************
// Javascript Mouse Wheel handling code - based on an article by:
// http://adomas.org/javascript-mouse-wheel/
//*****************************************************************************

function handleMouseWheelScroll(scrollDelta)
{
	var safety = 0;
	
	if (scrollDelta < 0)
	{
		for (var x=0; x > scrollDelta && safety < 3; x--)
		{
			ScrollDown(activeScrollArea);
			safety++;
		}
	}
	
	if (scrollDelta > 0)
	{
		for (var x=0; x < scrollDelta && safety < 3; x++)
		{
			ScrollUp(activeScrollArea);
			safety++;
		}
	}
	
}

function mouseWheelActive(event)
{
	if (activeScrollArea == null)
		return;
	
	var delta = 0;
	if (!event) event = window.event;
	if (event.wheelDelta) {
		delta = event.wheelDelta/120; 
		if (window.opera) delta = -delta;
	} else if (event.detail) {
		delta = -event.detail/4;
	}
	if (delta)
		handleMouseWheelScroll(delta);
        if (event.preventDefault)
                event.preventDefault();
        event.returnValue = false;
}

if (window.addEventListener)
	window.addEventListener('DOMMouseScroll', mouseWheelActive, false);
window.onmousewheel = document.onmousewheel = mouseWheelActive;


//*****************************************************************************
// Do not remove this notice.
//
// Copyright 2001 by Mike Hall.
// Modified to bound allowable drag area to relative parent by Adam Hamilton.
//*****************************************************************************

// Determine browser and version.

function Browser() {

  var ua, s, i;

  this.isIE    = false;
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as NS 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}

var browser = new Browser();

// Global object to hold drag information.

var dragObj = new Object();
dragObj.zIndex = 0;

function ScrollBarDragStart(event, id) {

  blockTrackClick = true;

  var el;
  var x, y;

  // If an element id was given, find it. Otherwise use the element being
  // clicked on.

  if (id)
    dragObj.elNode = document.getElementById(id);
  else {
    if (browser.isIE)
      dragObj.elNode = window.event.srcElement;
    if (browser.isNS)
      dragObj.elNode = event.target;

    // If this is a text node, use its parent element.

    if (dragObj.elNode.nodeType == 3)
      dragObj.elNode = dragObj.elNode.parentNode;
  }

  // Get cursor position with respect to the page.

  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

  // Save starting positions of cursor and element.

  dragObj.cursorStartX = x;
  dragObj.cursorStartY = y;
  dragObj.elStartLeft  = parseInt(dragObj.elNode.style.left, 10);
  dragObj.elStartTop   = parseInt(dragObj.elNode.style.top,  10);

  if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
  if (isNaN(dragObj.elStartTop))  dragObj.elStartTop  = 0;

  // Update element's z-index.

  dragObj.elNode.style.zIndex = ++dragObj.zIndex;

  // Capture mousemove and mouseup events on the page.

  if (browser.isIE) {
    document.attachEvent("onmousemove", ScrollBarDragGo);
    document.attachEvent("onmouseup",   ScrollBarDragStop);
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS) {
    document.addEventListener("mousemove", ScrollBarDragGo,   true);
    document.addEventListener("mouseup",   ScrollBarDragStop, true);
    event.preventDefault();
  }
}

function ScrollBarDragGo(event) {

  var x, y;

  // Get cursor position with respect to the page.

  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }
  
  // Bound the movement of the element to within it's parent
  var ctx, cty, mtx, mty; //, cbx, cby;
  
  ctx = dragObj.elStartLeft + x - dragObj.cursorStartX;
  cty = dragObj.elStartTop  + y - dragObj.cursorStartY;
  
  mtx = dragObj.elNode.parentNode.offsetWidth  - dragObj.elNode.offsetWidth;
  mty = dragObj.elNode.parentNode.offsetHeight - dragObj.elNode.offsetHeight;
  
  if (ctx > mtx) ctx = mtx;
  if (ctx < 0) ctx = 0;
  
  if (cty > mty) cty = mty;
  if (cty < 0) cty = 0;  

  // Move drag element by the same amount the cursor has moved.

  dragObj.elNode.style.left = (ctx) + "px";
  dragObj.elNode.style.top  = (cty) + "px";

  if (browser.isIE) {
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS)
    event.preventDefault();
   
  var elemName = dragObj.elNode.id.split('_')[0];
  SetScrollPercentage(elemName, GetScrollBarPercentage(elemName));
}

function ScrollBarDragStop(event) {

  setTimeout("blockTrackClick = false;", 100);

  // Stop capturing mousemove and mouseup events.

  if (browser.isIE) {
    document.detachEvent("onmousemove", ScrollBarDragGo);
    document.detachEvent("onmouseup",   ScrollBarDragStop);
  }
  if (browser.isNS) {
    document.removeEventListener("mousemove", ScrollBarDragGo,   true);
    document.removeEventListener("mouseup",   ScrollBarDragStop, true);
  }
}
//---------------------------------------------------------------------------------------

var picfade_highlight;
var picfade_isIE = (window.navigator.userAgent.indexOf("MSIE") > 0);


function picfade_on(which2){
	//if (window.picfade_highlight) clearTimeout(picfade_highlight);
	//picfade_shine(which2);	
	//FadeOpacity(which2, 75, 100, 1500, 100);
	var cur2 = document.getElementById(which2);
	SetOpacity(cur2,100);
	cur2.parentNode.parentNode.style.borderBottomColor="#FFFF00";
	cur2.parentNode.parentNode.style.borderRightColor="#FFFF00";
	cur2.parentNode.parentNode.style.borderTopColor="#FFFF00";
	cur2.parentNode.parentNode.style.borderLeftColor="#FFFF00";
}


function picfade_off(which2){
    var defal=50;
	//clearTimeout(picfade_highlight);
	//picfade_getDA(which2);
	var cur2 = document.getElementById(which2);
	SetOpacity(cur2,defal);
	cur2.parentNode.parentNode.style.borderBottomColor="#555555";
	cur2.parentNode.parentNode.style.borderRightColor="#555555";
	cur2.parentNode.parentNode.style.borderTopColor="#000000";
	cur2.parentNode.parentNode.style.borderLeftColor="#000000";
}


function picfade_shine(which2) {
	var ca;
	var delay=50;
	var cur2 = document.getElementById(which2);
	ca = (picfade_isIE)?parseInt(cur2.filters.alpha.opacity):cur2.style.MozOpacity*100;
	ca+=5; if (ca>99) ca=100;
	if (picfade_isIE) cur2.filters.alpha.opacity=ca; else cur2.style.MozOpacity = ca/100;
	picfade_highlight = setTimeout("picfade_shine('"+which2+"');",delay);
}



function reverseoderlist() {
  var lis1=document.getElementsBySelector("ol.reverse_numbering");
  for (var x=0;x<lis1.length;x++) {
     var reverse=lis1[x];
     reverse.style.listStyle='none';
     var li=reverse.getElementsByTagName('li');
     for(var i=0; i<li.length; i++) {
	     var str=' 00'+(li.length-i);
      	 li[i].insertBefore(document.createTextNode(str.substring(str.length,str.length-2)+'. '), li[i].firstChild);
     }
   }
 }
 
 