var ncSplash=Class.create();ncSplash.prototype={initialize:function(splashContainer,carousels)
{this.splashContainer=$(splashContainer);this.carousels=carousels;this.carouselStarted=true;this.addEventListeners();},addEventListeners:function()
{this.imageAnchors=this.splashContainer.select('a');this.ncFeatureList=this.splashContainer.select('div.ncFeature');this.overlays=this.splashContainer.select('div.overlay');this.ncFeatureList.each(function(anchor){Event.observe(anchor,'mouseover',this.hover.bindAsEventListener(this));Event.observe(anchor,'mouseout',this.hoverOut.bindAsEventListener(this));},this);this.overlays.each(function(overlay){Event.observe(overlay,'mouseover',this.hover.bindAsEventListener(this));},this);},hover:function(e)
{this.selected=Event.element(e).up('div.ncFeature');if(this.selected!=undefined){this.stopCarousels();for(var i=0;i<this.ncFeatureList.length;i++){var overlay=this.ncFeatureList[i].down('.overlay');if(this.ncFeatureList[i]==this.selected){this.ncFeatureList[i].addClassName('active');if(overlay.visible())
overlay.hide();}else{if(this.ncFeatureList[i].hasClassName('active'))
this.ncFeatureList[i].removeClassName('active');if(!overlay.visible())
overlay.show();}}}else{if(!this.carouselStarted){this.carousel.startCarousel();this.carouselStarted=true;}}},hoverOut:function(e)
{var mouseOut=e.relatedTarget;if(mouseOut!=null&&!mouseOut.descendantOf('ncFeatures')){this.restartCarousels();}
for(var i=0;i<this.ncFeatureList.length;i++){var overlay=this.ncFeatureList[i].down('.overlay');if(this.ncFeatureList[i].hasClassName('active'))
this.ncFeatureList[i].removeClassName('active');if(overlay.visible())
overlay.hide();}},restartCarousels:function(){this.carousels.each(function(element){element.restartCarousel();});},stopCarousels:function(){this.carousels.each(function(element){element.stopCarousel();});}};var ncCarousel=Class.create();ncCarousel.prototype={initialize:function(carouselContainer)
{this.carouselContainer=carouselContainer;this.active=false;this.randomId=Math.random();var descendents=Element.select(this.carouselContainer,'.ncSlideElement');if(descendents.size()>1){this.active=true;};this.startCarousel();},startCarousel:function(){if(this.active){this.periodicallyUpdate();}},restartCarousel:function(){var duration=this.listElements=this.carouselContainer.select('li').last().className.match(/time-([\d]+)/);if(duration!=null&&duration.length>1){this.duration=duration[1]*1000;}else{this.duration=10000;}
if(this.active){if(this.timer!=null){clearTimeout(this.timer);}
this.timer=setTimeout(this.periodicallyUpdate.bind(this),this.duration);}},periodicallyUpdate:function()
{var duration=this.listElements=this.carouselContainer.select('li').last().className.match(/time-([\d]+)/);if(duration!=null&&duration.length>1){this.duration=duration[1]*1000;}else{this.duration=10000;}
if(this.timer!=null){clearTimeout(this.timer);this.actionCarousel();}
this.timer=setTimeout(this.periodicallyUpdate.bind(this),this.duration);},actionCarousel:function()
{this.listElements=this.carouselContainer.select('li');var lastElement=this.listElements.last();var titleOverlay=lastElement.down('span.linkOverlay');var elementShown=Element.previous(lastElement,'li');var titleOverlayShown=elementShown.down('span.linkOverlay');var linkTextShown=elementShown.down('span.linkOverlay span.linkText');new Effect.BlindUp(titleOverlay,{duration:1.0,queue:{position:'front',scope:'carousel'+this.randomId},scaleContent:false});new Effect.Fade(lastElement,{duration:1.0,queue:{position:'end',scope:'carousel'+this.randomId}});new Effect.BlindDown(titleOverlayShown,{duration:1.0,queue:{position:'end',scope:'carousel'+this.randomId},afterFinish:function(effect){var elementToMove=lastElement;var container=lastElement.up();Element.insert(container,{top:elementToMove});elementToMove.show();}});},stopCarousel:function(){if(this.timer&&this.active){clearTimeout(this.timer);}}};function createCarouselSplash(){var i=0;var arrayCarousel=new Array();$$('div.ncFeature').each(function(element){arrayCarousel[i]=new ncCarousel(element);i++;});var splash=new ncSplash('ncFeatures',arrayCarousel);};Ajax.JSONRequest=Class.create(Ajax.Base,(function(){var id=0,head=document.getElementsByTagName('head')[0]||document.body;return{initialize:function($super,url,options){$super(options);this.options.url=url;this.options.callbackParamName=this.options.callbackParamName||'callback';this.options.timeout=this.options.timeout||10;this.options.invokeImmediately=(!Object.isUndefined(this.options.invokeImmediately))?this.options.invokeImmediately:true;if(!Object.isUndefined(this.options.parameters)&&Object.isString(this.options.parameters)){this.options.parameters=this.options.parameters.toQueryParams();}
if(this.options.invokeImmediately){this.request();}},_cleanup:function(){if(this.timeout){clearTimeout(this.timeout);this.timeout=null;}
if(this.transport&&Object.isElement(this.transport)){this.transport.remove();this.transport=null;}},request:function(){var response=new Ajax.JSONResponse(this);var key=this.options.callbackParamName,name='_prototypeJSONPCallback_'+(id++),complete=function(){if(Object.isFunction(this.options.onComplete)){this.options.onComplete.call(this,response);}
Ajax.Responders.dispatch('onComplete',this,response);}.bind(this);if(this.options.parameters[key]!==undefined){name=this.options.parameters[key];}
else{this.options.parameters[key]=name;}
this.options.parameters[key]=name;var url=this.options.url+((this.options.url.include('?')?'&':'?')+Object.toQueryString(this.options.parameters));window[name]=function(json){this._cleanup();window[name]=undefined;response.status=200;response.statusText="OK";response.setResponseContent(json);if(Object.isFunction(this.options.onSuccess)){this.options.onSuccess.call(this,response);}
Ajax.Responders.dispatch('onSuccess',this,response);complete();}.bind(this);this.transport=new Element('script',{type:'text/javascript',src:url});if(Object.isFunction(this.options.onCreate)){this.options.onCreate.call(this,response);}
Ajax.Responders.dispatch('onCreate',this);head.appendChild(this.transport);this.timeout=setTimeout(function(){this._cleanup();window[name]=Prototype.emptyFunction;if(Object.isFunction(this.options.onFailure)){response.status=504;response.statusText="Gateway Timeout";this.options.onFailure.call(this,response);}
complete();}.bind(this),this.options.timeout*1000);},toString:function(){return"[object Ajax.JSONRequest]";}};})());Ajax.JSONResponse=Class.create({initialize:function(request){this.request=request;},request:undefined,status:0,statusText:'',responseJSON:undefined,responseText:undefined,setResponseContent:function(json){this.responseJSON=json;this.responseText=Object.toJSON(json);},getTransport:function(){if(this.request)return this.request.transport;},toString:function(){return"[object Ajax.JSONResponse]";}});;var ncSearchForm=Class.create();ncSearchForm.prototype={initialize:function(query)
{this.options=Object.extend({apiKey:false,cseIdentifier:false,searchForm:undefined,searchLabel:'Search…',resultsContainer:undefined,waitingContainer:undefined,paging:true,count:10,collapse:false,resultsTemplate:'<li#{first}><a href="#{link}"#{onclick}><span class="heading">#{htmlTitle}</span><span class="url">#{link}</span><span class="summary">#{htmlSnippet}</span></a></li>'},arguments[1]||{});this.searchForm=$(this.options.searchForm);if(!this.searchForm){return;}
this.searchField=this.searchForm.down('input.search');this.searchField.writeAttribute('autocomplete','off');this.searchField.observe('focus',this.focus.bindAsEventListener(this));this.searchField.observe('blur',this.blur.bindAsEventListener(this));this.searchField.observe('keydown',this.keyDown.bindAsEventListener(this));this.searchForm.observe('submit',this.submit.bindAsEventListener(this));this.resultsContainer=$(this.options.resultsContainer);this.resultsList=this.resultsContainer.down('ol');this.waitingContainer=$(this.options.waitingContainer);this.searchCache=$H();if(query){this.searchField.setValue(query);this.search();}else{this.searchField.setValue(this.options.searchLabel);}
if(this.searchField.getValue()==this.options.searchLabel){this.searchField.addClassName('placeholder');}},keyDown:function(e)
{if(this.observer)
clearTimeout(this.observer);switch(e.keyCode){case Event.KEY_ESC:this.searchField.value='';this.close();break;case Event.KEY_RETURN:this.submit();e.stop();break;case Event.KEY_UP:this.prev();e.stop();break;case Event.KEY_DOWN:this.next();e.stop();break;default:this.observer=setTimeout(this.search.bind(this),1000);break;}},search:function()
{if(this.searchEmpty()){this.close();}else{if(!this.resultsContainer.visible()){this.showSearch();}else{this.performSearch();}}},showSearch:function()
{new Effect.BlindDown(this.resultsContainer,{duration:0.2,afterFinish:function(){this.performSearch();}.bind(this)});},performSearch:function(startIndex)
{if(this.searchEmpty()){return;}
if(!startIndex){startIndex=1;}
var value=this.searchField.getValue();if(this.currentValue==value&&startIndex<=this.currentIndex){return;}
this.currentValue=value;var searchCache=this.searchCache.get(this.currentValue+'.startIndex.'+startIndex);if(searchCache){this.populateSearch(searchCache);return;}
var cache={items:[],start:startIndex,count:0,total:0};new Ajax.JSONRequest('https://www.googleapis.com/customsearch/v1',{callbackParamName:'callback',parameters:{key:this.options.apiKey,cx:this.options.cseIdentifier,q:this.currentValue,num:this.options.count,start:startIndex},onSuccess:function(response){if(response.status===200){cache={items:response.responseJSON.items,start:parseInt(response.responseJSON.queries.request[0].startIndex),count:parseInt(response.responseJSON.queries.request[0].count),total:parseInt(response.responseJSON.queries.request[0].totalResults)}
this.currentIndex=startIndex+cache.count-1;this.searchCache.set(this.currentValue+'.startIndex.'+startIndex,cache);this.populateSearch(cache);}else{this.searchCache.set(this.currentValue+'.startIndex.'+startIndex,cache);this.populateSearch(cache);}}.bind(this),onFailure:function(response){this.searchCache.set(this.currentValue+'.startIndex.'+startIndex,cache);this.populateSearch(cache);}.bind(this)});},populateSearch:function(response)
{var more=this.resultsList.select('li.more');if(more.size()){more.invoke('remove');}
var results=new Array();if(response.items.length>0){if(response.items.length>this.options.count){response.items.length=this.options.count;}
var first=true;var resultsTemplate=new Template(this.options.resultsTemplate);response.items.each(function(result){result.first='';if(first&&response.start==1){result.first=' class="first"';first=false;}
result.onclick='';if(result.link.match(/\.pdf$/)){result.onclick=' onclick="window.open(this.href); return false;"';}
results.push(resultsTemplate.evaluate(result));});}else{results.push('<li class="first error">No results matched your query.</li>');}
if(this.options.paging&&response.total>(response.start+response.count-1)){results.push('<li class="more"><a class="clearfix" href="#show-more" rel="'+(response.start+response.count)+'"><span>Displaying first '+(response.start+response.count-1)+' results — click to show more results…</span><img src="'+_nc.baseUrl+'images/wait.gif" /></a></li>');}
if(response.start==1){this.resultsList.update(results.join(''));}else{this.resultsList.insert(results.join(''));}
more=this.resultsList.down('li.more');if(more){wait=more.down('img').setOpacity(0);more.down('a').observe('click',function(event){event.stop();more.down('a').stopObserving();more.down('a span').hide();new Effect.Opacity(wait,{to:1,duration:0.4});this.performSearch(response.start+response.count);}.bind(this));}
if(!this.resultsList.visible()){new Effect.BlindDown(this.resultsList,{duration:0.2});}
this.waitingContainer.absolutize();this.waitingContainer.hide();},focus:function(e)
{if(this.searchField.hasClassName('placeholder')){this.searchField.value='';this.searchField.removeClassName('placeholder');}else if(this.searchField.value!=''){this.search();}},blur:function(e)
{if(this.searchEmpty()){this.searchField.value='Search for it here…';this.searchField.addClassName('placeholder');}
this.closer=setTimeout(this.close.bind(this),400);},next:function()
{if(selected=this.resultsContainer.down('li.selected')){if(next=selected.next()){next.addClassName('selected');selected.removeClassName('selected');}}else{next=this.resultsContainer.down('li');if(!next.hasClassName('error')){next.addClassName('selected');}}},prev:function()
{if(selected=this.resultsContainer.down('li.selected')){selected.removeClassName('selected');if(previous=selected.previous()){previous.addClassName('selected');}}else{previous=this.resultsContainer.down('li');if(!previous.hasClassName('error')){previous.addClassName('selected');}}},close:function()
{if(!this.options.collapse){return;}
new Effect.BlindUp(this.resultsContainer,{duration:0.2,afterFinish:this.resetList.bind(this)});},submit:function()
{clearTimeout(this.closer);if(selected=this.resultsContainer.down('li.selected')){var href=selected.down('a').href;if(href.match(/^http:\/\/ncpic\.org\.au/)&&!href.match(/\.pdf$/)){window.location.href=href;}else{window.open(href);}}else{if(this.searchField.getValue()!=this.options.searchLabel&&!this.searchEmpty()){this.searchForm.submit();}}},resetList:function()
{if(this.currentValue!=this.searchField.getValue()){this.resultsList.update('');this.resultsList.hide();this.waitingContainer.relativize();this.waitingContainer.show();}},searchEmpty:function()
{if(this.searchField.getValue().strip()=='')
return true;return false;}};
