// IMAGE PRELOADER
var PRELOADOBJ = new Image();

var PRELOADARRAY = new Array();
PRELOADARRAY[0] = "tequila_over.gif"

for(var p = 0; p < PRELOADARRAY.length; p++){
	PRELOADOBJ.src = "images/" + PRELOADARRAY[p];
}
// !IMAGE PRELOADER

// CONSTANTS AND VARIABLES
var AJAXOBJECTPOOLLIMIT = 2;
var AJAXOBJECTPOOLCOUNT = 0;
var AJAXOBJECTTRACKER = 0;

var CHANNELARRAY = new Array();
CHANNELARRAY[0] = new Array();
CHANNELARRAY[0][0] = "twitter";
CHANNELARRAY[0][1] = "n";
CHANNELARRAY[1] = new Array();
CHANNELARRAY[1][0] = "googlenews";
CHANNELARRAY[1][1] = "n";
CHANNELARRAY[2] = new Array();
CHANNELARRAY[2][0] = "flickr";
CHANNELARRAY[2][1] = "n";
CHANNELARRAY[3] = new Array();
CHANNELARRAY[3][0] = "slideshare";
CHANNELARRAY[3][1] = "n";
CHANNELARRAY[4] = new Array();
CHANNELARRAY[4][0] = "youtube";
CHANNELARRAY[4][1] = "n";

var TIMEOUT = 0;

var UPDATEINPROGRESS = 0;
var UPDATEARRAY = new Array();
// !CONSTANTS AND VARIABLES

// FEEDS SPECIFIC FUNCTIONALITY INCLUDES
for(var j = 0; j < CHANNELARRAY.length; j++){
	if(browser == "gen"){
		script = document.createElement("script");
		script.setAttribute("type", "text/javascript");
		script.setAttribute("src", "js/tbwa_" + CHANNELARRAY[j][0] + ".js");
	} else{
		script = document.createElement("<script type=\"text/javascript\" src=\"js/tbwa_" + CHANNELARRAY[j][0] + ".js\"></script>");
	}
	document.getElementsByTagName("head")[0].appendChild(script);
}
// !FEEDS SPECIFIC FUNCTIONALITY INCLUDES

// FEEDS ERROR HANDLING
function handleFeedError(contentarea){
	var parentTgt = document.getElementById(contentarea + "_content");
	if(contentarea == "twitter"){
		feedprovider = "Twitter";
	} else if(contentarea == "youtube"){
		feedprovider = "Youtube";
	} else if(contentarea == "flickr"){
		feedprovider = "Flickr";
	} else if(contentarea == "googlenews"){
		feedprovider = "Google News";
	} else if(contentarea == "slideshare"){
		feedprovider = "SlideShare";
	}
	errorText = document.createTextNode("Oh no, " + feedprovider + " did not allow us to get content from them :(!!");
	parentTgt.appendChild(errorText);
	delete feedprovider;
	delete errorText;
	document.getElementById(contentarea + "_loading").style.display = "none";
	$(parentTgt).fadeIn("slow");
	return;
}
// !FEEDS ERROR HANDLING

// AJAX CONSTRUCTOR
function AJAXInteraction(){
	// constructor
	var req = init();
	if(req == null){
		alert("Your browser does not have AJAX support - cannot process updates.");
	} else{
		req.onreadystatechange = processRequest;
	}

	function init(){
		try{
			return new XMLHttpRequest();
		} catch(e){
			var flag = false;
			var ajaxRequest = null;
			var domObj = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
			for(var a = 0; a < domObj.length; a++){
				if(flag == false){
					try{
						ajaxRequest = new ActiveXObject(domObj[a]);
						if(ajaxRequest != null){
							flag = true;
							ajaxRequest = null;
							break;
						}
					} catch(e){
						continue;
					}
				}
			}
			if(flag != false){
				return new ActiveXObject(domObj[a]);
			} else{
				return null;
			}
		}
	}

	function processRequest(){
		if(req.readyState == 4){
			if(req.status == 200){
				//alert(req.responseText);
				if(req.responseText.indexOf("<[>|~|<]>") != -1){
					var AOResponse = req.responseText.split("<[>|~|<]>");
					if(AOResponse[0] == "twitter" || AOResponse[0] == "youtube"){
						eval("" + AOResponse[0] + "feed(AOResponse[0], AOResponse[1]);");
					} else{
						if((AOResponse[1].indexOf("<[>!START!<]>") != -1 && AOResponse[1].indexOf("<[>!END!<]>") != -1) && AOResponse[1].indexOf("<[>!ERROR!<]>") == -1){
							AOContent = AOResponse[1].replace(/(\<\[\>!START!\<\]\>|\<\[\>!END!\<\]\>)/g, "");
							//alert(AOContent);
							eval("" + AOResponse[0] + "feed(AOResponse[0], AOContent);");
						} else{
							handleFeedError(AOResponse[0]);
						}
					}
				} else{
					alert("Error occurred.");
					return false;
				}
				AJAXOBJECTPOOLCOUNT--;
				req = null;
			}
		}
	}

	this.doGet = function(url, params){
		req.open("GET", "" + url + "?" + params, true);
		req.send(null);
	}

	this.doPost = function(url, params){
		var parameter = "content=" + params + "";
		//req.open("POST", "feedcache/fetcher.php", true);
		req.open("POST", "" + url + "", true);
		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		req.setRequestHeader("Content-length", parameter.length);
		req.setRequestHeader("Connection", "close");
		req.send(parameter);
	}
}
// !AJAX CONSTRUCTOR

// FEED DIMENSIONS
function getContentDimensions(contentarea, contentitems){
	dimensions = new Object();
	dimensions = {pages:0, numberperpage:0};
	if(eval(contentarea.toUpperCase() + "_WIDTH") != null)
		columns = (Math.floor(parseInt(document.getElementById(contentarea + "_content").offsetWidth)/eval(contentarea.toUpperCase() + "_WIDTH")) > 0) ? Math.floor(parseInt(document.getElementById(contentarea + "_content").offsetWidth)/eval(contentarea.toUpperCase() + "_WIDTH")) : 1;
	else
		columns = 1;
	if(eval(contentarea.toUpperCase() + "_HEIGHT") != null)
		rows = (Math.floor(parseInt(document.getElementById(contentarea + "_content").offsetHeight)/eval(contentarea.toUpperCase() + "_HEIGHT")) > 0) ? Math.floor(parseInt(document.getElementById(contentarea + "_content").offsetHeight)/eval(contentarea.toUpperCase() + "_HEIGHT")) : 1;
	else
		rows = 1;
	dimensions.numberperpage = columns*rows;
	dimensions.pages = Math.ceil(contentitems/dimensions.numberperpage);
	return dimensions;
}

function getSubContentDimensions(contentparent, contentarea, contentitems){
	dimensions = new Object();
	dimensions = {pages:0, numberperpage:0};
	if(eval(contentparent.toUpperCase() + "_WIDTH") != null)
		columns = Math.floor(parseInt(document.getElementById(contentarea).offsetWidth)/eval(contentparent.toUpperCase() + "_WIDTH"));
	else
		columns = 1;
	if(eval(contentparent.toUpperCase() + "_HEIGHT") != null)
		rows = Math.floor(parseInt(document.getElementById(contentarea).offsetHeight)/eval(contentparent.toUpperCase() + "_HEIGHT"));
	else
		rows = 1;
	dimensions.numberperpage = columns*rows;
	dimensions.pages = Math.ceil(contentitems/dimensions.numberperpage);
	return dimensions;
}

function getSubContentDimensionsValues(contentareatarget){
	dimensions = new Object();
	dimensions = {width:0, height:0};
	dimensions.width = contentareatarget.offsetWidth;
	dimensions.height = contentareatarget.offsetHeight;
	return dimensions;
}
// !FEED DIMENSIONS

// FUNCTIONS
function pageContentLeft(dir, tgt){
	// How many pages are there
	curpage = eval("" + tgt.toUpperCase() + "_PAGE");
	totpages = eval("" + tgt.toUpperCase() + "_PAGE_COUNT");
	if(dir === "up"){
		if(curpage < totpages){
			$("#" + tgt + "_pg_" + curpage).animate({
				left: "-=" + document.getElementById(tgt + "_content").offsetWidth + "px"
			}, "fast");
			$("#" + tgt + "_pg_" + (curpage + 1)).animate({
				left: "+=" + document.getElementById(tgt + "_content").offsetWidth + "px"
			}, "slow");
			eval("" + tgt.toUpperCase() + "_PAGE++");
			
			// if an element counter is present - run the next nest
			if(document.getElementById("" + tgt + "_counter")){
				// we have a counter - figure out where we are
				// im going to be running a switch case scenario - easier for me with the time constraints we have
				switch(tgt){
					case "flickr":
						var ec = 0;
						var ecstring = "";
						for(var ect = 1; ect <= eval("" + tgt.toUpperCase() + "_PAGE"); ect++){
							if(ect == eval("" + tgt.toUpperCase() + "_PAGE")){
								ecstring += "" + (ec + 1) + " - ";
							}
							var ecparent = document.getElementById("" + tgt + "_pg_" + ect + "");
							var subec = ecparent.getElementsByTagName("a");
							ec += subec.length;
							if(ect == eval("" + tgt.toUpperCase() + "_PAGE")){
								ecstring += "" + ec + "";
							}
						}
						var ecdisplay = document.createTextNode(ecstring);
						document.getElementById("" + tgt + "_counter_text").removeChild(document.getElementById("" + tgt + "_counter_text").childNodes[0]);
						document.getElementById("" + tgt + "_counter_text").appendChild(ecdisplay);
						break;
				}
			}
			
		}
	} else if(dir === "down"){
		if(curpage > 1){
			$("#" + tgt + "_pg_" + (curpage - 1)).animate({
				left: "+=" + document.getElementById(tgt + "_content").offsetWidth + "px"
			}, "slow");
			$("#" + tgt + "_pg_" + curpage).animate({
				left: "-=" + document.getElementById(tgt + "_content").offsetWidth + "px"
			}, "fast");
			eval("" + tgt.toUpperCase() + "_PAGE--");
			
			// if an element counter is present - run the next nest
			if(document.getElementById("" + tgt + "_counter")){
				// we have a counter - figure out where we are
				// im going to be running a switch case scenario - easier for me with the time constraints we have
				switch(tgt){
					case "flickr":
						var ec = 0;
						var ecstring = "";
						for(var ect = 1; ect <= eval("" + tgt.toUpperCase() + "_PAGE"); ect++){
							if(eval("" + tgt.toUpperCase() + "_PAGE") == 1){
								ecstring += "1 - ";
							} else if(ect == eval("" + tgt.toUpperCase() + "_PAGE")){
								ecstring += "" + (ec + 1) + " - ";
							}
							var ecparent = document.getElementById("" + tgt + "_pg_" + ect + "");
							var subec = ecparent.getElementsByTagName("a");
							ec += subec.length;
							if(ect == eval("" + tgt.toUpperCase() + "_PAGE")){
								ecstring += "" + ec + "";
							}
						}
						var ecdisplay = document.createTextNode(ecstring);
						document.getElementById("" + tgt + "_counter_text").removeChild(document.getElementById("" + tgt + "_counter_text").childNodes[0]);
						document.getElementById("" + tgt + "_counter_text").appendChild(ecdisplay);
						break;
				}
			}
			
			
		}
	}
	return;
}

function pageContentRight(dir, tgt){
	// How many pages are there
	curpage = eval("" + tgt.toUpperCase() + "_PAGE");
	totpages = eval("" + tgt.toUpperCase() + "_PAGE_COUNT");
	if(dir === "up"){
		if(curpage < totpages){
			$("#" + tgt + "_pg_" + curpage).animate({
				right: "-=" + document.getElementById(tgt + "_content").offsetWidth + "px"
			}, "fast");
			$("#" + tgt + "_pg_" + (curpage + 1)).animate({
				right: "+=" + document.getElementById(tgt + "_content").offsetWidth + "px"
			}, "slow");
			eval("" + tgt.toUpperCase() + "_PAGE++");
			
			// if an element counter is present - run the next nest
			if(document.getElementById("" + tgt + "_counter")){
				// we have a counter - figure out where we are
				// im going to be running a switch case scenario - easier for me with the time constraints we have
				switch(tgt){
					case "slideshare":
						var ec = 0;
						var ecstring = "";
						for(var ect = 1; ect <= eval("" + tgt.toUpperCase() + "_PAGE"); ect++){
							if(ect == eval("" + tgt.toUpperCase() + "_PAGE")){
								ecstring += "" + (ec + 1) + " - ";
							}
							var ecparent = document.getElementById("" + tgt + "_pg_" + ect + "");
							var subec = ecparent.getElementsByTagName("a");
							ec += subec.length;
							if(ect == eval("" + tgt.toUpperCase() + "_PAGE")){
								ecstring += "" + ec + "";
							}
						}
						var ecdisplay = document.createTextNode(ecstring);
						document.getElementById("" + tgt + "_counter_text").removeChild(document.getElementById("" + tgt + "_counter_text").childNodes[0]);
						document.getElementById("" + tgt + "_counter_text").appendChild(ecdisplay);
						break;
				}
			}
			
		}
	} else if(dir === "down"){
		if(curpage > 1){
			$("#" + tgt + "_pg_" + (curpage - 1)).animate({
				right: "+=" + document.getElementById(tgt + "_content").offsetWidth + "px"
			}, "slow");
			$("#" + tgt + "_pg_" + curpage).animate({
				right: "-=" + document.getElementById(tgt + "_content").offsetWidth + "px"
			}, "fast");
			eval("" + tgt.toUpperCase() + "_PAGE--");
			
			// if an element counter is present - run the next nest
			if(document.getElementById("" + tgt + "_counter")){
				// we have a counter - figure out where we are
				// im going to be running a switch case scenario - easier for me with the time constraints we have
				switch(tgt){
					case "slideshare":
						var ec = 0;
						var ecstring = "";
						for(var ect = 1; ect <= eval("" + tgt.toUpperCase() + "_PAGE"); ect++){
							if(eval("" + tgt.toUpperCase() + "_PAGE") == 1){
								ecstring += "1 - ";
							} else if(ect == eval("" + tgt.toUpperCase() + "_PAGE")){
								ecstring += "" + (ec + 1) + " - ";
							}
							var ecparent = document.getElementById("" + tgt + "_pg_" + ect + "");
							var subec = ecparent.getElementsByTagName("a");
							ec += subec.length;
							if(ect == eval("" + tgt.toUpperCase() + "_PAGE")){
								ecstring += "" + ec + "";
							}
						}
						var ecdisplay = document.createTextNode(ecstring);
						document.getElementById("" + tgt + "_counter_text").removeChild(document.getElementById("" + tgt + "_counter_text").childNodes[0]);
						document.getElementById("" + tgt + "_counter_text").appendChild(ecdisplay);
						break;
				}
			}
			
		}
	}
	return;
}

function pageSubContentRight(dir, parent){
	var parentTgt = document.getElementById(parent);
	// How many pages are there
	var pages = parentTgt.childNodes;
	if(pages.length > 1){
		// find out which page is focused by checking their CSS right positioning
		for(var pg = 0; pg < pages.length; pg++){
			if(pages[pg].nodeName == "DIV" && (pages[pg].hasAttribute("id") && pages[pg].id != "")){
				if(pages[pg].style.right === "0px")
					var focused = pg;
			}
		}
		if(dir === "up" && focused < (pages.length - 1)){
			$("#" + pages[focused].id + "").animate({
				right: "-=" + parentTgt.offsetWidth + "px"
			}, "fast");
			$("#" + pages[focused + 1].id + "").animate({
				right: "+=" + parentTgt.offsetWidth + "px"
			}, "slow");
			
			// if an element counter is present - run the next nest
			var subcountercontainer = parent.replace("_content", "_counter");
			if(document.getElementById(subcountercontainer)){
				// we have a counter - figure out where we are
				// im going to be running indexOf scenario - easier for me with the time constraints we have
				if(subcountercontainer.indexOf("youtube") != -1){
					var eccount = parseInt(document.getElementById("" + subcountercontainer + "_text").childNodes[0].nodeValue);
					eccount++;
					var ecdisplay = document.createTextNode("" + eccount + "");
					//alert(document.getElementById("" + parent.replace("_content", "_counter") + "_text").childNodes[0].nodeValue);
					document.getElementById("" + subcountercontainer + "_text").removeChild(document.getElementById("" + subcountercontainer + "_text").childNodes[0]);
					document.getElementById("" + subcountercontainer + "_text").appendChild(ecdisplay);
				}
			}
			
		} else if(dir === "down" && focused > 0){
			$("#" + pages[focused - 1].id + "").animate({
				right: "+=" + parentTgt.offsetWidth + "px"
			}, "slow");
			$("#" + pages[focused].id + "").animate({
				right: "-=" + parentTgt.offsetWidth + "px"
			}, "fast");
			
			// if an element counter is present - run the next nest
			var subcountercontainer = parent.replace("_content", "_counter");
			if(document.getElementById(subcountercontainer)){
				// we have a counter - figure out where we are
				// im going to be running indexOf scenario - easier for me with the time constraints we have
				if(parent.indexOf("youtube") != -1){
					var eccount = parseInt(document.getElementById("" + subcountercontainer + "_text").childNodes[0].nodeValue);
					eccount--;
					var ecdisplay = document.createTextNode("" + eccount + "");
					//alert(document.getElementById("" + parent.replace("_content", "_counter") + "_text").childNodes[0].nodeValue);
					document.getElementById("" + subcountercontainer + "_text").removeChild(document.getElementById("" + subcountercontainer + "_text").childNodes[0]);
					document.getElementById("" + subcountercontainer + "_text").appendChild(ecdisplay);
				}
			}
			
		}
	}
	return;
}

function initContentPop(){
	for(var a = 0; a < AJAXOBJECTPOOLLIMIT; a++){
		AJAXOBJECTPOOLCOUNT++;
		var ai = new AJAXInteraction();
		ai.doPost("feedcache/fetcher.php", "" + CHANNELARRAY[AJAXOBJECTTRACKER][0] + "");
		AJAXOBJECTTRACKER++;
		if(AJAXOBJECTPOOLCOUNT === AJAXOBJECTPOOLLIMIT)
			setTimeout("checkAJAXPool()", 500);
	}
}

function checkAJAXPool(){
	if(AJAXOBJECTPOOLCOUNT < AJAXOBJECTPOOLLIMIT && AJAXOBJECTTRACKER <= (CHANNELARRAY.length - 1)){
		var aao = parseInt(AJAXOBJECTPOOLLIMIT) - parseInt(AJAXOBJECTPOOLCOUNT);
		for(var b = 0; b < aao; b++){
			AJAXOBJECTPOOLCOUNT++;
			var ai = new AJAXInteraction();
			ai.doPost("feedcache/fetcher.php", "" + CHANNELARRAY[AJAXOBJECTTRACKER][0] + "");
			AJAXOBJECTTRACKER++;
		}
		if(AJAXOBJECTTRACKER < (CHANNELARRAY.length)){
			setTimeout("checkAJAXPool()", 500);
		} else{
			if(TIMEOUT === 0)
				TIMEOUT = setTimeout("updateContent()", 30000); // All content should be loaded now - kick off the update
		}
	} else if(AJAXOBJECTTRACKER < (CHANNELARRAY.length - 1)){
		setTimeout("checkAJAXPool()", 500);
	}
}

function updateContent(){
	/*if(UPDATEINPROGRESS != 0 && TIMEOUT != 0){
		return;
	} else{
		UPDATEINPROGRESS++;
		clearTimeout(TIMEOUT);*/
		if(UPDATEARRAY.length != 0)
			UPDATEARRAY.length = 0;
		var updatecount;
		for(var c = 0; c < CHANNELARRAY.length; c++){
			if(CHANNELARRAY[c][1] === "y"){
				updatecount = UPDATEARRAY.push(CHANNELARRAY[c][0]);
			}
		}
		if(updatecount >= 2){
			alert("Multiple update functionality coming soon =)!! Neo");
		} else if(updatecount == 1){
			document.getElementById("" + UPDATEARRAY[0] + "_content").style.display = "none";
			document.getElementById("" + UPDATEARRAY[0] + "_loading").style.display = "block";
			AJAXOBJECTPOOLCOUNT++;
			var ai = new AJAXInteraction();
			ai.doPost("feedcache/fetcher.php", "" + UPDATEARRAY[0] + "");
			UPDATEARRAY.length = 0;
			UPDATEINPROGRESS = 0
			TIMEOUT = setTimeout("updateContent()", 30000);
		}
	//}
}
// !FUNCTIONS

// HTML ENTITY FUNCTIONS
var entityToCode = { __proto__: null,
apos:0x0027,quot:0x0022,amp:0x0026,lt:0x003C,gt:0x003E,nbsp:0x00A0,iexcl:0x00A1,cent:0x00A2,pound:0x00A3,
curren:0x00A4,yen:0x00A5,brvbar:0x00A6,sect:0x00A7,uml:0x00A8,copy:0x00A9,ordf:0x00AA,laquo:0x00AB,
not:0x00AC,shy:0x00AD,reg:0x00AE,macr:0x00AF,deg:0x00B0,plusmn:0x00B1,sup2:0x00B2,sup3:0x00B3,
acute:0x00B4,micro:0x00B5,para:0x00B6,middot:0x00B7,cedil:0x00B8,sup1:0x00B9,ordm:0x00BA,raquo:0x00BB,
frac14:0x00BC,frac12:0x00BD,frac34:0x00BE,iquest:0x00BF,Agrave:0x00C0,Aacute:0x00C1,Acirc:0x00C2,Atilde:0x00C3,
Auml:0x00C4,Aring:0x00C5,AElig:0x00C6,Ccedil:0x00C7,Egrave:0x00C8,Eacute:0x00C9,Ecirc:0x00CA,Euml:0x00CB,
Igrave:0x00CC,Iacute:0x00CD,Icirc:0x00CE,Iuml:0x00CF,ETH:0x00D0,Ntilde:0x00D1,Ograve:0x00D2,Oacute:0x00D3,
Ocirc:0x00D4,Otilde:0x00D5,Ouml:0x00D6,times:0x00D7,Oslash:0x00D8,Ugrave:0x00D9,Uacute:0x00DA,Ucirc:0x00DB,
Uuml:0x00DC,Yacute:0x00DD,THORN:0x00DE,szlig:0x00DF,agrave:0x00E0,aacute:0x00E1,acirc:0x00E2,atilde:0x00E3,
auml:0x00E4,aring:0x00E5,aelig:0x00E6,ccedil:0x00E7,egrave:0x00E8,eacute:0x00E9,ecirc:0x00EA,euml:0x00EB,
igrave:0x00EC,iacute:0x00ED,icirc:0x00EE,iuml:0x00EF,eth:0x00F0,ntilde:0x00F1,ograve:0x00F2,oacute:0x00F3,
ocirc:0x00F4,otilde:0x00F5,ouml:0x00F6,divide:0x00F7,oslash:0x00F8,ugrave:0x00F9,uacute:0x00FA,ucirc:0x00FB,
uuml:0x00FC,yacute:0x00FD,thorn:0x00FE,yuml:0x00FF,OElig:0x0152,oelig:0x0153,Scaron:0x0160,scaron:0x0161,
Yuml:0x0178,fnof:0x0192,circ:0x02C6,tilde:0x02DC,Alpha:0x0391,Beta:0x0392,Gamma:0x0393,Delta:0x0394,
Epsilon:0x0395,Zeta:0x0396,Eta:0x0397,Theta:0x0398,Iota:0x0399,Kappa:0x039A,Lambda:0x039B,Mu:0x039C,
Nu:0x039D,Xi:0x039E,Omicron:0x039F,Pi:0x03A0,Rho:0x03A1,Sigma:0x03A3,Tau:0x03A4,Upsilon:0x03A5,
Phi:0x03A6,Chi:0x03A7,Psi:0x03A8,Omega:0x03A9,alpha:0x03B1,beta:0x03B2,gamma:0x03B3,delta:0x03B4,
epsilon:0x03B5,zeta:0x03B6,eta:0x03B7,theta:0x03B8,iota:0x03B9,kappa:0x03BA,lambda:0x03BB,mu:0x03BC,
nu:0x03BD,xi:0x03BE,omicron:0x03BF,pi:0x03C0,rho:0x03C1,sigmaf:0x03C2,sigma:0x03C3,tau:0x03C4,
upsilon:0x03C5,phi:0x03C6,chi:0x03C7,psi:0x03C8,omega:0x03C9,thetasym:0x03D1,upsih:0x03D2,piv:0x03D6,
ensp:0x2002,emsp:0x2003,thinsp:0x2009,zwnj:0x200C,zwj:0x200D,lrm:0x200E,rlm:0x200F,ndash:0x2013,
mdash:0x2014,lsquo:0x2018,rsquo:0x2019,sbquo:0x201A,ldquo:0x201C,rdquo:0x201D,bdquo:0x201E,dagger:0x2020,
Dagger:0x2021,bull:0x2022,hellip:0x2026,permil:0x2030,prime:0x2032,Prime:0x2033,lsaquo:0x2039,rsaquo:0x203A,
oline:0x203E,frasl:0x2044,euro:0x20AC,image:0x2111,weierp:0x2118,real:0x211C,trade:0x2122,alefsym:0x2135,
larr:0x2190,uarr:0x2191,rarr:0x2192,darr:0x2193,harr:0x2194,crarr:0x21B5,lArr:0x21D0,uArr:0x21D1,
rArr:0x21D2,dArr:0x21D3,hArr:0x21D4,forall:0x2200,part:0x2202,exist:0x2203,empty:0x2205,nabla:0x2207,
isin:0x2208,notin:0x2209,ni:0x220B,prod:0x220F,sum:0x2211,minus:0x2212,lowast:0x2217,radic:0x221A,
prop:0x221D,infin:0x221E,ang:0x2220,and:0x2227,or:0x2228,cap:0x2229,cup:0x222A,int:0x222B,
there4:0x2234,sim:0x223C,cong:0x2245,asymp:0x2248,ne:0x2260,equiv:0x2261,le:0x2264,ge:0x2265,
sub:0x2282,sup:0x2283,nsub:0x2284,sube:0x2286,supe:0x2287,oplus:0x2295,otimes:0x2297,perp:0x22A5,
sdot:0x22C5,lceil:0x2308,rceil:0x2309,lfloor:0x230A,rfloor:0x230B,lang:0x2329,rang:0x232A,loz:0x25CA,
spades:0x2660,clubs:0x2663,hearts:0x2665,diams:0x2666
};

var charToEntity = {};

for(var entityName in entityToCode)
	charToEntity[String.fromCharCode(entityToCode[entityName])] = entityName;

//function UnescapeEntities(str) str.replace(/&(.+?);/g, function(str, ent) String.fromCharCode(ent[0] != "#" ? entityToCode[ent] : ent[1] == "x" ? parseInt(ent.substr(2),16) : parseInt(ent.substr(1))));
function UnescapeEntities(str){
	return str.replace(/&(.+?);/g, function(str, ent){ String.fromCharCode(ent[0] != "#" ? entityToCode[ent] : ent[1] == "x" ? parseInt(ent.substr(2),16) : parseInt(ent.substr(1))) });
}


//function EscapeEntities(str) str.replace(/[^\x20-\x7E]/g, function(str) charToEntity[str] ? "&" + charToEntity[str] + ";" : str);
function EscapeEntities(str){
	return str.replace(/[^\x20-\x7E]/g, function(str){ charToEntity[str] ? "&" + charToEntity[str] + ";" : str });
}
// !HTML ENTITY FUNCTIONS

/* EVENT FUNCTIONS */
window.onload = function(){
	initContentPop();
}

window.onbeforeunload = function(){
	//document.cookie = "TBWAProtoCookie=; path=/; domain=.tbwa.co.za; expires=Thu, 01-Jan-1970 00:00:01 GMT";			// LIVE COOKIE SETUP
	document.cookie = "TBWAProtoCookie=; path=/tbwa; domain=build.tequila.co.za; expires=Thu, 01-Jan-1970 00:00:01 GMT";		// BUILD COOKIE SETUP
}
/* !EVENT FUNCTIONS */
