var clicked = false;
var clickedBullet = false;
var slider1;
var slider2;

//var version = 99;
//
//if (navigator.appVersion.indexOf("MSIE")!=-1)
//{
//	temp=navigator.appVersion.split("MSIE")
//	version=parseFloat(temp[1])
//}

//*********************************************************
//app utility functions
//*********************************************************
function changePage(id, page, oldPage, newPicture, newTransition)
{
	if(!clicked)
	{
		clicked = true
		
		changeSessionPage(page);
		
		sleep(1000);
		
		var currentSrc = $('pic').src;
		var oldPicture = currentSrc.substring(currentSrc.lastIndexOf('/') + 1);
		
		setTimeout('rotatePics(\'pic\',\'./WebContent/images/'+ newPicture +'\',\''+ newTransition +'\' );', 100);
		setTimeout('retrieveBullets(\''+ page + '\');', 0);
		setTimeout('changeBullet(null);', 0);
		setTimeout('enableClick();', 1000);		
					
	}
	
	
}

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}



function rotateLayer(layer, newValue, q)
{	
	$(layer).style.display = "none";
	$(layer).update(newValue);
	Effect.BlindDown($(layer), {afterFinish: toggleSliders, queue: {position: 'end', scope: q, limit: 3}});
}

function toggleSliders(firstTime)
{
	if( firstTime == true )
	{
		// vertical slider control
		slider1 = new Control.Slider('handle1', 'track1', {
					axis: 'vertical',
					onSlide: function(v) { scrollVertical(v, $('measure'), slider1);  },
					onChange: function(v) { scrollVertical(v, $('measure'), slider1); }
				});
					
		// horizontal slider control
		slider2 = new Control.Slider('handle2', 'track2', {
					onSlide: function(v) { scrollHorizontal(v, $('measure'), slider2);  },
					onChange: function(v) { scrollHorizontal(v, $('measure'), slider2); }
				});
	}
	else
	{
		slider1.setValue(0);
		slider2.setValue(0);
	}
							
	// disable vertical scrolling if text doesn't overflow the div
	if ($('measure').scrollHeight <= $('content').offsetHeight) {
		slider1.setDisabled();
		//Effect.BlindUp($('track1'));
		$('track1').hide();
	}
	else
	{
		slider1.setEnabled();
		Effect.BlindDown($('track1'));
		//$('track1').show();
	}
		
	// disable horizontal scrolling if text doesn't overflow the div
	if ($('measure').scrollWidth <= $('content').offsetWidth) {
		slider2.setDisabled();
		//Effect.BlindUp($('track2'));
		$('track2').hide();
	}
	else
	{
		slider2.setEnabled();
		Effect.BlindDown($('track2'));
		//$('track2').show();
	}	
}

function changeBullet(newBullet)
{
	if(!clickedBullet)
	{
		clickedBullet = true;
		setTimeout('retrieveContent(\''+ newBullet + '\');', 0);
		setTimeout('enableClick();', 1000);			
	}
}

// scroll the element vertically based on its width and the slider maximum value
function scrollVertical(value, element, slider) {
	element.scrollTop = Math.round(value/slider.maximum*(element.scrollHeight-element.offsetHeight));
}
	
// scroll the element horizontally based on its width and the slider maximum value
function scrollHorizontal(value, element, slider) {
	element.scrollLeft = Math.round(value/slider.maximum*(element.scrollWidth-element.offsetWidth));
}

function rotatePics(id, src, transSrc)
{
	Effect.Fade($(id), {queue: {scope: 'changepage', limit:20}});
	
	setTimeout('loadNextPic(\''+id+'\',\''+src+'\');', 1000);
}

function loadNextPic(id, src)
{
	$(id).src = src;
	
	setTimeout('showNextPic(\''+id+'\');', 0);
}

function showNextPic(id)
{
	Effect.Appear($(id), {queue: {scope: 'changepage', limit:20}});
}

function highlightLink(id, effectId, src)
{
	$(id).src = src;
	Effect.Puff($(effectId), {afterFinish: hllFinish(effectId), queue: {scope: 'hi', limit:1}, duration: 0.5});	
}

function hllFinish(id)
{
	Effect.Appear($(id), {duration: 0})
}

function unHighlightLink(id, src)
{
	$(id).src = src;
}

function openNewWindow(link) 
{
  popupWin = window.open(link, 'popup', 'dependent,width=800,height=690,left=100,top=5,scrollbars=yes');
}

function openNewLink(link) 
{
  popupWin = window.open(link, 'external');
}

//*********************************************************
//data manipulation functions
//*********************************************************
function trim(str)
{ 
	return str.replace(/^\s+/,'').replace(/\s+$/,'');
}

function enableClick()
{
	clicked=false;
	clickedBullet=false;
}

//*********************************************************
//ajax functions
//*********************************************************

function retrieveBullets(page)
{
	 new Ajax.Request
	 ('./WebContent/actions/retrieveBullets.php',   
	 {     method:'get'
	 ,     parameters: {
	 		  page: page ,
		      differentiator: Math.floor(Math.random()*50000)
		   }	 
	 ,     onSuccess: function(transport)
	                  {
						 new Ajax.Request
						 ('./WebContent/actions/retrieveBullets-php.xml',   
						 {     method:'get'
						 ,     parameters: {
							      differentiator: Math.floor(Math.random()*50000)
							   }
						 
						 ,     onSuccess: function(transport)
						                  {
					                         var response = transport.responseXML;
					                         var nodes = response.getElementsByTagName('bullet');

						 	 				 if(nodes.length > 0)
					 	 				 	 { 
					 	 				 	 	var returnValue = "";
																		 	 				 	 	
					 	 				 	 	for(var i=1; i<nodes.length; i++)
					 	 				 	 	{
					 	 				 	 		if( i == 0 )
					 	 				 	 		{
					 	 				 	 			returnValue += "	<img class=\"ie-fix-opacity\" id=\"ball"+ i +"\" width=\"350\" height=\"35\" src=\"./WebContent/images/iball.php?image=./blueball.png&width=350&height=35&highlight=true&text="+nodes.item(i).firstChild.data+"&ie7=default-trans.png\" style=\"position: absolute; left: 15px; top: "+ (((i)*40) + 20) +"px; z-index=1; cursor: pointer;\" />\n";
					 	 				 	 		}
					 	 				 	 		else
													{
														returnValue += "	<img class=\"ie-fix-opacity\" id=\"effectBall"+ i + "\" width=\"350\" height=\"35\" src=\"./WebContent/images/iball.php?image=./grayball.png&width=350&height=35&text="+nodes.item(i).firstChild.data+"&ie7=default-trans.png\" style=\"position: absolute; left: 15px; top: "+ (((i)*40) + 20) +"px; z-index=-1; cursor: pointer;\" />\n";
														returnValue += "	<img class=\"ie-fix-opacity\" id=\"ball"+ i +"\" width=\"350\" height=\"35\" src=\"./WebContent/images/iball.php?image=./grayball.png&width=350&height=35&text="+nodes.item(i).firstChild.data+"&ie7=default-trans.png\" style=\"position: absolute; left: 15px; top: "+ (((i)*40) + 20) +"px; z-index=1; cursor: pointer;\" onmouseover=\"setTimeout(&quot;highlightLink(\'ball" + i + "\', \'effectBall" +i+ "\', \'./WebContent/images/iball.php?image=./blueball.png&width=350&height=35&highlight=true&text="+nodes.item(i).firstChild.data+"&ie7=default-trans.png\' );&quot;, 0);\" onmouseout=\"setTimeout(&quot;unHighlightLink(\'ball" + i + "\', \'./WebContent/images/iball.php?image=./grayball.png&width=350&height=35&text="+nodes.item(i).firstChild.data+"&ie7=default-trans.png\' );&quot;, 0);\" onclick=\"changeBullet('"+nodes.item(i).firstChild.data+"');\" />\n";
													}						 	 				 	 						 	 				 	 	
					 	 				 	 	}
					 	 				 	 	
					 	 				 	 	//alert($('ball0').src);					 	 				 	 							 	 				 	 	 
					 	 				 	 	
												//$('bullets').update(returnValue);
												//Effect.BlindUp($('bullets'), {queue: {scope: 'changepage', limit:20} });				
												rotateLayer('bullets', returnValue, 'changepage');		 
											 }
						                  }
						 ,     onFailure: function()
										  {
										 		 alert("Problem encountered while running requested action!");
										  }
						 });
	                  }
	 ,     onFailure: function()
					  {
					 		 alert("Problem encountered while running requested action!");
					  }
	 });
}

function changeSessionPage(newPage)
{
		
	var suc = false;
	
	 new Ajax.Request
	 ('./WebContent/actions/changeSessionPage.php',   
	 {     method:'get'
	 ,     parameters: {
	 		  page: newPage ,
		      differentiator: Math.floor(Math.random()*50000)
		   }	 
	 ,     onSuccess: function(transport)
	                  {
						 new Ajax.Request
						 ('./WebContent/actions/buildNavigation-php.xml',   
						 {     method:'get'
						 ,     parameters: {
							      differentiator: Math.floor(Math.random()*50000)
							   }
						 
						 ,     onSuccess: function(transport)
						                  {
					                         var response = transport.responseXML;
					                         var nodes = response.getElementsByTagName('navigation');

						 	 				 if(nodes.length > 0)
					 	 				 	 { 
					 	 				 	 	var returnValue = nodes.item(0).firstChild.data;
		 	 				 	 							 	 				 	 	 					 	 				 	 	
												$('navigation').update(returnValue);	
												suc = true;
											 }
						                  }
						 ,     onFailure: function()
										  {
										 		 alert("Problem encountered while running requested action!");
										  }
						 });
	                  }
	 ,     onFailure: function()
					  {
					 		 alert("Problem encountered while running requested action!");
					  } 
	 });
	 
	 return suc;
}

function retrieveContent(bullet)
{
	 new Ajax.Request
	 ('./WebContent/actions/changeBullet.php',   
	 {     method:'get'
	 ,     parameters: {
	 		  bullet: bullet ,
		      differentiator: Math.floor(Math.random()*50000)
		   }	 
	 ,     onSuccess: function(transport)
	                  {
						 new Ajax.Request
						 ('./WebContent/actions/changeBullet-php.xml',   
						 {     method:'get'
						 ,     parameters: {
							      differentiator: Math.floor(Math.random()*50000)
							   }
						 
						 ,     onSuccess: function(transport)
						                  {
						                     var response = transport.responseXML;
					                         var nodes = response.getElementsByTagName('bullet');

						 	 				 if(nodes.length > 0)
					 	 				 	 { 
					 	 				 	 	var returnValue = "";
					 	 				 	 	
					 	 				 	 	for(var i=0; i<nodes.length; i++)
					 	 				 	 	{
					 	 				 	 		if( ((bullet == "null" || bullet == null) && i==0) ||  bullet == nodes.item(i).firstChild.data)
					 	 				 	 		{
					 	 				 	 			returnValue += "	<img class=\"ie-fix-opacity\" id=\"ball"+ i + "\" width=\"350\" height=\"35\" src=\"./WebContent/images/iball.php?image=./blueball.png&highlight=true&width=350&height=35&text="+nodes.item(i).firstChild.data+"&ie7=default-trans.png\" style=\"position: absolute; left: 15px; top: "+ (((i)*40) + 20) +"px; z-index=-1; cursor: pointer;\" />\n";
					 	 				 	 		}
					 	 				 	 		else
					 	 				 	 		{
														returnValue += "	<img class=\"ie-fix-opacity\" id=\"effectBall"+ i + "\" width=\"350\" height=\"35\" src=\"./WebContent/images/iball.php?image=./grayball.png&width=350&height=35&text="+nodes.item(i).firstChild.data+"&ie7=default-trans.png\" style=\"position: absolute; left: 15px; top: "+ (((i)*40) + 20) +"px; z-index=-1; cursor: pointer;\" />\n";
														returnValue += "	<img class=\"ie-fix-opacity\" id=\"ball"+ i +"\" width=\"350\" height=\"35\" src=\"./WebContent/images/iball.php?image=./grayball.png&width=350&height=35&text="+nodes.item(i).firstChild.data+"&ie7=default-trans.png\" style=\"position: absolute; left: 15px; top: "+ (((i)*40) + 20) +"px; z-index=1; cursor: pointer;\" onmouseover=\"setTimeout(&quot;highlightLink(\'ball" + i + "\', \'effectBall" +i+ "\', \'./WebContent/images/iball.php?image=./blueball.png&width=350&height=35&highlight=true&text="+nodes.item(i).firstChild.data+"&ie7=default-trans.png\' );&quot;, 0);\" onmouseout=\"setTimeout(&quot;unHighlightLink(\'ball" + i + "\', \'./WebContent/images/iball.php?image=./grayball.png&width=350&height=35&text="+nodes.item(i).firstChild.data+"&ie7=default-trans.png\' );&quot;, 0);\" onclick=\"changeBullet('"+nodes.item(i).firstChild.data+"');\" />\n";
					 	 				 	 		}						 	 				 	 						 	 				 	 	
					 	 				 	 	}					 	 				 	 							 	 				 	 	 					 	 				 	 						 	 				 	 	
					 	 				 	 	
												$('bullets').update(returnValue);
//												Effect.DropOut($('bullets'), {afterFinish: rotateLayer('bullets', returnValue, 'changepage'), queue: {scope: 'changepage', limit:20} });						 
											 }
											 
											 nodes = response.getElementsByTagName('content');
											 											 
											 if(nodes.length > 0)
											 {
											 	var returnValue = "";
											 	
											 	var currentPageNode = response.getElementsByTagName('currentPage');
											 	var currentBulletNode = response.getElementsByTagName('currentBullet');
											 	
											 	returnValue += "<div id=\"measure\" style=\"height: 100%; overflow: hidden;\"><div id=\"title\">" + currentPageNode.item(0).firstChild.data.sub("\\[eol\\]", " ") + " : " + currentBulletNode.item(0).firstChild.data.sub("\\[eol\\]", " ") + "</div>";
											 	returnValue += nodes.item(0).firstChild.data;											 										 	
											 	returnValue += "</div>";															 						 	
											 	returnValue = returnValue.replace("&amp;", "&");
						 						returnValue = returnValue.replace("&apos;", "'");
										 		returnValue = returnValue.replace("&quot;", "\"");
										 		returnValue = returnValue.replace("&lt;", "<");
						 						returnValue = returnValue.replace("&gt;", ">");
						 																 	
											 	//$('content').update(returnValue);
											 	Effect.BlindUp($('content'), {afterFinish: rotateLayer('content', returnValue, 'changebullet'), queue: {position: front, scope: 'changebullet', limit:3} });						 	
																																	 	
											 }											 
						                  }
						 ,     onFailure: function()
										  {
										 		 alert("Problem encountered while running requested action!");
										  }
						 });
	                  }
	 ,     onFailure: function()
					  {
					 		 alert("Problem encountered while running requested action!");
					  }
	 });
}

