//*******************************************************************************************************
//-------------------------------------------------------------------------------------------------------
//	Gallery Widget DHTML
//-------------------------------------------------------------------------------------------------------
//*******************************************************************************************************

//-------------------------------------------------------------------------------------------------------
//	Init parameters
//-------------------------------------------------------------------------------------------------------
	slideShowOn = false;
	currWidth	= 0;
	currHeight	= 0;
	prevWidth	= 0;
	prevHeight	= 0;

	slide_image_width	= 0;
	slide_image_height	= 0;

	stuff_x	= 0;
	stuff_y	= 0;

	function closeAndRefresh()
	{
		window.location.reload();
	}

//-------------------------------------------------------------------------------------------------------
//	Turn the slideshow widget on or off
//-------------------------------------------------------------------------------------------------------
//	function toggleSlideshow( slideshow_id, start_slide, start_width )
	function toggleSlideshow( slideshow_id, start_slide )
	{
		if (slideShowOn == false)
		{
			current_slide=(start_slide-1);
			nextSlide( slideshow_id );
			
			scroll(0,0);
			document.getElementById('lightbox').style.display = 'block';
			document.getElementById('dim').style.display = 'block';
			document.getElementById('dim').style.zIndex		= 900;
			document.body.style.overflow = 'hidden';
			slideShowOn	= true;
		}
		
		else
		{
			document.getElementById('dim').style.display = 'none';
			document.getElementById('lightbox').style.display = 'none';
			document.body.style.overflow = 'auto';
			
			resetMedia( slideshow_id );
			swapImg( slideshow_id, '/gallery/images/blank.gif' );
			setBoxSize( slideshow_id, 0, 0 );
			prevWidth  = 0;
			prevHeight = 0;

			slideShowOn = false;
		}
	}

/*
//-------------------------------------------------------------------------------------------------------
//	Turn the slideshow widget on or off
//-------------------------------------------------------------------------------------------------------
	function ORIGINAL_toggleSlideshow( slideshow_id, start_slide, start_width )
	{
		if (slideShowOn == false)
		{
			current_slide=(start_slide-1);
			nextSlide( slideshow_id );
			
			scroll(0,0);
			document.getElementById('lightbox').style.display = 'block';
			document.getElementById('dim').style.display = 'block';
			document.getElementById('dim').style.zIndex		= 900;
			document.body.style.overflow = 'hidden';
//			document.galleryform.style.visibility = 'hidden';
			slideShowOn = true;
		}
		
		else
		{
			document.getElementById('dim').style.display = 'none';
			document.getElementById('lightbox').style.display = 'none';
			document.body.style.overflow = 'auto';
//			document.galleryform.style.visibility = 'visible';
			
			resetMedia( slideshow_id );
			swapImg( slideshow_id, '/gallery/images/blank.gif' );
			setBoxSize( slideshow_id, 0, 0 );
			prevWidth  = 0;
			prevHeight = 0;

			slideShowOn = false;
		}
	}
*/

//-------------------------------------------------------------------------------------------------------
//	previousSlide
//-------------------------------------------------------------------------------------------------------
	function previousSlide( slideshow_id )
	{
		if( !document.getElementById( slideshow_id ))
		{
			return;
		}

		current_slide--;
		
		if( current_slide < 1 )
		{
			if( !loop )
			{
				current_slide	= 1;
				return;
			}
			
			current_slide = slide_count;
		}

		//	Change the slide
		changeSlide( slideshow_id, current_slide );
	}

//-------------------------------------------------------------------------------------------------------
//	nextSlide
//-------------------------------------------------------------------------------------------------------
	function nextSlide( slideshow_id )
	{
		if( !document.getElementById( slideshow_id ))
		{
			return;
		}
		
		current_slide++;
		
		if( current_slide > slide_count )
		{
			if( !loop )
			{
				current_slide	= slide_count;
				return;
			}
			
			current_slide = 1;
		}

		changeSlide( slideshow_id, current_slide );
	}

//-------------------------------------------------------------------------------------------------------
//	showSlide
//-------------------------------------------------------------------------------------------------------
	function showSlide( slideshow_id, slide_image_src )
	{
		slideshowObj					= document.getElementById( slideshow_id );
		slideshowObj.src				= 'slide_image_src';
		slideshowObj.style.visibility	= "visible";
	}

//-------------------------------------------------------------------------------------------------------
//	showSlide
//-------------------------------------------------------------------------------------------------------
	var slide_pending = false;
	
	function changeSlide( slideshow_id, current_slide )
	{
		if (slide_pending)
		{
			return;
		}
		
		timeout_offset = 0;
		
		//	Get slide properties
		slide				= slides[ current_slide ];
		slide_image_src		= slide['src'];
		slide_image_width	= slide['width'];
		slide_image_height	= slide['height'];
		slide_title		    = slide['title'];
		currWidth			= slide_image_width;
		currHeight			= slide_image_height;

		//	Get slide object
		slideshowObj	= document.getElementById( slideshow_id );
		
		document.getElementById('slide-title').innerHTML  = '';

		//	Reset the media item if it exists
		resetMedia( slideshow_id );
		
		//	Set the waiting graphic
		document.getElementById('lightbox-frame').style.backgroundImage = 'url(' + loading_image_url + ')';
		
		//	Swap the image
		FadeOutImage(slideshow_id, timeout_offset);
		
		//	Change the slide size
		changeSlideSize( slideshow_id, slide_image_width, slide_image_height, timeout_offset );

		//	Set the slide to change
		slide_pending	= true;
		delay_func		= "setOpacity('" + slideshow_id + "',10);changeMediaItem('" + slideshow_id + "','" + slide_image_src + "','" + slide_image_width + "','" + slide_image_height + "','" + slide_title + "');";
		slideshow_delay	= setTimeout( delay_func, timeout_offset );
		slideshow_delay	= setTimeout( "slide_pending = false;", 600 );

		//	Update counter
		slide_counter_content		= current_slide + " of " + slide_count;
		slideCounterObj				= document.getElementById( 'slidecounter' );
		slideCounterObj.innerHTML	= slide_counter_content;
	}
	
//-------------------------------------------------------------------------------------------------------
//	changeMediaItem
//-------------------------------------------------------------------------------------------------------
	function changeMediaItem( slideshow_id, slide_image_src, slide_image_width, slide_image_height, slide_title)
	{
		//	Load the new media item
		loadURL = slide_image_src;
		loadDivContents( loadURL, slideshow_id );

		//	Set the function to change the slide and title
		delay_func	= "TestIt( '"+slideshow_id+"','"+slide_title+"' );";
		
		//	Interval the function because its container may not be loaded right away
		testit_delay = setInterval( delay_func, 20 );
	
	}

	function TestIt( slideshow_id, slide_title )
	{
		//	Get the image container
		image_content	= document.getElementById( slideshow_id ).childNodes;

		//	Does it exist?
		if( !image_content.length )
		{
			//	No, nothing to do
			return;
		}
		//alert(image_content.toString);

		//	Image container does exist, stop checking
		clearInterval( testit_delay );

		//	Show the image
		document.getElementById( slideshow_id ).style.visibility	= 'visible';

		//	Hide the loader
		document.getElementById('lightbox-frame').style.backgroundImage		= 'none';

		//	Swap the title
		document.getElementById('slide-title').innerHTML			= slide_title.replace('&apos;',"'");

		//	Resize
		if( autoscale && image_content[0].style )
		{
			image_content[0].style.width	= stuff_x + "px";
			image_content[0].style.height	= stuff_y + "px";
		}
	}

//-------------------------------------------------------------------------------------------------------
//	resetMedia
//-------------------------------------------------------------------------------------------------------
	function resetMedia( slideshow_id )
	{
		if (!slideShowOn)
		{
			return;
		}
		
		Safari = (navigator.userAgent.indexOf("Safari") > -1) ? 1 : 0;
		
		document.getElementById( slideshow_id ).style.visibility = 'hidden';
		
		if (Safari)
		{
			if (document.getElementById('mediaobject'))
			{
				document.mediaobject.Stop();
			}
		}
		
		document.getElementById( slideshow_id ).innerHTML = '';	
	}

//-------------------------------------------------------------------------------------------------------
//	FadeOutImage
//-------------------------------------------------------------------------------------------------------
	function FadeOutImage(slideshow_id, timeout_offset)
	{
		//	This sucks
		return;

		//	100%
		max_filter = 1;

		//	Fade out
		setTimeout( "setOpacity('" + slideshow_id + "',10);",	10+timeout_offset );
		setTimeout( "setOpacity('" + slideshow_id + "',9);",	20+timeout_offset );
		setTimeout( "setOpacity('" + slideshow_id + "',8);",	30+timeout_offset );
		setTimeout( "setOpacity('" + slideshow_id + "',7);",	40+timeout_offset );
		setTimeout( "setOpacity('" + slideshow_id + "',6);",	50+timeout_offset );
		setTimeout( "setOpacity('" + slideshow_id + "',5);",	60+timeout_offset );
		setTimeout( "setOpacity('" + slideshow_id + "',4);",	70+timeout_offset );
		setTimeout( "setOpacity('" + slideshow_id + "',3);",	80+timeout_offset );
		setTimeout( "setOpacity('" + slideshow_id + "',2);",	90+timeout_offset );
		setTimeout( "setOpacity('" + slideshow_id + "',1);",	100+timeout_offset );
		
		//	Fadeout done, wait for the new one
		setTimeout( "document.getElementById( '" + slideshow_id + "' ).innerHTML = '';",	110+timeout_offset );
		setTimeout( "setOpacity('" + slideshow_id + "',10);",	150+timeout_offset );
	}

//-------------------------------------------------------------------------------------------------------
//	setOpacity
//-------------------------------------------------------------------------------------------------------
	function setOpacity( slideshow_id, opacity )
	{
		document.getElementById( slideshow_id ).style.opacity = opacity/10;
		document.getElementById( slideshow_id ).style.filter = 'alpha(opacity=' +  (opacity*10) + ')';	
	}

//-------------------------------------------------------------------------------------------------------
//	size functions
//-------------------------------------------------------------------------------------------------------
	function setBoxSize( slideshow_id, newWidth, newHeight )
	{
		document.getElementById( slideshow_id ).style.width = newWidth+'px';
		document.getElementById( slideshow_id ).style.height = newHeight+'px';
	}

//-------------------------------------------------------------------------------------------------------
//	changeSlideSize
//-------------------------------------------------------------------------------------------------------
	function changeSlideSize( slideshow_id, slide_image_width,slide_image_height,timeout_offset )
	{
		//----------
		//	Resize
		//----------
		// Resizing large images

		if( autoscale )
		{
			var pagesize = TB_getPageSize();
			var x = pagesize[0] - 150;
			var y = pagesize[1] - 150;
	//		var imageWidth = imgPreloader.width;
	//		var imageHeight = imgPreloader.height;
			var imageWidth = slide_image_width;
			var imageHeight = slide_image_height;
			if (imageWidth > x) {
				imageHeight = imageHeight * (x / imageWidth); 
				imageWidth = x; 
				if (imageHeight > y) { 
					imageWidth = imageWidth * (y / imageHeight); 
					imageHeight = y; 
				}
			} else if (imageHeight > y) { 
				imageWidth = imageWidth * (y / imageHeight); 
				imageHeight = y; 
				if (imageWidth > x) { 
					imageHeight = imageHeight * (x / imageWidth); 
					imageWidth = x;
				}
			}

			// End Resizing
			
			slide_image_width	= imageWidth;
			slide_image_height	= imageHeight;
			
			
			stuff_x	= imageWidth;
			stuff_y	= imageHeight;
		}
		else
		{
			stuff_x	= imageWidth = slide_image_width;
			stuff_y	= imageHeight = slide_image_height;
		}

		//----------
		
		widthDifference = imageWidth-prevWidth;
		widthParts		= widthDifference / 20;
			
		heightDifference = imageHeight-prevHeight;
		heightParts		 = heightDifference / 20;
			
		for (s=1; s<=20;s++ )
		{
			newWidth  = (prevWidth+(widthParts*s));
			newHeight = (prevHeight+(heightParts*s));
			
//			setTimeout( "setBoxSize('"+slideshow_id+"',"+newWidth+","+newHeight+");", 350+(10*s)+timeout_offset );
			setTimeout( "setBoxSize('"+slideshow_id+"',"+newWidth+","+newHeight+");", (10*s)+timeout_offset );
		}
		
		prevWidth  = stuff_x;
		prevHeight = stuff_y;

	}
		
//-------------------------------------------------------------------------------------------------------
//	ChangeAction
//-------------------------------------------------------------------------------------------------------
	function ChangeAction( formaction )
	{
		document.forms[0].action	= formaction;
		document.forms[0].target	= "_top";
	}

//-------------------------------------------------------------------------------------------------------
//	changeWidgetSize
//-------------------------------------------------------------------------------------------------------
	function changeWidgetSize( id, size )
	{
		document.getElementById(id).style.height = size + 'px';
	}

//-------------------------------------------------------------------------------------------------------
//	toggleCaption
//-------------------------------------------------------------------------------------------------------
	function toggleCaption()
	{
		caption_object_id	= 'caption-block';
		caption_button_id	= 'captiontoggle';
		caption_state_cookie_name	= 'gallery_caption_state';
		
		if (!document.getElementById( caption_object_id ))
		{
			return;
		}

		if (document.getElementById( caption_object_id ).style.display == 'block')
		{	
			document.getElementById( caption_object_id ).style.display	= 'none';
			//document.getElementById( caption_button_id ).className		= 'none';
			setCookie( caption_state_cookie_name, '0' );
		}
		else
		{	
			document.getElementById( caption_object_id ).style.display	= 'block';
			//document.getElementById( caption_button_id ).className		= 'active';
			setCookie( caption_state_cookie_name, '1' );
		}
	}

function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}
//#########################################################################################################
//
//	Public AJAX functions
//
//#########################################################################################################

//---------------------------------------------------------------------------------------------------------
//	Load an object dynamiclly with a source page
//---------------------------------------------------------------------------------------------------------
function loadDivContents( url, div )
{
	objNumber = 0;
	
	//	Have we used the div object before?
	for( i=1; i<= HTTPObjects.length; i++ )
	{
		if (HTTPObjects[i] == div)
		{
			objNumber = i
		}
	}

	//	Not found?
	if(!objNumber)
	{
		objNumber				= HTTPObjects.length;
		HTTPObjects[objNumber]	= div;
	}

	//	Generate the div object pointer
	var divObj = eval( 'document.getElementById("' + div + '");' );
	
	eval( 'http' + objNumber + ' = initHTTPObject();' );
	eval( 'if (!http' + objNumber + '){window.location=\'/site/compatability.php\';}' );
	eval( 'http' + objNumber + '.open("GET", url, true );');
	eval( 'http' + objNumber + '.onreadystatechange = function() { if (http' + objNumber + '.readyState == 4) {divObj.innerHTML = http' + objNumber + '.responseText;}};');
	eval( 'http' + objNumber + '.send(null);');
}

//---------------------------------------------------------------------------------------------------------
//	Submit a webtop form inline inisde a container
//---------------------------------------------------------------------------------------------------------
function PostFormInline( formname, processurl, div, updatepage )
{
	objNumber = 0;
	
	//	Have we used the div object before?
	for( i=1; i<= HTTPObjects.length; i++ )
	{
		if (HTTPObjects[i] == div)
		{
			objNumber = i
		}
	}

	//	Not found?
	if(!objNumber)
	{
		objNumber				= HTTPObjects.length;
		HTTPObjects[objNumber]	= div;
	}

	//	Generate the div object pointer
	var divObj = eval( 'document.getElementById("' + div + '");' );
	
	//	Get the fields
	eval( 'string = compileAllFieldValues( document.forms.' + formname + ' );');
	
	eval( 'http' + objNumber + ' = initHTTPObject();' );
	eval( 'http' + objNumber + '.onreadystatechange = function() { if (http' + objNumber + '.readyState == 4) {divObj.innerHTML = http' + objNumber + '.responseText;if(updatepage){updatePage();}}};');
	eval( 'http' + objNumber + '.open("POST", "' + processurl + '", true );');
	eval( 'http' + objNumber + '.setRequestHeader("Content-Type","application/x-www-form-urlencoded");');
	eval( 'http' + objNumber + '.send(string);');
	
	return false;
}

//#########################################################################################################
//
//	Private AJAX functions
//
//#########################################################################################################

//---------------------------------------------------------------------------------------------------------
//	Define the elements
//---------------------------------------------------------------------------------------------------------
var HTTPObjects = Array();	//	Track all the used HTTP objects on the page
var objNumber   = null;

//---------------------------------------------------------------------------------------------------------
//	Initialize a new HTTP object
//	PRIVATE
//---------------------------------------------------------------------------------------------------------
function initHTTPObject() 
{
	var xmlhttp;
	
	try {
	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
 	 	try {
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 		} catch (E) {
			xmlhttp = false;
 		}
	}

	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
  			xmlhttp = new XMLHttpRequest();
		} catch (e) {
  			xmlhttp = false;
		}
	}

	return xmlhttp;
}


function dbgDump( collection, prefix )
{
	msg		= '';
	counter = 0;

	for ( var name in collection )
	{
		if ( prefix )
		{
			if ( name.substring(0, prefix.length) != prefix )
			{
				continue;
			}
		}

		msg += name + " = " +  collection[name] + "\r\n";

		if ( counter == 50 )
		{
			alert(msg );
			msg = '';
			counter = 0;
		}
		counter++;
	}

	if ( counter < 50 )
	{
		alert( msg );
	}
}

//#########################################################################################################
//---------------------------------------------------------------------------------------------------------
//	Get page size (thickbox DHTML coce
//		http://jquery.com/demo/thickbox/
//---------------------------------------------------------------------------------------------------------
//#########################################################################################################
function TB_getPageSize(){
	var de = document.documentElement;
	var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
	var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight
	arrayPageSize = new Array(w,h) 
	return arrayPageSize;
}

