Event.observe(window,'load',function () { 
	Whitney.nav.initialize();
});

var Whitney = {	
	nav: {
		current_section: '',
		open_subnav: '',
		initialize: function() {
			$('main_nav').select('li a img').each(function(el) {
				// console.log(el);
				var section = el.alt.replace('section_','');
				var current = el.src.match(/_on/);
				if (current) { 
					this.current_section = section; 
					this.open_subnav = section;
				}
				el.observe('mouseover', function() {
					this.over(el);
					if (this.subnavForSection(this.open_subnav)) this.subnavForSection(this.open_subnav).hide();
					if (this.subnavForSection(this.current_section)) this.subnavForSection(this.current_section).hide();
					if (this.subnavForSection(section)) {
						this.open_subnav = section;
						this.subnavForSection(section).show();
					}
				}.bind(this));
				el.observe('mouseout', function() {
					if (!current) this.out(el);
				}.bind(this));				
			}.bind(this));
			$('container').observe('mouseout', function() {
				// if (this.subnavForSection(this.current_section) != this.subnavForSection(this.open_subnav)) this.subnavForSection(this.open_subnav).hide();
				// if (this.subnavForSection(this.current_section)) this.subnavForSection(this.current_section).show();
			}.bind(this));				
			
		},
		subnavForSection: function(section_name) {
			return ($('sub_nav_' + section_name) != undefined) ? $('sub_nav_' + section_name) : false;
		},
		over: function(image) {
		 	Intersect.images.activate(image);
		},
		out: function(image) {
			Intersect.images.deactivate(image);
		}
		
	}
	
};

var Intersect = {
	appRequest: function(url,params, method) {
		if (!method) {method = 'post';}
		return new Ajax.Request(url,{ method: method,	evalScripts:true, parameters: params });
	},
	jsonRequest: function(url,params) {
		return this.appRequest(url,params,'get').transport.responseText;
	},
	popup: function (link,title,width,height) {
		return window.open(link,title,"height="+height+",width="+width+",status=no,toolbar=no,menubar=no,location=no");
	},
	images: {
		swap: function(for_el,to) {
			$(for_el).src = to;
		},
		activate: function (for_el) {
			return this.swap(for_el,this.activateSrc(for_el));
		},
		deactivate: function (for_el) {
			return this.swap(for_el,this.deactivateSrc(for_el));		
		},
		hover: function (for_el) {
			return this.swap(for_el,this.hoverSrc(for_el));
		},
		replaceSrc: function (for_el,search,replace_with) {
			return $(for_el).src.replace(search,replace_with);
		},
		activateSrc: function (for_el) {
			return this.replaceSrc(for_el,/_off/,'_on');
		},
		deactivateSrc: function (for_el) {
			return this.replaceSrc(for_el,/_on/,'_off');
		},
		hoverSrc: function (for_el) {
			return this.replaceSrc(for_el,/_off/,'_hover');
		},
		restore: function (for_el) {
			MM_swapImgRestore();
		}
	}
};


Element.addMethods({
	toggleClass: function(elem,css) { 
		if (Element.hasClassName(elem,css)) {
			Element.removeClassName(elem,css);
		} else {
			Element.addClassName(elem,css);
		}
	},
	setHeight: function(elem,h) {
   		elem = $(elem);
    	elem.style.height = h +"px";
	},
	setZ: function (elem,z) {
		$(elem).style.zIndex = z;
	},
	toggleValue: function(elem,value_1, value_2) {
		elem = $(elem);
		if (elem.value == value_1) {
			elem.value = value_2;
		} else {
			elem.value = value_1;
		}
		return elem;
	}
	
});

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  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=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}


	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}


