var version = 'v2.7.2 Distributable Release - 15/09/09';

/* Move breadcrumbs under tabs */
var breadcrumbController = function() {
	if (document.getElementById("tabunderscore")) {
		var tabbar = document.getElementById("tabunderscore");
		var breadcrumbs;
		var sibling = tabbar;
		while ( sibling.previousSibling ) {
		 if(sibling.className == "breadcrumb") { breadcrumbs = sibling; breadcrumbs.className = "breadcrumb moved"; };
		 sibling = sibling.previousSibling;
		}
		document.getElementById("w3").insertBefore(breadcrumbs, tabbar);
	}	
	
	if(!$('tabs') && !document.body.hasClass("splash")) {
		document.body.addClass("splash");
	}
}



var searchController = function() {
  this.searchForm = $('search');
  this.searchField = this.searchForm.query;
  
  this.focusSearchField = function () {
    if (this.value == this.title) { this.value = ''; } 
  }
  
  this.blurSearchField = function() {
    if (this.value == '') { this.value = this.title; }
  }
  
  this.checkSearchEntry = function() {
    if (this.query.value == '' || this.query.value == this.query.title) { 
      alert("Please enter some search terms");
      return false;
    } else {
      return true;
    }
  }
  
  if (searchForm) {
    this.searchField.onfocus = this.focusSearchField;
    this.searchField.onblur = this.blurSearchField;
    this.searchForm.onsubmit = this.checkSearchEntry;
  }
}


function menuController(subMenuArray) {
  
  subMenuArray = $$('#menu ul li ul');
  
  subMenuArray.each(function(item){
    var parentMenuItem = item.getParent();
    
    var expanderElement = new Element('span', {'text':'expand', 'class':'hide_text expander' });
    if(parentMenuItem.hasClass('static')) { expanderElement.addClass('open') } else { expanderElement.addClass('closed') }
    expanderElement.addEvent('click', individualHandler);
    parentMenuItem.getFirst('a').setStyle('padding-right', '16px');
    expanderElement.inject( parentMenuItem.getFirst('a'), 'after');
    
    item.set('class','unstatic');
    item.set('slide', {'duration':'short'});
    if(!parentMenuItem.hasClass('static')) {
      item.slide('hide');
    }
    
  });
  
}
  

function individualHandler() {
	var subMenu = this.getParent('li').getElement('ul');
    this.toggleClass('open');
    this.toggleClass('closed');    
    subMenu.slide('toggle');
	return false;
}


function headTrayController() {
	var currentSection = $('current-section');
	
	if (!currentSection) { return; } else { currentSection = currentSection.getFirst('a'); }
	
 	currentSection.addClass('dropdown');
 	$('head').setStyle('height', 'auto');
 	
 	var tray = $('tray');
	var trayFx = new Fx.Slide(tray);

	trayFx.hide();
	tray.setStyle('display', 'block');
	tray.setStyle('visibility', 'hidden');
	
	trayFx.addEvent('complete', function () {
		if (!currentSection.hasClass('open')) {	tray.setStyle('visibility', 'hidden'); } 		
		if (Browser.Engine.trident) { $('utilities').setStyle('z-index', '2');$('utilities').setStyle('z-index', '1'); }
	});
	
 	currentSection.addEvent('click', function() {
 		if (!currentSection.hasClass('open')) {	
 			tray.setStyle('visibility', 'visible');
 			var action = 'open';
 		} else {
 			var action = 'close';
 		}
 		urchinTracker('/_event/omnomnom/' + action);
 		trayFx.toggle();
		this.toggleClass('open');
 		return false; 
 	});
}

function oversizeContentController() {
	var p = new Element('p');
	var expandLink = new Element('a', { 'text' : 'View full size', 'style' : 'cursor:pointer; font-weight: bold;' });
	var bigObj = false;
	var contentWidth = $('w4').getSize().x;
	$$('#content table.tabledata_blue, #content img').each(function(obj, num) {
		if (obj.getSize().x > contentWidth) {
			myExpandTopLink = expandLink.clone().addEvent('click', function() { myOverlay.show(obj); return false; });
			myExpandTopLink.inject(p.clone().inject(obj, 'before'));		
			bigObj = true;
		}
	});
	if (bigObj) var myOverlay = new Overlay({overlayFixedWidth: true, centerOverlay: true});
}

function getURLParam(strURL, strParamName){
  this.strReturn = "";
  this.strURL = strURL;
  if ( strURL.indexOf("?") > -1 ){
    var strQueryString = strURL.substr(strURL.indexOf("?"));
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      if (aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){
        var aParam = aQueryString[iParam].split("=");
        this.strReturn = aParam[1];
        break;
      }
    }
  }
  return this.strReturn;
}

function mediaPlayerController() {
  var links = $$('a');
  var domain = new RegExp("^http://(cms.ucc.usyd|www.usyd|sydney).edu.au/video/play.php");
  
  var videos = new Array();
  links.each(function(item){
    if(item.href.match(domain)) videos.push(item);
  });
  
  
  videos.each(function(item){
  if (Browser.Engine.trident && Browser.Engine.version <= 4) {} else {
    item.addEvent('click', function(){
      var videoPath = getURLParam(item.href, 'video');
      var posterPath = getURLParam(item.href, 'poster');
      var downloadVideo = getURLParam(item.href, 'download');
      
      var videoContainer = new Element('div', {'id':'mbVideo'});
      var p = new Element('p');
      var downloadLink = new Element('a', {'href':videoPath, 'text':'Download', 'class': 'download'});
      
      var obj = new Swiff('http://sydney.edu.au/video/player.swf', {
        id: 'swfPlayer',
        width: 480,
        height: 290,
        params: {
          wmode: 'opaque',
          bgcolor: '#fff',
          allowfullscreen: 'true',
          quality: 'high',
          allowScriptAccess: 'sameDomain'
        },
        vars: {
          file: videoPath,
          image: posterPath,
          autostart: 'false'
        }
      });
      
      obj.inject(videoContainer);
      if(downloadVideo != 'false') {
        downloadLink.inject(p);
        p.inject(videoContainer);
      }
      
      mediaBoxOverlay.show(videoContainer, {cloneContent: false});
      urchinTracker('/_event/video/' + videoPath);
      return false;
    });
  }
    
  });
  
  if (videos.length > 0) var mediaBoxOverlay = new Overlay( { destroyContent: true } );
}

var Slimbox=(function(){var F=window,n=Browser.Engine.trident4,u,g,G=-1,o,w,E,v,y,M,s,m={},t=new Image(),K=new Image(),I,a,h,q,J,e,H,c,A,L,x,i,d,C;F.addEvent("domready",function(){$(document.body).adopt($$(I=new Element("div",{id:"lbOverlay",events:{click:D}}),a=new Element("div",{id:"lbCenter"}),H=new Element("div",{id:"lbBottomContainer"})).setStyle("display","none"));h=new Element("div",{id:"lbImage"}).injectInside(a).adopt(q=new Element("div",{styles:{position:"relative"}}).adopt(J=new Element("a",{id:"lbPrevLink",href:"#",events:{click:B}}),e=new Element("a",{id:"lbNextLink",href:"#",events:{click:f}})));c=new Element("div",{id:"lbBottom"}).injectInside(H).adopt(new Element("a",{id:"lbCloseLink",href:"#",events:{click:D}}),A=new Element("div",{id:"lbCaption"}),L=new Element("div",{id:"lbNumber"}),new Element("div",{styles:{clear:"both"}}))});function z(){var N=F.getScroll(),O=F.getSize();$$(a,H).setStyle("left",N.x+(O.x/2));if(v){I.setStyles({left:N.x,top:N.y,width:O.x,height:O.y})}}function l(N){["object",n?"select":"embed"].forEach(function(P){Array.forEach(document.getElementsByTagName(P),function(Q){if(N){Q._slimbox=Q.style.visibility}Q.style.visibility=N?"hidden":Q._slimbox})});I.style.display=N?"":"none";var O=N?"addEvent":"removeEvent";F[O]("scroll",z)[O]("resize",z);document[O]("keydown",p)}function p(O){var N=O.code;return u.closeKeys.contains(N)?D():u.nextKeys.contains(N)?f():u.previousKeys.contains(N)?B():false}function B(){return b(w)}function f(){return b(E)}function b(N){if(N>=0){G=N;o=g[N][0];w=(G||(u.loop?g.length:0))-1;E=((G+1)%g.length)||(u.loop?0:-1);r();a.className="lbLoading";m=new Image();m.onload=k;m.src=o}return false}function k(){a.className="";d.set(0);h.setStyles({backgroundImage:"url("+o+")",display:""});q.setStyle("width",m.width);$$(q,J,e).setStyle("height",m.height);A.set("html",g[G][1]||"");L.set("html",(((g.length>1)&&u.counterText)||"").replace(/{x}/,G+1).replace(/{y}/,g.length));if(w>=0){t.src=g[w][0]}if(E>=0){K.src=g[E][0]}M=h.offsetWidth;s=h.offsetHeight;var P=Math.max(0,y-(s/2)),N=0,O;if(a.offsetHeight!=s){N=i.start({height:s,top:P})}if(a.offsetWidth!=M){N=i.start({width:M,marginLeft:-M/2})}O=function(){H.setStyles({width:M,top:P+s,marginLeft:-M/2,visibility:"hidden",display:""});d.start(1)};if(N){i.chain(O)}else{O()}}function j(){if(w>=0){J.style.display=""}if(E>=0){e.style.display=""}C.set(-c.offsetHeight).start(0);H.style.visibility=""}function r(){m.onload=$empty;m.src=t.src=K.src=o;i.cancel();d.cancel();C.cancel();$$(J,e,h,H).setStyle("display","none")}function D(){if(G>=0){r();G=w=E=-1;a.style.display="none";x.cancel().chain(l).start(0)}return false}Element.implement({slimbox:function(N,O){$$(this).slimbox(N,O);return this}});Elements.implement({slimbox:function(N,Q,P){Q=Q||function(R){return[R.href,R.title]};P=P||function(){return true};var O=this;O.removeEvents("click").addEvent("click",function(){var R=O.filter(P,this);return Slimbox.open(R.map(Q),R.indexOf(this),N)});return O}});return{open:function(P,O,N){u=$extend({loop:false,overlayOpacity:0.8,overlayFadeDuration:400,resizeDuration:400,resizeTransition:false,initialWidth:250,initialHeight:250,imageFadeDuration:400,captionAnimationDuration:400,counterText:"Image {x} of {y}",closeKeys:[27,88,67],previousKeys:[37,80],nextKeys:[39,78]},N||{});x=new Fx.Tween(I,{property:"opacity",duration:u.overlayFadeDuration});i=new Fx.Morph(a,$extend({duration:u.resizeDuration,link:"chain"},u.resizeTransition?{transition:u.resizeTransition}:{}));d=new Fx.Tween(h,{property:"opacity",duration:u.imageFadeDuration,onComplete:j});C=new Fx.Tween(c,{property:"margin-top",duration:u.captionAnimationDuration});if(typeof P=="string"){P=[[P,O]];O=0}y=F.getScrollTop()+(F.getHeight()/2);M=u.initialWidth;s=u.initialHeight;a.setStyles({top:Math.max(0,y-(s/2)),width:M,height:s,marginLeft:-M/2,display:""});v=n||(I.currentStyle&&(I.currentStyle.position!="fixed"));if(v){I.style.position="absolute"}x.set(0).start(u.overlayOpacity);z();l(1);g=P;u.loop=u.loop&&(g.length>1);return b(O)}}})();

Slimbox.scanPage = function() {
	$$(document.links).filter(function(el) {
		return el.rel && el.rel.test(/^lightbox/i);
	}).slimbox({/*options*/}, null, function(el) {
		return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
	});
};
  
window.addEvent('domready', function() {  
 	headTrayController();
 	breadcrumbController();
	menuController();
	oversizeContentController();
	searchController();
	mediaPlayerController();
	Slimbox.scanPage();
	
	try {
		if ($chk(JsHook)) {
			$each(JsHook, function(hook, index){eval(hook);});
		}
	} catch (e) {}
	
 });
