var timerlen = 5;
var slideAniLen = 250;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();

function slidedown(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display != "none")
                return; // cannot slide down something that is already visible

        moving[objname] = true;
        dir[objname] = "down";
        startslide(objname);
}

function slideup(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display == "none")
                return; // cannot slide up something that is already hidden

        moving[objname] = true;
        dir[objname] = "up";
        startslide(objname);
}

function startslide(objname){
        obj[objname] = document.getElementById(objname);

        endHeight[objname] = parseInt(obj[objname].style.height);
        startTime[objname] = (new Date()).getTime();

        if(dir[objname] == "down"){
                obj[objname].style.height = "1px";
        }

        obj[objname].style.display = "block";

        timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}

function slidetick(objname){
        var elapsed = (new Date()).getTime() - startTime[objname];

        if (elapsed > slideAniLen)
                endSlide(objname)
        else {
                var d =Math.round(elapsed / slideAniLen * endHeight[objname]);
                if(dir[objname] == "up")
                        d = endHeight[objname] - d;

                obj[objname].style.height = d + "px";
        }

        return;
}

function endSlide(objname){
        clearInterval(timerID[objname]);

        if(dir[objname] == "up")
                obj[objname].style.display = "none";

        obj[objname].style.height = endHeight[objname] + "px";

        delete(moving[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(endHeight[objname]);
        delete(obj[objname]);
        delete(dir[objname]);

        return;
}

var whoisopen = 0;

function toggleMenuSlide(objname){
	
	//check to see if someone is open, then close them
	if (whoisopen)
	{
		slideup(whoisopen);
		whoisopen = 0;
	}    
	
	if (objname)
	{	
	  if(document.getElementById(objname).style.display == "none"){
	    // div is hidden, so let's slide down
	    
	    //clearTimeout(timer);
	    //incase submenus are moving clear their timer
	    //DISABLE until I have built the new function
	    
		whoisopen = objname;
	    slidedown(objname);
	  }else{
	    // div is not hidden, so slide up
	    
	    //clearTimeout(timer);
	    
	    slideup(objname);
	    whoisopen = 0;
	  }
  
	}
}

/*
End of Animated Slide
*/



/*
Display Submenu Content

Change the size of the submenu
http://www.aglasshalffull.org/css-resources/Change-Div-Size-Color-and-Location-with-the-W3C-DOM.htm

*/


//User variables from other move function above
//timerlen = 5;

var objnameOnDisplay = 'submenu-content-biography';
//var objnameOnDisplay = 'submenu-content-contactform';
var objOldHeight=0;
var newSubHeight=0;
var objname2 = '';
var oldHeight = new Array();

var objtarget = 'submenu';
var objtarget2 = 'submenu-body';

function displaySubmenuContent(objname, newheight)
{
	objtarget = 'submenu';
	objtarget2 = 'submenu-body';

    oldHeight[objname] = parseInt(document.getElementById(objtarget).style.height);
	
	if(document.getElementById(objname).style.display != "none"){
		return; // cannot slide down something that is already visible
 	}
    document.getElementById(objnameOnDisplay).style.display = "none";            
    document.getElementById(objname).style.display = "block";
 
    objnameOnDisplay = objname;
    
    endHeight[objname] = newheight;
    	
    if(endHeight[objname]>oldHeight[objname])
    {
	    //Slide down, bigger
		slideSUBdown(objname);
	} 
	else if (endHeight[objname]<oldHeight[objname])
	{
		//Slide up, smaller
		slideSUBup(objname);
	}
		
	//After this, we do not need the objname
	//because its content is displayed
	//now we just need to adjust the height of submenu and submenu-body
	
}


function SubmenuSlide (objname, newheight, directionOfChange)
{
//This function is specifically for after sending a message on the e-mail form
//it is a watered down version of the one above
	
	
	objtarget = 'contactmenu';
	objtarget2 = 'contactmenu-body';
	
	
    oldHeight[objname] = parseInt(document.getElementById(objtarget).style.height);
    
    endHeight[objname] = newheight;
    
        
	if(directionOfChange == 'bigger')
    {
	    
	    //Slide down, bigger
		slideSUBdown(objname);
	} 
	else if(directionOfChange == 'smaller')
	{
		
		//Slide up, smaller
		slideSUBup(objname);
	}
}

var ContactobjnameOnDisplay = 'submenu-content-contactform';
//Quick fix, I could figure out how to change the above functions to enable
//subpages within the contact page, so I just duplicated the function and renamed some objects for no conflict.
function displayContactmenuContent(objname, newheight)
{
	objtarget = 'contactmenu';
	objtarget2 = 'contactmenu-body';

    oldHeight[objname] = parseInt(document.getElementById(objtarget).style.height);
	
	if(document.getElementById(objname).style.display != "none"){
		return; // cannot slide down something that is already visible
 	}
    document.getElementById(ContactobjnameOnDisplay).style.display = "none";            
    document.getElementById(objname).style.display = "block";
 
    ContactobjnameOnDisplay = objname;
    
    endHeight[objname] = newheight;
    	
    if(endHeight[objname]>oldHeight[objname])
    {
	    //Slide down, bigger
		slideSUBdown(objname);
	} 
	else if (endHeight[objname]<oldHeight[objname])
	{
		//Slide up, smaller
		slideSUBup(objname);
	}
		
	//After this, we do not need the objname
	//because its content is displayed
	//now we just need to adjust the height of submenu and submenu-body
	
}


function slideSUBdown(objname){
        if(moving[objname])
                return;
		
        moving[objname] = true;
        dir[objname] = "down";
        startSUBslide(objname);
}

function slideSUBup(objname){
        if(moving[objname])
                return;
		
        moving[objname] = true;
        dir[objname] = "up";
        startSUBslide(objname);
}

function startSUBslide(objname){
	
        obj[objtarget] = document.getElementById(objtarget);
        obj[objtarget2] = document.getElementById(objtarget2);


        startTime[objname] = (new Date()).getTime();

        timerID[objname] = setInterval('slideSUBtick(\'' + objname + '\');',timerlen);
}

function slideSUBtick(objname){
		
        var elapsed = (new Date()).getTime() - startTime[objname];

        if (elapsed > slideAniLen)
        {
                endSUBSlide(objname)
    	}
    	else 
    	{
                   //alert (dir[objname]);             
                if(dir[objname] == "up")
                {
	                var d =Math.round(elapsed / slideAniLen * (oldHeight[objname] - endHeight[objname]));
                    d = oldHeight[objname] - d;
                    //alert('up again');
            	}
            	else if(dir[objname] == "down")
            	{
	            	    var d =Math.round(elapsed / slideAniLen * (endHeight[objname] - oldHeight[objname]));
                        d = oldHeight[objname] + d;
                        //alert('down again');
            	}
				//alert (d);
                obj[objtarget].style.height = d + "px";
                obj[objtarget2].style.height = (d - 3) + "px";
        }

        return;
}

function endSUBSlide(objname){
        clearInterval(timerID[objname]);

        obj[objtarget].style.height = endHeight[objname] + "px";
        obj[objtarget2].style.height = (endHeight[objname] - 3) + "px";

        delete(moving[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(oldHeight[objname]);
        delete(endHeight[objname]);
        delete(obj[objtarget]);
        delete(obj[objtarget2]);
        delete(dir[objname]);

        return;
}


/*
End Display Submenu Content
*/







/***********************************************
* Dynamic Ajax Content- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

var loadedobjects=""
var rootdomain="http://"+window.location.hostname

function ajaxpage(url, containerid){
var page_request = false
if (window.XMLHttpRequest) // if Mozilla, Safari etc
page_request = new XMLHttpRequest()
else if (window.ActiveXObject){ // if IE
try {
page_request = new ActiveXObject("Msxml2.XMLHTTP")
} 
catch (e){
try{
page_request = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
page_request.onreadystatechange=function(){
loadpage(page_request, containerid)
}
page_request.open('GET', url, true)
page_request.send(null)
}

function loadpage(page_request, containerid){
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
document.getElementById(containerid).innerHTML=page_request.responseText
}

function loadobjs(){
if (!document.getElementById)
return
for (i=0; i<arguments.length; i++){
var file=arguments[i]
var fileref=""
if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
if (file.indexOf(".js")!=-1){ //If object is a js file
fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", file);
}
else if (file.indexOf(".css")!=-1){ //If object is a css file
fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", file);
}
}
if (fileref!=""){
document.getElementsByTagName("head").item(0).appendChild(fileref)
loadedobjects+=file+" " //Remember this object as being already added to page
}
}
}


/* End of Dynamic Drive Content */




//Custom Image Manager

//document.getElementById(d).style.display = "block"; may come in handy


//What is this>??? January 5, 2009 
//Is this still used??

function displayImage(imagetype, imageURL){
	
ajaxpage('{$ROOT_DIR}photographs/vancouverism/{$previous_image}', 'content-one')
ajaxpage(imageURL, 'content-one')

}










function fade(id, startfade, endfade, url)
	{
	timer = 0;
	if (startfade < endfade)
		{
		for (i = startfade; i <= endfade; i++)
			{
			setTimeout("setOpacity(" + i + ",'" + id + "')", (timer * 10));
			timer++;
			}
		}
		
		if (startfade > endfade)
		{
		p = 100;
		timer = 0;
		for (i = endfade; i <= startfade; i++)
			{
			setTimeout("setOpacity(" + p + ",'" + id + "')", (timer));
			timer = timer + 1;

			p = p - 1;
			}
		}
		
		window.location.href = url;
		
		return true;
	}

function setOpacity(opacity, id)
	{
	var el = document.getElementById(id).style;
	el.opacity = (opacity / 100);
	el.MozOpacity = (opacity / 100);
	el.KhtmlOpacity = (opacity / 100);
	el.filter = "alpha(opacity=" + opacity + ")";
	}
	
	



function hide()
{
	opacity = 0;
	var el = document.getElementById('previous-image').style;
	el.opacity = (opacity / 100);
	el.MozOpacity = (opacity / 100);
	el.KhtmlOpacity = (opacity / 100);
	el.filter = "alpha(opacity=" + opacity + ")";
	
	var el = document.getElementById('next-image').style;
	el.opacity = (opacity / 100);
	el.MozOpacity = (opacity / 100);
	el.KhtmlOpacity = (opacity / 100);
	el.filter = "alpha(opacity=" + opacity + ")";
	
	document.getElementById('imagedata').style.visibility = 'hidden';
}

function show()
{
	opacity = 99;
	//there is a bug in firefox on MAC
	//which causes all sort of text to get a little bolder
	//when set to 100
	//another work around is just changing the classes
	//where the one at 100% doesn't actually specify and opacity
	//see the VAG 75 years site
	var el = document.getElementById('previous-image').style;
	el.opacity = (opacity / 100);
	el.MozOpacity = (opacity / 100);
	el.KhtmlOpacity = (opacity / 100);
	el.filter = "alpha(opacity=" + opacity + ")";
	
	var el = document.getElementById('next-image').style;
	el.opacity = (opacity / 100);
	el.MozOpacity = (opacity / 100);
	el.KhtmlOpacity = (opacity / 100);
	el.filter = "alpha(opacity=" + opacity + ")";
	
	document.getElementById('imagedata').style.visibility = 'visible';
	//IF we try to use visibility on the previous/next buttons
	//then the won't redisplay on mouseover on IE7 because they are hidden
	

}



function objFixIeTooltip ()
{
	// methods

		/*
		// detect support
		if (!document.getElementById || !document.getElementsByTagName) return;
		// detect IE - leave out if using conditional comments
		var isIE = navigator.userAgent.indexOf("MSIE");
		if (isIE < 1) return;
		// find the image(s) - tweak to your needs
		*/
		
		//http://dotjay.co.uk/2007/apr/removing-alt-tooltips-in-ie-with-javascript

		

}


/*
Seperate Hide/Show Toggle
-Not Planned on being used
-Mostly for testing
*/

  function collapsetoggleDiv(divid){
    if(document.getElementById(divid).style.display == 'none'){
      document.getElementById(divid).style.display = 'block';
    }else{
      document.getElementById(divid).style.display = 'none';
    }
  }
  
  
 