// JavaScript Document
var galleryTimer;
var splashTimer;
var menuTimeout;

// Get base url
var url = document.location.href;
xend = url.lastIndexOf("/") + 1;
var base_url = url.substring(0, xend);

function ajax_do (url) {
	resetTimer();
	//clearTimeout(splashTimer);
	//clearTimeout(galleryTimer);
        // Does URL begin with http?
        if (url.substring(0, 4) != 'http') {
                url = base_url + url;
        }

        // Create new JS element
        var jsel = document.createElement('SCRIPT');
        jsel.type = 'text/javascript';
        jsel.src = url;
		
        // Append JS element (therefore executing the 'AJAX' call)
        document.body.appendChild (jsel);
}

//gallery functions

function switchPic(id) {
	resetTimer();
	if(id == undefined) var id=0;
	swapfade($('mainPic'), photos[id], '1.5', 'Wedding Photographer');
	preload(photos[id+1]);
}
//restart timer, when user cletticks 'next'
function resetTimer()	{
	clearInterval(isf.clock);
	clearInterval();
	isf.clock = null;
	clearTimeout(galleryTimer);
}
function preload(img) {
	var newImage = new Image();
	newImage.src = img;	
}

function galleryNav(id) {
	var navString = "slideshow &nbsp;&nbsp; <a href='#null' onclick='slideGo("+id+");'>on</a> <a href='#null' onclick='slideStop();'>off</a>";
	navString += "<span style='padding-left:100px;'>";
	if(id!=0) navString += '<a href="#null" onclick="switchPic('+(id-1)+');">&lt; prev</a>';
	if(id<(photos.length-1)) navString += '<a href="#null" onclick="resetTimer(); switchPic('+(id+1)+');">next &gt;</a>';
	navString += "</span>";
	$('galleryNav').innerHTML = navString;
}

var curPic;

function slideGo(id) {
		//clearTimeout(galleryTimer);
		curPic = parseInt(id)+1;
		if(curPic<(photos.length-1)) {
			switchPic(curPic);
			galleryTimer = setTimeout("slideGo(curPic)", 10000);
		}
		else switchPic(0);
}
function slideStop(id)	{
	//alert('STOP NOW');
	clearInterval(id.clearInterval);
	//clearTimeout(galleryTimer);
	//clearTimeout(splashTimer);
	//clearTimeout(menuTimeout);
	//clearInterval( scrollInterval );
	
	
}


function setMenus(linkID){
	for(i=1;i<=4;i++) $('menu'+i).style.color="#000000";
		$(linkID).style.color="#79a7d0";
	if(linkID == 'menu2') showMenu('submenu_gates');
}
function change_quote(quote, by )
{
  $('slide').innerHTML = "<span><b>" + by + "</b><br /><br />" + quote + "</span>";
}

function changeMedia(img)
{
  swapfade($('centerImg'), img, '1', 'Okanagan Wedding Photographer');
}

var playing;
var imgswp;

function imageSwap( imgElement, destPath, millisecondsToSwap, nextImageSrc )
{
	//this.imageSwapElement = new Object();
	this.imageSwapElement = imgElement;
	
	this.imageDestImg = new Image();
	this.imageDestImg.src = destPath;
	
	if ( nextImageSrc )
	{
		this.loadNextImage = new Image();
		this.loadNextImage.src = nextImageSrc;
		
		//this.loadNextImage.onload = function() { alert("loaded") }
	}

	this.millisecondsToSwap = millisecondsToSwap;
	
	this.run = runImageSwap;
	this.intervalTime = 60;
	this.interval = null;
	
	this.fadeLevel = 100;
	this.fade = fadeImage;
	this.direction = -1;
}

function runImageSwap()
{
	this.adjustmentPerPeriod = 100 / ( ( this.millisecondsToSwap/this.intervalTime ) / 2 );
	
	clearInterval( this.interval );
	this.interval = setInterval( "imgswp.fade()", this.intervalTime );
}

function fadeImage()
{
	this.fadeLevel = this.fadeLevel + this.direction * this.adjustmentPerPeriod;
	
	if 		( typeof this.imageSwapElement.style.MozOpacity != "undefined" ) 	
		this.imageSwapElement.style.MozOpacity = this.fadeLevel / 100;
	else if ( typeof this.imageSwapElement.style.opacity != "undefined" ) 		
		this.imageSwapElement.style.opacity = this.fadeLevel / 100;
	else if ( typeof this.imageSwapElement.filters == "object" ) 
		this.imageSwapElement.filters.alpha.opacity = this.fadeLevel;
	else
	{
		this.imageSwapElement.src = this.imageDestImg.src;
		clearInterval( this.interval );
		return;
	}
	
	
	if ( this.fadeLevel <= 0 )
	{
		if ( this.imageDestImg.complete )
		{
			this.imageSwapElement.src = this.imageDestImg.src;
			this.direction = 1;
			this.fadeLevel = 0;
		}
	}
	else if ( this.fadeLevel >= 100 )
	{
		clearInterval( this.interval );	
	}
}

// slideshows for landing pages.
var thisImg=0;

function showSlideshow(photos) {
	var slideCount = photos.length;
	if (thisImg == slideCount-1) thisImg = 0;
	//var newmain = "url("+photos[thisImg]+")";
	//$('picDiv').style.backgroundImage = newmain;
	thisImg++;	
	swapfade($('mainPic'), photos[thisImg], '1.5', 'Okanagan Wedding Photographer');
	splashTimer = setTimeout("showSlideshow(photos)", 3000);
}

function getFlashMovieObject(movieName)
{
  if (window.document[movieName]) 
  {
      return window.document[movieName];
  }
  if (navigator.appName.indexOf("Microsoft Internet")==-1)
  {
    if (document.embeds && document.embeds[movieName])
      return document.embeds[movieName]; 
  }
  else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
  {
    return document.getElementById(movieName);
  }
}
function switchPlay(onoff) {
	if(onoff == '0') $('switchPlay').innerHTML = "<a href=\"Javascript:getFlashMovieObject('player').playIt();switchPlay('1');\">play</a>";	
	else $('switchPlay').innerHTML = "<a href=\"Javascript:getFlashMovieObject('player').muteIt();switchPlay('0');\">mute</a>";	

}
function insertFlash( src, width, height, version, name, FlashVars )
{
	var output = '';
	
	output += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + version + ',0,0,0" width="' + width + '" height="' + height + '" id="' + name + '" align="middle">';
	output += '<param name="allowScriptAccess" value="always" />';
	output += '<param name="movie" value="' + src + '" />';
	output += '<param name="quality" value="high" />';
	output += '<param name="bgcolor" value="#ffffff" />';
	output += '<param name="wmode" value="transparent" />';
	output += '<param name="FlashVars" value="' + FlashVars + '" />';
	
	output += '<embed src="' + src + '" quality="high" FlashVars="' + FlashVars + '" wmode="transparent" bgcolor="#ffffff" width="' + width + '" height="' + height + '" name="' + name + '" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
	output += '</object>';

	return output;
}
function writeFlash( src, width, height, version, name, FlashVars )
{
	document.write( insertFlash( src, width, height, version, name, FlashVars ) );
}

function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

function changeInner(cid,content) {
	$(cid).innerHTML = $(content).innerHTML;
}
function changeSong(id) {
	$('player').innerHTML= insertFlash("flash/player.swf", 1, 1, 9, "player", "song="+id+"&mute=0");
}
function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
	}
}

function fixpng() {
	var arVersion = navigator.appVersion.split("MSIE")
	var version = parseFloat(arVersion[1])
	
	if ((version >= 5.5) && (document.body.filters)) 
	{
	   for(var i=0; i<document.images.length; i++)
	   {
		  var img = document.images[i]
		  var imgName = img.src.toUpperCase()
		  if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
		  {
			 var imgID = (img.id) ? "id='" + img.id + "' " : ""
			 var imgClass = (img.className) ? "class='" + img.className + "' " : ""
			 var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
			 var imgStyle = "display:inline-block;" + img.style.cssText 
			 if (img.align == "left") imgStyle = "float:left;" + imgStyle
			 if (img.align == "right") imgStyle = "float:right;" + imgStyle
			 if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
			 var strNewHTML = "<span " + imgID + imgClass + imgTitle
			 + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
			 + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
			 + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
			 img.outerHTML = strNewHTML
			 i = i-1
		  }
	   }
	}
}

//form validation function

function validateForm()
{
	for(i=0; i<document.forms[0].elements.length; i++){
		
	}
}

// Menu functions

var lastMenuNum;

function hideMenu() 
{
	menuTimeout = setTimeout("clearSubmenu()", 1500);	
}
function clearSubmenu() 
{
	if ( lastMenuNum !== undefined )	{
		$("sub_" + lastMenuNum).morph('width:1px;');
		$("sub_" + lastMenuNum).style.display = 'none';	
	}
}

function showMenu(menuNum)
{
	
	clearTimeout(menuTimeout);
	clearSubmenu();
	lastMenuNum = menuNum;
	
	//$("sub_" + menuNum).style.display = '';	
	$("sub_" + menuNum).style.display = 'block';
	
	$("sub_" + menuNum).morph('width:800px;');
	
	
	

}

function placeMenu(menuNum)
{
	$("sub_" + menuNum).style.marginLeft = $("link_" + menuNum).offsetLeft + "px";
}

// Scroller functions
var scrollRunning = false;
var scrollInterval;

var slideDuration = 0.8;
var fps = 50;
var frame;
var totalFrames;

var desiredScroll;
var originalScroll;

	function scrollSlides( spotsToScroll )
	{
		if ( scrollRunning )
			return;
			
		var box = $('thumbs');
		
		var imageHeight = 64;
		var imagePadding = 8;
		
		var sizeToMove = ( spotsToScroll * ( imageHeight + imagePadding ) );
		
		originalScroll = box.scrollTop;
		var estimatedScroll = box.scrollTop + sizeToMove;
		desiredScroll = Math.max(0, Math.min( box.scrollHeight - Element.getHeight('thumbs'), estimatedScroll ) );
		
		if ( originalScroll == desiredScroll )
		{
			scrollRunning = false;
			return;
		}

		frame = 1;
		totalFrames = Math.ceil(Math.abs(fps*slideDuration*(desiredScroll-originalScroll)/sizeToMove));
		
		scrollRunning = true;
		scrollInterval = setInterval( "scrollIt()", 1000/fps );
	}
	
	function scrollIt()
	{
		var box = $('thumbs');
		
		var pos = frame/totalFrames;
		
		var target = originalScroll + ( ( -Math.cos(pos*Math.PI)/2) + 0.5 ) * (desiredScroll - originalScroll);
		box.scrollTop = target;
		
		if ( box.scrollTop == 0 && target >= 1 )
		{
			box.style.overflow = "auto";
			box.scrollTop = target;
		}


		if ( frame == totalFrames )
		{
			scrollRunning = false;
			clearInterval(scrollInterval);
		}
		frame++;
	}
	
	
	