/**************************************
		Controlling functions
**************************************/
var NYLC = {
	init: function() {
		Event.observe(window, "load", this.startup.bind(this));
		Event.observe(window, "resize", this.resized.bind(this));
	},
	startup: function() {
		if ($("topNavSearch")) {
			this.topnav = new TopNav();
			this.topnav.initMenu("programs", true, ["nav_programs_col1", "nav_programs_col2", "nav_programs_col3"], {"nav_programs_bg":0, "nav_programs_content":0}, {"nav_programs_button":-28});
			if (typeof(NYLC.topnav) != 'undefined')this.topnav.sizeMenu("programs");
			this.backgroundFix();
			
		}
	},
	resized: function() {
		this.backgroundFix();
	},
	// fix for misaligned background image when content width is an odd number (firefox and ie)
	backgroundFix: function() {
		if (navigator.userAgent.indexOf("MSIE") == -1) return;
		var even = (document.body.clientWidth % 2 == 0);
		var inner = $("pageshellinner");
		if (inner) inner.style.marginLeft = (even) ? "0px" : "1px";
	}
};
NYLC.init();

var TopNav = Class.create();
TopNav.prototype = {
	running: false,
	emptyHTML: "&nbsp;",
	baseURL: "",
	items: new Hash({
		// each of the content variables must have a single container DIV that is used for transparencies
		topNavSubscribe: {
			closedWidth: 151,
			openWidth: 30,
			closed: '<div style="visibility:hidden"><a href="#baseURL#pages-subscribe"><img src="images/nav_subscribe_mid.gif" width="151" height="28" border="0" /></a></div>',
			open: '<div onclick="NYLC.topnav.show(\'closed\')" style="height:27px">&nbsp;</div>'
		},
		topNavWhatIs: {
			closedWidth: 125,
			openWidth: 30,
			closed: '<div style="visibility:hidden"><a href="javascript:var w=window.open(\'#baseURL#wisl/index.html\',\'slcycle\',\'width=699,height=529,resizable,scrollbars=false\')"><img src="images/nav_servicelearning_mid.gif" width="125" height="28" border="0" /></a></div>',
			open: '<div onclick="NYLC.topnav.show(\'closed\')" style="height:27px">&nbsp;</div>'
		},
		topNavSearch: {
			closedWidth: 52,
			openWidth: 220,
			closed: '<div style="visibility:hidden" onclick="NYLC.topnav.show(\'open\')"><img src="images/nav_search_mid.gif" width="52" height="28" border="0" /></div>',
			open: '<div style="visibility:hidden;padding-top:4px;"><form name="frm_search" action="site_searchresults.cfm" method="get" onsubmit="return NYLC.topnav.doSearch(this);"><div style="float:left; width:150px;"><input name="q" type="text" class="searchbox" value="      search NYLC.org" onFocus="NYLC.topnav.searchFocus(this)" /></div><div style="float:left; width:50px;"><a href="javascript:NYLC.topnav.doSearch()"><img src="images/btn_go.gif" width="47" height="20" border="0" align="absmiddle" /></a></div><div style="float:left; width:20px;"><a href="javascript:NYLC.topnav.show(\'closed\')"><img src="images/btn_close.gif" width="18" height="20" border="0" align="absmiddle" /></a></div><div style="clear:both;"></div></form></div>'
		}
	}),
	// functions
	initialize: function() {
		this.baseURL = baseURL;
		this.items.get("topNavSubscribe").closed = this.items.get("topNavSubscribe").closed.replace("#baseURL#",this.baseURL + "/");
		this.items.get("topNavWhatIs").closed = this.items.get("topNavWhatIs").closed.replace("#baseURL#",this.baseURL + "/");
		Element.setStyle( "topNavContainer", {visibility:"visible"} );
		this.showImmediate("closed");
	},
	showImmediate: function(p_state) {
		if (this.running) return;
		this.state = p_state;
		this.running = true;
		this._removeContents();
		this._addContentsImmediate();
		this.running = false;
	},
	show: function(p_state) {
		if (this.running) return;
		this.state = p_state;
		this.running = true;
		// start animations
		this._removeContents();
		// resize tabs
		this.items.each(function(e){
			new Effect.Morph(e[0], {style: {width: e[1][this.state+"Width"]+"px"}, duration:0.3 } );
		}.bind(this));
		// continue
		window.setTimeout(this._addContents.bind(this), 0.3*1000);
	},
	sizeMenu_data: {},
	sizeMenu: function(p_key) {
		if (this.sizeMenu_data[p_key]) {
			var obj = this.sizeMenu_data[p_key];
			// find max height of all source elements
			var n_height = 0;
			for (var i=0; i<obj.heights.length; i++) {
				n_height = Math.max(n_height, Element.getHeight(obj.heights[i]) );
			}
			if (obj.sameHeight) {
				for (var i=0; i<obj.heights.length; i++) {
					Element.setStyle(obj.heights[i], {height:n_height+"px"} );
				}
			}
			n_height += 40;
			// resize targeted elements
			for (var a in obj.resizes) {
				Element.setStyle(a, {height: (n_height + obj.resizes[a]) + "px" });
			}
			for (var a in obj.tops) {
				Element.setStyle(a, {top: (n_height + obj.tops[a]) + "px" });
			}
		}
	},
	initMenu: function(p_key, b_same_heights, p_heights_array, p_resizes_obj, p_tops_obj) {
		this.sizeMenu_data[p_key] = {heights:p_heights_array, resizes:p_resizes_obj, tops:p_tops_obj, sameHeight:b_same_heights};
	},
	//replaces the search box with nothing when the user clicks on it
	searchFocus_defaultValue: null,
	searchFocus: function(o_field) {
		if (this.searchFocus_defaultValue == null) this.searchFocus_defaultValue = o_field.value;
		if (o_field.value == this.searchFocus_defaultValue) {
			o_field.value = "";
			o_field.className = "searchbox_on";
		}
	},
	doSearch: function(o_frm) { // optional, could be called from an A tag
		var f = document.forms.frm_search;
		var c_val = f.q.value;
		if (this.searchFocus_defaultValue == null || c_val == this.searchFocus_defaultValue || c_val == "") {
			alert("Please enter a search text before submitting the form.");
			if (o_frm == f) return false;
			else return;
		}
		if (o_frm != f) f.submit();
	},
	_removeContents: function() {
		this.items.each(function(e){
			$(e[0]).innerHTML = this.emptyHTML;
		}.bind(this));
	},
	_addContentsImmediate: function() {
		// show tab contents
		this.items.each(function(e){
			$(e[0]).innerHTML = e[1][this.state];
			Element.setStyle( e[0], {width:e[1].closedWidth+"px"} );
		}.bind(this));
		// transition
		this.items.each(function(e){
			var child = $(e[0]).getElementsByTagName("div")[0];
			child.style.visibility='visible';
		}.bind(this));
	},
	_addContents: function() {
		// show tab contents
		this.items.each(function(e){
			$(e[0]).innerHTML =e[1][this.state];
		}.bind(this));
		// transition
		this.items.each(function(e){
			var child = $(e[0]).getElementsByTagName("div")[0];
			new Effect.Opacity( child, {duration:0.3, from:0.0, to:1.0, afterSetup:function(){child.style.visibility='visible';} } );
		}.bind(this));
		// continue
		window.setTimeout(this._cleanup.bind(this), 0.3*1000);
	},
	_cleanup: function() {
		this.running = false;
	}
}


/**************************************
		Macromedia functions
**************************************/

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_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_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];}
}
function MM_displayLayers() {
	for (var i=0; i<(arguments.length-1); i=i+2) {
		var l=arguments[i];var b=arguments[i+1];var o=MM_findObj(l);
		if (o) o.style.display=(b)?"":"none";
	}
}
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
} 


/**************************************
		Custom functions
**************************************/
function resetForm(p_frm) {
	var o_frm = MM_findObj(p_frm);
	if (o_frm) o_frm.reset();
	return false;
}
function submitForm(p_frm) {
	var o_frm = MM_findObj(p_frm);
	if (o_frm) o_frm.submit();
	return false;
}

// expand or collapse menus
function heirarchyInit(p_expand, p_collapse) {
	document.expandHeirarchyImage = p_expand;
	document.collapseHeirarchyImage = p_collapse;
}
function heirarchy(p_key) {
	var i = MM_findObj("icon_" + p_key);
	var d = MM_findObj("div_" + p_key);
	if (d != undefined) {
		var v = (d.style.display == "none");
		d.style.display = (v) ? "" : "none";
		i.src = (v) ? document.collapseHeirarchyImage : document.expandHeirarchyImage;
	}
}

function popup(u) {
	window.open(u);
}

function toggleDisplayAttribute(d_id) {
	var obj = $(d_id);
	if (obj != undefined) {
		var objStyle = (obj.getStyle("display") == "none") ? "block" : "none";
		obj.setStyle({"display":objStyle});
	}
}


/**************************************
		Navigation Functions
**************************************/
var selectedNav = null;
var selectedSubnav = null;
var selectedSubNavItm = null;
function navOver(o_div) {
	if (selectedNav==null && o_div.className == "mid_on") selectedNav = o_div;
	o_div.className = 'mid_ovr';
}
function navOut(o_div) {
	if (o_div != selectedNav) o_div.className = 'mid';
	else o_div.className = 'mid_on';
}
function navClick(o_div,sub_div) {
	// main nav
	if (o_div!=selectedNav) {
		if(selectedNav!=null)selectedNav.className = 'mid';
		o_div.className = 'mid_on';
		selectedNav = o_div;
	}
	// sub nav	
	var o_sub_div = $(sub_div);
	if (o_sub_div!=selectedSubnav) {
		if (selectedSubnav!=null && selectedSubnav!=undefined) displayDiv(selectedSubnav,false);
		if (o_sub_div!=undefined) displayDiv(o_sub_div,true);
		selectedSubnav = o_sub_div;
	}
}
function subNavClick(o_div) {
	if (o_div!=selectedSubNavItm) {
		if (selectedSubNavItm!=null) selectedSubNavItm.className = 'mid_subnav_off';
		o_div.className = 'mid_subnav_on';
		selectedSubNavItm = o_div;
	}
}

function displayDiv(o_div,bool_show) {
	if (bool_show) o_div.style.display = "block";
	else o_div.style.display = "none";
}

/**************************************
		Top Nav functions
**************************************/

function sidemenu_onshow() {
    this.className='sidenavOver';
}
function sidemenu_onhide() {
	this.className='sidenav'
}

function news_onshow(o) {
	if (o == null) o = this;
	o.getElementsByTagName("IMG")[0].src = "images/nav_news_over.gif";
   // this.className='newsOver';
}
function news_onhide(o) {
	if (o == null) o = this;
	o.getElementsByTagName("IMG")[0].src = "images/nav_news_off.gif";
	if (isexplorer && $('div_newsframe') != null) {
		$('div_newsframe').style.visibility = "hidden";	
	}
    //this.className='primNav'
	
}
function news_onselected() {
	this.getElementsByTagName("IMG")[0].src = "images/nav_news_on.gif";
    //this.className='primNav'
	if (isexplorer && $('div_newsframe') != null) {
		$('div_newsframe').style.visibility = "hidden";	
	}
}

function programs_onshow(o) {
	if (o == null) o = this;
	o.getElementsByTagName("IMG")[0].src = "images/nav_programs_over.gif";
	if (typeof(NYLC.topnav) != 'undefined')NYLC.topnav.sizeMenu("programs");
   // this.className='newsOver';
}
function programs_onhide(o) {
	if (o == null) o = this;
	o.getElementsByTagName("IMG")[0].src = "images/nav_programs_off.gif";
    //this.className='primNav'
	if (isexplorer && $('div_programsframe') != null) {
		$('div_programsframe').style.visibility = "hidden";	
	}
}
function programs_onselected() {
	this.getElementsByTagName("IMG")[0].src = "images/nav_programs_on.gif";
    //this.className='primNav'
	if (isexplorer && $('div_programsframe') != null) {
		$('div_programsframe').style.visibility = "hidden";	
	}
}

function aboutus_onshow(o) {
	if (o == null) o = this;
	o.getElementsByTagName("IMG")[0].src = "images/nav_aboutus_over.gif";
   // this.className='newsOver';
}
function aboutus_onhide(o) {
	if (o == null) o = this;
	o.getElementsByTagName("IMG")[0].src = "images/nav_aboutus_off.gif";
    //this.className='primNav'
	if (isexplorer && $('div_aboutusframe') != null) {
		$('div_aboutusframe').style.visibility = "hidden";	
	}
}
function aboutus_onselected() {
	this.getElementsByTagName("IMG")[0].src = "images/nav_aboutus_on.gif";
    //this.className='primNav'
	if (isexplorer && $('div_aboutusframe') != null) {
		$('div_aboutusframe').style.visibility = "hidden";	
	}
}

function resourcelib_onshow(o) {
	if (o == null) o = this;
	o.getElementsByTagName("IMG")[0].src = "images/nav_resourcelib_over.gif";
	// this.className='newsOver';
}
function resourcelib_onhide(o) {
	if (o == null) o = this;
	o.getElementsByTagName("IMG")[0].src = "images/nav_resourcelib_off.gif";
	//this.className='primNav'
	if (isexplorer && $('div_resourceframe') != null) {
		$('div_resourceframe').style.visibility = "hidden";	
	}
}
function resourcelib_onselected() {
	this.getElementsByTagName("IMG")[0].src = "images/nav_resourcelib_on.gif";
	//this.className='primNav'
	if (isexplorer && $('div_resourceframe') != null) {
		$('div_resourceframe').style.visibility = "hidden";	
	}
}

function bookstore_onshow(o) {
	if (o == null) o = this;
	o.getElementsByTagName("IMG")[0].src = "images/nav_bookstore_over.gif";
	// this.className='bookstoreOver';
}
function bookstore_onhide(o) {
	if (o == null) o = this;
	o.getElementsByTagName("IMG")[0].src = "images/nav_bookstore_off.gif";
	//this.className='bookstoreOff'
}
function bookstore_onselected(o) {
	if (o == null) o = this;
	o.getElementsByTagName("IMG")[0].src = "images/nav_bookstore_on.gif";
	//this.className='bookstoreOn'
}

function contact_onshow(o) {
	if (o == null) o = this;
	o.getElementsByTagName("IMG")[0].src = "images/nav_contactus_over.gif";
	// this.className='newsOver';
}
function contact_onhide(o) {
	if (o == null) o = this;
	o.getElementsByTagName("IMG")[0].src = "images/nav_contactus_off.gif";
	//this.className='primNav'
}
function contact_onselected(o) {
	if (o == null) o = this;
	o.getElementsByTagName("IMG")[0].src = "images/nav_contactus_on.gif";
	//this.className='primNav'
}

function lock_unlock() {
	var obj = MMfindObj("your hide icon ID"); obj.style.display = "none";
	var obj = MMfindObj("your hide icon ID"); obj.style.display = "inline";
}

function fue_swap(o, u) {
	if (o && o.childNodes.length) {
		var img=o.childNodes[0];
		// find img tag
		while (img && (typeof(img.tagName) != "string" || img.tagName != "IMG")) {
			img = img.nextSibling;
		}
		if (img) img.src = u;
	}
}

/* dependency prototype 1.5.0 */
/* toggles visibility of inner div elements of the parent div with name = div_name */
function toggleInnerDivVisibility(div_name,toggle_style,div_bt_name,cl_prefix) {
	if (typeof(toggle_style) == "undefined" || toggle_style != true ) toggle_style = false;
	if (toggle_style) toggleCssClass($(div_bt_name),cl_prefix,false);
	
	o_div = $(div_name);
	if(o_div == null) return;
	o_div_descendants = o_div.immediateDescendants();
	for (var i=0; i<o_div_descendants.length; i++) {
		o_div_descendants[i].toggle();
	}
}

function toggleCssClass(obj,cl_prefix,is_short) {
	if (is_short) {
		obj.className = (obj.className == cl_prefix)? cl_prefix + "_Over" : cl_prefix;
	}
	else {
		obj.className = (obj.className == cl_prefix + "_Off")? cl_prefix + "_Over" : cl_prefix + "_Off";
	}
	if (cl_prefix.toLowerCase().indexOf("off") != -1) {
		var arr_imgs = Element.select(obj,"img");
		if (arr_imgs != null) {
			$A(arr_imgs).each(
				function(n) {
					if (!n.hasClassName('corner'))
						Element.setStyle(n,"opacity:1.0");	
				}
			);
		}
		
		//Element.setStyle(obj,"opacity:1.0");
	}
	else {
		var arr_imgs = Element.select(obj,"img");
		if (arr_imgs != null) {
			$A(arr_imgs).each(
				function(n) {
					if (!n.hasClassName('corner'))
						Element.setStyle(n,"opacity:0.6");	
				}
			);
		}
		//Element.setStyle(obj,"opacity:0.6");
	}
}

function optionNotAvailable() {
	alert("This option is not available!");	
	return false;
}

/*************************************
Custom functions
**************************************/



/**************************************
			Browsers
**************************************/

isopera = (navigator.userAgent.indexOf("Opera")>=0);
isexplorer = (!isopera && navigator.userAgent.indexOf("MSIE")>=0);
issafari = (navigator.userAgent.indexOf("Safari")>=0);
isgecko = (navigator.userAgent.indexOf("Gecko")>=0) && !issafari;
