/**************************************************************

	Script	: Image Menu
	Version	: 2.2
	Authors	: Samuel Birch
	Desc	: 
	Licence	: Open Source MIT Licence

**************************************************************/

var ImageMenu = new Class({
	
	getOptions: function(){
		return {
			onOpen: false,
			onClose: Class.empty,
			openWidth: 200,
/*			transition: Fx.Transitions.quadOut,   */
			transition: Fx.Transitions.Quad.easeOut,
			duration: 400,
			open: null,
			border: 0
		};
	},

	initialize: function(elements, options){
		this.setOptions(this.getOptions(), options);
		
		this.elements = $$(elements);
		
		this.widths = {};
		this.widths.closed = this.elements[0].getStyle('width').toInt();
		this.widths.openSelected = this.options.openWidth;
/*		this.widths.openOthers = Math.round(((this.widths.closed*this.elements.length) - (this.widths.openSelected+this.options.border)) / (this.elements.length-1))  */
		this.widths.openOthers = 42; /* this setting modified to add more menu options */
		
		this.fx = new Fx.Elements(this.elements, {wait: false, duration: this.options.duration, transition: this.options.transition});
		
		this.elements.each(function(el,i){
			el.addEvent('mouseenter', function(e){
				new Event(e).stop();
				this.reset(i);
				
			}.bind(this));
			
			el.addEvent('mouseleave', function(e){
				new Event(e).stop();
				this.reset(this.options.open);
				
			}.bind(this));
			
			var obj = this;
			
			el.addEvent('click', function(e){

				if(obj.options.onOpen){
					new Event(e).stop();
					if(obj.options.open == i){
						obj.options.open = null;
						obj.options.onClose(this.href, i);
					}else{
						obj.options.open = i;
						obj.options.onOpen(this.href, i);
					}
					
					
				}
				
			})
			
		}.bind(this));
		
/*		if(this.options.open ){    */  
		if(this.options.open != null){   
			if($type(this.options.open) == 'number'){
				this.reset(this.options.open);
			}else{
				this.elements.each(function(el,i){
					if(el.id == this.options.open){
						this.reset(i);
					}
				},this);
			}
		}
		
	},
	
	reset: function(num){
		if($type(num) == 'number'){
			var width = this.widths.openOthers;
			if(num+1 == this.elements.length){
				width += this.options.border;
			}
		}else{
			var width = this.widths.closed;
		}
		
		var obj = {};
		this.elements.each(function(el,i){
			var w = width;
			if(i == this.elements.length-1){
				w = width+5 
			}
			obj[i] = {'width': w};
		}.bind(this));
		
		if($type(num) == 'number'){
			obj[num] = {'width': this.widths.openSelected};
		}
				
		this.fx.start(obj);
	}
	
});

ImageMenu.implement(new Options);
ImageMenu.implement(new Events);


function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
		} 
	else {
		window.onload = function() {
			oldonload();
			func();
    		}
	 	}
	}


/************************ imagegallery - portfolio *****************************/

var first;
var imgNo;

function showPic(whichpic) {
	if (!document.getElementById("placeholder")) return true;
	if (first == true) {
		var gallery = document.getElementById("imagegallery");
		var links = gallery.getElementsByTagName("a");
		if (this !== links[0]) {
			links[0].style.borderColor = "#ccc";  /* grey */
			first = false;
			}
        return;
		}
	var source = whichpic.getAttribute("href");
	var placeholder = document.getElementById("placeholder");
	placeholder.setAttribute("src",source);
	placeholder.style.visibility="hidden";
	placeholder.onload = function () {
		if (placeholder.width > placeholder.height) {
			document.getElementById("container").setAttribute("class","landscape");
			document.getElementById("container").setAttribute("className","landscape");
			placeholder.setAttribute("class","landscape");
			placeholder.setAttribute("className","landscape");
			placeholder.style.visibility="visible";
			}
		else {
			document.getElementById("container").setAttribute("class","portrait");
			document.getElementById("container").setAttribute("className","portrait");
			placeholder.setAttribute("class","portrait");
			placeholder.setAttribute("className","portrait");
			placeholder.style.visibility="visible";
			}
		}
	return false;
	}

function prepareGallery() {
	if (!document.getElementsByTagName) return false;
	if (!document.getElementById) return false;
	if (!document.getElementById("imagegallery")) return false;
	var next = document.getElementById("next");
	var previous = document.getElementById("previous");
	var gallery = document.getElementById("imagegallery");
	var links = gallery.getElementsByTagName("a");
	var defaultImg = links[0];
	imgNo = 10;
        first = true;
	next.style.visibility = "visible";
	next.onclick = function() {
		return nextThumbs();
		}
        previous.onclick = function() {
		return prevThumbs();
		}
	for ( var i=0; i < links.length; i++) {
		links[i].onclick = function() {
			return showPic(this);
			}
		links[i].onkeypress = links[i].onclick;
		}
	
	defaultImg.onclick();
	defaultImg.style.borderColor = "#99330b";  // copper
	}
	
function nextThumbs() {
	var gallery = document.getElementById("imagegallery");
	var links = gallery.getElementsByTagName("a");
	var thumbs = gallery.getElementsByTagName("img");
	var thumbPath;
	var imgPath;
	var prevLink = document.getElementById("previous");
	var nextLink = document.getElementById("next");
	var descElem1;
	var descElem2;
	var descElem3;
	
/*	first = true;   */

	for (var i = 0; i < 9; i++) {
		thumbPath = "images/slides/slide"+imgNo+"t.jpg";
		imgPath = "images/slides/slide"+imgNo+".jpg";
		if (thumbs[i].getAttribute("id") != "placeholder") {
			thumbs[i].setAttribute("src",thumbPath);
			links[i].setAttribute("href",imgPath);
			imgNo++;
			links[i].onclick = function() {
				return showPic(this);
				}
			links[i].onkeypress = links[i].onclick;
			}
		}
	var defaultImg = links[0];
	defaultImg.onclick();
	defaultImg.style.borderColor = "#99330b";  // copper
	
	/*  enable/disable prev & next links  */
	
	prevLink.style.visibility = "hidden";
	nextLink.style.visibility = "hidden";
	
	if (imgNo > 10) {
		prevLink.style.visibility = "visible";
		}
	if (imgNo < 28) {														// change this number when more/fewer portfolio photos added/removed
		nextLink.style.visibility = "visible";
		}
	
	/*  update photo group description  */
 
 	descElem1 = document.getElementById("groupDesc1");
 	descElem2 = document.getElementById("groupDesc2");
 	descElem3 = document.getElementById("groupDesc3");
	if (imgNo == 10) {
		descElem1.innerHTML = "New Construction Custom Home";
		descElem2.innerHTML = "Indianola, WA";
		descElem3.innerHTML = " ";
		}
	else {
		if (imgNo == 19) {
			descElem1.innerHTML = "Medical Building Gut/Remodel";
			descElem2.innerHTML = "Silverdale, WA";
			descElem3.innerHTML = "photos courtesy  Erin Vega";
			}
		else {
			if (imgNo == 28) {
				descElem1.innerHTML = "Miscellaneous Projects";
				descElem2.innerHTML = " ";
				descElem3.innerHTML = " ";
				}
			else {
				descElem1.innerHTML = " ";
				descElem2.innerHTML = " ";
				descElem3.innerHTML = " ";
				}
			}
		}
	
	}
	
function prevThumbs() {
	imgNo = imgNo - 18;
	nextThumbs();
	}

	

/*****************************************************************/

function codeMail() {
	var nospam_mail = document.getElementById("jsmail");
	
	// eMail Obfuscator Script 2.1 by Tim Williams - freeware

 	var coded = "75@7o3o5k57knvo3.myw",
		cipher = "aZbYcXdWeVfUgThSiRjQkPlOmNnMoLpKqJrIsHtGuFvEwDxCyBzA1234567890",
		shift = coded.length,
		link = "";
	for (i=0; i<coded.length; i++) {
		if (cipher.indexOf(coded.charAt(i))==-1) {
			ltr = coded.charAt(i);
			link += (ltr);
			}
		else {     
			ltr = (cipher.indexOf(coded.charAt(i))-shift+cipher.length) % cipher.length;
			link += (cipher.charAt(ltr));
			}				
    	}
	nospam_mail.href="mailto:"+link; // this line replaces 'document.write...' from original t.williams script
	nospam_mail.firstChild.nodeValue = link; // update link text so address is viewable to user
	
    }

/************************ copyright dates *****************************/

function setCopyright() {
	var element = document.getElementById("copyright");
	var date = element.childNodes[0].nodeValue;
	var year = new Date().getFullYear();
	if(year > date)
		element.childNodes[0].nodeValue = date + "-" + year;
	else
		element.childNodes[0].nodeValue = date;
	}

addLoadEvent(setCopyright);  
