// Function opens link in new window
//
function openInNewWindow(address) {
var newWindow = window.open(address, 'newWindow');
newWindow.focus();
return false;
}

function get() {
	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);
	}
	if(elements.length == 0) return false;
	return elements;
}


// Function runs on window load, going through link tags looking for rel="external".
// These links receive onclick events that cause the link to open in a new window.
//
function initLinker()
{
	
	if (!document.getElementsByTagName){ return; }
	var anchors = document.getElementsByTagName("a");

	// loop through all anchor tags
	for (var i=0; i<anchors.length; i++){
		var anchor = anchors[i];
		
		// external links
		if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "external")){
			anchor.onclick = function () {openInNewWindow(this.getAttribute("href")); return false;}
		}
		
		// navigation slideout menus
		var slideRegExp = new RegExp("(^|\\s)" + "slider" + "(\\s|$)");
		if (anchor.getAttribute("href") && (slideRegExp.test(anchor.className))){
			anchor.onmouseover = function() { ypSlideOutMenu.showMenu(this.id); }
			anchor.onmouseout = function() { ypSlideOutMenu.hideMenu(this.id); }
		}
		
		// scroller links
		var oRegExp = new RegExp("(^|\\s)" + 'scroller' + "(\\s|$)");
		if (oRegExp.test(anchor.className)) {
			var scroll_link = anchor.getAttribute("href");
			$(anchor).click(function(){
				$.scrollTo( scroll_link, {speed:500} );
				return false;
			});
		}
	}
}

//
// getElementsByClassName(parent element,tag,class)
// returns all elements of a certain class name
function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

// Function turns spam-bot protected e-mail addresses
// into functioning e-mail links
//
function emailCloak() {
	if (document.getElementById) {
		//var alltags = document.all? document.all : document.getElementsByTagName("*");
		var alltags = document.all? document.all : document.getElementsByTagName("span");
		for (i=0; i < alltags.length; i++) {
		  var strClassName = "cloak";
		  strClassName = strClassName.replace(/\-/g, "\\-");
		  var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
		  if (oRegExp.test(alltags[i].className)) {
			var oldText = alltags[i].firstChild;
			var emailAddress = alltags[i].firstChild.nodeValue;
			var user = emailAddress.substring(0, emailAddress.indexOf("("));
			var website = emailAddress.substring(emailAddress.indexOf(")")+1, emailAddress.length);
			var newText = user+"@"+website;
			var a = document.createElement("a");
			a.href = "mailto:"+newText;
			var address = document.createTextNode(newText);
			a.appendChild(address);
			alltags[i].replaceChild(a,oldText);
		  }
		}
	}
}



thumbnails={
	//
	// Function runs on window load, determines what images are in the 
	// thumbs section, sets their onclick events, and preloads the
	// larger images.
	thumbs:[],
	init:function(){
		if (!document.getElementsByTagName){ return; }
		var gallery = get("item-gallery");
		if(!gallery){ return; }
		thumbnails.thumbs = gallery.getElementsByTagName("a");
		var preload = new Array();
	
		// loop through all anchor tags
		for (var i=0,j=thumbnails.thumbs.length; i<j; i++){
			var thumb = thumbnails.thumbs[i];
			var thumbmid = thumb.getAttribute("href").replace('.jpg','_mid.jpg'); 
			preload[i] = thumbmid;
			$(thumb).unbind('click'); // get rid of jquery lightbox onclick event
			thumb.onclick = function() { 
				// swap image
				thumbnails.swapimage('main-photo','',this.getAttribute("href").replace('.jpg','_mid.jpg'),0); 
				// set as active
				thumbnails.set(this);
				// change photo link
				var anchors = get('photos').getElementsByTagName('a');
				var photolink = anchors[0];
				photolink.href = this.getAttribute("href");
				//event.returnValue=false; // IE7-Vista fix
				return false; 
			}
		}
		
		// set first thumbnail
		thumbnails.set(thumbnails.thumbs[0]);
		
		thumbnails.preload(preload);
	},
	set:function(el){
		for (var i=0,j=thumbnails.thumbs.length;i<j;i++) {
			var thumb = thumbnails.thumbs[i];
			thumb.className = '';
		}
		el.className = 'selected';
	},
	findobj:function(n,d){
		var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
			d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
		if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
		for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=thumbnails.findobj(n,d.layers[i].document);
		if(!x && d.getElementById) x=d.getElementById(n); return x;
	},
	swapimage:function(){
		var i,j=0,x,a=thumbnails.swapimage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
		if ((x=thumbnails.findobj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	},
	preload:function(images){
		var loader = new Array();
		for(var i = 0; i < images.length; i++){
		   loader[i] = new Image();
		   loader[i].src = images[i];
		}
	}
} // end thumbnails

subswap={
	//
	// function for yes/no radio options with "sub-swap" class name
	//  to display child fieldsets
	init:function(){
		var frm = get('frmSubmit');
		if(!frm) return;
		var radios = getElementsByClassName(frm,'input','sub-swap');
		var length = radios.length;
		var curname;
		for(var i=0;i<length;i++) {
			var radio = radios[i];
			var thisname = radio.name;
			
			// add onclick
			radio.onclick = function(){ subswap.swap(this); }
			
			// hide sub fieldsets
			if(thisname != curname) {
				var parent = subswap.getparent(radio);
				var subs = parent.getElementsByTagName('fieldset');
				var sublength = subs.length;
				for(j=0;j<sublength;j++) {
					subs[j].style.display = 'none';
				}
			}
			
			// activate swap
			if(radio.checked == true) {
				subswap.swap(radio);
			}
			
			curname = thisname;
		}
	},
	swap:function(el){
		var display;
		if(el.value == 'Yes') display = 'block';
		else display = 'none';
		
		// show/hide sub fieldsets
		var parent = subswap.getparent(el);
		var subs = parent.getElementsByTagName('fieldset');
		var sublength = subs.length;
		for(j=0;j<sublength;j++) {
			subs[j].style.display = display;
		}
	},
	getparent:function(el){
		var parent = el.parentNode;
		while(parent.nodeName != 'FIELDSET') {
			parent = parent.parentNode;
		}
		return parent;
	}
} // end subswap

accordian={
	//
	init:function(){
		$("ul.accordian ul").hide();
		var lists = $("ul.accordian ul");
		jQuery.each(lists, function() {
			$(this).prev("a").click(function () {
				$(this).next('ul').slideToggle();
				return false;
			});
		});		
	}
} // end accordian

searchbox={
	//
	value: null,
	init:function(){
		searchbox.value = $('#q').val();
		$("#q").focus(function () {
			var qval = $(this).val();
			if(qval == searchbox.value) $(this).val('');
		});
		$("#q").blur(function () {
			var qval = $(this).val();
			if(qval == '') $(this).val(searchbox.value);
		});
	}
} // end searchbox

function printLinks() {
	$(".print-link").html('<a href="javascript:print()" class="icon ico-print">Print this page</a>');
}

$(document).ready(function(){ // jquery onload
	thumbnails.init();
	initLinker();
	emailCloak();
	accordian.init();
	searchbox.init();
	printLinks();
});
