

	function toggleDiv(divid){
		if(document.getElementById(divid).style.display == 'none'){
			document.getElementById(divid).style.display = 'block';
		}else{
			document.getElementById(divid).style.display = 'none';
		}
	}

	function hideDiv(divid) {
		document.getElementById(divid).style.display='none';
	}

	function showDiv(divid) {
		document.getElementById(divid).style.display='block';				
	}


	function showSystemMessage (arg_html) {
		//Set one, set the inner html
		document.getElementById('message').innerHTML = arg_html;
		
		document.getElementById('message').style.opacity=0;
		
		//Tunr the display on
		var myAnim = new YAHOO.util.Anim('message', {  opacity: {from: 0, to: 1}}, 1, YAHOO.util.Easing.easeOut);


		myHandler = function(type, args) {
			YAHOO.log("Show System Message was animated " +args[0].fps+ ".", "info", "info");
		}

	
		myAnim.onComplete.subscribe(myHandler);

		myAnim.animate();
		document.getElementById('message').style.display='block';

	}
	
	function hideSystemMessage() {
		//Turn the display off
		document.getElementById('message').style.display='none';
		YAHOO.log("System Message was hidden.", "info", "info");		
	}
	
	var currentBuffer=0;
	
	function incrementBuffer()
	{
		if (currentBuffer==0) currentBuffer=1;
		else currentBuffer=0;
	}
	
	function getLosingBuffer()
	{
		tmp_buffer = new Array (2);
		tmp_buffer[0]="buffer1";
		tmp_buffer[1]="buffer2";

		if (currentBuffer==1) return tmp_buffer[0];
		return tmp_buffer[1];
	}
	
	function getHiddenBuffer ()
	{
		return getLosingBuffer();
	}
	
	
	function getGainingBuffer()
	{
		tmp_buffer = new Array (2);
		tmp_buffer[0]="buffer1";
		tmp_buffer[1]="buffer2";

		return tmp_buffer[currentBuffer];
	}
	
	function swapBuffer()
	{
		
		
		//alert(document.getElementById("buffer1").style.left);
		//alert(document.getElementById("buffer2").top);
		
		incrementBuffer();
				
		//Ok, we hide the current buffer
		//hideDiv(tmp_buffer[lb]);
		//We display the new buffer
		//showDiv (tmp_buffer[gb]);
		
		animateLosingBuffer();
		
		YAHOO.log("Swap Starting.", "info", "info");				
	}
		
	function animateLosingBuffer ()
	{
		
		lb = getLosingBuffer();
		gb = getGainingBuffer();
		
		//Since the animation is one based on opacity, set what we expect
		document.getElementById(lb).style.opacity =1;
		showDiv(lb);		
		
		//Tunr the display on
		var myAnim = new YAHOO.util.Anim(lb, {  opacity: {from: 1, to: 0}}, .5, YAHOO.util.Easing.easeOut);


		myLosingHandler = function(type, args) {
			animateGainingBuffer();
			YAHOO.log ("Go to animate gaining buffer", "info", "info");
		}

	
		myAnim.onComplete.subscribe(myLosingHandler);

		myAnim.animate();
	}
	
	function animateGainingBuffer ()
	{
		
		document.getElementById(getGainingBuffer()).style.opacity =0;
		showDiv(getGainingBuffer());
		hideDiv(getLosingBuffer());
		
		//Tunr the display on
		var nextAnim = new YAHOO.util.Anim(getGainingBuffer(), {  opacity: {from: 0, to: 1}}, .5, YAHOO.util.Easing.easeOut);


		myGainingHandler = function(type, args) {
			//animateGainingBuffer(gb);
			YAHOO.log ("Done with buffer swap", "info", "info");
		}
	
		nextAnim.onComplete.subscribe(myGainingHandler);

		nextAnim.animate();
		
	}
	
	var loginPage = {
		handleSuccess:function(o){
			
			YAHOO.log("The success handler was called.  tId: " + o.tId + ".", "info", "Success");
			//showDiv('ajax_message');

			if(o.responseText !== undefined){

				var response = o.responseText.split("\n");

				//The first line is our response code
				var response_code = response[0];
				//The second line is our error message
				var error_message = response[1];
				//Everyline thereafter is html
				var html_code = "";
				for (counter=2; counter<response.length; counter++) {
					html_code+=response[counter];
				}

				if (response_code==1) showSystemMessage("<P align=center>"+error_message+"</p>");
				if (response_code==2) {
					window.location=error_message;
				} 
				
				document.getElementById(getHiddenBuffer()).innerHTML  = html_code;
			}
			
			swapBuffer();
		},


		handleFailure:function(o){
			showSystemMessage("<P align=center>Connection Error While Attempting To Retrieve Login Page</P>");
		},
		
		catchLogin:function() {
			//We need to get the login id
			var username = escape(document.loginform.loginid.value);
			
			//and the password
			var password = escape(document.loginform.password.value);
			
			//And we need to make a request
			loginPage.makeRequest ('action=validatelogin&loginid='+username+'&password='+password, "Validating...");
		},

		catchForgotPassword:function () {
			var email = escape (document.forgotpasswordform.emailaddress.value);
			
			loginPage.makeRequest('action=validate_forgot_password&emailaddress='+email, "Checking...");
		},
		
		makeRequest:function(arg_vars, arg_msg){
			hideSystemMessage();
			document.getElementById(getGainingBuffer()).innerHTML  = "<p>&nbsp;</p><p>&nbsp;</p><div class=busy>"+arg_msg+"</div>";
			
			var request = YAHOO.util.Connect.asyncRequest('GET', '/2.0/login.php?'+arg_vars, loginCallback);

			YAHOO.log("Initiating request - sending to login page "+arg_vars+": tId: " + request.tId + ".", "info", "Login Page");

			return false;
		}
		
		
	};
	
	var loginCallback =
	{
	  success:loginPage.handleSuccess,
	  failure:loginPage.handleFailure,
	  scope:loginPage
	};
	

	var DownlinePrinter ={
		handleSuccess:function(o){

			YAHOO.log("The success handler for Downline Printer was called.  tId: " + o.tId + ".", "info", "Success");
			//showDiv('ajax_message');

			if(o.responseText !== undefined){
				
				var response = o.responseText.split("\n");
				
				//The first line lets us know what page we are on
				var navigate = response[0];
				//The second line is our response code
				var response_code = response[1];
				//The third line is our error message
				var error_message = response[2];
				//Everyline thereafter is html
				var html_code = "";
				for (counter=3; counter<response.length; counter++) {
					html_code+=response[counter];
				}
				

				//Navigate 0 is the first, intro page
				//Navigate 1 is the find_starting_user
				//Navigate 2 is the delete_saved.php - which creates a new file
				
				if (navigate==2) {
					if (error_message.length>0)
						showSystemMessage(error_message);

					if (response_code==0) {
						//Then we want to forward them to the next make request
						DownlinePrinter.findStartingPoint();
					} else {
						document.getElementById(getHiddenBuffer()).innerHTML  = html_code;					
					}
				} else if (navigate==3) {
					PrinterGenerate.makeRequest("build_queue.php");
					document.getElementById(getHiddenBuffer()).innerHTML  = "<P>Generating Build Queue</p>";					
					swapBuffer();
					return;
				} else {
					document.getElementById(getHiddenBuffer()).innerHTML  = html_code;					
					swapBuffer();
				}
				
			}
			
		},


		handleFailure:function(o){
			showSystemMessage("<P align=center>Connection Error While Attempting To Retrieve Downline Printer Page</P>");
		},

		makeRequest:function(arg_url, arg_msg){
			hideSystemMessage();
			document.getElementById(getGainingBuffer()).innerHTML  = "<p>&nbsp;</p><p>&nbsp;</p><div class=busy>"+arg_msg+"</div>";
			
			var request = YAHOO.util.Connect.asyncRequest('GET', '/2.0/backoffice/printer/'+arg_url, PrinterCallBack);

			YAHOO.log("Initiating request - sending to support page: tId: " + request.tId + ".", "info", "Support Page");

			return false;
		},
		
		start:function () {
			DownlinePrinter.makeRequest ("index.php", "Intializing Printer");
		},
		
		findStartingPoint:function () {
			DownlinePrinter.makeRequest ("find_starting_user.php", "Loading...");
		},
		
		createNewHTML:function () {
			DownlinePrinter.makeRequest ("delete_saved.php", "Starting...");
		}, 
		
		setStartingPoint:function (arg_id) {
			DownlinePrinter.makeRequest ("build_queue.php?key_id="+arg_id+"&start=1", "Assembling")
		}
		
		
	};
	
	var PrinterCallBack = {
	  success:DownlinePrinter.handleSuccess,
	  failure:DownlinePrinter.handleFailure,
	  scope:DownlinePrinter		
	};
	
	
	
	var PrinterDownlineSearch = {
		handleSuccess:function(o){

			YAHOO.log("The success handler was called.  tId: " + o.tId + ".", "info", "Success");
			//showDiv('ajax_message');

			if(o.responseText !== undefined){
				document.getElementById('startingpoint').innerHTML  = o.responseText;
			}
			
		},


		handleFailure:function(o){
			showSystemMessage("<P align=center>Connection Error While Attempting To Search Downline</P>");
		},

		makeRequest:function(){
			hideSystemMessage();
			document.getElementById('startingpoint').innerHTML  = "<div style=\"margin:0 auto\" class=busy></div>";
			
			var request = YAHOO.util.Connect.asyncRequest('GET', '/2.0/backoffice/printer/search_downline.php?search_string='+document.downlinesearch.search_string.value, PDSCallback);

			YAHOO.log("Initiating request - sending to downline search page: tId: " + request.tId + ".", "info", "Downline Search");

			return false;
		}
		
	};
	
	var PDSCallback =
	{
	  success:PrinterDownlineSearch.handleSuccess,
	  failure:PrinterDownlineSearch.handleFailure,
	  scope:PrinterDownlineSearch
	};	
	


	var PrinterGenerate = {
		handleSuccess:function(o){

			YAHOO.log("The Printer Generate success handler was called.  tId: " + o.tId + ".", "info", "Success");
			//showDiv('ajax_message');

			if(o.responseText !== undefined){
				var response = o.responseText.split("\n");
				
				//The first line lets us know what page we are on
				var navigate = response[0];
				//The second line is our response code
				var response_code = response[1];
				//The third line is our error message
				var error_message = response[2];
				//Everyline thereafter is html
				var html_code = "";
				for (counter=3; counter<response.length; counter++) {
					html_code+=response[counter];
				}

				
				if (navigate==3) {
					YAHOO.log ("Working with Build Queue. Response Code is "+response_code, "info", "PG");
					if (response_code==0) {
						PrinterGenerate.makeRequest('pop.php');
					} else if (response_code==1) {
						PrinterGenerate.makeRequest('build_queue.php');
					} 
				} else if (navigate==4) {
					YAHOO.log ("Working with Pop. Response Code is "+response_code, "info", "PG");
					if (response_code==0) {
						DownlinePrinter.makeRequest("done.php", "Completing");
						return;
					} else if (response_code==1) {
						PrinterGenerate.makeRequest(html_code);
						return;
					} 
				} else if (navigate==5) {
					YAHOO.log ("Working with Printer. Response Code is "+response_code, "info", "PG");
					if (response_code==0) {
						PrinterGenerate.makeRequest('pop.php');						
					} else if (response_code==1) {
						showSystemMessage (error_message);
					}
				
				
				} else {
					YAHOO.log ("What? No navigate?");
				}
				var current = document.getElementById(getGainingBuffer()).innerHTML;
				document.getElementById(getGainingBuffer()).innerHTML  = html_code+current;
			}
			
		},


		handleFailure:function(o){
			showSystemMessage("<P align=center>Connection Error While Attempting To Generate Downline</P>");
		},

		makeRequest:function(arg_url){
			hideSystemMessage();
			
			var request = YAHOO.util.Connect.asyncRequest('GET', '/2.0/backoffice/printer/'+arg_url, PrinterGenerateCallback);

			YAHOO.log("Initiating request - sending to downline generate page: tId: " + request.tId + ".", "info", "Downline Generate");

			return false;
		}
		
	};
	
	var PrinterGenerateCallback =
	{
	  success:PrinterGenerate.handleSuccess,
	  failure:PrinterGenerate.handleFailure,
	  scope:PrinterGenerate
	};	
	


	var GenericPage = {
		handleSuccess:function(o){

			YAHOO.log("The success handler was called.  tId: " + o.tId + ".", "info", "Success");
			//showDiv('ajax_message');

			if(o.responseText !== undefined){
				document.getElementById(getHiddenBuffer()).innerHTML  = o.responseText;
			}
			
			swapBuffer();
		},


		handleFailure:function(o){
			showSystemMessage("<P align=center>Connection Error While Attempting To Retrieve Document Page</P>");
		}

		
	};
	
	var GenericCallback =
	{
	  success:GenericPage.handleSuccess,
	  failure:GenericPage.handleFailure,
	  scope:GenericPage
	};
	
	
	var SupportPage = {


		makeRequest:function(){
			hideSystemMessage();
			document.getElementById(getGainingBuffer()).innerHTML  = "<p>&nbsp;</p><p>&nbsp;</p><div class=busy>Loading Support Page</div>";
			
			var request = YAHOO.util.Connect.asyncRequest('GET', '/2.0/support.php', GenericCallback);

			YAHOO.log("Initiating request - sending to support page: tId: " + request.tId + ".", "info", "Support Page");

			return false;
		}
		
	};
	
	var AudioPage = {
		makeRequest:function(){
			hideSystemMessage();
			document.getElementById(getGainingBuffer()).innerHTML  = "<p>&nbsp;</p><p>&nbsp;</p><div class=busy>Loading Audio Tutorial Page</div>";
			
			var request = YAHOO.util.Connect.asyncRequest('GET', '/2.0/backoffice/audio/index.php', GenericCallback);

			YAHOO.log("Initiating request - sending to audio page: tId: " + request.tId + ".", "info", "Support Page");

			return false;
		}		

	};
	
	var DocumentPage = {

		makeRequest:function(){
			hideSystemMessage();
			document.getElementById(getGainingBuffer()).innerHTML  = "<p>&nbsp;</p><p>&nbsp;</p><div class=busy>Loading Document Page</div>";
			
			var request = YAHOO.util.Connect.asyncRequest('GET', '/2.0/backoffice/documentManager/index.php?ajax=1', GenericCallback);

			YAHOO.log("Initiating request - sending to documnet page: tId: " + request.tId + ".", "info", "Document Page");

			return false;
		}
		
	};
	
	var ReportPage = {
		makeRequest:function(){
			hideSystemMessage();
			document.getElementById(getGainingBuffer()).innerHTML  = "<p>&nbsp;</p><p>&nbsp;</p><div class=busy>Loading Report Page</div>";
			
			var request = YAHOO.util.Connect.asyncRequest('GET', '/2.0/backoffice/reports/index.php', GenericCallback);

			YAHOO.log("Initiating request - sending to Report page: tId: " + request.tId + ".", "info", "Report Page");

			return false;
		}
		
	};

	

	var OrdersPage = {

		makeRequest:function(){
			hideSystemMessage();
			document.getElementById(getGainingBuffer()).innerHTML  = "<p>&nbsp;</p><p>&nbsp;</p><div class=busy>Loading Orders Page</div>";
			
			var request = YAHOO.util.Connect.asyncRequest('GET', '/2.0/backoffice/orders/index.php', GenericCallback);

			YAHOO.log("Initiating request - sending to orders page: tId: " + request.tId + ".", "info", "Document Page");

			return false;
		}
		
	};
	
	var BinaryPage = {

		makeRequest:function(){
			hideSystemMessage();
			document.getElementById(getGainingBuffer()).innerHTML  = "<p>&nbsp;</p><p>&nbsp;</p><div class=busy>Loading Binary Page</div>";
			
			var request = YAHOO.util.Connect.asyncRequest('GET', '/2.0/backoffice/binaryviewer/index.php', GenericCallback);

			YAHOO.log("Initiating request - sending to orders page: tId: " + request.tId + ".", "info", "Binary Page");

			return false;
		}
		
	};
		
	var FAQPage = {

		makeRequest:function(){
			hideSystemMessage();
			document.getElementById(getGainingBuffer()).innerHTML  = "<p>&nbsp;</p><p>&nbsp;</p><div class=busy>Loading FAQ Page</div>";
			
			var request = YAHOO.util.Connect.asyncRequest('GET', '/2.0/backoffice/faq/index.php', GenericCallback);

			YAHOO.log("Initiating request - sending to FAQ page: tId: " + request.tId + ".", "info", "FAQ Page");

			return false;
		}
		
	};

	var SessionExtend = {
		
		//On success, we update the ajax message div
		handleSuccess:function(o){
			YAHOO.log("Session / success handler was called.  tId: " + o.tId + ".", "info", "example");
		},
		
		
		//On failure, we update ajax message with a connection failure error
		handleFailure:function(o){
			showDiv('errormessage');
			document.getElementById("errormessage").innerHTML='<p class=error align=center>There was an error communicating with the server. Please check your connection and try again later.';
		},
		
		//We pass any appropriate values to the report_comment.php page
		makeRequest:function(arg_group_id){
			var request = YAHOO.util.Connect.asyncRequest('GET', '/2.0/session_target.php', SECallback);
			ExtendSessionTimeout = window.setTimeout (SessionExtend.makeRequest, 120000);
			
			return false;
		}
				
	};

	//This variable simply provides the relationship between the class and the yahoo library
	var SECallback =
	{
	  success:SessionExtend.handleSuccess,
	  failure:SessionExtend.handleFailure,
      scope:SessionExtend
	};
		
		
	var ExtendSessionTimeout = window.setTimeout (SessionExtend.makeRequest, 120000);