document.addEventListener('load', docinit(), false);


function docinit() {
		var pageInit = setTimeout("isHashCall()",100);			
		var pgloc = setInterval("getLoc()",110);	
}

/* News Display */
function newsIMG(img) {
	
	var getIMG = document.getElementById(img);
	
	if (img) {
		getIMG.style.display = 'block';
	}
}
/* END News Display */

/* Menu */

function menu() {
	var navBar = document.getElementById('gb-navbar');
	
	navBar.style.display ='none';
	
	var showDelay = setTimeout("menuShow()", 0);
}

function menuShow() {
	var navBar = document.getElementById('gb-navbar');
	navBar.style.display ='block';
}

/* END Menu */


/* Goto Page */

var curloc = window.location.hash;

function goto(page) {
	
	if (page) {
		loadPage(page);
		curloc = '#/'+page;
	}
	
}

/* END Goto Page */


/* Get Page Location */

function getLoc() {
		
	var newloc = window.location.hash;
	
	
	if (newloc != curloc) {
		
		var newpage = newloc.substr(2);
		
		goto(newpage);
	}
	
}

/* END Get Page Location */













/* Get Page Scripts */
function getPgScripts() {

	var thisurl = curloc.substr(3);
	var thispage = thisurl.split(']',1);
	
	clearInits();
	
	if (thispage == 'home') {
		
		newsTicker();
		
	} else if (thispage == 'search') {
		
		searchBox();
		
	}
	
}
/* END Get Page Scripts */



/* Page Script Inits */

var newNews = 0;

/* END Page Script Inits */


/* News Ticker */
function newsTicker() {
	
	var newsBox = document.getElementById('hm-newsBOX-text');
	
	newsBox.innerHTML = 'Loading News Feed...';
	
	getHotNews();
	
	newNews = setInterval("getHotNews()", 6000);
	
	
}
/* End New Ticker */


/* Search Box */

function searchBox() {
	
	var sBox = document.getElementById('search-box-input');
	
	//sBox.addEventListener('focus', searchBoxFoc('focus'), true);
	//sBox.addEventListener('blur', searchBoxFoc('blur'), true);
	
}


function searchBoxFoc(state) {
	
	var sBox = document.getElementById('search-box-input');
	
	if (state == 'focus') {
		sBox.style.background = '#CDDBE7';
	} else if (state == 'blur') {
		sBox.style.background = '';
	}
	
}


function goSearch() {
	
	var sTerm = document.getElementById('search-box-input').value; 
	
	if (sTerm) {
		var searchFor = '['+sTerm+']';
		
		var seak = '[search]'+searchFor;
		
		window.location = '#/'+seak;
		goto(seak);
	}
	
	
}

function keyinput(inField, e) {
    var charCode;
    
    if(e && e.which){
        charCode = e.which;
    }else if(window.event){
        e = window.event;
        charCode = e.keyCode;
    }

    if(charCode == 13) {
        goSearch();
    }
}

/* END Search Box */


function clearInits() {
	clearInterval(newNews);
}











/* HASH Call */

function isHashCall(){
	var hashText = document.location.hash;
	
	/* if(hashText)
	{
		var strHash = hashText.substr(2);
		var hashArray = strHash.split("/");
		
		var findSubX = hashArray[0].length +1;
		var subX = strHash.substr(findSubX);
		
		if(strHash)
		{
			goto(hashArray[0],subX);
			
		}
	} */
	
	
	if(hashText) {
		
		var strStart = hashText.substr(0,2);
		var strX = hashText;
		var strHash = hashText.substr(2);
		
		if (strStart != '#/') {
			window.location = '#/[home]';
		} else {
			goto(strHash);
		}
		
	} else {
				
		window.location.hash = '#/[home]';
		
	}
}

/* END HASH Call */




/* Status Bar */
function statusBar(state)
{
	if (state == "show")
	{
		sBAR('show');
		fadeX('statusBar',1,250,0);
	} else if (state == "hide")
	{
		setTimeout("fadeX('statusBar',0,250,0)", 1000);
		setTimeout("sBAR('hide')",1251);
	}
}

function sBAR(state) {
	var sb = document.getElementById('statusBar');
	if (state == 'show') {
		sb.style.display = 'block';
	} else if (state == 'hide') {
		sb.style.display = 'none';
	}
}

/* END Status Bar */




/* AJAX */
var PAGExmlhttp;
function loadPage(page)
{
PAGExmlhttp=GetXmlHttpObject();
if (PAGExmlhttp==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }
var url="/theo/page.loader.php";
url=url+"?q";
if(page)
{
	url=url+"&pgsrc="+page;

}
url=url+"&sid="+Math.random();
PAGExmlhttp.onreadystatechange=PAGEstateChanged;
PAGExmlhttp.open("GET",url,true);
PAGExmlhttp.send(null);
}

function PAGEstateChanged()
{
if (PAGExmlhttp.readyState==1)
{
statusBar("show");
}

if (PAGExmlhttp.readyState==4)
{
document.getElementById("gb-content").innerHTML=PAGExmlhttp.responseText;
statusBar("hide");
menu();
getPgScripts();
}
}





var NewsTickerxmlhttp;
function getHotNews()
{
NewsTickerxmlhttp=GetXmlHttpObject();
if (NewsTickerxmlhttp==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }
var url="/theo/pages/hotnews.php";
url=url+"?q";
url=url+"&sid="+Math.random();
NewsTickerxmlhttp.onreadystatechange=NewsTickerStateChanged;
NewsTickerxmlhttp.open("GET",url,true);
NewsTickerxmlhttp.send(null);
}

function NewsTickerStateChanged() {
	if (NewsTickerxmlhttp.readyState==4) {
		document.getElementById('hm-newsBOX-text').innerHTML=NewsTickerxmlhttp.responseText;
	}
}






function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}

/* END AJAX */


/* Fade */
function fadeX(objToFadeID, IsFadeIn, timeToFade, delay)
{
//objToFadeID - Object ID of the Div or object you want to fade
//IsFadeIn - Is this a fade in (vs fade out) 1 = true, 0 = false
//timeToFade - Time in ms to fade the object
//delay - Time in ms to delay the fade

var objToFade = document.getElementById(objToFadeID);
if(objToFade == null)
return;

var fadeXFactor = IsFadeIn==1?1:-1; // used to reverse values for fade in vs out

if ((timeToFade==0)&&(delay==0))
{
//if this is a simple instant popup, then make the settings are return
objToFade.style.opacity = 1*IsFadeIn;
objToFade.style.filter = 'alpha(opacity = ' + 100*IsFadeIn + ')';
objToFade.fadeState=2*fadeXFactor;
return;
}

if (delay == null)
delay = 0;

if (IsFadeIn)
objToFade.OriginalFadeInTime = timeToFade;
else
objToFade.OriginalFadeOutTime = timeToFade;

if(objToFade.fadeState != null)
{

if ((objToFade.fadeState==1*fadeXFactor)||(objToFade.fadeState==2*fadeXFactor)||(objToFade.fadeState==3*fadeXFactor))
{
return; //Current fade is in same direction or already there so we are OK;
}
else if (objToFade.fadeState==-1*fadeXFactor)
{
//reverse the time and the fade direction and let it continue
objToFade.fadeState = 1*fadeXFactor;
objToFade.timeToFade = timeToFade;
if (IsFadeIn)
{
objToFade.fadeTimeLeft = timeToFade*(1-objToFade.fadeTimeLeft/objToFade.OriginalFadeOutTime);
}
else
{
objToFade.fadeTimeLeft = timeToFade*(1-objToFade.fadeTimeLeft/objToFade.OriginalFadeInTime);
}

return;
}
else if (objToFade.fadeState==-3*fadeXFactor)
{
//object is in hold status but directoin needs to be reversed and use the passed in time value
objToFade.fadeState=3*fadeXFactor;
objToFade.timeToFade = timeToFade;
if (IsFadeIn)
{
objToFade.fadeTimeLeft = timeToFade*(1-objToFade.fadeTimeLeft/objToFade.OriginalFadeOutTime);
}
else
{
objToFade.fadeTimeLeft = timeToFade*(1-objToFade.fadeTimeLeft/objToFade.OriginalFadeInTime);
}
return;
}
}

//if we got this far, then the object is in the fully opposite state


objToFade.timeToFade = timeToFade;
objToFade.fadeTimeLeft = timeToFade;
objToFade.fadeState = 3*fadeXFactor;
var now = new Date();
now.setMilliseconds(now.getMilliseconds() + delay);
setTimeout("animateFade(" + now.getTime() + ",'" + objToFadeID + "')", 10 + delay);
}

function animateFade(lastTick, elementID)
{
var curTick = new Date().getTime();
var elapsedTicks = curTick - lastTick;

var element = document.getElementById(elementID);
if (element.fadeState==3) element.fadeState=1;
if (element.fadeState==-3) element.fadeState=-1;

if(element.fadeTimeLeft <= elapsedTicks)
{
element.style.opacity = element.fadeState == 1 ? '1' : '0';
element.style.filter = 'alpha(opacity = ' + (element.fadeState == 1 ? '100' : '0') + ')';

element.fadeState = element.fadeState == 1 ? 2 : -2;
return;
}

element.fadeTimeLeft -= elapsedTicks;
var newOpVal = element.fadeTimeLeft/element.timeToFade;
if(element.fadeState == 1)
newOpVal = 1 - newOpVal;
element.style.opacity = newOpVal;
element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';

setTimeout("animateFade(" + curTick + ",'" + elementID + "')", 10);

}

/* END FadeX */
