// InFocus common.js
// Paul Farning - ISITE Design

// Event Listener
function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else { obj["on"+type] = obj["e"+type+fn]; }
}

var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();
addEvent(window,'unload',EventCache.flush);

/* dropdowns for <IE7 */
startList = function() {
	if (document.all&&document.getElementById) {
		navRoot = document.getElementById("nav");
		if(navRoot)
		{
		    for (i=0; i<navRoot.childNodes.length; i++)
		     {
			    node = navRoot.childNodes[i];
			    if (node.nodeName=="LI") {
				    node.onmouseover=function() {
					    this.className+=" over";
	  			    }
	  			    node.onmouseout=function() {
	  				    this.className=this.className.replace(" over", "");
	   			    }
	  		    }
		      }
		}
	}
}
addEvent(window,'load',startList);

/* button hovers for <IE7 */
function addButtonHover() {
	if (!document.getElementsByTagName||!document.all) return false;
	var buttons  = document.getElementsByTagName('button');
	if (buttons[0]) {
		for (var i = 0; i < buttons.length; i++){
			buttons[i].onmouseover  = function() { this.className += " iehover"; }
			buttons[i].onmouseout   = function() { this.className = this.className.replace("iehover",""); }
			buttons[i].onfocus      = function() { this.className += " iehover"; }
			buttons[i].onblur	    = function() { this.className = this.className.replace("iehover",""); }
		}
	}
}
addEvent(window,'load',addButtonHover);

// set/reset value of search box
function queryReset() {
	if (!document.getElementById) return ;
	if (!document.getElementById("query")) return false;
	var field = document.getElementById("query");
	if (field) {
		field.onfocus = function () {
			if(this.value == 'Search') { this.value = ''; }
		}
		field.onblur = function() {
			if(this.value.length == 0) { this.value = 'Search'; }
		}	
	}
}
addEvent(window,'load',queryReset);

function popExternal() {
	var as = document.getElementsByTagName("a");
	var i;
	for (i=0;i<as.length;i++) {
		if(as[i].rel == "external") {
			as[i].onclick = function() {
				window.open(this.href); return false;	
			}
		}
	}
}
addEvent(window,'load',popExternal);

// get abouts and toggle them off
function hideClass(els,node,tag,nav) {
	if(!document.getElementById(nav)) return;
	var container = document.getElementById(node);
	var tags = document.getElementById(tag);
	
	var elements = getElementsByClass(els);
	
	var i;
	// i=1 so first is skipped.
	for (i=1;i<elements.length;i++) {
		toggle(elements[i]," off");
	}

	//hijax the nav 
	var nav = document.getElementById(nav);
	var as = nav.getElementsByTagName("a");
	
	for (i=0;i<as.length;i++) {
	
	    if(as[i].className == "noClick")
	        continue;
	    
		as[i].og = as[i].onclick;
		
		as[i].onclick = function() {
			
			if(this.og && this.className!="loaded") {
				var ogclicky = this.og.toString().split("{");
				var ogclicked = ogclicky[1].split("}");
				eval(ogclicked[0]);
				this.className = "loaded";
			}
			
			if (this.parentNode.className == "on") { return false; }
			
			var elements = getElementsByClass(els);
			
			for (i=0;i<elements.length;i++) {
				toggle(elements[i]," off");
			}
			
			var toshow = this.href.split("#");
			toggle(toshow[1].toLowerCase()," off");
			
			var nav = this.parentNode.parentNode;
			var lis = nav.getElementsByTagName("li");
			for (i=0;i<lis.length;i++) {
				lis[i].className = "";
			}
			
			this.parentNode.className = "on";
			return false;
		}
	}

	if (els == "about") {
		langtoggle("showlanguages");
	}

}

function ToggleShownElements(eleId, eleClass) {
    ele = document.getElementById(eleId);
    
    if (ele.og && ele.className != "loaded") {
        var ogclicky = ele.og.toString().split("{");
        var ogclicked = ogclicky[1].split("}");
        eval(ogclicked[0]);
        ele.className = "loaded";
    }

    if (ele.parentNode.className == "on") { return false; }

    var elements = getElementsByClass(eleClass);

    for (i = 0; i < elements.length; i++) {
        toggle(elements[i], " off");
    }

    var toshow = ele.href.split("#");
    toggle(toshow[1].toLowerCase(), " off");

    var nav = ele.parentNode.parentNode;
    var lis = nav.getElementsByTagName("li");
    for (i = 0; i < lis.length; i++) {
        lis[i].className = "";
    }

    ele.parentNode.className = "on";
    return false;
}

// toggle on/off
function toggle(obj,style) {
	if (document.getElementById(obj)) {
		var el = document.getElementById(obj);
	} else {
		var el = obj;
	}
	el.className = (el.className.indexOf(style)==-1 ? el.className + style : el.className.replace(style,""));
}

// show/hide languages
function langtoggle(els) {
	var as = getElementsByClass(els);
	var i;
	for(i=0;i<as.length;i++) {
		if (as[i].nextSibling.nodeType == 1) { var ul = as[i].nextSibling; }
		else { var ul = as[i].nextSibling.nextSibling; }
		
		toggle(ul," off");
		
		as[i].onclick = function() {	
						if (this.nextSibling.nodeType == 1) { var myul = this.nextSibling; }
						else { var myul = this.nextSibling.nextSibling; }		
							toggle(myul,"off");							
							return false;
						}
	}
}

// what happened to getElementsByClass?
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\s)"+searchClass+"(\s|$)");
	var i;
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

// product image gallery
function showPic(pic) {
	if (!document.getElementById) return true;
	if (!document.getElementById("featuredimage") || !document.getElementById("scroller")) return true;
	
	var thumbs = document.getElementById("scroller").getElementsByTagName("a");	
	var i;
	for (i=0;i<thumbs.length;i++) {
		var preloaded = new Image;
		preloaded.src =thumbs[i].href;
		thumbs[i].onmouseover = function () {
			var img = document.getElementById("featuredimage");
			img.src = this.href;
			img2 = new Image;
			img2.src = this.href;
			//var imgtop = (240-img2.height)/2;
			//img.style.top = imgtop > 4 ? imgtop + "px" : "4px";
			//img.style.left = (350-img2.width)/2 + "px";
		}
		thumbs[i].onclick = function () { return false;	}
	}
}
addEvent(window,'load',showPic);

function centerImg() {
	//var img = document.getElementById("featuredimage");
	//img.onload = function () {
	//	var imgtop = (240-img.height)/2;
		//img.style.top = imgtop > 4 ? imgtop + "px" : "4px";
		//img.style.left = (350-img.width)/2 + "px";	
	//}
}

// category page hide/show subcategories
function subcatInit() {
	var groups = getElementsByClass("group");
	var i;
	for (i=0;i<groups.length;i++) {
		toggle(groups[i]," show");
		var as = groups[i].getElementsByTagName("a");
		var h3s = groups[i].getElementsByTagName("h3");
		
		var showhide = document.createElement("a");
		showhide.className = "showhide";
		var showtext = document.createTextNode("Show");
		showhide.appendChild(showtext);
		showhide.onclick = function () {
				toggle(this.parentNode," show");
				showHideText(this);
				return false;
			}
		groups[i].insertBefore(showhide,h3s[0].nextSibling);
	}
	
	//make the viewall links open and jump
	var viewalls = getElementsByClass("viewall");
	for (j=0;j<viewalls.length;j++) {
		viewalls[j].onclick = function () {
			var jumpto = "group" + this.href.substring(this.href.length-1, this.href.length);
			if (document.getElementById(jumpto).className.indexOf("show") > 0) {
				toggle(jumpto," show");
				var showhide = getElementsByClass("showhide",document.getElementById(jumpto),"a");
				showHideText(showhide[0]);
			}
		}
	}
	
	// jump for bookmark anchors
	if (window.location.href.indexOf("#group")>0) {
		var rejump=/group\d{1}$/;
		var jumpto = window.location.href.match(rejump);
		toggle(jumpto," show");
		var showhide = getElementsByClass("showhide",document.getElementById(jumpto),"a");
		showHideText(showhide[0]);
	} else {
		//toggle(groups[0]," show");
		//var showhide = getElementsByClass("showhide",document.getElementById(jumpto),"a");
		//showHideText(showhide[0]);		
	}
}

//toggle show/hide text
function showHideText (obj) { obj.childNodes[0].nodeValue = (obj.childNodes[0].nodeValue == "Hide" ? "Show" : "Hide"); }

function showHideText2(obj)
{
    var showhide = getElementsByClass("showhide", obj, "a");
    showHideText(showhide[0]);
}

// removes double go buttons in header
function hideButton(id) { document.getElementById(id).className = "nobutton"; }

// use select as nav
function selectLink() {
	var selects = document.getElementsByTagName("select");
	var i;
	if (selects.length > 0) {
		for(i=0;i<selects.length;i++) {
			if(selects[i].className=="jumpnav") {
				selects[i].onchange = function() {
					setCookie(this.id,this.value,100,"/","","");					
					window.location = window.location.href.split("#")[0];
					/*	var location = window.location.href.split("?");
						window.location = location[0] + "?"+ this.id +"="+this.value;	*/
				}
				
			}
			
			else if(selects[i].className=="jumpCountrySelect") {
				selects[i].onchange = function() {
					setCookie("ifc_country",this.value,100,"/","","");					
					window.location = window.location.href.split("#")[0];
					/*	var location = window.location.href.split("?");
						window.location = location[0] + "?"+ this.id +"="+this.value;	*/
				}
			}

			if(selects[i].className=="findnav") {
				selects[i].onchange = function() {
					this.parentNode.parentNode.submit();
				}
			}
		}
	}
}
addEvent(window,'load',selectLink);

// Cookies get/set/delete
function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}
function setCookie( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name+"="+escape( value ) +
		( ( expires ) ? ";expires="+expires_date.toGMTString() : "" ) + //expires.toGMTString()
		( ( path ) ? ";path=" + path : "" ) +
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}
function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) document.cookie = name + "=" +
			( ( path ) ? ";path=" + path : "") +
			( ( domain ) ? ";domain=" + domain : "" ) +
			";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}
function SetCountryCookieAndRefresh(selectItem)
{
    setCookie("ifc_country",selectItem.value,100,"/","","");					
	window.location = window.location.href.split("#")[0];
}

function FindProjCalcPopUp() {
    as = document.getElementsByTagName("A");

    for (i = 0; i < as.length; i++) {
        if (as[i].rel == "projcalcpopover") {

            as[i].onclick = PopoverCalc;
            
        }
    }
}

addEvent(window, 'load', FindProjCalcPopUp);

function PopoverCalc() {
    window.open(this.href, "ProjCalc", "toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=575,height=790");
    if (window.event) {
        window.event.returnValue = false;
        window.event.cancelBubble = true;
    }
    else if (e) {
        e.stopPropagation();
        e.preventDefault();
    }

}

