// JavaScript Document

//add provide
	if (typeof pathPrefix == "undefined")
	{
		pathPrefix = "";	// You can set this if you need links to be relative to something
	}
	var HEADHT = "60px";
	var IMGPATH = "img/";
	var aspRatio = 1.5625; // 961/615; Fixme
	var animations = {};
	
		function setVRules() {
				for (i in vruleX) {
				vrule[i]= dojo.doc.createElement('div');
				vrule[i].className= 'tile vrule';
				vrule[i].id = 'vrule'+i;
				dojo.style(vrule[i] ,{
						left: vruleX[i] + 'px',
						height: vruleH[i] + 'px',
						bottom: vruleB + 'px'
					});
				dojo.byId('borderShell').appendChild(vrule[i]);
				}
		}
		function setHRules() {
				for (i in hruleX) {
				hrule[i]= dojo.doc.createElement('div');
				hrule[i].className= 'tile hrule';
				dojo.style(hrule[i] ,{
						left: hruleX[i] + 'px',
						width: hruleW[i] + 'px',
						top: hruleY[i] + 'px'
					});
				dojo.byId('borderShell').appendChild(hrule[i]);
				}
		}
		function setText(theDiv,theUrl) {
			dojo.xhrGet( { 
				url: theUrl, 
				handleAs: "text",
				timeout: 5000,
				load: function(response, ioArgs) {
					dojo.byId(theDiv).innerHTML = response; 
					return response; 
				},
				error: function(response, ioArgs) {
					console.error("HTTP status code: ", ioArgs.xhr.status);
					return response; 
				}
			});
      	}

	/* gup: get URL parameters */
	
	function gup( name )
	{
  		name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  		var regexS = "[\\?&]"+name+"=([^&#]*)";
		var regex = new RegExp( regexS );
		var results = regex.exec( window.location.href );
		if( results == null )
			return "";
		else
			return results[1];
	}
	
	function setTopNav(){
		var tnId = {
			exhibitions:		{ label: 'EXHIBITIONS', url: 'exhibitions/2011/muntadas.php' },
			education:			'EDUCATION',
			events:  { label: 'EVENTS', url: 'events.php' },
			press:				'PRESS',
			membership:			'MEMBERSHIP',
			shop:				'SHOP',
			information:		'INFORMATION',
/*			project_space:		'PROJECT SPACE',*/
			aim:				'AIM',
			smartpower:			{ label: 'SMARTPOWER', url: 'http://artists.smartpower.bronxmuseum.org' },
			teencouncil:		{ label: 'TEEN COUNCIL', url: 'http://bronxteens.weebly.com', external: true},
/*			email:				{ label: 'EMAIL LIST', url: 'email_list.html' },*/
			index:				{ label: 'HOME', url: 'index.php' }
		};
		var nav = dojo.doc.createElement('div');
		dojo.addClass(nav, 'topNav');
		nav.appendChild(dojo.doc.createElement('span'));	// separator
		for (i in tnId) {
			
			if (i == 'index') {
				var s = dojo.doc.createElement('span');
				dojo.addClass(s, 'spacer');
				nav.appendChild(s);
			}
			b = dojo.doc.createElement('a');
			b.id= i;
			if (i == thisPage) {
				dojo.addClass(b, 'selected');
			}
			b.innerHTML = tnId[i].label ? tnId[i].label : tnId[i];
			
			dojo.attr(b, 'href', pathPrefix + (tnId[i].url ? tnId[i].url : (i + '.html')));
			if (tnId[i].external) {
				dojo.attr(b, 'target', '_blank');
			}
			nav.appendChild(b);
			var s = dojo.doc.createElement('span');
			nav.appendChild(s);	// separator
		}
		dojo.byId('tnavBtns').appendChild(nav);
		dojo.byId('logo').innerHTML = '<a href="' + pathPrefix + 'index.php"><img src="' + pathPrefix + 'img/logos/logoBXM.gif" width="248" height="19" /></a>';
	}

	function setLNav(){
		var wrapper = dojo.byId('lnShell');
		for (i in lnBtn) { 
			var e = dojo.doc.createElement('div');
			e.innerHTML = lnBtn[i];
			e.id = lnLnk[i];
			e.className = 'ln';
			if (lnBtn[i]== thisPane) {
				dojo.addClass(e, 'lnCur');
			};
			if (i< lnBtn.length-1){ //hack
				dojo.connect(e,'onclick', onButton);
				/*
				dojo.connect(e,'mouseover',(function(evt) {dojo.addClass(evt.target,'lnHover') }));
				dojo.connect(e,'mouseout',(function(evt) {dojo.removeClass(evt.target,'lnHover') }));
				*/
			}
			wrapper.appendChild(e);
		}
	}
	
	function setRollovers() {
		// First set animated rollovers for top and left
		var links = dojo.query('.topNav a, #lnShell .ln, #lnShell .lnCur');
		// Make sure all links have ids
		links.forEach(function(node) {
			if (!node.id) {
				node.id = dojo.generateId();
			}
		});
		links.connect('onmouseover', function(evt) {
			if (animations[evt.target.id] && animations[evt.target.id].status() != 'stopped') {
				animations[evt.target.id].stop();
			}
			animations[evt.target.id] = dojo.animateProperty({
				node: evt.target,
				duration: 300,
				accel: 1,
				properties: {
					color: { end: "#CCFF00" }
				}
			});
			animations[evt.target.id].play();
		});
		links.connect('onmouseout', function(evt) {
			if (dojo.hasClass(evt.target, 'selected') || dojo.hasClass(evt.target, 'lnCur')) {
				var targetColor = "#FFFF00";
			} else {
				targetColor = "#00FF00";
			}
			var myFade = dojo.animateProperty({
				node: evt.target,
				duration: 700,
				properties: {
					color: { end: targetColor }
				},
				onEnd: function() {
					dojo.style(evt.target, 'color', '');
				}
			});
			if (animations[evt.target.id] && animations[evt.target.id].status() != 'stopped') {
				// We need to wait until the fadeIn is complete.
				dojo.connect(animations[evt.target.id], 'onEnd', function() {
					animations[evt.target.id] = myFade;
					myFade.play();
				});
			} else {
				animations[evt.target.id] = myFade;
				myFade.play();
			}
 		});
		
		// Whew.  Okay, now for accordion title rollovers
		setStdRollovers('.sln');
	}
	
	function setStdRollovers(query)
	{
		nodes = dojo.query(query);
		nodes.connect('onmouseover', function(evt) {
			dojo.addClass(evt.target, 'hover');
		});
		nodes.connect('onmouseout', function(evt) {
			dojo.removeClass(evt.target, 'hover');
		});
	}
	
	 function onButton() {
	 	var self = this;
		
		slideOut({onEnd: function() {
			var main_pane = dijit.byId('mainShell');
			newPane = self.id;
			newPath= thePath+newPane+'.html';
			main_pane.setHref(newPath);
		}});
		var n= dojo.query('.lnCur');
		dojo.removeClass(n[0], 'lnCur');
		dojo.addClass(this, 'lnCur');
	}
	
	function slideOut(callOpts)
	{
		var opts = { direction: 'out'};
		dojo.mixin(opts, callOpts);
		slide(opts);
	}
	
	function slideIn(callOpts)
	{
		var opts = { direction: 'in'};
		dojo.mixin(opts, callOpts);
		slide(opts);
		setStdRollovers('.paneL .dijitAccordionTitle, .paneR .dijitAccordionTitle');
	}
	
	function slide(callOpts)
	{
		var opts = {
			direction: 'in',
			query: '.slideContent',
			onEnd: null,
			duration: 200
		};
		dojo.mixin(opts, callOpts);
		
		var parameters = [];
		dojo.forEach(dojo.query(opts.query), function(node) {
			var coords = dojo.coords(node);
			if (opts.direction == 'in')
			{
				var start = -coords.w;
				var end = 1;
			}
			else 
			{
				start = 1;
				end = -coords.w;
			}
			parameters.push({
				node: node,
				duration: opts.duration,
				properties: {
					left: { start: start, end: end, unit: 'px' }
				}
			});
		});
		if (opts.onEnd && parameters.length > 0)
		{
			parameters[parameters.length - 1].onEnd = opts.onEnd;
		}
		var animations = [];
		dojo.forEach(parameters, function(parameter) {
			animations.push(dojo.animateProperty(parameter));
		});
		if (animations.length == 1) 
		{
			animations[0].play();
		} else if (animations.length > 1)
		{
			dojo.fx.combine(animations).play();
		}
	}
	

	  function sizeBackground() {
	    var n = dojo.byId('bg');
	  	var v = dijit.getViewport();
		var nh= n.style.height;//ie hack\
		//dojo.style('myBGimg','visibility','hidden');
		if ((v.w/v.h) > (aspRatio)) {
			n.style.width= v.w + 'px';
			n.style.height= v.w/aspRatio + 'px';
		} else {
			n.style.height= v.h + 'px';
			n.style.width= v.h*aspRatio+'px';
		}		
	  }
	  function setBackground(bgimg) {
			var myBG= dojo.doc.createElement("img");
			myBG.src= IMGPATH + bgimg;
			myBG.id= "myBGimg";
			n= dojo.byId('backDiv');
			//n.innerHTML ='<img src="' + myBG.src + '" width = "100%" height = "100%" >' ;
			dojo.place(myBG,dojo.byId('backDiv'),'first');
			myBG.style.width= '100%';
			myBG.style.height= '100%';
			//sizeBackground();
	  }
	  		function setPageTitle(){
				n= dojo.byId('pt');
				i = dojo.doc.createElement('img');
				i.src= IMGPATH+'pageTitle_'+thisPage+'.png';
				i.id= "ptimg";
				i.className= 'transimg';
				n.appendChild(i);
			}
	function setBorder() {
			id = dojo.byId('borderShell')
			var nw= dojo.style(id, "width");
			var nh= dojo.style(id, "height");
			var v = dijit.getViewport();
			if (nw < v.w ){dojo.style(id, 'left', (v.w-nw)/2 +'px')} else {dojo.style(id, 'left', '0px')} 
			if (nh < v.h ){dojo.style(id, 'top', (v.h-nh)/2 +'px')} else {dojo.style(id, 'top', HEADHT)}		
			}
			
	function addScroller(node) {
		dojo.forEach(dojo.query('.flexcroll', node), function(node) {
			// If the element has no layout, flexcroll doesn't work.
			if (node.clientHeight == 0) {
				var parentNode = node.parentNode;
				var topSave = node.style.top;
				var visibilitySave = node.style.visibility;
				var positionSave = node.style.position;
				parentNode.removeChild(node);
				node.style.top = "0";
				node.style.position = "absolute";
				node.style.visibility = "hidden";
				document.body.appendChild(node);
				fleXenv.fleXcrollMain(node);
				// now the scroller elements have visibilty: hidden
				dojo.forEach(dojo.query('.scrollwrapper div'), function(hnode) {
					if (hnode.style.visibility == 'hidden') {
						hnode.style.visibility = 'visible';
					}
				});
				document.body.removeChild(node);
				node.style.top = topSave;
				node.style.position = positionSave;
				node.style.visibility = visibilitySave;
				parentNode.appendChild(node);
			}
			else 
			{
				fleXenv.fleXcrollMain(node);
			}
			var customscroller = dojo.query('.vscrollerbar', node)[0];
			dojo.connect(customscroller, 'onmouseover', function(evt) {
				dojo.addClass(customscroller, 'hover');
			});
			dojo.connect(customscroller, 'onmouseout', function(evt) {
				dojo.removeClass(customscroller, 'hover');
			});
			
		});
	}
				
// This provides us with dojo.generateId()
(function(d){
  // wrapped in this function to keep a local copy of some vars:
  var globalId, id_count = 0, base = "djid_";
  // the function:
  d.generateId = function(altBase){
     do{ globalId = (altBase || base) + (++id_count) }
     while(d.byId(globalId));
     return globalId;
  }
})(dojo);

