﻿

//-------------------AJAX Stuff-----------------------
function getRequest(url,fFunction) {
	var http_request = false;
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	http_request.onreadystatechange = fFunction;
	http_request.open('GET', url, true);
	http_request.setRequestHeader("Cache-Control","no-cache"); 
	http_request.send(null);
	return http_request;
}
if (typeof DOMParser == "undefined") {
   DOMParser = function () {}
	
   DOMParser.prototype.parseFromString = function (str, contentType) {
      if (typeof ActiveXObject != "undefined") {
         var d = new ActiveXObject("MSXML.DomDocument");
         d.loadXML(str);
         return d;
      } else if (typeof XMLHttpRequest != "undefined") {
         var req = new XMLHttpRequest;
         req.open("GET", "data:" + (contentType || "application/xml") +
                         ";charset=utf-8," + encodeURIComponent(str), false);
         if (req.overrideMimeType) {
            req.overrideMimeType(contentType);
         }
         req.send(null);
         return req.responseXML;
      }
   }
}
function GetXMLValue(thisParser,sTag,iIndex) {
	return thisParser.getElementsByTagName(sTag)[iIndex].firstChild.nodeValue;
}
//--------------------Style Stuff-------------------------
function Fade(objID,CurrentAlpha,TargetAlpha,steps){
	var obj = document.getElementById(objID);
	CurrentAlpha = parseInt(CurrentAlpha);
	if (isNaN(CurrentAlpha)){
		CurrentAlpha = parseInt(obj.style.opacity*100);
		if (isNaN(CurrentAlpha))CurrentAlpha=100;
	}
	var DeltaAlpha=parseInt((CurrentAlpha-TargetAlpha)/steps);
	var NewAlpha = CurrentAlpha - DeltaAlpha;
	setOpacity(objID,NewAlpha);
	if (steps>1){
		setTimeout('Fade("'+objID+'",'+NewAlpha+','+TargetAlpha+','+(steps-1)+')');
	}
}
function setOpacity(objID, opacity) {
  	var obj = document.getElementById(objID);
	opacity = (opacity == 100)?99.999:opacity;
	obj.style.filter = "alpha(opacity:"+opacity+")";
	obj.style.KHTMLOpacity = opacity/100;
	obj.style.MozOpacity = opacity/100;
	obj.style.opacity = opacity/100;
}
function setClassFontSize(sClass,iFontSize) {
	var el = getElementsByClass(document,sClass,'*');
	for (i = 0; i != el.length; i++) {
		el[i].style.fontSize = iFontSize+'px';
	}
}
//---------------Voting Code-----------------
function doRating(sURL,sButton) {
	sButtonID=sButton;
	http_request = getRequest(sURL,finishRating);
}
function finishRating() {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			//FadeToNothing(sButtonID,'btnVote',100,0,25);
			//alert(http_request.responseText);
			window.location.reload();
		} else {
			alert('There was a problem with the request.');
		}
	}
}
//--------------UI Manipulation Code----------------
function hideClass(sClass) {
	var el = getElementsByClass(document,sClass,'*');
	for (i = 0; i != el.length; i++) {
		el[i].style.display = 'none';
	}
}
function getElementsByClass(node,searchClass,tag) {
	var classElements = new Array();
	var els = node.getElementsByTagName(tag); // use "*" for all elements
	var elsLen = els.length;
	var pattern = new RegExp("\\b"+searchClass+"\\b");
	for (i = 0, j = 0; i < elsLen; i++) {
		  if ( pattern.test(els[i].className) ) {
				 classElements[j] = els[i];
				 j++;
		  }
	}
	return classElements;
}
function popup(url) {
	var newWin = window.open(url,'mywin','width=800,height=600,scrollbars=yes,resizable=yes');
}
function popupPreview(url) {
	var newWin = window.open(url,'mywin','width=900,height=600,scrollbars=yes,resizable=yes,adddressbar=yes');
}
function popupGeotag(url) {
	var newWin = window.open(url,'mywin','width=800,height=600,scrollbars=yes,resizable=yes,adddressbar=yes');
}
function popupSlideshow(url) {
	var newWin = window.open(url,'mywin','width=900,height=700,scrollbars=yes,resizable=yes,adddressbar=yes');
}
function popupMini(url) {
	var newWin = window.open(url,'mywin','width=340,height=240,scrollbars=no,resizable=no');
}
function popupMedium(url) {
	var newWin = window.open(url,'mywin','width=500,height=300,scrollbars=no,resizable=no');
}
function popupFullscreen(p,s,r){
    var w = screen.availWidth-10;
    var h = screen.availHeight-70;
    win=window.window.open(p,'f', 'width=' + w + ',height=' + h + ',top=0,left=0,scrollbars='+s+',resizable='+r+',fullscreen=0');
    win.focus();
}

function capitalizeMe(val) {
    return val.substring(0,1).toUpperCase() + val.substring(1,val.length);
}


function updateOpener() {
    opener.location.href = opener.location.href;
}
function BuildDOMImage(parentNode,imgID,imgSrc,imgBorder){
	var thisImage = document.createElement('img');
	thisImage.id=imgID;
	thisImage.alt = 'Logo';
	thisImage.border=imgBorder;
	parentNode.appendChild(thisImage);
	thisImage.src = imgSrc;
}
function BuildDOMLink(parentNode,linkID,imgHref){
	var thisLink = document.createElement('a');
	thisLink.id=linkID;
	parentNode.appendChild(thisLink);
	thisLink.href = imgHref;
}
function placeElement(sID,imgPos) {
	document.getElementById(sID).style.top = Math.round(imgPos.y) + "px";		
	document.getElementById(sID).style.left = Math.round(imgPos.x) + "px";
}
function backToTop() {
    var x1 = x2 = x3 = 0;
    var y1 = y2 = y3 = 0;

    if (document.documentElement) {
        x1 = document.documentElement.scrollLeft || 0;
        y1 = document.documentElement.scrollTop || 0;
    }

    if (document.body) {
        x2 = document.body.scrollLeft || 0;
        y2 = document.body.scrollTop || 0;
    }

    x3 = window.scrollX || 0;
    y3 = window.scrollY || 0;

    var x = Math.max(x1, Math.max(x2, x3));
    var y = Math.max(y1, Math.max(y2, y3));

    window.scrollTo(Math.floor(x / 2), Math.floor(y / 2));

    if (x > 0 || y > 0) {
        window.setTimeout("backToTop()", 25);
    }
}
function DoRollOver(name,over)
{
	if(window.document.images) 
	{
	    var sExt;
	    if (window.document.images[name].src.indexOf('.jpg')>0){
	        sExt=".jpg";
	    }else{
	        if (window.document.images[name].src.indexOf('.gif')>0){
	        sExt=".gif";
	        }else{
	            sExt=".png";
	        }
	    }
	    
		if (over)
			window.document.images[name].src = "/images/buttons/" + name + "-hover" + sExt;
		else
			window.document.images[name].src =  "/images/buttons/" + name + sExt;
	}
}
function hoverOver(oElement,bHover) {
	if (bHover==1) {
		//oElement.className='area-hover';
	}else {
		//oElement.className='area';
	}
}
function toggleContentExpand(sField,iID){
	var divShort = document.getElementById(sField+'Short'+iID);
	var divLong = document.getElementById(sField+'Long'+iID);
	if (divShort.className=='visible'){
		//Effect.SlideUp(divShort.id);
		divShort.className='invisible';
		divLong.className='visible';
		Effect.BlindDown(divLong.id,{duration: 0.5,from:0.5,to:1.0});
		//ffect.Appear('divFacilitiesLong',{duration: 0.8,from:0.2,to:1.0});
	}else{
		//Effect.SlideUp(divLong.id);
		divShort.className='visible';
		Effect.BlindUp(divLong.id,{duration: 0.4,from:0.0,to:1.0});
		Effect.BlindDown(divShort.id,{duration: 1.0});
		//divLong.className='invisible';
		//Effect.SlideDown(divLong.id,{from:0.5;to:1.0});
	}
}
//--------------------------I/O Control-----------------------------
function IsEnterKeyDown() {
 var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
 if (keyCode == 13) {
   return true
 }
 return false;
}
function GetPressedKeyCode() {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
 	return keyCode;
}
function GetPressedChar() {
 var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
 return String.fromCharCode(keyCode);
}
//----------Event Handling---------------------
function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
	}
}
//------UI: Bezier code-------------
coord = function (x,y) { if(!x) var x=0; if(!y) var y=0; return {x: x, y: y}; }
B1 = function(t) { return (t*t*t); }
B2 = function(t) { return (3*t*t*(1-t)); } 
B3 = function(t) { return (3*t*(1-t)*(1-t)); }
B4 = function(t) { return ((1-t)*(1-t)*(1-t)); }
function getBezier(percent,C1,C2,C3,C4) {
	var pos = new coord();
	pos.x = C1.x * B1(percent) + C2.x * B2(percent) +C3.x * B3(percent) + C4.x * B4(percent);
	pos.y = C1.y * B1(percent) + C2.y * B2(percent) + C3.y * B3(percent) + C4.y * B4(percent);
	return pos; 
}
function getMouseXPos(e) {
 return (parseInt(event.clientX+10) + parseInt(document.body.scrollLeft));
}
function getMouseYPos(e) {
	return (parseInt(event.clientY) + parseInt(document.body.scrollTop));
}
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 wait(millis) 
{
date = new Date();
var curDate = null;

do { var curDate = new Date(); } 
while(curDate-date < millis);
} 
