//---------------------------------------------------[ INITIALIZE ]
//addEvent(window, 'DOMContentLoaded', init);
document.observe('dom:loaded', init);

function init()
{
	var agents = getUserAgents();

	if (agents[0] || agents[1])
	{
		fixDropDown('navigation');
		fixMenuHover('navigation');
		findPNGs();
	}
	
	var loc = document.URL.sub(/http:\/\/.*?\/(\w+[\.\-]*\w+)*$/, '#{1}');
	var home = ['home', 'index.php', ''];
	if (-1 !== home.indexOf(loc)) { getPageImages(); }
}

//addEvent(window, 'unload', clearUp);
document.observe('unload', clearUp);

function clearUp()
{
	frameInterval = null;
}

//------------------------------------------------[ get: USER AGENTS ]
function getUserAgents()
{
	var userAgent = navigator.userAgent;
	var msIE6 = userAgent.indexOf('MSIE 6.0') != -1;
	var msIE55 = userAgent.indexOf('MSIE 5.5') != -1;
	var agents = new Array(msIE6, msIE55);

	return agents;
}


//----------------------------------------[ fix: navigation MENU HOVER for ie6 ]
function fixMenuHover(containerID)
{
	var elementList = $(containerID).down('UL');
	if (elementList)
	{
		var listObjects = elementList.childElements();
		listObjects.each( function (element)
		{
			if (element.tagName == 'LI')
			{
				var className = (element.hasClassName('band2')) ? 'over2' : 'over';
				element.observe('mouseenter', function() { this.addClassName(className); });
				//addEvent(element, 'mouseenter', function() { this.addClassName(className); });
				element.observe('mouseleave', function() { this.removeClassName(className); });
				//addEvent(element, 'mouseleave', function() { this.removeClassName(className); });
			}
		});
	}
}

//----------------------------------------[ fix: navigation DROP DOWN for ie6 ]
function fixDropDown(containerID)
{
	var elementList = $(containerID);
	if (elementList)
	{
		var listObjects = elementList.select('.dropdown');
		listObjects.each( function (element)
		{
			var elementParent = element.up('LI');
			elementParent.observe('mouseenter', function() { this.addClassName('over'); });
			//addEvent(elementParent, 'mouseenter', function() { this.addClassName('over'); });
			elementParent.observe('mouseleave', function() { this.removeClassName('over'); });
			//addEvent(elementParent, 'mouseleave', function() { this.removeClassName('over'); });
		});
	}
}

//-----------------------------------------[ find: all PNG images ]
function findPNGs()
{
	if (!document.getElementsByTagName) return; 
	var images = $A(document.getElementsByTagName("IMG")); 
	images.each( function(image)
	{ 
		var imageSrc = image.src;
		var regex = /.png/
		var foundPNG = regex.test(imageSrc);
		if (foundPNG)
		{
			fixPNG(image);
		}
	});
}

//----------------------------------------[ fix: PNG display ]
function fixPNG(imageRef)
{
	var imgID = (imageRef.id) ? "id='" + imageRef.id + "' " : "";
	var imgClass = (imageRef.className) ? "class='" + imageRef.className + "' " : "";
	var imgTitle = (imageRef.title) ? "title='" + imageRef.title + "' " : "title='" + imageRef.alt + "' ";
	var imgStyle = "display: block;" + imageRef.style.cssText;
	var strNewHTML = "<span " + imgID + imgClass + imgTitle;
	strNewHTML += " style=\"" + "width:" + imageRef.width + "px; height:" + imageRef.height + "px;" + imgStyle; // + ";";
	strNewHTML += "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
	strNewHTML += "(src=\'" + imageRef.src + "\', sizingMethod='image');\"></span>";
	imageRef.outerHTML = strNewHTML;
}

//-------------------------[ SETUP: train connection from passed index value. ]
function mystery( indexValue, subjectText )
{
	var mystery ="109,97,105,108,116,111,58,"; // setup code.
	var train = "?subject=" + subjectText; // setup subject as string.
	var coming = "&body=";
	
	mystery += return2sender(indexValue * 1); // get required code.
	var decode = mystery.split(","); // setup array from encoded.
	mystery = ""; // setup source variable as string.
	for (var e = 0; e < decode.length; e++)
	{
		mystery += String.fromCharCode(decode[e]); // decode as string.
	}
	document.location = mystery + train + coming; // Write call.
}

//------------------------------------------------[ get: PAGE IMAGES ]
function getPageImages()
{
	var agents = getUserAgents();
	if (agents[0] || agents[1]) return false;
	var postURL = 'build/support/gallery.pipe.php';
	var options = 'mode=2';
	var myAjax = new Ajax.Request(postURL, { method: 'post', parameters: options, onSuccess: processPageImages });
}

//------------------------------------------------[ process: PAGE IMAGES ]
function processPageImages(result)
{
	if (result.responseText)
	{
		var frame, imgContainer, images, defaultImg;
		
		frame = $('page_frame');
		if (frame)
		{
			imgContainer = new Element('div', { 'id': 'shared_images' });
			imgContainer.update(result.responseText);
			images = imgContainer.select('.page_image');
			images.invoke('hide');
			
			var defaultImg = frame.down('.page_image', 0);
			if (defaultImg)
			{
				defaultImg.insert({ after: imgContainer });
				setupImageController(images);
			}
		}
	}
}

function setupImageController(images)
{
	if (images)
	{
		var delay = 4;
		var duration = 4;
		var imageCount = images.length;
		var seqCount, image, prevImage;

		var sequenceCheck = function(effect)
		{
			seqCount += 1;

			if (prevImage) { prevImage.hide(); }
			prevImage = effect.element;
			prevImage.setStyle({ 'zIndex': '0' });

			if (seqCount === imageCount)
			{
				prevImage.fade({ delay: delay, duration: duration, afterFinish: sequenceStart });
			}
		}

		var setLevel = function(effect)
		{
			var nextImg = effect.element;
			nextImg.setStyle({ 'zIndex': '2' });
		}
		
		var params = {
			delay: delay, 
			duration: duration, 
			queue: 'end', 
			afterSetup: setLevel,
			afterFinish: sequenceCheck
		};

		var sequenceStart = function()
		{
			seqCount = 0;
			images.each (function(image)
			{
				image.appear(params);
			});
		}
		
		sequenceStart();
	}
}

