// Davdi Wesley Johnson Co. A.K.A.  MyTownYourTown.com (c) 2008,2009 All Rights Reserved!
// Update log
//------------------------------------------------------------------------------------------------------------------------
// WHEN	          WHO 	 WHY		ID
// 09/23/09 	 DWJ 	add Features:	lib_0004
//10/01/09             DWJ            ...                           ..
//-------------------------------------------------------------------------------------------------------------------------

//-----------------------------------------------------------------------------------------------------------------------------

var __bname 					= 	navigator.appName;
var __bver 						= 	navigator.appVersion;
var __xversion 					= 	parseFloat(__bver);
var __bcode 					= 	navigator.appCodeName;
var __bplat 					=	navigator.platform;

function __isFireFox( )
{
brwsinfo 						=	__bname+__bver+__xversion+__bcode+__bplat;
var msie						=	brwsinfo.search("MSIE");
var safari 						= 	brwsinfo.search("Safari");
var chrome 						= 	brwsinfo.search("Chrome");
if ((msie == "-1") && (safari == "-1") && (chrome == "-1")) return true;
return false;
}
//-----------------------------------------------------------------------------------------------------------------------------
var __hasFireFox = __isFireFox();
//-----------------------------------------------------------------------------------------------------------------------------
function displayBrowser()
{
	alert("Is FireFox: ["+__hasFireFox+" ]\nBrowser: "+__bname+"\nVersion: "+__bver +"\nxVersion:"+__xversion+"\nCode Name:"+__bcode+ " platform "+__bplat);
}
var debug					=	0;
var vector_1				=	0;
var dirVec					=	"lib4/";
var musicVec				=	"musicbox/";
var go_url					=	"webstart.php";
var cmd_response			=	1;
var data_server 			= 	0;
var init_setup 				=	0;
var CmdResponseCode			=	"";
var xmlHttp;
var nextQue 				=	" sendToServer(' '); ";
var queCnt 					=	0;
var theQueStack 			=	Array();
var waitForServer			=	0;
var cmdReturn				=	0;
var temp_item				=	0;    
var newcmd					=	" ";
//-----------------------------------------
var codeSet1= new Array();

var gvar_0				=	0;
var gvar_1				=	1;
var gvar_2				=	2;
var gvar_3				=	3;
var gvar_4				=	4;
var gvar_5				=	5;
var gvar_6				=	6;
var gvar_7				=	7;
var gvar_8				=	8;
var gvar_9				=	9;

//------------------------------------------------
var tickMask			=	4; 
var tickMin				=	1;
var mastercmdClock		=	0;
var deltacmdClock 		=	0;
tickToUpdate 			= 	200;
//--------------------------------------------------------
var cmdClock			=	0;
var basiccmdClock2Ratee	=	50;
var oneTick				=	20; 
var halfTick			=	10; 
var quarterTick			=	5; 
var cmdClock_0			=	0;
var cmdClock_1			=	0;
var startRefTime 		=	0;
var hasMusicBox 		= 	0;
var whereMusicBlock 	= 	"block5";
var hassmenu_1          =	0;
var wheresmenu_1		= 	"block8";
var wheresmenu_1subs 	= 	"block9";
var hasWorkPage 		=	0;
var whereWorkPage 		= 	"block12";
var sDestination		=	0;
var seqArry 		 	=	1;
var seqInterval 	 	=	2;
var seqLen 				=	3;
var seqIndex 	 		=	4;
var seqType         	=   5;
var seqId	         	=   6;
var seqError 			=	0;
var seqLimit 	 		=	12;
var seqActive 	   		=	0;
var seqDim1 			=	seqLimit; //12;  // max number of lists
var seqDim2 			=	7;   // number of components  ..sDestination, seqArry, seqInterval, seqLen, seqIndex
var seqDim3 			=	1;
var seqComponents 		=  	create3DArray(seqDim1,seqDim2,seqDim3) ;
//index is the ItemTag
var sequenceActive		= 	new Array (seqLimit);
//..------------------------------------------
var delay 				= 	1000;
var msgpos 				=	0;
var msg2pos				=	0;
var allowScrollUpdate	=	0;
var scrollType 			= 	'blockY9';
var activeScrolls		=	0;
var msg1 ="!!!!! Stand-By RSS Feeds are coming ... - _ - _ - _ -Stand-By RSS Feeds are coming ... - _ - _ - _ -";
var msg2 ="...::...:....:::...:";
//---------------------------------------------------------------
function addToQue(q)
{
	theQueStack.unshift(q);
	queCnt++;
}
//---------------------------------------------------------------------------
function processQue()
{
	if(queCnt > 0)
	{
		queCnt--;
		eval(theQueStack.shift());
	}
}
//-------------------------------------------------------------------------
function InitializeCmds()
{
	cmd_response 	=	1;
	data_server 	= 	0;
	init_setup 		=	0;
	go_url			=	"webstart.php";


}
//----------------------------------------------------------------------------
function  setCmdResponse()
{
var svar;
var cvar;
var m1;
var m2;
var xvar;
//	alert(CmdResponseCode);
eval(CmdResponseCode);
var ck = newcmd.slice(0,2);
	if ((ck.charAt(0)==">") && (ck.charAt(1)=="<"))
	{
	newcmd 	= 	newcmd.slice(2);
	len 	= 	newcmd.length;
	m1		=	hasSpecial(len,newcmd);
	if (m1 > -1 )
	{
		m2=getSpecialEnd(len,m1,newcmd);
		if ( m2 > -1 )
		{
        	svar 	= 	newcmd.slice(m1+2,m2-2);
			cvar 	= 	newcmd.slice(0,m1);
			cvar 	= 	cvar + newcmd.slice(m2+1);
			newcmd 	= 	cvar;
			len 	= 	svar.length;
			m1		=	hasSpecial2(len,svar);
			if (m1 > -1 )
			{
				m2=getSpecialEnd2(len,m1,svar);
				if ( m2 > -1 )
				{
					xvar 	= 	svar.slice(m1+2,m2-2);
					cvar 	= 	svar.slice(0,m1);
					cvar	=	cvar+"xvar;";
					eval(cvar);
				}
			}
		}
	}
	} 

	eval(newcmd);
	return 
}
//---------------------------------------------------------------------
function startAll()
{
	InitializeCmds();
	sendToServer('webdev');
}
//--------------------------------------------------------------------------
function sendToServer(str,args)
 { 
 xmlHttp=GetXmlHttpObject2();
 if (xmlHttp==null)
 {
	alert ("Browser does not support HTTP Request");
	return;
  }
 var url 	=	dirVec+go_url;
 url		=	url+"?q="+str;
 url		=	url+"&args="+args;
 url		=	url+"&sid="+getMath_Random();

 xmlHttp.onreadystatechange=ServerResponds; 
 xmlHttp.open("GET",url,true);
 waitForServer=1;
 xmlHttp.send(null);
 }
// -----------------------------------------------------------------------------------------------------------------------
function ServerResponds() 
 { 
 if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { 
  data_server	=	xmlHttp.responseText;
  waitForServer	=	0;
  switch(init_setup)
  {
	case 1:
		setCmdResponse();
		break;
    case 0:
		init_setup		=	1;
		CmdResponseCode	=	data_server;  		
var		item 			= 	getStartItem();
		addToQue(item);
		startcmdClock();
		return;
		break;
	default:
  }
 } 
 }
//-------------------------------------------------------------------------------------------------------------------------------

function startcmdClock()
{
cmdClock_0		=	0;
cmdClock_1		=	0;
var d 			= 	new Date();
startRefTime 	= 	d.getTime();
t				=	setTimeout("delayStart()",basiccmdClock2Ratee);
}
//------------------------------------------------------------------------
function delayStart()
{
t=setTimeout("runcmdClock()",basiccmdClock2Ratee);
}
//-----------------------------------------------------------------------------------
function runcmdClock()
{
//force WAIT for SERVER  :: BLOCKING c an be turned off but has collision posibilities
if	(!waitForServer) processQue();
if 	(!( cmdClock_0 % quarterTick)){	a_processLocalQue0();}
if 	(!(cmdClock_0 < oneTick)){ cmdClock_1++; cmdClock_0=0; a_processLocalQue1();}
cmdClock_0++;
t=setTimeout("runcmdClock()",basiccmdClock2Ratee);
}
//---------------------------------------------------------------------------------------------------------------------------------------------
// Standard call to SERVER Connection
function GetXmlHttpObject2()
{
var xmlHttp=null;
	try
	{ xmlHttp=new XMLHttpRequest(); }
	catch (e) { // Internet Explorer
	try
	{  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");  }
		catch (e)  {  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");  }
	}
	return xmlHttp;
}
//----------------------------------------------------------------------------------------------------
function getSpecialEnd2(len,m,data)
{
i=m;
while(i < len) {if ( data.charAt(i) == "*"){if ( data.charAt(i+1) == "/"){	return i+1;	} } i++;}
return -1;
}
//--------------------------------------------------
function hasSpecial2(len,data)
{
var i=0;
while(i < len){ if ( data.charAt(i) == "/"){ if ( data.charAt(i+1) == "*"){return i;} } i++;}
return -1;
}
//------------------------------------------------------------------------
function getSpecialEnd(len,m,newcmd)
{
i=m;
while(i < len){if ( newcmd.charAt(i) == "."){ if ( newcmd.charAt(i+1) == "/"){ return i+1; } } i++;}
return -1;
}
//--------------------------------------------------
function hasSpecial(len,newcmd)
{
//cdata strategy    /.     /*   */   ./ 
// front signal token  >< for cdata type return
var i=0;
while(i < len){if ( newcmd.charAt(i) == "/"){ if ( newcmd.charAt(i+1) == ".")	{return i;}} i++;}
return -1;
}
//------------------------------------------------------------------------
function tagBase(id,msg)
{
alert("id="+id+"  at tag base "+msg);
placeObject(id,msg);
}
//-------------------------------------------------------------------------------
function getStartItem()
{
var x = "go_url='webCmd.php';";
var y = "sendToServer('Cmd_Init');";
var z = x+y;
return z;
}
//----------------------------------------------------------------------------------------------
function showMe(id)
{
var item="sendToServer('"+id+"');";
RQitem="";
switch (id)
{

    case "PalabraReader":
	window.location.href=("Palabra");
	break;

	case "WorkPage":
	if(hasWorkPage > 0)
	{
		allowScrollUpdate		=	0;
		clearRssTimers();
		clearWorkPage();
		//clearTimeout(t);
		zeroArray( seqComponents ,seqDim1,seqDim2,seqDim3);
		return;
	}
		hasWorkPage++;
	
	break;


    case "smenu_20":
	RQitem = "sendToServer('Cmd_Init');";
	item="";
	clearBlock('block0');
	clearBlock('block2');
	clearBlock('block3');
    break;
   
    case "smenu_1":
		RQitem="sendToServer('smenu_1',' ');";
		if (hassmenu_1)
		{
			clearsmenu_1();
		    hassmenu_1	=	0;
			return;
		}
		hassmenu_1++;
		clearMusicBox();
	break;
    case "smenu_21":
		RQitem="sendToServer('smenu_1','"+id+"');";
		clearMusicBox();
	break;
	
    case "smenu_22":
		RQitem="sendToServer('smenu_1','"+id+"');";
		clearMusicBox();
	break;
		
    case "smenu_23":
		RQitem="sendToServer('smenu_1','"+id+"');";
		clearMusicBox();
	break;
	
	case "MusicSelection":
		if (hasMusicBox){
			clearMusicBox();
			return;
		} 
		hasMusicBox ++;
		clearBlock(wheresmenu_1);
		clearBlock(wheresmenu_1subs);
		break;
	
	default:
	RQitem="";
			
}
if (RQitem==""){addToQue(item); }
else { addToQue(RQitem);  if(!(id =="smenu_1"))addToQue(item); }
}
//--------------------------------------------------------------------
function clearsmenu_1()
{
	clearBlock(wheresmenu_1);
	clearBlock(wheresmenu_1subs);
	hassmenu_1 	=	0;
}
//------------------------------------------
function clearWorkPage()
{
hasWorkPage 	=	0;
clearBlock(whereWorkPage);
}
//--------------------------------------------
function clearMusicBox()
{
clearBlock(whereMusicBlock);
hasMusicBox 	=	0;
}
//--------------------------------------------
function clearBlock(id)
{
var msg		=	"";
var x 		= 	document.getElementById(id).innerHTML=msg;
}
//--------------------------------------------------------

function getMath_Random()
{
var d 		= new Date();
return  d.getTime();
}
//---------------------------------------------------------------------------


function getMusic2(str,dir)
{
var so 		= 	new SWFObject(dirVec+'playerSingle.swf', 'mymovie', '192', '67', '7', '#FFFFFF');
so.addVariable('autoPlay', 'yes');
var where	=	musicVec+dir+"/"+str;
so.addVariable('soundPath', where);
so.write('atPlay');
}
//--------------------------------------------------------------------------------
function selectCollection(id)
{
var item 	=	" sendToServer( 'MusicSelection','";
item 		=	item+id;
item 		=	item+"'); ";
addToQue(item);
}
//--------------------------------------------------------------------------------
function delayStartSequence(id,msg,delay)
{
Delay 		= 	1000 ;
var 		t;
t			=	setTimeout('startSequence(id,msg,delay)',Delay );
//clearTimeout(t);
}
//-------------------------------------------------------------------------------
// clearTimeout(t);
//  id=setInterval ( "doSomething()", 5000 );
//  clearInterval ( Id );
//--------------------------------------------------------------------------------
function startSequence(Destination,msg,delay)
{

if (seqActive 	< 0 )					{ 	seqActive 	=	0; seqError = 0; }
if(seqActive 	>= 	seqLimit)			{	seqError++; return -1; }
seqComponents[seqActive ][sDestination]		= 	Destination;
var val 								=	msg.split("#");
seqComponents[seqActive ][seqArry]		= 	val;
seqComponents[seqActive ][seqInterval]	= 	1000*delay;
seqComponents[seqActive ][seqLen]		= 	seqComponents[seqActive ][seqArry].length;
seqComponents[seqActive ][seqIndex]		= 	1;
seqComponents[seqActive ][seqType]      =    returnType(Destination);
doAction(seqActive,Destination,val[0] );
var whereto 							= 	"sequenceEventQueue("+seqActive+")";
var t									=	setTimeout(whereto,seqComponents[seqActive][seqInterval]);
seqComponents[seqActive ][seqId] 	    =   t;
// store t in an active array and clea with 'clearTimeout
//clearTimeout(t);
seqActive								++;
return 									0;
}
//--------------------------------------
function sequenceEventQueue(index)
{
var val 		= 	new Array();
val 			= 	seqComponents[index][seqArry];
dex 			= 	seqComponents[index][seqIndex];
if (!hasWorkPage ) { seqActive = -1; return; }
if(seqComponents[index][seqLen] < 2  )seqComponents[index][seqIndex] = 0; // special case for 1 element cases
var error 		= doAction(index,seqComponents[index][sDestination],val[dex]);
seqComponents[index][seqIndex]++;
if(!(seqComponents[index][seqIndex] < seqComponents[index][seqLen] )  )seqComponents[index][seqIndex] = 0;
var whereto 	= 	"sequenceEventQueue("+index+")";
var t			=	setTimeout(whereto,seqComponents[index][seqInterval]);
seqComponents[seqActive ][seqId] 	    =   t;
//clearTimeout(t);
}
//---------------------------------------------------------------------------------------------
function create3DArray(d1, d2, d3) {
  var x 	= 	new Array(d1);
  for (var i=0; i < d1; i++) { x[i] = new Array(d2);  }
  for (var i=0; i < d1; i++) { for (var j=0; j < d2; j++) { x[i][j] = new Array(d3); }}
  return x;
}
//-----------------------------------------
function zeroArray(matrix,d1,d2,d3)
{
  for (var i=0; i < d1; i++) {for (var j=0; j < d2; j++) {for (var k=0; k < d3; k++) {matrix[i][j][k] = 0;}}}
}
//------------------------------------------------------------------------------------------------------------------------
function startSequenceRSS(titleDestination,title,id,msg,delay)
{
var item 			= 	title+" News Feed";
placeObject(titleDestination,item);
startSequence(id,msg,delay);
}
//---------------------------------------------
function startSequenceBigRSS(titleDestination,title,id,msg,delay)
{
var item 			= 	title+" News Feed";
placeObject(titleDestination,item);
startSequence(id,msg,delay);
}
//---------------------------------------------------------------
function ReStartSequenceRSS(xid,xmsg,s_delay)
{
var Delay 			= 	1000 * s_delay;
var t				=	setTimeout("ReQueRss('xid','xmsg')",Delay);
}
//----------------------------------------
function ReQueRss(xid,xmsg)
{
allowScrollUpdate	=	0;
showMe("WorkPage");
placeObject('block12',"Stand-by 30 seconds ... Refresh RSS Feeds!");
var t				=	setTimeout("showMe('WorkPage')",30000);
}
//---------------------------------------------
function placeObject(id,msg)
{
if((id.length < 1)&&(msg.length < 1)) return;
var x 				= 	document.getElementById(id).innerHTML=msg;
}
//------------------------------------------------------------------
function a_processLocalQue0()
{
if	 ( hasWorkPage  >   0 ){ update_scroll_1();  update_scroll_2(); }
else { msgpos		=	0; 	msg2pos =	0; }
}
//-----------------------------------------
function a_processLocalQue1()
{
//if		(	hasWorkPage > 0)	update_scroll_1();
//else 	{
//			msgpos	=	0;
//		}
}
//-----------------------------------------
function update_scroll_1()
{
if(!(allowScrollUpdate))return;
hex				=	32;
var msgwindow	= 	50;
var msglen		=	msg1.length;
msgpos++;
if (msgpos >= msglen) msgpos=0;
var msgremainder=	msglen-msgpos;
var outmsg		=	msg1.substring(msgpos,msglen);
var frag		=	msg1.substring(0,msgremainder);
outmsg			=	outmsg+frag;
var cut 		= 	msgwindow;
if(msgwindow > msglen ) cut = msglen;
outmsg			=	outmsg.substring(0,cut);
var x			=	document.getElementById('blockY9').innerHTML=outmsg;
fireBrick 		=	"#C11B17";
x 				=	document.getElementById('blockY9').style.color=fireBrick;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

function update_scroll_2()
{
if(!(allowScrollUpdate))return;
hex				=	32;
var msgwindow	= 	50;
var msglen		=	msg2.length;
msg2pos++;
if (msg2pos >= msglen) msg2pos=0;
var msgremainder=	msglen-msg2pos;
var outmsg		=	msg2.substring(msg2pos,msglen);
var frag		= 	msg2.substring(0,msgremainder);
outmsg			=	outmsg+frag;
var cut 		= 	msgwindow;
if(msgwindow > msglen ) cut = msglen;
outmsg			=	outmsg.substring(0,cut);
var x			=	document.getElementById('blockY10').innerHTML=outmsg;
fireBrick 		=	'#C11B17';
x 				=	document.getElementById('blockY10').style.color=fireBrick;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

function addToLocalQue(q)
{
	theLocalQueStack.unshift(q);
	localqueCnt++;
}
//---------------------------------------------------------------------------
function processLocalQue()
{
	if(localqueCnt > 0)
	{
		localqueCnt--;
		eval(thelocalQueStack.shift());
	}
}
//--------------------------------------------------------------------
function startSequenceScroll(tid,title,destination,xmsg,s_delay)
{
var item 				= 	title+" News Feed";
activeScrolls			++;
scrollType 				= 	destination; 
allowScrollUpdate		= 	0;
date 					=	formulateDate();
msg2					=	msg1;
msg1					=	":: Date line :"+date+" ..."+xmsg;
msgpos					=	0;
msg2pos					=	0;
var wait 				=	1000 * s_delay;
if(	activeScrolls	==	1)  { wait	= 	500; }
var t					=	setTimeout("newRssScrollFeed()",wait);
allowScrollUpdate		=	1;
}
//---------------------------------------
function newRssScrollFeed()
{
addToQue( sendToServer('Scroll_1') );
}
//-------------------------------------------------------------------------------------
function doAction(index,Destination,Data)
{
placeObject(Destination,Data);
return 0;
}
//-------------------------------------------------------------------------------------------
function returnType(Destination)
{
return 0;
}
//---------------------------------------
function formulateDate()
{
var d			=	new Date();
var weekday		=	new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
var monthname	=	new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var outmsg 		=  	weekday[d.getDay()] + " ";
outmsg 			=	outmsg+ d.getDate() + ". ";
outmsg 			=	outmsg+ monthname[d.getMonth()] + " ";
outmsg 			=	outmsg+ d.getFullYear();
return outmsg;
}
//--------------------------------------------------------------
function convertMinutes(m)
{
var o			=	new Array(3);
var mr			= 	(m%60);
var h			= 	(m-mr)/60;
var hr 			= 	(h%24);
var d			= 	(h-hr)/24;
o[0]			=	d;
o[1]			=	hr;
mr 				= 	parseInt(mr*10);
mr 				= 	mr/10;
o[2]			=	mr;
return o;
}
//--------------------------------------------------------------
function clearRssTimers()
{
var i		=	0;
while(i < seqActive)
{
	var id	=	seqComponents[i][seqId];
	clearTimeout(id);
	i++;
}
}
//-----------------------------

