

var yyy_content_page;

// switch betweeen MUTE and FREEZE
var freezeORmute
freezeORmute = "FREEZE";

// ajax transfer variables
var sms_text;
var debug_text;
var header_text;
var footer_text;
var flashfile;
var media_frame;
var last_media_frame;
var the_form;
var color_background; 
var color_output;
var color_input;
var frontend_command;

var media_width;
var media_height;
var button_font_percent;

last_media_frame = "";

// flash helpers
var movieName = "theloader";

// flags
var media_clicks = false;
var media_events = "NONE";

// update flags
var update_textOUT = true;
var update_header_text = true;
var update_footer_text = true;
var update_color_background = true;
var update_color_output = true;
var update_color_input = true;
var update_media = true;
var update_form = true;

// mute state
var mute = false;

function thisMovie(movieName) {
	// IE and Netscape refer to the movie object differently.
	// This function returns the appropriate syntax depending on the browser.
	if (navigator.appName.indexOf ("Microsoft") !=-1) 
	{
		return window[movieName]
	}	else {
		return document[movieName]
	}
}

// Checks if movie is completely loaded.
// Returns true if yes, false if no.
function movieIsLoaded (theMovie) {
	if (typeof(theMovie) != "undefined") 
	{
		return theMovie.PercentLoaded() == 100;
	} else {
		return false;
	}
}

function mutemovie() {
	if (movieIsLoaded(thisMovie(movieName))) 
	{
		thisMovie(movieName).setVolume(0);
	}
}

function unmutemovie()
{
	if (movieIsLoaded(thisMovie(movieName)))
	{
		thisMovie(movieName).setVolume(100);
	}
}

function loadmovie(movie_name) {
	if (movieIsLoaded(thisMovie(movieName)))
	{
		thisMovie(movieName).playMedia(movie_name);
	}
}

function loadmovienoevents(movie_name) {
	if (movieIsLoaded(thisMovie(movieName)))
	{
		thisMovie(movieName).playMediaNoEvents(movie_name);
	}
}

function loadjpg(jpg_name) {
	if (movieIsLoaded(thisMovie(movieName))) 
	{
		thisMovie(movieName).showJPG(jpg_name);
	}
}

function playmediafile(media_name)
{
	loadmovie(media_name);
	return false;
}

function playmediafilenoevents(media_name)
{
	loadmovienoevents(media_name);
	return false;
}

function pausemovie() {
	if (movieIsLoaded(thisMovie(movieName)))
	{
		thisMovie(movieName).pauseMedia();
	}
}

function resumemovie() {
	if (movieIsLoaded(thisMovie(movieName)))
	{
		thisMovie(movieName).resumeMedia();
	}
}

function flashfileCommunication(command, args)
{
	//alert (command + ":" + args);
	
	if (command == "submit" && args == "end")
	{
		if ( media_events == "ALL" || media_events == "END" )
		{
			media_events = "NONE"
			document.talkback.frontend_action.value  = "MEDIA_END"; 
			Ajax_Manager(yyy_content_page, "false");	
		}
	}
	
	if ( command == "flashpart" )
	{
		if ( args == "next2last" && (media_events == "ALL" || media_events == "NEXT2LAST") )
		{
			media_events = "NONE"
			document.talkback.frontend_action.value  = "MEDIA_NEXT2LAST"; 
			Ajax_Manager(yyy_content_page, "false");	
		}
		else if ( args != "next2last" && media_events == "ALL" )
		{
			media_events = "NONE"
			document.talkback.frontend_action.value  = "MEDIA_" + args; 
			Ajax_Manager(yyy_content_page, "false");
		}
	}

	if (command == "click")
	{
		if ( media_clicks )
		{
			media_clicks = false;
			document.talkback.frontend_action.value = "MEDIA_CLICKED=" + args;
			Ajax_Manager(yyy_content_page, "true");	
		}
	}
	
	if (command == "alert")
	{
		alert (args);
	}
}

function launchMovie(media_name)
{
	setTimeout("playmediafile('" + media_name + "');", 500);
	return false;
}

function doTimeOut()
{

}

// end flash helpers

// timeout functions
function pageTimeoutFunction (t)
{
	setTimeout("document.talkback.frontend_action.value = 'TIMEOUT_PAGE'; Ajax_Manager(yyy_content_page, 'false');", t);
}

// click functions
function buttonClicked (t)
{
	document.talkback.frontend_action.value = "BUTTON=" + t;
	return Ajax_Manager(yyy_content_page, "true");
}

function BBbuttonClicked (t)
{
	document.talkback.frontend_action.value = "BUTTON=" + t;
	Ajax_Manager(yyy_content_page, "true");
}

function dropdownChanged(t)
{
	var s = document.getElementById("yyydropdown");
	var v = s.options[s.selectedIndex].value;
	
	if ( t == true || (t == false && s.selectedIndex > 0))
	{
		document.talkback.frontend_action.value = "BUTTON=" + v;
		Ajax_Manager(yyy_content_page, "true");
	}
}

// sets focus on the input box
function setInputBoxFocus ()
{
	if ( document.talkback.smsmsg )
	{
		if ( document.talkback.smsmsg.type != "hidden" )
		{
			document.talkback.smsmsg.focus();
		}
	}
}

//set all update flags
function setUpdateFlags ( b )
{
	update_textOUT = b;
	update_header_text = b;
	update_footer_text = b;
	update_color_background = b;
	update_color_output = b;
	update_color_input = b;
	update_media = b;
	update_form = b;	
}

//front end command
function doFrontEndCommand ( inX )
{		
	setUpdateFlags ( true );
	
	var t;
	t = inX.split("|");
	
	var x;
	
	for ( x = 0; x < t.length; x++ )
	{
		if ( t[x] == "CLOSE_WINDOW" )
		{
			window.close();
		}
		else if ( t[x].substr(0,12) == "PAGE_ACTION=" )
		{
			window.location = t[x].substr(12);
		}
		else if ( t[x].substr(0,13) == "TIMEOUT_PAGE=" )
		{
			pageTimeoutFunction ((t[x].substr(13)*1000));
		}
		else if ( t[x].substr(0,13) == "MEDIA_EVENTS=" )
		{
			media_events = t[x].substr(13);
		}
		else if ( t[x].substr(0,11) == "MEDIA_PAUSE" )
		{
			pausemovie();
			movieName = "theloader_background";
			pausemovie();
			movieName = "theloader";
		}
		else if ( t[x].substr(0,12) == "MEDIA_RESUME" )
		{
			resumemovie();
			movieName = "theloader_background";
			resumemovie();
			movieName = "theloader";
		}
		else if ( t[x].substr(0,18) == "REMOVE_MUTE_BUTTON" )
		{
			document.getElementById("muteButton").innerHTML = "";
		}
		else if ( t[x].substr(0,13) == "MEDIA_CLICKS=" )
		{
			if ( t[x].substr(13) == "ON" )
			{
				media_clicks = true;
			}
			else if ( t[x].substr(13) == "OFF" ) 
			{
				media_clicks = false;
			}
		}
		else if ( t[x].substr(0,7) == "UPDATE=" )
		{
			var t2, x2;
			t2 = t[x].substr(7).split(",");
			
			setUpdateFlags ( false );
			
			for ( x2 = 0; x2 < t2.length; x2++ )
			{
				if (t2[x2] == "ALL") 
				{
					setUpdateFlags ( true );
				}
				else if (t2[x2] == "NONE") 
				{
					setUpdateFlags ( false );
				}
				else
				{	
					eval ("update_" + t2[x2] + "=true;");
				}				
			}		
		}
		else if ( t[x].substr(0,6) == "MUSIC=" )
		{
			if ( t[x].substr(6) == "STOP" )
			{
				movieName = "theloader_background";
				playmediafilenoevents("");
				movieName = "theloader";
			}
			else
			{
				movieName = "theloader_background";
				playmediafilenoevents(t[x].substr(6));
				movieName = "theloader";
			}		
		}
		else if ( t[x].substr(0,14) == "bottom_banner=" )
		{
			if ( document.getElementById("bottom_banner") )
			{
				if ( t[x].substr(14) != "" ) 
				{
					document.getElementById("bottom_banner").innerHTML = "<IMG SRC='" + t[x].substr(14) + "' ALT='" + t[x].substr(14) + "'>";
				}
				else
				{
					document.getElementById("bottom_banner").innerHTML = ""
				}
			}
		
		}
		else if ( t[x].substr(0,11) == "top_banner=" )
		{
			if ( document.getElementById("top_banner") )
			{
				if ( t[x].substr(11)  != "" ) 
				{
					var t2; 
					t2 = t[x].split(",");
	
					if ( t2.length == 2 )
					{
						document.getElementById("top_banner").innerHTML = "<a href='" + t2[1] + "' target='_blank'><IMG SRC='" + t2[0].substr(11) + "' ALT='" + t2[0].substr(11) + "'></a>";
					}
					else
					{
						document.getElementById("top_banner").innerHTML = "<IMG SRC='" + t2[0].substr(11) + "' ALT='" + t2[0].substr(11) + "'>";
					}
				}
				else
				{
					document.getElementById("top_banner").innerHTML = ""
				}
			}				
		}
	}
}

// form functions
function disableFormItems ()
{
	var theForm = document.talkback

	for(i=0; i < theForm.elements.length; i++)
	{
		theForm.elements[i].blur();
		theForm.elements[i].disabled=true;	
	}	
}

// url encoding function
function URLEncode (clearString) 
{
	var output = '';
	var x = 0;
	clearString = clearString.toString();
	var regex = /(^[a-zA-Z0-9_.]*)/;
	while (x < clearString.length) 
	{
		var match = regex.exec(clearString.substr(x));
		if (match != null && match.length > 1 && match[1] != '') 
		{
			output += match[1];
			x += match[1].length;
		} 
		else 
		{
			if (clearString[x] == ' ')
			{
				output += '+';
			}
			else 
			{
				var charCode = clearString.charCodeAt(x);
				var hexVal = charCode.toString(16);
				output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
			}
			x++;
		}
	}
	return output;
}

//error function
function loginfo ( userid, content, info )
{
	var http_request;
	
	if (document.getElementById) 
	{
		http_request = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
	}
	if (http_request)
	{
		var url;
		var params;
		params = "userid=" + URLEncode(userid);
		params += "&content=" + URLEncode(content);
		params += "&info=" + URLEncode(info);
				
		//Call a function when the state changes.
		http_request.onreadystatechange = function() 
		{
			if(http_request.readyState == 4 && http_request.status == 200) 
			{
				//alert(http_request.responseText);
			}
		}
		
		url = "http://www.statemachine.info/admin/loginfo.asp"; //+ params;
		
		http_request.open("POST", url, true);
		
		//Send the proper header information along with the request
		http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		//http_request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
		http_request.setRequestHeader("Content-length", params.length);
		http_request.setRequestHeader("Connection", "close");
		
		http_request.send(params);		
	}
}

function muteClicked()
{
	if ( freezeORmute == "MUTE" )
	{
		if ( mute )
		{
			document.getElementById("muteButton").innerHTML = "<div id='muteButton'><img onclick='return muteClicked();' height='22px' width='22px' style='float:right;' src='media/mute.png' alt='mute' /></div>"
			unmutemovie();
			movieName = "theloader_background";
			unmutemovie();
			movieName = "theloader";
			mute = false;
		}
		else
		{
			document.getElementById("muteButton").innerHTML = "<div id='muteButton'><img onclick='return muteClicked();' height='22px' width='22px' style='float:right;' src='media/unmute.png' alt='unmute' /></div>"
			mutemovie();
			movieName = "theloader_background";
			mutemovie();
			movieName = "theloader";
			mute = true;
		}
	}
	else
	{
		if ( mute )
		{

			document.getElementById("muteButton").innerHTML = "<div id='muteButton'><img onclick='return muteClicked();' height='22px' width='22px' style='float:right;' src='media/pause.png' alt='pause' /></div>"
			mute = false;
			document.talkback.frontend_action.value  = "UNFREEZE"
			Ajax_Manager(yyy_content_page, "false");		
		}
		else
		{
			document.getElementById("muteButton").innerHTML = "<div id='muteButton'><img onclick='return muteClicked();' height='22px' width='22px' style='float:right;' src='media/play.png' alt='play' /></div>"
			mute = true;
			document.talkback.frontend_action.value  = "FREEZE"
			Ajax_Manager(yyy_content_page, "false");
		}
	}
	
	return false;
}

var smsmsg;		
var smsfrom;
var smsto;
var smsdate;
var network;
var smsid;
var bits;
var frontend_action;
var client_code;

function Ajax_Manager()
{
	var args = Ajax_Manager.arguments;
	var x;
	
	if (args[1] == "true")
	{
		disableFormItems ();
	}

	if (document.getElementById) 
	{
		x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
	}
	if (x)
	{
		x.onreadystatechange = function()
		{
			if (x.readyState == 4 && ( x.status == 200 || x.status == 500))
			{
				if (x.status == 200)
				{
					if ( x.responseText.indexOf("Microsoft VBScript compilation") != -1 ||
					     x.responseText.indexOf("Microsoft VBScript runtime") != -1 ||
					     x.responseText.indexOf("Microsoft OLE DB Provider for ODBC Drivers") != -1 ||
					     x.responseText.indexOf("Include file not found") != -1 ||
					     x.responseText.indexOf("<TITLE>The page cannot be found</TITLE>") != -1 ||
					     x.responseText.indexOf("<font face=\"Arial\" size=2>error") != -1 )
					{
						
						loginfo ( smsfrom, "AJAX FETCH ERROR", x.responseText );
						
						if ( document.getElementById("debug_text") )
						{
							document.getElementById("debug_text").innerHTML = x.responseText;							
						}
						
						return;
					}
											
					document.talkback.frontend_action.value = "";
					
					var start, end;
					start = x.responseText.indexOf("<script>") + 8;
					end = x.responseText.indexOf("</script>", start);
					
					eval (x.responseText.substring(start,end));
					
					doFrontEndCommand ( frontend_command );	
					
					if ( update_media )
					{
						if ( media_frame != "" && last_media_frame != media_frame )
						{
							if (last_media_frame != "")
							{
							document.getElementById("media_frame").innerHTML = media_frame;
							}
							last_media_frame = media_frame;
						}
						
						if ( flashfile != "" )
						{
							launchMovie(flashfile); 
						}
					}
					
					if ( update_textOUT )
					{
						if (document.getElementById("twline"))
						{
							if ( freezeORmute == "MUTE" )
							{
								if (mute)
									document.getElementById("twline").innerHTML = "<p><div id='muteButton'><img onclick='return muteClicked();' height='22px' width='22px' style='float:right;' src='media/unmute.png' alt='mute' /></div>" + sms_text + "</p>";
								else
									document.getElementById("twline").innerHTML = "<p><div id='muteButton'><img onclick='return muteClicked();' height='22px' width='22px' style='float:right;' src='media/mute.png' alt='mute' /></div>" + sms_text + "</p>";
							}
							else
							{
								if (mute)
									document.getElementById("twline").innerHTML = "<p><div id='muteButton'><img onclick='return muteClicked();' height='22px' width='22px' style='float:right;' src='media/play.png' alt='play' /></div>" + sms_text + "</p>";
								else
									document.getElementById("twline").innerHTML = "<p><div id='muteButton'><img onclick='return muteClicked();' height='22px' width='22px' style='float:right;' src='media/pause.png' alt='pause' /></div>" + sms_text + "</p>";
							}
						}
					}
																
					if ( update_footer_text && document.getElementById("footer_text") )
					{
						if ( document.getElementById("footer_text").innerHTML != footer_text )
						{
							document.getElementById("footer_text").innerHTML = footer_text;
						}
					}
					
					if ( update_header_text && document.getElementById("header_text") )
					{
						if ( document.getElementById("header_text").innerHTML != header_text )
						{
							document.getElementById("header_text").innerHTML = header_text;
						}				
					}
					
					if ( document.getElementById("debug_text") )
					{
						document.getElementById("debug_text").innerHTML = debug_text;
					}
					
					if ( update_form )
					{
						if ( document.getElementById("the_form").innerHTML != the_form )
						{
							document.getElementById("the_form").innerHTML = the_form;
						}
					}
					
					if ( update_color_background ) 
					{
						if ( color_background != "" )
						{
							document.bgColor=color_background; 
						}
					}
					
					if ( update_color_output ) 
					{
						if ( color_output != "" )
						{
							document.getElementById("twline").style.backgroundColor = color_output;
						}
					}
					
					if ( update_color_input )
					{
						if ( color_input != "" )
						{
							document.getElementById("the_form").style.backgroundColor = color_input;
						}
					}
					
					setInputBoxFocus ();									
				}
			}
		}

		var getString;
		getString = args[0];
		
		smsmsg = document.talkback.smsmsg.value;		
		smsfrom = document.talkback.smsfrom.value;
		smsto = document.talkback.smsto.value;
		smsdate = document.talkback.smsdate.value;
		network = document.talkback.network.value;
		smsid = document.talkback.smsid.value;
		bits = document.talkback.bits.value;
		frontend_action = document.talkback.frontend_action.value;

		getString = getString + "?smsmsg=" + smsmsg +
			"&smsfrom=" + smsfrom +
			"&smsto=" + smsto +
			"&smsdate=" + smsdate +
			"&network=AJAX" +
			"&smsid=" + smsid +
			"&bits=" + bits +
			"&frontend_action=" + frontend_action +
			"&media_width=" + media_width + 
			"&media_height=" + media_height +
			"&button_font_percent=" + button_font_percent +
			"&cc=" + client_code;

		x.open("GET", getString, true);
		// IE workaround
		x.setRequestHeader("If-Modified-Since", new Date(0));
		//x.overrideMimeType('text/xml');
		x.send(null);
	}

	return false;
}