

 //////////////////////////////////////////////////////////////
//                                                           //
//                       Cookie Code                         //
//                                                           //
//////////////////////////////////////////////////////////////

function setCookie(name, value, expirationInDays) {
	if (expirationInDays) {
		var date = new Date()
		date.setTime(date.getTime() + (expirationInDays * 24 * 60 * 60 * 1000))
		var expires = "; expires=" + date.toGMTString()
	} else {
		var expires = ""
	}
	document.cookie = name + "=" + value + expires + "; path=/"
}

function getCookie(name) {
	var namePattern = name + "="
	var cookies = document.cookie.split(';')
	for(var i = 0, n = cookies.length; i < n; i++) {
		var c = cookies[i]
		while (c.charAt(0) == ' ') c = c.substring(1, c.length)
		if (c.indexOf(namePattern) == 0)
			return c.substring(namePattern.length, c.length)
	}
	return null
}

function delCookie(name) {
	createCookie(name, "", -1)
}


 //////////////////////////////////////////////////////////////
//                                                           //
//                        AJAX Code                          //
//                                                           //
//////////////////////////////////////////////////////////////

function doBoxAjaxCall(title,url,params,method,targetObj){
	//alert(title+' '+url+' '+params+' '+method+' '+targetObj);
	innerBoxObj = targetObj+'BoxInner';
	innerHedObj = targetObj+'HedInner';
	var myRequest = new ajaxObj(url,ajaxCallback,innerBoxObj);
	myRequest.update(params,method);
	document.getElementById(innerBoxObj).innerHTML = '<div align="center"><br /><br />loading...<br /><img src="/images/loading.gif" width="32" height="32" alt="loading" title="loading" border="0" /><br /><br /></div>';
	document.getElementById(innerHedObj).innerHTML = title;
}

function doAjaxCall(url,params,method,targetObj){
	//alert(url+' '+params+' '+method+' '+targetObj);
	var myRequest = new ajaxObj(url,ajaxCallback,targetObj);
	myRequest.update(params,method);
	document.getElementById(targetObj).innerHTML = '<div align="center"><br /><br />loading...<br /><img src="/images/loading.gif" width="32" height="32" alt="loading" title="loading" border="0" /><br /><br /></div>';
}

function doNullAjaxCall(url,params,method){
	//alert(url+' '+params+' '+method);
	var myRequest = new ajaxObj(url,'','');
	myRequest.update(params,method);
}

function ajaxObj(url,callbackFunction,targetObj) {
	var that=this;      
	this.updating = false;
	this.abort = function() {
		if (that.updating) {
			that.updating=false;
			that.AJAX.onreadystatechange = null;
			that.AJAX.abort();
			that.AJAX=null;
		}
	}

	this.update = function(passData,postMethod) {
		if (that.updating) { return false; }
		that.AJAX = null;                          
		if (window.XMLHttpRequest) {              
			that.AJAX=new XMLHttpRequest();              
		} else {                                  
			that.AJAX=new ActiveXObject("Microsoft.XMLHTTP");
		}                                             
		if (that.AJAX==null) {                             
			return false;                               
		} else {
			that.AJAX.onreadystatechange = function() {  
				if (that.AJAX.readyState==4) {             
					that.updating=false;                
					that.callback(that.AJAX.responseText,that.AJAX.status,that.AJAX.responseXML,outputObj);        
					that.AJAX=null;                                         
				}                                                      
			}                                                        
			that.updating = new Date();                              
			if (/post/i.test(postMethod)) {
				var uri=urlCall+'?'+that.updating.getTime();
				that.AJAX.open("POST", uri, true);
				that.AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				that.AJAX.setRequestHeader("Content-Length", passData.length);
				that.AJAX.send(passData);
			} else {
				var uri=urlCall+'?'+passData+'&timestamp='+(that.updating.getTime()); 
				//alert(uri);
				that.AJAX.open("GET", uri, true);                             
				that.AJAX.send(null);                                         
			}              
			return true;                                             
		}                                                                           
	}

	var urlCall = url;
	var outputObj = targetObj;
	this.callback = callbackFunction || function () {};
}

function ajaxCallback(responseText,status,responseXML,targetObj){
	//alert(responseText+' '+status+' '+responseXML+' '+targetObj);
	if (status == 200) document.getElementById(targetObj).innerHTML = responseText;
	else document.getElementById(targetObj).innerHTML = '<h1>Error</h1>There was an error.  Please try again.';
}




 //////////////////////////////////////////////////////////////
//                                                           //
//                   Video Tutorials Code                    //
//                                                           //
//////////////////////////////////////////////////////////////

var currentlyPlaying = 0;
var maxVids = 0;
var vidSplashImage = '';
var vidWidth = 0;
var vidHeight = 0;
var vidDisplayHeight = 0;
var vidFileNamePrefix = '';
var genVidURL = '';

function popAllInOneVid(){
	currentlyPlaying = 1;
	maxVids = 4;
	vidSplashImage = '/video/howtoplay_allintrivia_video.jpg';
	vidWidth = 464;
	vidHeight = 372;
	vidDisplayHeight = 352;
	vidFileNamePrefix = 'tm_all-in_';
	showVidPop('/ajax_video-playing-all-in.php');
};

function popFirst2FiveVid(){
	currentlyPlaying = 1;
	maxVids = 3;
	vidSplashImage = '/video/howtoplay_first2fivetrivia_video.jpg';
	vidWidth = 464;
	vidHeight = 372;
	vidDisplayHeight = 352;
	vidFileNamePrefix = 'tm_first2five_';
	showVidPop('/ajax_video-playing-first2five.php');
};

function createPlayer(theFileNum, go) {
	currentlyPlaying = theFileNum;
	theFile = '/video/chapters/'+vidFileNamePrefix+theFileNum+'.flv';
	var flashObj = new SWFObject('/video/flvplayer.swf','mp1',vidWidth,vidHeight,'7');
	flashObj.addParam('allowfullscreen','true');
	flashObj.addVariable("file",theFile);
	flashObj.addVariable('width',vidWidth);
	flashObj.addVariable('height',vidHeight);
	flashObj.addVariable('displayheight',vidDisplayHeight);
	flashObj.addVariable("overstretch","fit");
	flashObj.addVariable("enablejs","true");
	flashObj.addVariable("javascriptid","mp1"); 
	flashObj.addVariable('image',vidSplashImage);
	if (go) { flashObj.addVariable("autostart","true"); }
	flashObj.write('player');
	
	for (var i = 1; i <= maxVids; i++){
		var buttonName = 'vidButton'+i;
		if (i == theFileNum) document.getElementById(buttonName).className = 'vidButtonOn';
		else document.getElementById(buttonName).className = 'vidButtonOff';
	}
};

function createGenPlayer(genVidURL, go) {
	var flashObj = new SWFObject('/video/flvplayer.swf','mp1','464','372','7');
	flashObj.addParam('allowfullscreen','true');
	flashObj.addVariable("file",genVidURL);
	flashObj.addVariable('width',464);
	flashObj.addVariable('height',372);
	flashObj.addVariable('displayheight',352);
	flashObj.addVariable("overstretch","fit");
	flashObj.addVariable("enablejs","true");
	flashObj.addVariable("javascriptid","mp1"); 
	if (go) { flashObj.addVariable("autostart","true"); }
	flashObj.write('genPlayer');
};

function getUpdate(typ,pr1,pr2,pid) {
	if(pid != "null") {
		if((typ == "state")&&(pr1 != undefined)) { 
			currentState = pr1; 
			if(currentState=="3") {
				currentlyPlaying++;
				if (currentlyPlaying > maxVids){
					currentlyPlaying = 1;
					createPlayer(currentlyPlaying);
				}else{
					createPlayer(currentlyPlaying, true);
				}
			}
		}
	}
};

function showVidPop(ajaxURL){
	showOverlay();
	var popEl = document.getElementById('blankPop');
	popEl.innerHTML = '<div style="border:3px solid #066088;padding:50px;text-align:center;width:200px; background-color: white;">Loading...<br /><img src="/images/loading.gif" width="32" height="32" alt="loading" title="loading" border="0" /></div>';
	popEl.style.display = '';
	var winSize = getWindowSize();
	var popElWidth = popEl.offsetWidth;
	var popElHeight = popEl.offsetHeight;
	var pageScroll = getPageScroll();
	popEl.style.top = (winSize.y / 2) - (popElHeight / 2) + pageScroll.y+'px';
	popEl.style.left = (winSize.x / 2) - (popElWidth / 2)+'px';
	var myRequest = new ajaxObj(ajaxURL,showVidPopCallback,'blankPop');
	myRequest.update('','get');
};

function showVidPopCallback(responseText,status,responseXML){
	var popEl = document.getElementById('blankPop');
	if (status == 200) popEl.innerHTML = responseText;
	else popEl.innerHTML = '<div style="border:3px solid #066088;padding:50px;text-align:center;width:200px; background-color: white;"><h1>Error</h1>There was an error.  Please try again.</div>';
	popEl.style.display = '';
	var winSize = getWindowSize();
	var popElWidth = popEl.offsetWidth;
	var popElHeight = popEl.offsetHeight;
	var pageScroll = getPageScroll();
	popEl.style.top = (winSize.y / 2) - (popElHeight / 2) + pageScroll.y+'px';
	popEl.style.left = (winSize.x / 2) - (popElWidth / 2)+'px';
	createPlayer(1, true);
};

function showGenVidPop(h1,vidURL){
	var params = 'h1='+h1;
	genVidURL = vidURL;
	showOverlay();
	var popEl = document.getElementById('blankPop');
	popEl.innerHTML = '<div style="border:3px solid #066088;padding:50px;text-align:center;width:200px; background-color: white;">Loading...<br /><img src="/images/loading.gif" width="32" height="32" alt="loading" title="loading" border="0" /></div>';
	popEl.style.display = '';
	var winSize = getWindowSize();
	var popElWidth = popEl.offsetWidth;
	var popElHeight = popEl.offsetHeight;
	var pageScroll = getPageScroll();
	popEl.style.top = (winSize.y / 2) - (popElHeight / 2) + pageScroll.y+'px';
	popEl.style.left = (winSize.x / 2) - (popElWidth / 2)+'px';
	var myRequest = new ajaxObj('/ajax_gen-local-video.php',showGenVidPopCallback,'blankPop');
	myRequest.update(params,'get');
};

function showGenVidPopCallback(responseText,status,responseXML){
	var popEl = document.getElementById('blankPop');
	if (status == 200) popEl.innerHTML = responseText;
	else popEl.innerHTML = '<div style="border:3px solid #066088;padding:50px;text-align:center;width:200px; background-color: white;"><h1>Error</h1>There was an error.  Please try again.</div>';
	popEl.style.display = '';
	var winSize = getWindowSize();
	var popElWidth = popEl.offsetWidth;
	var popElHeight = popEl.offsetHeight;
	var pageScroll = getPageScroll();
	popEl.style.top = (winSize.y / 2) - (popElHeight / 2) + pageScroll.y+'px';
	popEl.style.left = (winSize.x / 2) - (popElWidth / 2)+'px';
	createGenPlayer(genVidURL, true);
};

function showYoutubePop(h1,vID){
	var params = 'h1='+h1+'&vID='+vID;
	showOverlay();
	var popEl = document.getElementById('blankPop');
	popEl.innerHTML = '<div style="border:3px solid #066088;padding:50px;text-align:center;width:200px; background-color: white;">Loading...<br /><img src="/images/loading.gif" width="32" height="32" alt="loading" title="loading" border="0" /></div>';
	popEl.style.display = '';
	var winSize = getWindowSize();
	var popElWidth = popEl.offsetWidth;
	var popElHeight = popEl.offsetHeight;
	var pageScroll = getPageScroll();
	popEl.style.top = (winSize.y / 2) - (popElHeight / 2) + pageScroll.y+'px';
	popEl.style.left = (winSize.x / 2) - (popElWidth / 2)+'px';
	var myRequest = new ajaxObj('ajax_youtube-player.php',showYoutubePopCallback,'blankPop');
	myRequest.update(params,'get');
};

function showYoutubePopCallback(responseText,status,responseXML){
	var popEl = document.getElementById('blankPop');
	if (status == 200) popEl.innerHTML = responseText;
	else popEl.innerHTML = '<div style="border:3px solid #066088;padding:50px;text-align:center;width:200px; background-color: white;"><h1>Error</h1>There was an error.  Please try again.</div>';
	popEl.style.display = '';
	var winSize = getWindowSize();
	var popElWidth = popEl.offsetWidth;
	var popElHeight = popEl.offsetHeight;
	var pageScroll = getPageScroll();
	popEl.style.top = (winSize.y / 2) - (popElHeight / 2) + pageScroll.y+'px';
	popEl.style.left = (winSize.x / 2) - (popElWidth / 2)+'px';
};





 //////////////////////////////////////////////////////////////
//                                                           //
//                        Misc Code                          //
//                                                           //
//////////////////////////////////////////////////////////////

function getElPos(obj) {
	var curleft=0, curtop=0;
	var pageScroll = getPageScroll();
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	//curleft = curleft - pageScroll.x;
	//curtop = curtop - pageScroll.y;
	return {x:curleft,y:curtop};
}

function getPageScroll(){
	var offsetX=0, offsetY=0;
	if(!window.pageYOffset){
		if(!(document.documentElement.scrollTop == 0)){
			offsetY = document.documentElement.scrollTop;
			offsetX = document.documentElement.scrollLeft;
		}else{
			offsetY = document.body.scrollTop;
			offsetX = document.body.scrollLeft;
		}
	}else{
		offsetX = window.pageXOffset;
		offsetY = window.pageYOffset;
	}
	
	//alert(pageXOffset+' x '+pageYOffset);
	
	return {x:offsetX,y:offsetY};
}

function getWindowSize() {
	var myWidth=0, myHeight=0;
	if(typeof(window.innerWidth) == 'number'){
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)){
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} else if(document.body && (document.body.clientWidth || document.body.clientHeight)){
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	return {x:myWidth,y:myHeight};
}

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;
	}
}

function showOverlay(){
	var overlayEl = document.getElementById('overlay');
	var winSize = getWindowSize();
	var bodyHeight = document.getElementById('mainBody').offsetHeight;
	if (bodyHeight < winSize.y) overlayEl.style.height = winSize.y+'px';
	else overlayEl.style.height = bodyHeight+'px';
	overlayEl.style.display = '';
	//document.getElementById('mainBody').style.overflow = 'hidden';
}

function hideOverlay(){
	var overlayEl = document.getElementById('overlay');
	overlayEl.style.display = 'none';
	//document.getElementById('mainBody').style.overflow = '';
}

function showWelcomePop(){
	showOverlay();
	var popEl = document.getElementById('welcomePop');
	var winSize = getWindowSize();
	var popElWidth = 400;
	var popElHeight = 300;
	popEl.style.top = (winSize.y / 2) - (popElHeight / 2)+'px';
	popEl.style.left = (winSize.x / 2) - (popElWidth / 2)+'px';
	popEl.style.display = '';
	doAjaxCall('/ajax_welcome.php','','get','welcomePop');
}

function showBlankPop(ajaxURL){
	showOverlay();
	var popEl = document.getElementById('blankPop');
	popEl.innerHTML = '<div style="border:3px solid #066088;padding:50px;text-align:center;width:200px; background-color: white;">Loading...<br /><img src="/images/loading.gif" width="32" height="32" alt="loading" title="loading" border="0" /></div>';
	popEl.style.display = '';
	var winSize = getWindowSize();
	var popElWidth = popEl.offsetWidth;
	var popElHeight = popEl.offsetHeight;
	var pageScroll = getPageScroll();
	popEl.style.top = (winSize.y / 2) - (popElHeight / 2) + pageScroll.y+'px';
	popEl.style.left = (winSize.x / 2) - (popElWidth / 2)+'px';

	var myRequest = new ajaxObj(ajaxURL,showBlankPopCallback,'blankPop');
	myRequest.update('','get');
}

function showBlankPopCallback(responseText,status,responseXML){
	var popEl = document.getElementById('blankPop');
	if (status == 200) popEl.innerHTML = responseText;
	else popEl.innerHTML = '<div style="border:3px solid #066088;padding:50px;text-align:center;width:200px; background-color: white;"><h1>Error</h1>There was an error.  Please try again.</div>';
	popEl.style.display = '';
	var winSize = getWindowSize();
	var popElWidth = popEl.offsetWidth;
	var popElHeight = popEl.offsetHeight;
	var pageScroll = getPageScroll();
	popEl.style.top = (winSize.y / 2) - (popElHeight / 2) + pageScroll.y+'px';
	popEl.style.left = (winSize.x / 2) - (popElWidth / 2)+'px';
}

function hideBlankPop(){
	var popEl = document.getElementById('blankPop');
	popEl.innerHTML = '';
	popEl.style.display = 'none';
	hideOverlay();
}

function hideWelcomePop(){
	hideOverlay();
	var popEl = document.getElementById('welcomePop');
	popEl.style.display = 'none';
}

function doNdxNewsletterSignup(){
	var email = document.getElementById('ndxNewsletterEmail').value;
	if (validateEmail(email)){
		var params = 'email=' + email;
		doNullAjaxCall('/ajax_newsletter-join.php',params,'post');
		showBlankPop('/ajax_newsletter-thanks.php');
		document.getElementById('ndxNewsletterEmail').value = '';
	}else{
		alert('Please enter a valid e-mail address.');
		document.getElementById('ndxNewsletterEmail').value = '';
		document.getElementById('ndxNewsletterEmail').focus();
	}
}

function doAffProgNotifySignup(){
	var email = document.getElementById('affProgNotifyEmail').value;
	if (validateEmail(email)){
		var params = 'email=' + email;
		doNullAjaxCall('/ajax_affprog-join.php',params,'post');
		showBlankPop('/ajax_affprog-thanks.php');
		document.getElementById('affProgNotifyEmail').value = '';
	}else{
		alert('Please enter a valid e-mail address.');
		document.getElementById('affProgNotifyEmail').value = '';
		document.getElementById('affProgNotifyEmail').focus();
	}
}

function validateEmail(str){
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (str.indexOf(at)==-1) return false;
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) return false;
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) return false;
	if (str.indexOf(at,(lat+1))!=-1) return false;
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) return false;
	if (str.indexOf(dot,(lat+2))==-1) return false;
	if (str.indexOf(" ")!=-1) return false;
	return true					
}

function getUniqueString(){
	var theDate = new Date();
	return Date.UTC(theDate.getYear(),theDate.getMonth(),theDate.getDate(),theDate.getHours(),theDate.getMinutes(),theDate.getSeconds(), theDate.getMilliseconds());
}

function popWin(url) {
	var WindowWidth = 650;
	var WindowHeight = 500;
	var WindowTop = (screen.availHeight/2) - (WindowHeight/2);
	var WindowLeft = (screen.availWidth/2) - (WindowWidth/2);
	var WindowProps = 'toolbar=0,location=0,status=0,menubar=0,scrollbars=yes,resizable,width='+WindowWidth+',height='+WindowHeight+',left='+WindowLeft+',top='+WindowTop+',screenx='+WindowLeft+',screeny='+WindowTop;
	PoppedWin = window.open(url,"PoppedWin",WindowProps);
	PoppedWin.focus();
	return;
}

