
// parse URL for _GET values
var iPage = 0;
var iSort = 0;
var iSet = 1;
var indexLinks;

var aTmpValues = self.location.href.split('?');
if (aTmpValues.length > 1)
{
    var strGetValues = aTmpValues[1];
    var aGetValues = strGetValues.split('&');
    for (i=0; i < aGetValues.length; ++i)
    {
    	var aGet = aGetValues[i].split('=');    	
    	if (aGet[0] == 'Page') iPage = aGet[1];    		
    	if (aGet[0] == 'Sort') iSort = aGet[1];    		
    	if (aGet[0] == 'Set') iSet = aGet[1];   	
    }
}

// Video page functions (MirrorOffset, JumpToTable, SubImageHover) //
function MirrorOffset(toMirror,divPercent)
{	
	var divScrollHeight = document.getElementById(toMirror).scrollHeight;
	var divHeight = parseInt(document.getElementById(toMirror).offsetHeight);
	var divTest = divScrollHeight - divHeight;
	var divScrollTop = divTest * divPercent;	
	document.getElementById(toMirror).scrollTop = divScrollTop;
}


function JumpToTable()
{	
	var tableName = 'game_table' + this.id;
	document.getElementById(tableName).scrollIntoView(true);	
	if (ie)
		document.getElementById(tableName).parentNode.scrollTop -= 27;
	if (safari)
		document.getElementById(tableName).parentNode.scrollTop -= 17;
		
	var container = document.getElementById(tableName).parentNode;
	var scrollValue = (container.scrollTop / (container.scrollHeight - parseInt(container.offsetHeight)));	
	WriteCookie('divPercent',scrollValue);
	
	FadeAttributeCol(tableName,'backgroundColor',arrHighlight[0],arrHighlight[1],arrHighlight[2],255,255,255,'#FFF', 15, 30);
}


function SubImgHover()
{
	if (ie) var img = document.getElementById(this.id).firstChild.id;
	else var img = document.getElementById(this.id).childNodes[1].id;
	var d = document.getElementById(img);
	var strNormal = d.src;
	var iStringLen = strNormal.length;
	var strExt = strNormal.substring((iStringLen - 3), iStringLen);
	var hoverCheck = (strNormal.substring((iStringLen - 9), (iStringLen - 4)) == 'hover');
	var strHover = strNormal;	
	if (hoverCheck)
		var strNormal = strNormal.substring(0,(iStringLen - 9)) + "." + strExt;		
	else
		var strHover = strNormal.substring(0,(iStringLen - 4)) + "hover." + strExt;
	d.src = strHover;
		document.getElementById(this.id).onmouseout = function () {d.src = strNormal;};
}

function SubSpriteHover()
{
	if (ie) var img = document.getElementById(this.id).firstChild.id;
	else var img = document.getElementById(this.id).childNodes[1].id;
	var d = document.getElementById(img);
	var strNormal = d.className;
	var iStringLen = strNormal.length;
	var strExt = strNormal.substring((iStringLen - 3), iStringLen);
	var hoverCheck = (strNormal.substring((iStringLen - 9), (iStringLen - 4)) == 'hover');
	var strHover = strNormal;	
	if (hoverCheck)
		var strNormal = strNormal.substring(0,(iStringLen - 5));
	else
		var strHover = strNormal + "hover";
	d.className = strHover;
		document.getElementById(this.id).onmouseout = function () {d.className = strNormal;};
}


// << and >> links with wrap-around
function NextPrevLinks()
{
	iSet = 1;
	var iPrev = iNext = iPage;
	var j,k;
			
	for (i=0; i < indexLinks.length; ++i)
	{
		if (indexLinks[i].id == iPage)
		{
			var j = i-1;
			var k = i+1;				
			break;
		}
	}
	if (j < 0 || iPage <= 0) j = (indexLinks.length - 1);
	if (k >= indexLinks.length || iPage <= 0) k = 0;
	
	iPrev = indexLinks[j];
	iNext = indexLinks[k];

	var nextPrevLinks = document.getElementById("game_index_header").getElementsByTagName("A");
	for (i=0; i < nextPrevLinks.length; ++i)
	{			
		nextPrevLinks[i].onclick = function()
		{	
			if (this.className == 'prev')
			{
				var getGallery = new ajaxObject('get_gallery.php', processGallery);
					getGallery.update('game='+parseInt(iPrev.id)+'&sort='+iSort+'?Set='+iSet+'&js=1');

				SelectNewRow(iPage,iPrev);
				iPage = iPrev.id;
				document.getElementById(iPage).scrollIntoView(false);
				
			} else if (this.className == 'next')
			{
				var getGallery = new ajaxObject('get_gallery.php', processGallery);
					getGallery.update('game='+parseInt(iNext.id)+'&sort='+iSort+'?Set='+iSet+'&js=1');
					
				SelectNewRow(iPage,iNext);
				iPage = iNext.id;
				document.getElementById(iPage).scrollIntoView(false);
			}
			return false;
		};
	}	
}

// highlight newly selected row
function SelectNewRow(curID,newID)
{
	if (document.getElementById(curID))
	{
		// remove class from old selected item
		var oldItem = document.getElementById(curID);
		var basicClass = oldItem.className.split(' current_item')[0];
		oldItem.className = basicClass;			
	}
	
	if (newID)
	{
		// make this the new selected item
		newID.className = newID.className + ' current_item';
		newID.onmouseout = function() { return false; };
	}

}


// Events for AJAX loaded index list
function IndexEvents()
{
	for (i = 0; i < indexLinks.length; ++i)
	{
		if (indexLinks[i].className != 'subset')
		{
			if (indexLinks[i].className != 'divider')
			{				
				indexLinks[i].onclick = function()
				{
					// highlight newly selected row
					SelectNewRow(iPage,this);
					iPage = this.id;
					iSet = 1;
					var getGallery = new ajaxObject('get_gallery.php', processGallery);
						getGallery.update('game='+parseInt(this.id)+'&sort='+iSort+'&js=1');
					return false;
				};
				if (document.getElementById('video_thumbnails'))	// if its the 'videos' page
					indexLinks[i].onclick = JumpToTable;
				
				
			} else {	// divider
				indexLinks[i].style.cursor = 'pointer';
				indexLinks[i].onclick = function() { FilterTypes(this.id); };
				
				/*	// this lists the number of games for each platform
				var subset = indexLinks[i].nextSibling;
				if (indexLinks[i].nextSibling.nodeType == 3) var subset = indexLinks[i].nextSibling.nextSibling;
				var divisionLength = subset.getElementsByTagName('LI').length;
				var oldInnerHTML = indexLinks[i].innerHTML;
				indexLinks[i].innerHTML = oldInnerHTML + ' <span>(' + divisionLength + ')</span>'
				*/
			}
		}
	}
}


// Events for AJAX loaded gallery
function LoadedGalleryEvents()
{
	NextPrevLinks();
    	
	// page sets
	var pageLinks = document.getElementById("game_detail_header").getElementsByTagName("A");
	if (pageLinks.length > 0)
	{
		for (i=0; i<pageLinks.length; ++i)
		{
			if (pageLinks[i].id != 'title')
			{
				pageLinks[i].onmousedown = function()
				{
					if (this.className == 'set_default')
					{
						iSet = this.rev;
						var getGallery = new ajaxObject('get_gallery.php', processGallery);
							getGallery.update('game='+parseInt(iPage)+'&sort='+iSort+'&set='+iSet+'&js=1');	
					}
					return false;
				}
			}
		}	
	}
	
	// game footer links (icons)
	var footerLinks = document.getElementById("game_footer").getElementsByTagName("A");
		for (i=0; i<footerLinks.length; ++i)
			footerLinks[i].onmouseover = SubSpriteHover;
	
	// lightbox thumbnails
	var lightBoxImgs = document.getElementById("grid").getElementsByTagName("A");			
	for (i=0; i<lightBoxImgs.length; ++i)
	{
		lightBoxImgs[i].onmouseover = function() { this.parentNode.style.backgroundColor = '#DAD9C7'; }
		lightBoxImgs[i].onmouseout = function()	{ this.parentNode.style.backgroundColor = 'transparent'; }
		lightBoxImgs[i].onclick = function()
		{
			var el_id = this.id;
			var el = document.getElementById(el_id);
			startLytebox(el_id, el.href, el.title, el.rel);
			
			return false;
		};
	}
}


// AJAX process functions
function processIndex(responseText, responseStatus) 
{
  if (responseStatus==200) {
	if (document.getElementById('ajax_master'))
	{
		document.getElementById('ajax_master').innerHTML=responseText ;
		IndexEvents();
		NextPrevLinks();
	}
  } else {
    alert(responseStatus + ' -- Error Processing Request');
  }
}


function processGallery(responseText, responseStatus) 
{
  if (responseStatus==200) {
	  if (document.getElementById('ajax_detail'))
	  {
		document.getElementById('ajax_detail').innerHTML=responseText;
		if (parseInt(iPage) > 0)
			LoadedGalleryEvents();
	  }
  } else {
    alert(responseStatus + ' -- Error Processing Request');
  }
}


// Event Handlers
function GalleryEvents()
{
	var videos = 0;
	var gallery = 0;
	if (document.getElementById('video_thumbnails')) videos = 1;
	if (videos == 0) gallery = 1;
	indexLinks = document.getElementById('toc').getElementsByTagName('LI');

	if (gallery)
	{
		var getIndex = new ajaxObject('gallery_index.php');
			getIndex.update('game='+parseInt(iPage)+'&sort='+iSort+'&js=1');
			getIndex.callback = function(responseText, responseStatus) {
				processIndex(responseText, responseStatus);
			}
					
		var getGallery = new ajaxObject('get_gallery.php', processGallery);
			getGallery.update('game='+parseInt(iPage)+'&sort='+iSort+'&set='+iSet+'&js=1');
		
		document.getElementById('sort').onchange = function()
		{
			var getIndex = new ajaxObject('gallery_index.php');
				getIndex.update('game='+parseInt(iPage)+'&sort='+this.value+'&js=1');
				getIndex.callback = function(responseText, responseStatus)
				{
					processIndex(responseText, responseStatus);
					if (iPage > 0) document.getElementById(iPage).scrollIntoView(false);	
				}
				iSort = this.value;
		};
	}
	
	if (videos)
	{
		document.getElementById('sort').onchange = function() { window.location='?Sort='+this.value; };
		document.getElementById('roll_list').onscroll = function()
		{
			var divPercent = this.scrollTop / (this.scrollHeight - parseInt(this.offsetHeight));
			if (this.id == 'roll_list')
				 MirrorOffset('video_thumbnails',divPercent);
			else MirrorOffset('roll_list',divPercent);
		};	
				
		var thumbnailLinks = document.getElementById('video_thumbnails').getElementsByTagName('A');
		for (var t=0; t<thumbnailLinks.length; ++t)
			thumbnailLinks[t].onmouseover = SubSpriteHover;
		
		IndexEvents();
	}
	document.getElementById('sort_form').style.display = 'block';	
	if (ie7 || ie6) document.styleSheets[0].addRule(".subset ul li:first-child", "margin-top: -7px");	
}

AddLoadEvent(GalleryEvents);
