
/* Merged Plone Javascript file
 * This file is dynamically assembled from separate parts.
 * Some of these parts have 3rd party licenses or copyright information attached
 * Such information is valid for that section,
 * not for the entire composite file
 * originating files are separated by - filename.js -
 */

/* - register_function.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/register_function.js?original=1
var bugRiddenCrashPronePieceOfJunk=(navigator.userAgent.indexOf('MSIE 5')!=-1&&navigator.userAgent.indexOf('Mac')!=-1)
var W3CDOM=(!bugRiddenCrashPronePieceOfJunk&&typeof document.getElementsByTagName!='undefined'&&typeof document.createElement!='undefined');var registerEventListener=undefined;if(typeof addEvent!='undefined'){registerEventListener=function(elem,event,func){addEvent(elem,event,func);return true}} else if(window.addEventListener){registerEventListener=function(elem,event,func){elem.addEventListener(event,func,false);return true}} else if(window.attachEvent){registerEventListener=function(elem,event,func){var result=elem.attachEvent("on"+event,func);return result}} else{registerEventListener=function(elem,event,func){return false}}
var unRegisterEventListener=undefined;if(typeof removeEvent!='undefined'){unRegisterEventListener=function(elem,event,func){removeEvent(element,event,func);return true}} else if(window.removeEventListener){unRegisterEventListener=function(elem,event,func){elem.removeEventListener(event,func,false);return true}} else if(window.detachEvent){unRegisterEventListener=function(elem,event,func){var result=elem.detachEvent("on"+event,func);return result}} else{unRegisterEventListener=function(elem,event,func){return false}}
var registerPloneFunction=undefined;if(typeof addDOMLoadEvent!='undefined'){registerPloneFunction=function(func){addDOMLoadEvent(func)}} else{registerPloneFunction=function(func){registerEventListener(window,"load",func)}}
function getContentArea(){if(W3CDOM){var node=document.getElementById('region-content');if(!node){node=document.getElementById('content')}
return node}}


/* - cssQuery.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/cssQuery.js?original=1
var cssQuery=function(){var version="2.0.2";var $COMMA=/\s*,\s*/;var cssQuery=function($selector,$$from){try{var $match=[];var $useCache=arguments.callee.caching&&!$$from;var $base=($$from)?($$from.constructor==Array)?$$from:[$$from]:[document];var $$selectors=parseSelector($selector).split($COMMA),i;for(i=0;i<$$selectors.length;i++){$selector=_toStream($$selectors[i]);if(isMSIE&&$selector.slice(0,3).join("")==" *#"){$selector=$selector.slice(2);$$from=_msie_selectById([],$base,$selector[1])} else $$from=$base;var j=0,$token,$filter,$arguments,$cacheSelector="";while(j<$selector.length){$token=$selector[j++];$filter=$selector[j++];$cacheSelector+=$token+$filter;$arguments="";if($selector[j]=="("){while($selector[j++]!=")"&&j<$selector.length){$arguments+=$selector[j]}
$arguments=$arguments.slice(0,-1);$cacheSelector+="("+$arguments+")"}
$$from=($useCache&&cache[$cacheSelector])?cache[$cacheSelector]:select($$from,$token,$filter,$arguments);if($useCache) cache[$cacheSelector]=$$from}
$match=$match.concat($$from)}
delete cssQuery.error;return $match} catch($error){cssQuery.error=$error;return []}};cssQuery.toString=function(){return "function cssQuery() {\n  [version "+version+"]\n}"};var cache={};cssQuery.caching=false;cssQuery.clearCache=function($selector){if($selector){$selector=_toStream($selector).join("");delete cache[$selector]} else cache={}};var modules={};var loaded=false;cssQuery.addModule=function($name,$script){if(loaded) eval("$script="+String($script));modules[$name]=new $script()};cssQuery.valueOf=function($code){return $code?eval($code):this};var selectors={};var pseudoClasses={};var AttributeSelector={match:/\[([\w-]+(\|[\w-]+)?)\s*(\W?=)?\s*([^\]]*)\]/};var attributeSelectors=[];selectors[" "]=function($results,$from,$tagName,$namespace){var $element,i,j;for(i=0;i<$from.length;i++){var $subset=getElementsByTagName($from[i],$tagName,$namespace);for(j=0;($element=$subset[j]);j++){if(thisElement($element)&&compareNamespace($element,$namespace))
$results.push($element)}}};selectors["#"]=function($results,$from,$id){var $element,j;for(j=0;($element=$from[j]);j++) if($element.id==$id) $results.push($element)};selectors["."]=function($results,$from,$className){$className=new RegExp("(^|\\s)"+$className+"(\\s|$)");var $element,i;for(i=0;($element=$from[i]);i++)
if($className.test($element.className)) $results.push($element)};selectors[":"]=function($results,$from,$pseudoClass,$arguments){var $test=pseudoClasses[$pseudoClass],$element,i;if($test) for(i=0;($element=$from[i]);i++)
if($test($element,$arguments)) $results.push($element)};pseudoClasses["link"]=function($element){var $document=getDocument($element);if($document.links) for(var i=0;i<$document.links.length;i++){if($document.links[i]==$element) return true}};pseudoClasses["visited"]=function($element){};var thisElement=function($element){return($element&&$element.nodeType==1&&$element.tagName!="!")?$element:null};var previousElementSibling=function($element){while($element&&($element=$element.previousSibling)&&!thisElement($element)) continue;return $element};var nextElementSibling=function($element){while($element&&($element=$element.nextSibling)&&!thisElement($element)) continue;return $element};var firstElementChild=function($element){return thisElement($element.firstChild)||nextElementSibling($element.firstChild)};var lastElementChild=function($element){return thisElement($element.lastChild)||previousElementSibling($element.lastChild)};var childElements=function($element){var $childElements=[];$element=firstElementChild($element);while($element){$childElements.push($element);$element=nextElementSibling($element)}
return $childElements};var isMSIE=true;var isXML=function($element){var $document=getDocument($element);return(typeof $document.mimeType=="unknown")?/\.xml$/i.test($document.URL):Boolean($document.mimeType=="XML Document")};var getDocument=function($element){return $element.ownerDocument||$element.document};var getElementsByTagName=function($element,$tagName){return($tagName=="*"&&$element.all)?$element.all:$element.getElementsByTagName($tagName)};var compareTagName=function($element,$tagName,$namespace){if($tagName=="*") return thisElement($element);if(!compareNamespace($element,$namespace)) return false;if(!isXML($element)) $tagName=$tagName.toUpperCase();return $element.tagName==$tagName};var compareNamespace=function($element,$namespace){return!$namespace||($namespace=="*")||($element.scopeName==$namespace)};var getTextContent=function($element){return $element.innerText};
function _msie_selectById($results,$from,id){var $match,i,j;for(i=0;i<$from.length;i++){if($match=$from[i].all.item(id)){if($match.id==id) $results.push($match);else if($match.length!=null){for(j=0;j<$match.length;j++){if($match[j].id==id) $results.push($match[j])}}}}
return $results};if(![].push) Array.prototype.push=function(){for(var i=0;i<arguments.length;i++){this[this.length]=arguments[i]}
return this.length};var $NAMESPACE=/\|/;
function select($$from,$token,$filter,$arguments){if($NAMESPACE.test($filter)){$filter=$filter.split($NAMESPACE);$arguments=$filter[0];$filter=$filter[1]}
var $results=[];if(selectors[$token]){selectors[$token]($results,$$from,$filter,$arguments)}
return $results};var $STANDARD_SELECT=/^[^\s>+~]/;var $$STREAM=/[\s#.:>+~()@]|[^\s#.:>+~()@]+/g;
function _toStream($selector){if($STANDARD_SELECT.test($selector)) $selector=" "+$selector;return $selector.match($$STREAM)||[]};var $WHITESPACE=/\s*([\s>+~(),]|^|$)\s*/g;var $IMPLIED_ALL=/([\s>+~,]|[^(]\+|^)([#.:@])/g;var parseSelector=function($selector){return $selector.replace($WHITESPACE,"$1").replace($IMPLIED_ALL,"$1*$2")};var Quote={toString: function(){return "'"},match:/^('[^']*')|("[^"]*")$/,test: function($string){return this.match.test($string)},add: function($string){return this.test($string)?$string:this+$string+this},remove: function($string){return this.test($string)?$string.slice(1,-1):$string}};var getText=function($text){return Quote.remove($text)};var $ESCAPE=/([\/()[\]?{}|*+-])/g;
function regEscape($string){return $string.replace($ESCAPE,"\\$1")};cssQuery.addModule("css-standard", function(){isMSIE=eval("false;/*@cc_on@if(@\x5fwin32)isMSIE=true@end@*/");if(!isMSIE){getElementsByTagName=function($element,$tagName,$namespace){return $namespace?$element.getElementsByTagNameNS("*",$tagName):$element.getElementsByTagName($tagName)};compareNamespace=function($element,$namespace){return!$namespace||($namespace=="*")||($element.prefix==$namespace)};isXML=document.contentType? function($element){return/xml/i.test(getDocument($element).contentType)}: function($element){return getDocument($element).documentElement.tagName!="HTML"};getTextContent=function($element){return $element.textContent||$element.innerText||_getTextContent($element)};
function _getTextContent($element){var $textContent="",$node,i;for(i=0;($node=$element.childNodes[i]);i++){switch($node.nodeType){case 11:case 1:$textContent+=_getTextContent($node);break;case 3:$textContent+=$node.nodeValue;break}}
return $textContent}}});cssQuery.addModule("css-level2", function(){selectors[">"]=function($results,$from,$tagName,$namespace){var $element,i,j;for(i=0;i<$from.length;i++){var $subset=childElements($from[i]);for(j=0;($element=$subset[j]);j++)
if(compareTagName($element,$tagName,$namespace))
$results.push($element)}};selectors["+"]=function($results,$from,$tagName,$namespace){for(var i=0;i<$from.length;i++){var $element=nextElementSibling($from[i]);if($element&&compareTagName($element,$tagName,$namespace))
$results.push($element)}};selectors["@"]=function($results,$from,$attributeSelectorID){var $test=attributeSelectors[$attributeSelectorID].test;var $element,i;for(i=0;($element=$from[i]);i++)
if($test($element)) $results.push($element)};pseudoClasses["first-child"]=function($element){return!previousElementSibling($element)};pseudoClasses["lang"]=function($element,$code){$code=new RegExp("^"+$code,"i");while($element&&!$element.getAttribute("lang")) $element=$element.parentNode;return $element&&$code.test($element.getAttribute("lang"))};AttributeSelector.NS_IE=/\\:/g;AttributeSelector.PREFIX="@";AttributeSelector.tests={};AttributeSelector.replace=function($match,$attribute,$namespace,$compare,$value){var $key=this.PREFIX+$match;if(!attributeSelectors[$key]){$attribute=this.create($attribute,$compare||"",$value||"");attributeSelectors[$key]=$attribute;attributeSelectors.push($attribute)}
return attributeSelectors[$key].id};AttributeSelector.parse=function($selector){$selector=$selector.replace(this.NS_IE,"|");var $match;while($match=$selector.match(this.match)){var $replace=this.replace($match[0],$match[1],$match[2],$match[3],$match[4]);$selector=$selector.replace(this.match,$replace)}
return $selector};AttributeSelector.create=function($propertyName,$test,$value){var $attributeSelector={};$attributeSelector.id=this.PREFIX+attributeSelectors.length;$attributeSelector.name=$propertyName;$test=this.tests[$test];$test=$test?$test(this.getAttribute($propertyName),getText($value)):false;$attributeSelector.test=new Function("e","return "+$test);return $attributeSelector};AttributeSelector.getAttribute=function($name){switch($name.toLowerCase()){case "id":return "e.id";case "class":return "e.className";case "for":return "e.htmlFor";case "href":if(isMSIE){return "String((e.outerHTML.match(/href=\\x22?([^\\s\\x22]*)\\x22?/)||[])[1]||'')"}}
return "e.getAttribute('" + $name.replace($NAMESPACE, ":") + "')"};AttributeSelector.tests[""]=function($attribute){return $attribute};AttributeSelector.tests["="]=function($attribute,$value){return $attribute+"=="+Quote.add($value)};AttributeSelector.tests["~="]=function($attribute,$value){return "/(^| )"+regEscape($value)+"( |$)/.test("+$attribute+")"};AttributeSelector.tests["|="]=function($attribute,$value){return "/^"+regEscape($value)+"(-|$)/.test("+$attribute+")"};var _parseSelector=parseSelector;parseSelector=function($selector){return _parseSelector(AttributeSelector.parse($selector))}});cssQuery.addModule("css-level3", function(){selectors["~"]=function($results,$from,$tagName,$namespace){var $element,i;for(i=0;($element=$from[i]);i++){while($element=nextElementSibling($element)){if(compareTagName($element,$tagName,$namespace))
$results.push($element)}}};pseudoClasses["contains"]=function($element,$text){$text=new RegExp(regEscape(getText($text)));return $text.test(getTextContent($element))};pseudoClasses["root"]=function($element){return $element==getDocument($element).documentElement};pseudoClasses["empty"]=function($element){var $node,i;for(i=0;($node=$element.childNodes[i]);i++){if(thisElement($node)||$node.nodeType==3) return false}
return true};pseudoClasses["last-child"]=function($element){return!nextElementSibling($element)};pseudoClasses["only-child"]=function($element){$element=$element.parentNode;return firstElementChild($element)==lastElementChild($element)};pseudoClasses["not"]=function($element,$selector){var $negated=cssQuery($selector,getDocument($element));for(var i=0;i<$negated.length;i++){if($negated[i]==$element) return false}
return true};pseudoClasses["nth-child"]=function($element,$arguments){return nthChild($element,$arguments,previousElementSibling)};pseudoClasses["nth-last-child"]=function($element,$arguments){return nthChild($element,$arguments,nextElementSibling)};pseudoClasses["target"]=function($element){return $element.id==location.hash.slice(1)};pseudoClasses["checked"]=function($element){return $element.checked};pseudoClasses["enabled"]=function($element){return $element.disabled===false};pseudoClasses["disabled"]=function($element){return $element.disabled};pseudoClasses["indeterminate"]=function($element){return $element.indeterminate};AttributeSelector.tests["^="]=function($attribute,$value){return "/^"+regEscape($value)+"/.test("+$attribute+")"};AttributeSelector.tests["$="]=function($attribute,$value){return "/"+regEscape($value)+"$/.test("+$attribute+")"};AttributeSelector.tests["*="]=function($attribute,$value){return "/"+regEscape($value)+"/.test("+$attribute+")"};
function nthChild($element,$arguments,$traverse){switch($arguments){case "n":return true;case "even":$arguments="2n";break;case "odd":$arguments="2n+1"}
var $$children=childElements($element.parentNode);
function _checkIndex($index){var $index=($traverse==nextElementSibling)?$$children.length-$index:$index-1;return $$children[$index]==$element};if(!isNaN($arguments)) return _checkIndex($arguments);$arguments=$arguments.split("n");var $multiplier=parseInt($arguments[0]);var $step=parseInt($arguments[1]);if((isNaN($multiplier)||$multiplier==1)&&$step==0) return true;if($multiplier==0&&!isNaN($step)) return _checkIndex($step);if(isNaN($step)) $step=0;var $count=1;while($element=$traverse($element)) $count++;if(isNaN($multiplier)||$multiplier==1)
return($traverse==nextElementSibling)?($count<=$step):($step>=$count);return($count%$multiplier)==$step}});loaded=true;return cssQuery}();

/* - plone_javascript_variables.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/plone_javascript_variables.js?original=1
var portal_url='https://ceti.cse.ohio-state.edu/ceti';var form_modified_message='Your form has not been saved. All changes you have made will be lost.';var form_resubmit_message='Your already clicked the submit button. Do you really want to submit this form again?';var external_links_open_new_window=false;var external_links_in_content_only=true;

/* - nodeutilities.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/nodeutilities.js?original=1
function wrapNode(node,wrappertype,wrapperclass){var wrapper=document.createElement(wrappertype)
wrapper.className=wrapperclass;var innerNode=node.parentNode.replaceChild(wrapper,node);wrapper.appendChild(innerNode)};
function nodeContained(innernode,outernode){var node=innernode.parentNode;while(node!=document){if(node==outernode){return true}
node=node.parentNode}
return false};
function findContainer(node,func){while(node!=null){if(func(node)){return node}
node=node.parentNode}
return false};
function hasClassName(node,class_name){return new RegExp('\\b'+class_name+'\\b').test(node.className)};
function addClassName(node,class_name){if(!node.className){node.className=class_name} else if(!hasClassName(node,class_name)){var className=node.className+" "+class_name;node.className=className.split(/\s+/).join(' ')}};
function removeClassName(node,class_name){var className=node.className;if(className){className=className.replace(new RegExp('\\b'+class_name+'\\b'),'');className=className.replace(/\s+/g,' ');node.className=className.replace(/\s+$/g,'')}};
function replaceClassName(node,old_class,new_class,ignore_missing){if(ignore_missing&&!hasClassName(node,old_class)){addClassName(node,new_class)} else{var className=node.className;if(className){className=className.replace(new RegExp('\\b'+old_class+'\\b'),new_class);className=className.replace(/\s+/g,' ');node.className=className.replace(/\s+$/g,'')}}};
function walkTextNodes(node,func,data){if(!node){return false}
if(node.hasChildNodes){for(var i=0;i<node.childNodes.length;i++){walkTextNodes(node.childNodes[i],func,data)}
if(node.nodeType==3){func(node,data)}}};
function getInnerTextCompatible(node){var result=new Array();walkTextNodes(node,
function(n,d){d.push(n.nodeValue)},result);return result.join("")};
function getInnerTextFast(node){if(node.innerText){return node.innerText} else{return getInnerTextCompatible(node)}};
function sortNodes(nodes,fetch_func,cmp_func){if(!W3CDOM){return false};var SortNodeWrapper=function(node){this.value=fetch_func(node);this.cloned_node=node.cloneNode(true);this.toString=function(){if(this.value.toString){return this.value.toString()} else{return this.value}}}
var items=new Array();for(var i=0;i<nodes.length;i++){items.push(new SortNodeWrapper(nodes[i]))}
if(cmp_func){items.sort(cmp_func)} else{items.sort()}
for(var i=0;i<items.length;i++){var dest=nodes[i];dest.parentNode.replaceChild(items[i].cloned_node,dest)}};

/* - cookie_functions.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/cookie_functions.js?original=1
function createCookie(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString()} else{expires=""}
document.cookie=name+"="+escape(value)+expires+"; path=/;"};
function readCookie(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' '){c=c.substring(1,c.length)}
if(c.indexOf(nameEQ)==0){return unescape(c.substring(nameEQ.length,c.length))}}
return null};

/* - livesearch.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/livesearch.js?original=1
var liveSearchReq=false;var t=null;var liveSearchLast="";var queryTarget="livesearch_reply?q=";var searchForm=null;var searchInput=null;var isIE=false;var _cache=new Object();var widthOffset=1;
function calculateWidth(){}
function getElementDimensions(elemID){var base=document.getElementById(elemID);var offsetTrail=base;var offsetLeft=0;var offsetTop=0;var width=0;while(offsetTrail){offsetLeft+=offsetTrail.offsetLeft;offsetTop+=offsetTrail.offsetTop;offsetTrail=offsetTrail.offsetParent}
if(navigator.userAgent.indexOf("Mac")!=-1&&typeof document.body.leftMargin!="undefined"){offsetLeft+=document.body.leftMargin;offsetTop+=document.body.topMargin}
if(!isIE)
width=searchInput.offsetWidth-widthOffset*2;else
width=searchInput.offsetWidth;return{left:offsetLeft,top:offsetTop,width:width,height:base.offsetHeight,bottom:offsetTop+base.offsetHeight,right:offsetLeft+width}}
function liveSearchInit(){searchInput=document.getElementById('searchGadget');if(searchInput==null||searchInput==undefined)
return
if(navigator.userAgent.indexOf("KHTML")>0){searchInput.addEventListener("keydown",liveSearchKeyPress,false);searchInput.addEventListener("focus",liveSearchDoSearch,false);searchInput.addEventListener("keydown",liveSearchStart,false);searchInput.addEventListener("blur",liveSearchHideDelayed,false)} else if(searchInput.addEventListener){searchInput.addEventListener("keypress",liveSearchKeyPress,false);searchInput.addEventListener("blur",liveSearchHideDelayed,false);searchInput.addEventListener("keypress",liveSearchStart,false)} else{searchInput.attachEvent("onkeydown",liveSearchKeyPress);searchInput.attachEvent("onkeydown",liveSearchStart);searchInput.attachEvent("onblur",liveSearchHideDelayed);isIE=true}
searchInput.setAttribute("autocomplete","off");var pos=getElementDimensions('searchGadget');result=document.getElementById('LSResult');if((typeof result.offsetParent!='undefined')&&(result.offsetParent!=null)){pos.left=pos.left-result.offsetParent.offsetLeft+pos.width} else{pos.left=pos.left+pos.width}
result.style.display='none'}
function liveSearchHideDelayed(){window.setTimeout("liveSearchHide()",400)}
function liveSearchHide(){document.getElementById("LSResult").style.display="none";var highlight=document.getElementById("LSHighlight");if(highlight)
highlight.removeAttribute("id")}
function getFirstHighlight(){var set=getHits();return set[0]}
function getLastHighlight(){var set=getHits();return set[set.length-1]}
function getHits(){var res=document.getElementById("LSShadow");var set=res.getElementsByTagName('li');return set}
function findChild(object,specifier){var cur=object.firstChild;try{while(cur!=undefined){cur=cur.nextSibling;if(specifier(cur)==true)
return cur}} catch(e){};return null}
function findNext(object,specifier){var cur=object;try{while(cur!=undefined){cur=cur.nextSibling;if(cur.nodeType==3)
cur=cur.nextSibling;if(cur!=undefined){if(specifier(cur)==true)
return cur} else{break}}} catch(e){};return null}
function findPrev(object,specifier){var cur=object;try{cur=cur.previousSibling;if(cur.nodeType==3)
cur=cur.previousSibling;if(cur!=undefined){if(specifier(cur)==true)
return cur}} catch(e){};return null}
function liveSearchKeyPress(event){var highlight=document.getElementById("LSHighlight");if(event.keyCode==40){if(!highlight){highlight=getFirstHighlight()} else{highlight.removeAttribute("id");highlight=findNext(highlight, function(o){return o.className=="LSRow"})}
if(highlight)
highlight.setAttribute("id","LSHighlight");if(!isIE)
event.preventDefault()}
else if(event.keyCode==38){if(!highlight){highlight=getLastHighlight()}
else{highlight.removeAttribute("id");highlight=findPrev(highlight, function(o){return o.className=='LSRow'})}
if(highlight)
highlight.setAttribute("id","LSHighlight");if(!isIE)
event.preventDefault()}
else if(event.keyCode==27){if(highlight)
highlight.removeAttribute("id");document.getElementById("LSResult").style.display="none"}}
function liveSearchStart(event){if(t){window.clearTimeout(t)}
var code=event.keyCode;if(code!=40&&code!=38&&code!=27&&code!=37&&code!=39){t=window.setTimeout("liveSearchDoSearch()",200)}}
function liveSearchDoSearch(){if(typeof liveSearchRoot=="undefined"){if(typeof portal_url=="undefined"){liveSearchRoot=""} else{if(portal_url[portal_url.length-1]=='/'){liveSearchRoot=portal_url} else{liveSearchRoot=portal_url+'/'}}}
if(typeof liveSearchRootSubDir=="undefined"){liveSearchRootSubDir=""}
if(liveSearchLast!=searchInput.value){if(liveSearchReq&&liveSearchReq.readyState<4){liveSearchReq.abort()}
if(searchInput.value==""){liveSearchHide();return false}
if(searchInput.value.length<2){liveSearchHide();return false}
var result=_cache[searchInput.value];if(result){showResult(result);return}
liveSearchReq=new XMLHttpRequest();liveSearchReq.onreadystatechange=liveSearchProcessReqChange;liveSearchReq.open("GET",liveSearchRoot+queryTarget+encodeURIComponent(searchInput.value));liveSearchLast=searchInput.value;liveSearchReq.send(null)}}
function showResult(result){var res=document.getElementById("LSResult");res.style.display="block";var sh=document.getElementById("LSShadow");sh.innerHTML=result}
function liveSearchProcessReqChange(){if(liveSearchReq.readyState==4){try{if(liveSearchReq.status>299||liveSearchReq.status<200||liveSearchReq.responseText.length<10)
return} catch(e){return}
showResult(liveSearchReq.responseText);_cache[liveSearchLast]=liveSearchReq.responseText}}
function liveSearchSubmit(){var highlight=document.getElementById("LSHighlight");if(highlight){var target=highlight.getElementsByTagName('a')[0];window.location=liveSearchRoot+liveSearchRootSubDir+target;return false} else{return true}}
if(window.addEventListener)
window.addEventListener("load",liveSearchInit,false);else if(window.attachEvent)
window.attachEvent("onload",liveSearchInit);

/* - fullscreenmode.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/fullscreenmode.js?original=1
function toggleFullScreenMode(){var body=cssQuery('body')[0];if(document.getElementById('icon-full_screen')){var fsicon=document.getElementById('icon-full_screen')}
if(hasClassName(body,'fullscreen')){removeClassName(body,'fullscreen');createCookie('fullscreenMode','');if(fsicon){fsicon.src='fullscreenexpand_icon.gif'}} else{addClassName(body,'fullscreen');createCookie('fullscreenMode','1');if(fsicon){fsicon.src='fullscreencollapse_icon.gif'}}};
function fullscreenModeLoad(){if(document.getElementById('icon-full_screen')){var fsicon=document.getElementById('icon-full_screen')}
if(readCookie('fullscreenMode')=='1'){var body=cssQuery('body')[0];addClassName(body,'fullscreen');if(fsicon){fsicon.src='fullscreencollapse_icon.gif'}}};registerPloneFunction(fullscreenModeLoad)


/* - select_all.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/select_all.js?original=1
function selectAll(id,formName){if(formName==null){checkboxes=document.getElementsByName(id)
for(i=0;i<checkboxes.length;i++){checkboxes[i].checked=true }} else{for(i=0;i<document.forms[formName].elements.length;i++){if(document.forms[formName].elements[i].name==id){document.forms[formName].elements[i].checked=true}}}}
function deselectAll(id,formName){if(formName==null){checkboxes=document.getElementsByName(id)
for(i=0;i<checkboxes.length;i++){checkboxes[i].checked=false }} else{for(i=0;i<document.forms[formName].elements.length;i++){if(document.forms[formName].elements[i].name==id){document.forms[formName].elements[i].checked=false}}}}
function toggleSelect(selectbutton,id,initialState,formName){id=id||'ids:list'
if(selectbutton.isSelected==null){initialState=initialState||false;selectbutton.isSelected=initialState}
if(selectbutton.isSelected==false){selectbutton.setAttribute('src',portal_url+'/select_none_icon.gif');selectbutton.isSelected=true;return selectAll(id,formName)} else{selectbutton.setAttribute('src',portal_url+'/select_all_icon.gif');selectbutton.isSelected=false;return deselectAll(id,formName)}}


/* - dropdown.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/dropdown.js?original=1
function isActionMenu(node){if(hasClassName(node,'actionMenu')){return true}
return false};
function hideAllMenus(){var menus=cssQuery('dl.actionMenu');for(var i=0;i<menus.length;i++){replaceClassName(menus[i],'activated','deactivated',true)}};
function toggleMenuHandler(event){if(!event) var event=window.event;if(!W3CDOM){return true}
var container=findContainer(this,isActionMenu);if(!container){return true}
if(hasClassName(container,'activated')){replaceClassName(container,'activated','deactivated',true)} else{replaceClassName(container,'deactivated','activated',true)}
return false};
function hideMenusHandler(event){if(!event) var event=window.event;hideAllMenus();return true};
function actionMenuDocumentMouseDown(event){if(!event) var event=window.event;if(event.target)
targ=event.target;else if(event.srcElement)
targ=event.srcElement;var container=findContainer(targ,isActionMenu);if(container){return true}
hideAllMenus();return true};
function actionMenuMouseOver(event){if(!event) var event=window.event;if(!this.tagName&&(this.tagName=='A'||this.tagName=='a')){return true}
var container=findContainer(this,isActionMenu);if(!container){return true}
var menu_id=container.id;var switch_menu=false;var menus=cssQuery('dl.actionMenu');for(var i=0;i<menus.length;i++){var menu=menus[i]
if(hasClassName(menu,'activated')){switch_menu=true}
if(menu.id!=menu_id){replaceClassName(menu,'activated','deactivated',true)}}
if(switch_menu){var menu=cssQuery('#'+menu_id)[0];if(menu){replaceClassName(menu,'deactivated','activated',true)}}
return true};
function initializeMenus(){if(!W3CDOM){return false}
document.onmousedown=actionMenuDocumentMouseDown;hideAllMenus();var menu_headers=cssQuery('dl.actionMenu > dt.actionMenuHeader > a');for(var i=0;i<menu_headers.length;i++){var menu_header=menu_headers[i];menu_header.onclick=toggleMenuHandler;menu_header.onmouseover=actionMenuMouseOver}
var menu_contents=cssQuery('dl.actionMenu > dd.actionMenuContent');for(var i=0;i<menu_contents.length;i++){menu_contents[i].onclick=hideMenusHandler}};registerPloneFunction(initializeMenus);

/* - dragdropreorder.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/dragdropreorder.js?original=1
var ploneDnDReorder={}
ploneDnDReorder.dragging=null;ploneDnDReorder.table=null;ploneDnDReorder.rows=null;ploneDnDReorder.isDraggable=function(node){return hasClassName(node,'draggable')};ploneDnDReorder.doDown=function(e){if(!e) var e=window.event;var target=findContainer(this,ploneDnDReorder.isDraggable);if(target==null)
return;for(var i=0;i<ploneDnDReorder.rows.length;i++)
ploneDnDReorder.rows[i].onmousemove=ploneDnDReorder.doDrag;ploneDnDReorder.dragging=target;ploneDnDReorder.dragging._position=ploneDnDReorder.getPos(ploneDnDReorder.dragging);addClassName(ploneDnDReorder.dragging,"dragging");return false}
ploneDnDReorder.getPos=function(node){var children=node.parentNode.childNodes;var pos=0;for(var i=0;i<children.length;i++){if(node==children[i])
return pos;if(hasClassName(children[i],"draggable"))
pos++}
return null}
ploneDnDReorder.doDrag=function(e){if(!e) var e=window.event;if(!ploneDnDReorder.dragging)
return;var target=this;if(!target)
return;if(target.id!=ploneDnDReorder.dragging.id){ploneDnDReorder.swapElements(target,ploneDnDReorder.dragging)}
return false}
ploneDnDReorder.swapElements=function(child1,child2){var parent=child1.parentNode;var children=parent.childNodes;var items=new Array();for(var i=0;i<children.length;i++){var node=children[i];items[i]=node;if(node.id){removeClassName(node,"even");removeClassName(node,"odd");if(node.id==child1.id)
items[i]=child2;if(node.id==child2.id)
items[i]=child1}}
Sarissa.clearChildNodes(parent);var pos=0;for(var i=0;i<items.length;i++){var node=parent.appendChild(items[i]);if(node.id){if(pos%2)
addClassName(node,"even");else
addClassName(node,"odd");pos++}}}
ploneDnDReorder.doUp=function(e){if(!e) var e=window.event;if(!ploneDnDReorder.dragging)
return;removeClassName(ploneDnDReorder.dragging,"dragging");ploneDnDReorder.updatePositionOnServer();ploneDnDReorder.dragging._position=null;try{delete ploneDnDReorder.dragging._position} catch(e){}
ploneDnDReorder.dragging=null;for(var i=0;i<ploneDnDReorder.rows.length;i++)
ploneDnDReorder.rows[i].onmousemove=null;return false}
ploneDnDReorder.updatePositionOnServer=function(){var delta=ploneDnDReorder.getPos(ploneDnDReorder.dragging)-ploneDnDReorder.dragging._position;if(delta==0)
return;var req=new XMLHttpRequest();req.open("POST","folder_moveitem",true);req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");var item_id=ploneDnDReorder.dragging.id.substr('folder-contents-item-'.length);req.send("item_id="+item_id+"&delta:int="+delta)}
ploneDnDReorder.initializeDragDrop=function(){ploneDnDReorder.table=cssQuery("table#sortable")[0];if(!ploneDnDReorder.table)
return;ploneDnDReorder.rows=cssQuery("table#sortable > tr,"+"table#sortable > tbody > tr");var targets=cssQuery("table#sortable > tr > td,"+"table#sortable > tbody > tr > td");for(var i=0;i<targets.length;i++){if(hasClassName(targets[i],'notDraggable'))
continue;targets[i].onmousedown=ploneDnDReorder.doDown;targets[i].onmouseup=ploneDnDReorder.doUp;addClassName(targets[i],"draggingHook")}}
registerPloneFunction(ploneDnDReorder.initializeDragDrop);

/* - mark_special_links.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/mark_special_links.js?original=1
function scanforlinks(){if(!W3CDOM){return false}
if((typeof external_links_in_content_only!='undefined')&&(external_links_in_content_only==false)){links=document.getElementsByTagName('a');for(i=0;i<links.length;i++){if((links[i].getAttribute('href'))&&(links[i].className.indexOf('link-plain')==-1)){var linkval=links[i].getAttribute('href');if(linkval.toLowerCase().indexOf(window.location.protocol+'//'+window.location.host)==0){} else if(linkval.indexOf('http:')!=0){} else{links[i].setAttribute('target','_blank')}}}}
contentarea=getContentArea();if(!contentarea)
return false;links=contentarea.getElementsByTagName('a');for(i=0;i<links.length;i++){if((links[i].getAttribute('href'))&&(links[i].className.indexOf('link-plain')==-1)){var linkval=links[i].getAttribute('href');if(linkval.toLowerCase().indexOf(window.location.protocol+'//'+window.location.host)==0){} else if(linkval.indexOf('http:')!=0){protocols=['mailto','ftp','news','irc','h323','sip','callto','https','feed','webcal'];for(p=0;p<protocols.length;p++){if(linkval.indexOf(protocols[p]+':')==0){wrapNode(links[i],'span','link-'+protocols[p]);break}}} else{if(links[i].getElementsByTagName('img').length==0){wrapNode(links[i],'span','link-external')}
if((typeof external_links_open_new_window!='undefined')&&(external_links_open_new_window==true)){links[i].setAttribute('target','_blank')}}}}};registerPloneFunction(scanforlinks);

/* - collapsiblesections.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/collapsiblesections.js?original=1
function isCollapsible(node){if(hasClassName(node,'collapsible')){return true}
return false};
function toggleCollapsible(event){if(!event) var event=window.event;if(!this.tagName&&(this.tagName=='DT'||this.tagName=='dt')){return true}
var container=findContainer(this,isCollapsible);if(!container){return true}
if(hasClassName(container,'collapsedBlockCollapsible')){replaceClassName(container,'collapsedBlockCollapsible','expandedBlockCollapsible')} else if(hasClassName(container,'expandedBlockCollapsible')){replaceClassName(container,'expandedBlockCollapsible','collapsedBlockCollapsible')} else if(hasClassName(container,'collapsedInlineCollapsible')){replaceClassName(container,'collapsedInlineCollapsible','expandedInlineCollapsible')} else if(hasClassName(container,'expandedInlineCollapsible')){replaceClassName(container,'expandedInlineCollapsible','collapsedInlineCollapsible')}};
function activateCollapsibles(){if(!W3CDOM){return false}
var collapsibles=cssQuery('dl.collapsible');for(var i=0;i<collapsibles.length;i++){var collapsible=collapsibles[i];var collapsible_header=cssQuery('dt.collapsibleHeader',collapsible)[0];collapsible_header.onclick=toggleCollapsible;if(hasClassName(collapsible,'inline')){if(hasClassName(collapsible,'collapsedOnLoad')){replaceClassName(collapsible,'collapsedOnLoad','collapsedInlineCollapsible')} else{addClassName(collapsible,'expandedInlineCollapsible')}} else{if(hasClassName(collapsible,'collapsedOnLoad')){replaceClassName(collapsible,'collapsedOnLoad','collapsedBlockCollapsible')} else{addClassName(collapsible,'expandedBlockCollapsible')}}}};registerPloneFunction(activateCollapsibles);

/* - highlightsearchterms.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/highlightsearchterms.js?original=1
function highlightTermInNode(node,word){var contents=node.nodeValue;var index=contents.toLowerCase().indexOf(word.toLowerCase());if(index<0){return false};var parent=node.parentNode;if(parent.className!="highlightedSearchTerm"){var hiword=document.createElement("span");hiword.className="highlightedSearchTerm";hiword.appendChild(document.createTextNode(contents.substr(index,word.length)));parent.insertBefore(document.createTextNode(contents.substr(0,index)),node);parent.insertBefore(hiword,node);parent.insertBefore(document.createTextNode(contents.substr(index+word.length)),node);parent.removeChild(node)}}
function highlightSearchTerms(terms,startnode){if(!W3CDOM){return false};if(!terms){return false};if(!startnode){return false};for(var term_index=0;term_index<terms.length;term_index++){var term=terms[term_index];if(term.length<1)
continue;var term_lower=term.toLowerCase();if(term_lower!='not'&&term_lower!='and'&&term_lower!='or'){walkTextNodes(startnode,highlightTermInNode,term)}}}
function getSearchTermsFromURI(uri){var query;if(typeof decodeURI!='undefined'){query=decodeURI(uri)} else if(typeof unescape!='undefined'){query=unescape(uri)} else{}
var result=new Array();if(window.decodeReferrer){var referrerSearch=decodeReferrer();if(null!=referrerSearch&&referrerSearch.length>0){result=referrerSearch}}
var qfinder=new RegExp("searchterm=([^&]*)","gi");var qq=qfinder.exec(query);if(qq&&qq[1]){var terms=qq[1].replace(/\+/g,' ').split(/\s+/);for(var i=0;i<terms.length;i++){if(terms[i]!=''){result.push(terms[i])}}
return result}
return result.length==0?false:result}
function highlightSearchTermsFromURI(){if(!W3CDOM){return false};var terms=getSearchTermsFromURI(window.location.search);var contentarea=getContentArea();highlightSearchTerms(terms,contentarea)}
registerPloneFunction(highlightSearchTermsFromURI);

/* - se-highlight.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/se-highlight.js?original=1
var searchEngines=[['^http://([^.]+\\.)?google.*','q='],['^http://search\\.yahoo.*','p='],['^http://search\\.msn.*','q='],['^http://search\\.aol.*','userQuery='],['^http://(www\\.)?altavista.*','q='],['^http://(www\\.)?feedster.*','q='],['^http://search\\.lycos.*','query='],['^http://(www\\.)?alltheweb.*','q='],['^http://(www\\.)?ask\\.com.*','q=']]
function decodeReferrer(ref){if(null==ref&&document.referrer){ref=document.referrer}
if(!ref) return null;var match=new RegExp('');var seQuery='';for(var i=0;i<searchEngines.length;i++){if(!match.compile){match=new RegExp(searchEngines[i][0],'i')} else{match.compile(searchEngines[i][0],'i')}
if(ref.match(match)){if(!match.compile){match=new RegExp('^.*'+searchEngines[i][1]+'([^&]+)&?.*$','i')} else{match.compile('^.*'+searchEngines[i][1]+'([^&]+)&?.*$')}
seQuery=ref.replace(match,'$1');if(seQuery){seQuery=decodeURIComponent(seQuery);seQuery=seQuery.replace(/\'|"/, '');return seQuery.split(/[\s,\+\.]+/)}}}
return null}


/* - first_input_focus.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/first_input_focus.js?original=1
function setFocus(){if(!W3CDOM){return false};var xre=new RegExp(/\berror\b/);for(var f=0;(formnode=document.getElementsByTagName('form').item(f));f++){for(var i=0;(node=formnode.getElementsByTagName('div').item(i));i++){if(xre.exec(node.className)){for(var j=0;(inputnode=node.getElementsByTagName('input').item(j));j++){try{if(inputnode.focus){inputnode.focus();return}} catch(e){}}}}}}
registerPloneFunction(setFocus)


/* - folder_contents_filter.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/folder_contents_filter.js?original=1
function submitFolderAction(folderAction){document.folderContentsForm.action=document.folderContentsForm.action+'/'+folderAction;document.folderContentsForm.submit()}
function submitFilterAction(){document.folderContentsForm.action=document.folderContentsForm.action+'/folder_contents';filter_selection=document.getElementById('filter_selection');for(var i=0;i<filter_selection.length;i++){if(filter_selection.options[i].selected){if(filter_selection.options[i].value=='#'){document.folderContentsForm.filter_state.value='clear_view_filter'}
else{document.folderContentsForm.filter_state.value='set_view_filter'}}}
document.folderContentsForm.submit()}


/* - folder_contents_hideAddItems.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/folder_contents_hideAddItems.js?original=1
function hideTraditionalAddItemPullDown(){pullDown=document.getElementById('traditional-add-item-pulldown');if(pullDown){pullDown.style.display='none'}}
registerPloneFunction(hideTraditionalAddItemPullDown)


/* - styleswitcher.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/styleswitcher.js?original=1
function setActiveStyleSheet(title,reset,disable){if(!W3CDOM){return false};var i,a,main;for(i=0;(a=document.getElementsByTagName("link")[i]);i++){if(a.getAttribute("rel").indexOf("style")!=-1&&a.getAttribute("title")){if(a.getAttribute("title")==title){a.disabled=false}
else if(disable!=""&&a.getAttribute("title")==disable){a.disabled=true}}}
if(reset==1){var style=readCookie("wstyle");var newstyle='';if(!style){style=''}
var alls=style.split('#');for(var i=0;i<alls.length;i++){if(alls[i]!=title&&alls[i]!=disable){newstyle=newstyle.concat('#'+alls[i])}}
if(title&&title.length>0){newstyle=newstyle.concat('#'+title)}
createCookie("wstyle",newstyle,365)}};
function ensureNormalStyles(){for(i=0;(a=document.getElementsByTagName("link")[i]);i++){if(a.getAttribute("rel").indexOf("style")!=-1&&a.getAttribute("title")){if(a.getAttribute("title")=='Small Text'){a.disabled=true}
else if(a.getAttribute("title")=='Large Text'){a.disabled=true}
else if(a.getAttribute("title")=='Full Screen'){a.disabled=true}}}}
function checkFullStyle(){var style=readCookie("wstyle");if(style){var todo=style.split('#');for(var i=0;i<todo.length;i++){if(todo[i]=='Full Screen'){setActiveStyleSheet('Full Screen',0,'');return 1}}}}
function removeFullStyleAndReset(){var style=readCookie("wstyle");if(style){var todo=style.split('#');for(var i=0;i<todo.length;i++){if(todo[i]=='Full Screen'){return 1}}
setActiveStyleSheet('',0,'Full Screen')}}
function setStyle(){ensureNormalStyles();var style=readCookie("wstyle");if(style!=null){var todo=style.split('#');for(var i=0;i<todo.length;i++){setActiveStyleSheet(todo[i],0,'')}}};registerPloneFunction(setStyle);

/* - table_sorter.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/table_sorter.js?original=1
function compare(a,b){au=new String(a);bu=new String(b);if(au.charAt(4)!='-'&&au.charAt(7)!='-'){var an=parseFloat(au)
var bn=parseFloat(bu)}
if(isNaN(an)||isNaN(bn)){as=au.toLowerCase()
bs=bu.toLowerCase()
if(as>bs){return 1}
else{return-1}}
else{return an-bn}}
function getConcatenedTextContent(node){var _result="";if(node==null){return _result}
var childrens=node.childNodes;var i=0;while(i<childrens.length){var child=childrens.item(i);switch(child.nodeType){case 1:case 5:_result+=getConcatenedTextContent(child);break;case 3:case 2:case 4:_result+=child.nodeValue;break;case 6:case 7:case 8:case 9:case 10:case 11:case 12:break}
i++}
return _result}
function sort(e){var el=window.event?window.event.srcElement:e.currentTarget;var a=new Array();if(el.nodeName=='IMG') el=el.parentNode;var name=el.childNodes.item(1).nodeValue;var dad=el.parentNode;var node;for(var im=0;(node=dad.getElementsByTagName("th").item(im));im++){if(node.lastChild.nodeName=='IMG'){lastindex=node.getElementsByTagName('img').length-1;node.getElementsByTagName('img').item(lastindex).setAttribute('src',portal_url+'/arrowBlank.gif')}}
for(var i=0;(node=dad.getElementsByTagName("th").item(i));i++){var xre=new RegExp(/\bnosort\b/);if(!xre.exec(node.className)&&node.childNodes.item(1).nodeValue==name){lastindex=node.getElementsByTagName('img').length-1;node.getElementsByTagName('img').item(lastindex).setAttribute('src',portal_url+'/arrowUp.gif');break}}
var tbody=dad.parentNode.parentNode.getElementsByTagName("tbody").item(0);for(var j=0;(node=tbody.getElementsByTagName("tr").item(j));j++){a[j]=new Array();a[j][0]=getConcatenedTextContent(node.getElementsByTagName("td").item(i));a[j][1]=getConcatenedTextContent(node.getElementsByTagName("td").item(1));a[j][2]=getConcatenedTextContent(node.getElementsByTagName("td").item(0));a[j][3]=node}
if(a.length>1){a.sort(compare);if(a[0][0]==getConcatenedTextContent(tbody.getElementsByTagName("tr").item(0).getElementsByTagName("td").item(i))&&a[1][0]==getConcatenedTextContent(tbody.getElementsByTagName("tr").item(1).getElementsByTagName("td").item(i))){a.reverse();lastindex=el.getElementsByTagName('img').length-1;el.getElementsByTagName('img').item(lastindex).setAttribute('src',portal_url+'/arrowDown.gif')}}
for(var j=0;j<a.length;j++){a[j][3].className=((j%2)==0)?'odd':'even';tbody.appendChild(a[j][3])}}
function initalizeTableSort(e){if(!W3CDOM){return false};var tbls=document.getElementsByTagName('table');for(var t=0;t<tbls.length;t++){var re=new RegExp(/\blisting\b/)
var xre=new RegExp(/\bnosort\b/)
if(re.exec(tbls[t].className)&&!xre.exec(tbls[t].className)){try{var thead=tbls[t].getElementsByTagName("thead").item(0);var node;blankarrow=document.createElement('img');blankarrow.setAttribute('src',portal_url+'/arrowBlank.gif');blankarrow.setAttribute('height',6);blankarrow.setAttribute('width',9);initialsort=false;for(var i=0;(node=thead.getElementsByTagName("th").item(i));i++){if(!xre.exec(node.className)){node.insertBefore(blankarrow.cloneNode(1),node.firstChild);node.style.cursor='pointer';if(!initialsort){initialsort=true;uparrow=document.createElement('img');uparrow.setAttribute('src',portal_url+'/arrowUp.gif');uparrow.setAttribute('height',6);uparrow.setAttribute('width',9);node.appendChild(uparrow)} else{node.appendChild(blankarrow.cloneNode(1))}
if(node.addEventListener) node.addEventListener("click",sort,false);else if(node.attachEvent) node.attachEvent("onclick",sort)}}} catch(er){}}}}
registerPloneFunction(initalizeTableSort)


/* - calendar_formfield.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/calendar_formfield.js?original=1
function onJsCalendarDateUpdate(cal){var year=cal.params.input_id_year;var month=cal.params.input_id_month;var day=cal.params.input_id_day;var daystr=''+cal.date.getDate();if(daystr.length==1)
daystr='0'+daystr;var monthstr=''+(cal.date.getMonth()+1);if(monthstr.length==1)
monthstr='0'+monthstr;cal.params.inputField.value=''+cal.date.getFullYear()+'/'+monthstr+'/'+daystr
year.value=cal.params.inputField.value.substring(0,4);month.value=cal.params.inputField.value.substring(5,7);day.value=cal.params.inputField.value.substring(8,10)}
function showJsCalendar(input_id_anchor,input_id,input_id_year,input_id_month,input_id_day,input_id_hour,input_id_minute,yearStart,yearEnd){var input_id_anchor=document.getElementById(input_id_anchor);var input_id=document.getElementById(input_id);var input_id_year=document.getElementById(input_id_year);var input_id_month=document.getElementById(input_id_month);var input_id_day=document.getElementById(input_id_day);var format='y/mm/dd';var dateEl=input_id;var mustCreate=false;var cal=window.calendar;var params={'range':[yearStart,yearEnd],inputField:input_id,input_id_year:input_id_year,input_id_month:input_id_month,input_id_day:input_id_day};
function param_default(pname,def){if(typeof params[pname]=="undefined"){params[pname]=def}};param_default("inputField",null);param_default("displayArea",null);param_default("button",null);param_default("eventName","click");param_default("ifFormat","%Y/%m/%d");param_default("daFormat","%Y/%m/%d");param_default("singleClick",true);param_default("disableFunc",null);param_default("dateStatusFunc",params["disableFunc"]);param_default("dateText",null);param_default("firstDay",1);param_default("align","Bl");param_default("range",[1900,2999]);param_default("weekNumbers",true);param_default("flat",null);param_default("flatCallback",null);param_default("onSelect",null);param_default("onClose",null);param_default("onUpdate",null);param_default("date",null);param_default("showsTime",false);param_default("timeFormat","24");param_default("electric",true);param_default("step",2);param_default("position",null);param_default("cache",false);param_default("showOthers",false);param_default("multiple",null);if(!(cal&&params.cache)){window.calendar=cal=new Calendar(params.firstDay,null,onJsCalendarDateUpdate,
function(cal){cal.hide()});cal.time24=true;cal.weekNumbers=true;mustCreate=true} else{cal.hide()}
cal.showsOtherMonths=false;cal.yearStep=2;cal.setRange(yearStart,yearEnd);cal.params=params;cal.setDateStatusHandler(null);cal.getDateText=null;cal.setDateFormat(format);if(mustCreate)
cal.create();cal.refresh();if(!params.position)
cal.showAtElement(input_id_anchor,null);else
cal.showAt(params.position[0],params.position[1]);return false}
function update_date_field(field,year,month,day,hour,minute,ampm){var field=document.getElementById(field)
var date=document.getElementById(date)
var year=document.getElementById(year)
var month=document.getElementById(month)
var day=document.getElementById(day)
var hour=document.getElementById(hour)
var minute=document.getElementById(minute)
var ampm=document.getElementById(ampm)
if(0<year.value){field.value=year.value+"-"+month.value+"-"+day.value+" "+hour.value+":"+minute.value
if(ampm&&ampm.value)
field.value=field.value+" "+ampm.value}
else{field.value=''
month.options[0].selected=1
day.options[0].selected=1
hour.options[0].selected=1
minute.options[0].selected=1
if(ampm&&ampm.options)
ampm.options[0].selected=1}}


/* - calendarpopup.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/calendarpopup.js?original=1
function showDay(date){document.getElementById('day'+date).style.visibility='visible';return true}
function hideDay(date){document.getElementById('day'+date).style.visibility='hidden';return true}


/* - ie5fixes.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/ie5fixes.js?original=1
function hackPush(el){this[this.length]=el}
function hackPop(){var N=this.length-1,el=this[N];this.length=N
return el}
function hackShift(){var one=this[0],N=this.length;for(var i=1;i<N;i++){this[i-1]=this[i]}
this.length=N-1
return one}
var testPushPop=new Array();if(testPushPop.push){}else{Array.prototype.push=hackPush
Array.prototype.pop=hackPop
Array.prototype.shift=hackShift}


/* - formUnload.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/formUnload.js?original=1
if(!window.beforeunload)(function(){var BeforeUnloadHandler=function(){var self=this;this.message=window.form_modified_message||"Your form has not been saved. All changes you have made will be lost.";this.forms=[];this.chkId=[];this.chkType=new this.CheckType();this.handlers=[this.isAnyFormChanged];this.submitting=false;this.execute=function(event){if(self.submitting) return;if(!event) event=window.event;for(var i=0;i<self.handlers.length;i++){var fn=self.handlers[i];var message=message||fn.apply(self)}
if(message===true) message=self.message;if(message===false) message=undefined;if(event&&message){event.returnValue=message}
return message}
this.execute.tool=this}
var Class=BeforeUnloadHandler.prototype;Class.isAnyFormChanged=function(){for(var i=0;i<this.forms.length;i++){var form=this.forms[i];if(this.isElementChanged(form)){return true}}
return false}
Class.addHandler=function(fn){this.handlers.push(fn)}
Class.onsubmit=function(){var tool=window.onbeforeunload&&window.onbeforeunload.tool;tool.submitting=true}
Class.addForm=function(form){for(var i=0;i<this.forms.length;i++){if(this.forms[i]==form) return}
this.forms.push(form);form.onsubmit=this.onsubmit;var elements=form.getElementsByTagName('input');for(var j=0;j<elements.length;j++){var ele=elements[j];if(ele.type=='hidden'){ele.setAttribute('originalValue',ele.defaultValue)}}}
Class.addForms=function(){for(var i=0;i<arguments.length;i++){var element=arguments[i];if(!element) continue;if(element.tagName=='FORM'){this.addForm(element)}
else{var forms=element.getElementsByTagName('form');for(var j=0;j<forms.length;j++){this.addForm(forms[j])}}}}
Class.removeForms=function(){for(var i=0;i<arguments.length;i++){var element=arguments[i];if(!element) continue;if(element.tagName=='FORM'){for(var j=0;j<arguments.length;j++){if(this.forms[j]==element){this.forms.splice(j--,1);element.onsubmit=null}}} else{var forms=element.getElementsByTagName('form');for(var j=0;j<forms.length;j++){this.removeForms(forms[j])}}}}
Class.CheckType=function(){};var c=Class.CheckType.prototype;c.checkbox=c.radio=function(ele){return ele.checked!=ele.defaultChecked}
c.password=c.textarea=c.text=function(ele){return ele.value!=ele.defaultValue}
c.hidden=function(ele){var orig=ele.getAttribute("originalValue");return orig&&(ele.value!=orig)}
c['select-one']=function(ele){for(var i=0 ;i<ele.length;i++){var opt=ele.options[i];if(opt.selected!=opt.defaultSelected){if(i===0&&opt.selected) continue;return true}}
return false}
c['select-multiple']=function(ele){for(var i=0 ;i<ele.length;i++){var opt=ele.options[i];if(opt.selected!=opt.defaultSelected){return true}}
return false}
Class.chk_form=function(form){var elements=form.elements;for(var i=0;i<elements.length;i++){var element=elements[i];if(this.isElementChanged(element)){return true}}
return false}
Class.isElementChanged=function(ele){var method=ele.id&&this.chkId[ele.id];if(!method&&ele.type&&ele.name)
method=this.chkType[ele.type];if(!method&&ele.tagName)
method=this['chk_'+ele.tagName.toLowerCase()];return method?method.apply(this,[ele]):false};window.onbeforeunload=new BeforeUnloadHandler().execute;registerPloneFunction(function(){if(!W3CDOM){return false};var tool=window.onbeforeunload&&window.onbeforeunload.tool;var content=getContentArea();if(tool&&content){var forms=cssQuery('form.enableUnloadProtection');for(var i=0;i<forms.length;i++){tool.addForm(forms[i])}}})})();

/* - sarissa.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/sarissa.js?original=1
function Sarissa(){};Sarissa.PARSED_OK="Document contains no parsing errors";Sarissa.IS_ENABLED_TRANSFORM_NODE=false;Sarissa.IS_ENABLED_XMLHTTP=false;Sarissa.IS_ENABLED_SELECT_NODES=false;var _sarissa_iNsCounter=0;var _SARISSA_IEPREFIX4XSLPARAM="";var _SARISSA_HAS_DOM_IMPLEMENTATION=document.implementation&&true;var _SARISSA_HAS_DOM_CREATE_DOCUMENT=_SARISSA_HAS_DOM_IMPLEMENTATION&&document.implementation.createDocument;var _SARISSA_HAS_DOM_FEATURE=_SARISSA_HAS_DOM_IMPLEMENTATION&&document.implementation.hasFeature;var _SARISSA_IS_MOZ=_SARISSA_HAS_DOM_CREATE_DOCUMENT&&_SARISSA_HAS_DOM_FEATURE;var _SARISSA_IS_SAFARI=navigator.userAgent.toLowerCase().indexOf("applewebkit")!=-1;var _SARISSA_IS_IE=document.all&&window.ActiveXObject&&navigator.userAgent.toLowerCase().indexOf("msie")>-1&&navigator.userAgent.toLowerCase().indexOf("opera")==-1;if(!window.Node||!window.Node.ELEMENT_NODE){var Node={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12}};if(_SARISSA_IS_IE){_SARISSA_IEPREFIX4XSLPARAM="xsl:";var _SARISSA_DOM_PROGID="";var _SARISSA_XMLHTTP_PROGID="";pickRecentProgID=function(idList,enabledList){var bFound=false;for(var i=0;i<idList.length&&!bFound;i++){try{var oDoc=new ActiveXObject(idList[i]);o2Store=idList[i];bFound=true;for(var j=0;j<enabledList.length;j++)
if(i<=enabledList[j][1])
Sarissa["IS_ENABLED_"+enabledList[j][0]]=true}catch(objException){}};if(!bFound)
throw "Could not retreive a valid progID of Class: "+idList[idList.length-1]+". (original exception: "+e+")";idList=null;return o2Store};_SARISSA_DOM_PROGID=pickRecentProgID(["Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","Msxml2.DOMDocument.3.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"],[["SELECT_NODES",2],["TRANSFORM_NODE",2]]);_SARISSA_XMLHTTP_PROGID=pickRecentProgID(["Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"],[["XMLHTTP",4]]);_SARISSA_THREADEDDOM_PROGID=pickRecentProgID(["Msxml2.FreeThreadedDOMDocument.5.0","MSXML2.FreeThreadedDOMDocument.4.0","MSXML2.FreeThreadedDOMDocument.3.0"]);_SARISSA_XSLTEMPLATE_PROGID=pickRecentProgID(["Msxml2.XSLTemplate.5.0","Msxml2.XSLTemplate.4.0","MSXML2.XSLTemplate.3.0"],[["XSLTPROC",2]]);pickRecentProgID=null;Sarissa.getDomDocument=function(sUri,sName){var oDoc=new ActiveXObject(_SARISSA_DOM_PROGID);if(sName){if(sUri){oDoc.loadXML("<a"+_sarissa_iNsCounter+":"+sName+" xmlns:a"+_sarissa_iNsCounter+"=\""+sUri+"\" />");++_sarissa_iNsCounter}
else
oDoc.loadXML("<"+sName+"/>")};return oDoc};Sarissa.getParseErrorText=function(oDoc){var parseErrorText=Sarissa.PARSED_OK;if(oDoc.parseError!=0){parseErrorText="XML Parsing Error: "+oDoc.parseError.reason+"\nLocation: "+oDoc.parseError.url+"\nLine Number "+oDoc.parseError.line+", Column "+oDoc.parseError.linepos+":\n"+oDoc.parseError.srcText+"\n";for(var i=0;i<oDoc.parseError.linepos;i++){parseErrorText+="-"};parseErrorText+="^\n"};return parseErrorText};Sarissa.setXpathNamespaces=function(oDoc,sNsSet){oDoc.setProperty("SelectionLanguage","XPath");oDoc.setProperty("SelectionNamespaces",sNsSet)};XSLTProcessor=function(){this.template=new ActiveXObject(_SARISSA_XSLTEMPLATE_PROGID);this.processor=null};XSLTProcessor.prototype.importStylesheet=function(xslDoc){var converted=new ActiveXObject(_SARISSA_THREADEDDOM_PROGID);converted.loadXML(xslDoc.xml);this.template.stylesheet=converted;this.processor=this.template.createProcessor();this.paramsSet=new Array()};XSLTProcessor.prototype.transformToDocument=function(sourceDoc){this.processor.input=sourceDoc;var outDoc=new ActiveXObject(_SARISSA_DOM_PROGID);this.processor.output=outDoc;this.processor.transform();return outDoc};XSLTProcessor.prototype.transformToFragment=function(sourceDoc,ownerDocument){return this.transformToDocument(sourceDoc)};XSLTProcessor.prototype.setParameter=function(nsURI,name,value){if(nsURI){this.processor.addParameter(name,value,nsURI)}else{this.processor.addParameter(name,value)};if(!this.paramsSet[""+nsURI]){this.paramsSet[""+nsURI]=new Array()};this.paramsSet[""+nsURI][name]=value};XSLTProcessor.prototype.getParameter=function(nsURI,name){if(this.paramsSet[""+nsURI]&&this.paramsSet[""+nsURI][name])
return this.paramsSet[""+nsURI][name];else
return null}}
else{if(_SARISSA_HAS_DOM_CREATE_DOCUMENT){if(window.XMLDocument){XMLDocument.prototype.onreadystatechange=null;XMLDocument.prototype.readyState=0;XMLDocument.prototype.parseError=0;var _SARISSA_SYNC_NON_IMPLEMENTED=false;try{XMLDocument.prototype.async=true;_SARISSA_SYNC_NON_IMPLEMENTED=true}catch(e){};XMLDocument.prototype._sarissa_load=XMLDocument.prototype.load;XMLDocument.prototype.load=function(sURI){var oDoc=document.implementation.createDocument("","",null);Sarissa.copyChildNodes(this,oDoc);this.parseError=0;Sarissa.__setReadyState__(this,1);try{if(this.async==false&&_SARISSA_SYNC_NON_IMPLEMENTED){var tmp=new XMLHttpRequest();tmp.open("GET",sURI,false);tmp.send(null);Sarissa.__setReadyState__(this,2);Sarissa.copyChildNodes(tmp.responseXML,this);Sarissa.__setReadyState__(this,3)}
else{this._sarissa_load(sURI)}}
catch(objException){this.parseError=-1}
finally{if(this.async==false){Sarissa.__handleLoad__(this)}};return oDoc}};Sarissa.__handleLoad__=function(oDoc){if(!oDoc.documentElement||oDoc.documentElement.tagName=="parsererror")
oDoc.parseError=-1;Sarissa.__setReadyState__(oDoc,4)};_sarissa_XMLDocument_onload=function(){Sarissa.__handleLoad__(this)};Sarissa.__setReadyState__=function(oDoc,iReadyState){oDoc.readyState=iReadyState;if(oDoc.onreadystatechange!=null&&typeof oDoc.onreadystatechange=="function")
oDoc.onreadystatechange()};Sarissa.getDomDocument=function(sUri,sName){var oDoc=document.implementation.createDocument(sUri?sUri:"",sName?sName:"",null);oDoc.addEventListener("load",_sarissa_XMLDocument_onload,false);return oDoc}}};if(!window.DOMParser){DOMParser=function(){};DOMParser.prototype.parseFromString=function(sXml,contentType){var doc=Sarissa.getDomDocument();doc.loadXML(sXml);return doc}};if(window.XMLHttpRequest){Sarissa.IS_ENABLED_XMLHTTP=true}
else if(_SARISSA_IS_IE){XMLHttpRequest=function(){return new ActiveXObject(_SARISSA_XMLHTTP_PROGID)};Sarissa.IS_ENABLED_XMLHTTP=true};if(!window.document.importNode&&_SARISSA_IS_IE){try{window.document.importNode=function(oNode,bChildren){var importNode=document.createElement("div");if(bChildren)
importNode.innerHTML=Sarissa.serialize(oNode);else
importNode.innerHTML=Sarissa.serialize(oNode.cloneNode(false));return importNode.firstChild}}catch(e){}};if(!Sarissa.getParseErrorText){Sarissa.getParseErrorText=function(oDoc){var parseErrorText=Sarissa.PARSED_OK;if(oDoc.parseError!=0){if(oDoc.documentElement.tagName=="parsererror"){parseErrorText=oDoc.documentElement.firstChild.data;parseErrorText+="\n"+oDoc.documentElement.firstChild.nextSibling.firstChild.data}
else if(oDoc.documentElement.tagName=="html"){parseErrorText=Sarissa.getText(oDoc.documentElement.getElementsByTagName("h1")[0],false)+"\n";parseErrorText+=Sarissa.getText(oDoc.documentElement.getElementsByTagName("body")[0],false)+"\n";parseErrorText+=Sarissa.getText(oDoc.documentElement.getElementsByTagName("pre")[0],false)}};return parseErrorText}};Sarissa.getText=function(oNode,deep){var s="";var nodes=oNode.childNodes;for(var i=0;i<nodes.length;i++){var node=nodes[i];var nodeType=node.nodeType;if(nodeType==Node.TEXT_NODE||nodeType==Node.CDATA_SECTION_NODE){s+=node.data}
else if(deep==true&&(nodeType==Node.ELEMENT_NODE||nodeType==Node.DOCUMENT_NODE||nodeType==Node.DOCUMENT_FRAGMENT_NODE)){s+=Sarissa.getText(node,true)}};return s};if(window.XMLSerializer){Sarissa.serialize=function(oDoc){return(new XMLSerializer()).serializeToString(oDoc)}}else{if((Sarissa.getDomDocument("","foo",null)).xml){Sarissa.serialize=function(oDoc){return oDoc.xml};XMLSerializer=function(){};XMLSerializer.prototype.serializeToString=function(oNode){return oNode.xml}}};Sarissa.stripTags=function(s){return s.replace(/<[^>]+>/g,"")};Sarissa.clearChildNodes=function(oNode){while(oNode.hasChildNodes()){oNode.removeChild(oNode.firstChild)}};Sarissa.copyChildNodes=function(nodeFrom,nodeTo,bPreserveExisting){if(!bPreserveExisting){Sarissa.clearChildNodes(nodeTo)};var ownerDoc=nodeTo.nodeType==Node.DOCUMENT_NODE?nodeTo:nodeTo.ownerDocument;var nodes=nodeFrom.childNodes;if(ownerDoc.importNode&&(!_SARISSA_IS_IE)){for(var i=0;i<nodes.length;i++){nodeTo.appendChild(ownerDoc.importNode(nodes[i],true))}}
else{for(var i=0;i<nodes.length;i++){nodeTo.appendChild(nodes[i].cloneNode(true))}}};Sarissa.moveChildNodes=function(nodeFrom,nodeTo,bPreserveExisting){if(!bPreserveExisting){Sarissa.clearChildNodes(nodeTo)};var nodes=nodeFrom.childNodes;if(nodeFrom.ownerDocument==nodeTo.ownerDocument){nodeTo.appendChild(nodes[i])}else{var ownerDoc=nodeTo.nodeType==Node.DOCUMENT_NODE?nodeTo:nodeTo.ownerDocument;if(ownerDoc.importNode&&(!_SARISSA_IS_IE)){for(var i=0;i<nodes.length;i++){nodeTo.appendChild(ownerDoc.importNode(nodes[i],true))}}
else{for(var i=0;i<nodes.length;i++){nodeTo.appendChild(nodes[i].cloneNode(true))}};Sarissa.clearChildNodes(nodeFrom)}};Sarissa.xmlize=function(anyObject,objectName,indentSpace){indentSpace=indentSpace?indentSpace:'';var s=indentSpace+'<'+objectName+'>';var isLeaf=false;if(!(anyObject instanceof Object)||anyObject instanceof Number||anyObject instanceof String||anyObject instanceof Boolean||anyObject instanceof Date){s+=Sarissa.escape(""+anyObject);isLeaf=true}else{s+="\n";var itemKey='';var isArrayItem=anyObject instanceof Array;for(var name in anyObject){s+=Sarissa.xmlize(anyObject[name],(isArrayItem?"array-item key=\""+name+"\"":name),indentSpace+"   ")};s+=indentSpace};return s+=(objectName.indexOf(' ')!=-1?"</array-item>\n":"</"+objectName+">\n")};Sarissa.escape=function(sXml){return sXml.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g, "&quot;").replace(/'/g,"&apos;")};Sarissa.unescape=function(sXml){return sXml.replace(/&apos;/g,"'").replace(/&quot;/g,"\"").replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&amp;/g,"&")};

/* - login.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/login.js?original=1
function cookiesEnabled(){var c="areYourCookiesEnabled=0";document.cookie=c;var dc=document.cookie;if(dc.indexOf(c)==-1) return 0;c="areYourCookiesEnabled=1";document.cookie=c;dc=document.cookie;if(dc.indexOf(c)==-1) return 0;document.cookie="areYourCookiesEnabled=; expires=Thu, 01-Jan-70 00:00:01 GMT";return 1}
function setLoginVars(user_name_id,alt_user_name_id,password_id,empty_password_id,js_enabled_id,cookies_enabled_id){if(js_enabled_id){el=document.getElementById(js_enabled_id);if(el){el.value=1}}
if(cookies_enabled_id){el=document.getElementById(cookies_enabled_id);if(el){el.value=cookiesEnabled()}}
if(user_name_id&&alt_user_name_id){user_name=document.getElementById(user_name_id)
alt_user_name=document.getElementById(alt_user_name_id)
if(user_name&&alt_user_name){alt_user_name.value=user_name.value}}
if(password_id&&empty_password_id){password=document.getElementById(password_id)
empty_password=document.getElementById(empty_password_id)
if(password&&empty_password){if(password.value.length==0){empty_password.value='1'} else{empty_password.value='0'}}}
return 1}
function showCookieMessage(msg_id){msg=document.getElementById(msg_id)
if(msg){if(cookiesEnabled()){msg.style.display='none'} else{msg.style.display='block'}}}
function showEnableCookiesMessage(){showCookieMessage('enable_cookies_message')}
registerPloneFunction(showEnableCookiesMessage);

/* - formsubmithelpers.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/formsubmithelpers.js?original=1
function inputSubmitOnClick(event){if(!event) var event=window.event;if(hasClassName(this,'submitting')){return confirm(window.form_resubmit_message)} else{addClassName(this,'submitting')}
return true}
function registerSubmitHandler(){var nodes=cssQuery('input[type=submit]');for(var i=0;i<nodes.length;i++){var node=nodes[i];if(!node.onclick){node.onclick=inputSubmitOnClick}}}
registerPloneFunction(registerSubmitHandler);

/* - cookiemonster.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/cookiemonster.js?original=1
function writeSessionCookie(cookieName,cookieValue){document.cookie=escape(cookieName)+"="+escape(cookieValue)+"; path=/"}
function getCookieValue(cookieName){var exp=new RegExp(escape(cookieName)+"=([^;]+)");if(exp.test(document.cookie+";")){exp.exec(document.cookie+";");return unescape(RegExp.$1)}
else return false}
function getCookie(name){var res=getCookieValue(name);if(!res){return null}
return res}
function setCookie(name,value,expires,path,domain,secure){var curCookie=name+"="+escape(value)+((expires)?"; expires="+expires.toGMTString():"")+((path)?"; path="+path:"")+((domain)?"; domain="+domain:"")+((secure)?"; secure":"");document.cookie=curCookie}
function writePersistentCookie(CookieName,CookieValue,periodType,offset){var expireDate=new Date();offset=offset/1;var myPeriodType=periodType;switch(myPeriodType.toLowerCase()){case "years":expireDate.setYear(expireDate.getFullYear()+offset);break;case "months":expireDate.setMonth(expireDate.getMonth()+offset);break;case "days":expireDate.setDate(expireDate.getDate()+offset);break;case "hours":expireDate.setHours(expireDate.getHours()+offset);break;case "minutes":expireDate.setMinutes(expireDate.getMinutes()+offset);break;default:alert("Invalid periodType parameter for writePersistentCookie()");break}
document.cookie=escape(CookieName)+"="+escape(CookieValue)+"; expires="+expireDate.toGMTString()+"; path=/"}
function deleteCookie(cookieName){if(getCookieValue(cookieName)) writePersistentCookie(cookieName,"Pending delete","years",-1);return true}


/* - domload.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/domload.js?original=1
var d=document;var ndc=new Array();var coc=new Array();var kg=true;
function zelph_onDOMload(dtw,ctr){es=zelph_getElementsBySelector(dtw);if(ndc[dtw]==null){ndc[dtw]=0;coc[coc.length]="zelph_onDOMload('" + dtw + "', '" + ctr + "')"}
if(es.length>ndc[dtw]){nes=es.length;for(var x=ndc[dtw];x<nes;x++){theTarget=es[x];eval(ctr)}
ndc[dtw]=nes}
if(kg==true){setTimeout("zelph_onDOMload('" + dtw + "', '" + ctr + "')",100)}
return true}
function zelph_getElementsBySelector(selector){var i;var s=[];var selid="";var selclass="";var tag=selector;var objlist=[];if(selector.indexOf(" ")>0){s=selector.split(" ");var fs=s[0].split("#");if(fs.length==1) return(objlist);if(d.getElementById(fs[1])){return(d.getElementById(fs[1]).getElementsByTagName(s[1]))}
return false}
if(selector.indexOf("#")>0){s=selector.split("#");tag=s[0];selid=s[1]}
if(selid!=""){if(d.getElementById(selid)){objlist.push(d.getElementById(selid));return(objlist)}
return false}
if(selector.indexOf(".")>0){s=selector.split(".");tag=s[0];selclass=s[1]}
var v=d.getElementsByTagName(tag);if(selclass=="")return(v);for(i=0;i<v.length;i++){curClass=" "+v[i].className+" ";if(curClass.indexOf(" "+selclass+" ")!="-1"){objlist.push(v[i])}}
return(objlist)}
function zelph_stopIt(){kg="";for(x=0;x<coc.length;x++){eval(coc[x])}}


/* - prototype.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/prototype.js?original=1
var Prototype={Version:'1.5.0_rc0',ScriptFragment:'(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',emptyFunction: function(){},K: function(x){return x}}
var Class={create: function(){return function(){this.initialize.apply(this,arguments)}}}
var Abstract=new Object();Object.extend=function(destination,source){for(var property in source){destination[property]=source[property]}
return destination}
Object.inspect=function(object){try{if(object==undefined) return 'undefined';if(object==null) return 'null';return object.inspect?object.inspect():object.toString()} catch(e){if(e instanceof RangeError) return '...';throw e}}
Function.prototype.bind=function(){var __method=this,args=$A(arguments),object=args.shift();return function(){return __method.apply(object,args.concat($A(arguments)))}}
Function.prototype.bindAsEventListener=function(object){var __method=this;return function(event){return __method.call(object,event||window.event)}}
Object.extend(Number.prototype,{toColorPart: function(){var digits=this.toString(16);if(this<16) return '0'+digits;return digits},succ: function(){return this+1},times: function(iterator){$R(0,this,true).each(iterator);return this}});var Try={these: function(){var returnValue;for(var i=0;i<arguments.length;i++){var lambda=arguments[i];try{returnValue=lambda();break} catch(e){}}
return returnValue}}
var PeriodicalExecuter=Class.create();PeriodicalExecuter.prototype={initialize: function(callback,frequency){this.callback=callback;this.frequency=frequency;this.currentlyExecuting=false;this.registerCallback()},registerCallback: function(){setInterval(this.onTimerEvent.bind(this),this.frequency * 1000)},onTimerEvent: function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.callback()} finally{this.currentlyExecuting=false}}}}
Object.extend(String.prototype,{gsub: function(pattern,replacement){var result='',source=this,match;replacement=arguments.callee.prepareReplacement(replacement);while(source.length>0){if(match=source.match(pattern)){result+=source.slice(0,match.index);result+=(replacement(match)||'').toString();source=source.slice(match.index+match[0].length)} else{result+=source,source=''}}
return result},sub: function(pattern,replacement,count){replacement=this.gsub.prepareReplacement(replacement);count=count===undefined?1:count;return this.gsub(pattern, function(match){if(--count<0) return match[0];return replacement(match)})},scan: function(pattern,iterator){this.gsub(pattern,iterator);return this},truncate: function(length,truncation){length=length||30;truncation=truncation===undefined?'...':truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:this},strip: function(){return this.replace(/^\s+/,'').replace(/\s+$/,'')},stripTags: function(){return this.replace(/<\/?[^>]+>/gi,'')},stripScripts: function(){return this.replace(new RegExp(Prototype.ScriptFragment,'img'),'')},extractScripts: function(){var matchAll=new RegExp(Prototype.ScriptFragment,'img');var matchOne=new RegExp(Prototype.ScriptFragment,'im');return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||['',''])[1]})},evalScripts: function(){return this.extractScripts().map(function(script){return eval(script)})},escapeHTML: function(){var div=document.createElement('div');var text=document.createTextNode(this);div.appendChild(text);return div.innerHTML},unescapeHTML: function(){var div=document.createElement('div');div.innerHTML=this.stripTags();return div.childNodes[0]?div.childNodes[0].nodeValue:''},toQueryParams: function(){var pairs=this.match(/^\??(.*)$/)[1].split('&');return pairs.inject({}, function(params,pairString){var pair=pairString.split('=');params[pair[0]]=pair[1];return params})},toArray: function(){return this.split('')},camelize: function(){var oStringList=this.split('-');if(oStringList.length==1) return oStringList[0];var camelizedString=this.indexOf('-')==0?oStringList[0].charAt(0).toUpperCase()+oStringList[0].substring(1):oStringList[0];for(var i=1,len=oStringList.length;i<len;i++){var s=oStringList[i];camelizedString+=s.charAt(0).toUpperCase()+s.substring(1)}
return camelizedString},inspect: function(){return "'" + this.replace(/\\/g, '\\\\').replace(/'/g, '\\\'') + "'"}});String.prototype.gsub.prepareReplacement=function(replacement){if(typeof replacement=='function') return replacement;var template=new Template(replacement);return function(match){return template.evaluate(match)}}
String.prototype.parseQuery=String.prototype.toQueryParams;var Template=Class.create();Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;Template.prototype={initialize: function(template,pattern){this.template=template.toString();this.pattern=pattern||Template.Pattern},evaluate: function(object){return this.template.gsub(this.pattern, function(match){var before=match[1];if(before=='\\') return match[2];return before+(object[match[3]]||'').toString()})}}
var $break=new Object();var $continue=new Object();var Enumerable={each: function(iterator){var index=0;try{this._each(function(value){try{iterator(value,index++)} catch(e){if(e!=$continue) throw e}})} catch(e){if(e!=$break) throw e}},all: function(iterator){var result=true;this.each(function(value,index){result=result&&!!(iterator||Prototype.K)(value,index);if(!result) throw $break});return result},any: function(iterator){var result=true;this.each(function(value,index){if(result=!!(iterator||Prototype.K)(value,index))
throw $break});return result},collect: function(iterator){var results=[];this.each(function(value,index){results.push(iterator(value,index))});return results},detect: function(iterator){var result;this.each(function(value,index){if(iterator(value,index)){result=value;throw $break}});return result},findAll: function(iterator){var results=[];this.each(function(value,index){if(iterator(value,index))
results.push(value)});return results},grep: function(pattern,iterator){var results=[];this.each(function(value,index){var stringValue=value.toString();if(stringValue.match(pattern))
results.push((iterator||Prototype.K)(value,index))})
return results},include: function(object){var found=false;this.each(function(value){if(value==object){found=true;throw $break}});return found},inject: function(memo,iterator){this.each(function(value,index){memo=iterator(memo,value,index)});return memo},invoke: function(method){var args=$A(arguments).slice(1);return this.collect(function(value){return value[method].apply(value,args)})},max: function(iterator){var result;this.each(function(value,index){value=(iterator||Prototype.K)(value,index);if(result==undefined||value>=result)
result=value});return result},min: function(iterator){var result;this.each(function(value,index){value=(iterator||Prototype.K)(value,index);if(result==undefined||value<result)
result=value});return result},partition: function(iterator){var trues=[],falses=[];this.each(function(value,index){((iterator||Prototype.K)(value,index)?trues:falses).push(value)});return [trues,falses]},pluck: function(property){var results=[];this.each(function(value,index){results.push(value[property])});return results},reject: function(iterator){var results=[];this.each(function(value,index){if(!iterator(value,index))
results.push(value)});return results},sortBy: function(iterator){return this.collect(function(value,index){return{value:value,criteria:iterator(value,index)}}).sort(function(left,right){var a=left.criteria,b=right.criteria;return a<b?-1:a>b?1:0}).pluck('value')},toArray: function(){return this.collect(Prototype.K)},zip: function(){var iterator=Prototype.K,args=$A(arguments);if(typeof args.last()=='function')
iterator=args.pop();var collections=[this].concat(args).map($A);return this.map(function(value,index){return iterator(collections.pluck(index))})},inspect: function(){return '#<Enumerable:'+this.toArray().inspect()+'>'}}
Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray});var $A=Array.from=function(iterable){if(!iterable) return [];if(iterable.toArray){return iterable.toArray()} else{var results=[];for(var i=0;i<iterable.length;i++)
results.push(iterable[i]);return results}}
Object.extend(Array.prototype,Enumerable);if(!Array.prototype._reverse)
Array.prototype._reverse=Array.prototype.reverse;Object.extend(Array.prototype,{_each: function(iterator){for(var i=0;i<this.length;i++)
iterator(this[i])},clear: function(){this.length=0;return this},first: function(){return this[0]},last: function(){return this[this.length-1]},compact: function(){return this.select(function(value){return value!=undefined||value!=null})},flatten: function(){return this.inject([], function(array,value){return array.concat(value&&value.constructor==Array?value.flatten():[value])})},without: function(){var values=$A(arguments);return this.select(function(value){return!values.include(value)})},indexOf: function(object){for(var i=0;i<this.length;i++)
if(this[i]==object) return i;return-1},reverse: function(inline){return(inline!==false?this:this.toArray())._reverse()},inspect: function(){return '['+this.map(Object.inspect).join(', ')+']'}});var Hash={_each: function(iterator){for(var key in this){var value=this[key];if(typeof value=='function') continue;var pair=[key,value];pair.key=key;pair.value=value;iterator(pair)}},keys: function(){return this.pluck('key')},values: function(){return this.pluck('value')},merge: function(hash){return $H(hash).inject($H(this), function(mergedHash,pair){mergedHash[pair.key]=pair.value;return mergedHash})},toQueryString: function(){return this.map(function(pair){return pair.map(encodeURIComponent).join('=')}).join('&')},inspect: function(){return '#<Hash:{'+this.map(function(pair){return pair.map(Object.inspect).join(': ')}).join(', ')+'}>'}}
function $H(object){var hash=Object.extend({},object||{});Object.extend(hash,Enumerable);Object.extend(hash,Hash);return hash}
ObjectRange=Class.create();Object.extend(ObjectRange.prototype,Enumerable);Object.extend(ObjectRange.prototype,{initialize: function(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive},_each: function(iterator){var value=this.start;do{iterator(value);value=value.succ()} while(this.include(value))},include: function(value){if(value<this.start)
return false;if(this.exclusive)
return value<this.end;return value<=this.end}});var $R=function(start,end,exclusive){return new ObjectRange(start,end,exclusive)}
var Ajax={getTransport: function(){return Try.these(
function(){return new XMLHttpRequest()},
function(){return new ActiveXObject('Msxml2.XMLHTTP')},
function(){return new ActiveXObject('Microsoft.XMLHTTP')})||false},activeRequestCount:0}
Ajax.Responders={responders:[],_each: function(iterator){this.responders._each(iterator)},register: function(responderToAdd){if(!this.include(responderToAdd))
this.responders.push(responderToAdd)},unregister: function(responderToRemove){this.responders=this.responders.without(responderToRemove)},dispatch: function(callback,request,transport,json){this.each(function(responder){if(responder[callback]&&typeof responder[callback]=='function'){try{responder[callback].apply(responder,[request,transport,json])} catch(e){}}})}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate: function(){Ajax.activeRequestCount++},onComplete: function(){Ajax.activeRequestCount--}});Ajax.Base=function(){};Ajax.Base.prototype={setOptions: function(options){this.options={method:'post',asynchronous:true,contentType:'application/x-www-form-urlencoded',parameters:''}
Object.extend(this.options,options||{})},responseIsSuccess: function(){return this.transport.status==undefined||this.transport.status==0||(this.transport.status>=200&&this.transport.status<300)},responseIsFailure: function(){return!this.responseIsSuccess()}}
Ajax.Request=Class.create();Ajax.Request.Events=['Uninitialized','Loading','Loaded','Interactive','Complete'];Ajax.Request.prototype=Object.extend(new Ajax.Base(),{initialize: function(url,options){this.transport=Ajax.getTransport();this.setOptions(options);this.request(url)},request: function(url){var parameters=this.options.parameters||'';if(parameters.length>0) parameters+='&_=';try{this.url=url;if(this.options.method=='get'&&parameters.length>0)
this.url+=(this.url.match(/\?/)?'&':'?')+parameters;Ajax.Responders.dispatch('onCreate',this,this.transport);this.transport.open(this.options.method,this.url,this.options.asynchronous);if(this.options.asynchronous){this.transport.onreadystatechange=this.onStateChange.bind(this);setTimeout((function(){this.respondToReadyState(1)}).bind(this),10)}
this.setRequestHeaders();var body=this.options.postBody?this.options.postBody:parameters;this.transport.send(this.options.method=='post'?body:null)} catch(e){this.dispatchException(e)}},setRequestHeaders: function(){var requestHeaders=['X-Requested-With','XMLHttpRequest','X-Prototype-Version',Prototype.Version,'Accept','text/javascript, text/html, application/xml, text/xml, */*'];if(this.options.method=='post'){requestHeaders.push('Content-type',this.options.contentType);if(this.transport.overrideMimeType)
requestHeaders.push('Connection','close')}
if(this.options.requestHeaders)
requestHeaders.push.apply(requestHeaders,this.options.requestHeaders);for(var i=0;i<requestHeaders.length;i+=2)
this.transport.setRequestHeader(requestHeaders[i],requestHeaders[i+1])},onStateChange: function(){var readyState=this.transport.readyState;if(readyState!=1)
this.respondToReadyState(this.transport.readyState)},header: function(name){try{return this.transport.getResponseHeader(name)} catch(e){}},evalJSON: function(){try{return eval('('+this.header('X-JSON')+')')} catch(e){}},evalResponse: function(){try{return eval(this.transport.responseText)} catch(e){this.dispatchException(e)}},respondToReadyState: function(readyState){var event=Ajax.Request.Events[readyState];var transport=this.transport,json=this.evalJSON();if(event=='Complete'){try{(this.options['on'+this.transport.status]||this.options['on'+(this.responseIsSuccess()?'Success':'Failure')]||Prototype.emptyFunction)(transport,json)} catch(e){this.dispatchException(e)}
if((this.header('Content-type')||'').match(/^text\/javascript/i))
this.evalResponse()}
try{(this.options['on'+event]||Prototype.emptyFunction)(transport,json);Ajax.Responders.dispatch('on'+event,this,transport,json)} catch(e){this.dispatchException(e)}
if(event=='Complete')
this.transport.onreadystatechange=Prototype.emptyFunction},dispatchException: function(exception){(this.options.onException||Prototype.emptyFunction)(this,exception);Ajax.Responders.dispatch('onException',this,exception)}});Ajax.Updater=Class.create();Object.extend(Object.extend(Ajax.Updater.prototype,Ajax.Request.prototype),{initialize: function(container,url,options){this.containers={success:container.success?$(container.success):$(container),failure:container.failure?$(container.failure):(container.success?null:$(container))}
this.transport=Ajax.getTransport();this.setOptions(options);var onComplete=this.options.onComplete||Prototype.emptyFunction;this.options.onComplete=(function(transport,object){this.updateContent();onComplete(transport,object)}).bind(this);this.request(url)},updateContent: function(){var receiver=this.responseIsSuccess()?this.containers.success:this.containers.failure;var response=this.transport.responseText;if(!this.options.evalScripts)
response=response.stripScripts();if(receiver){if(this.options.insertion){new this.options.insertion(receiver,response)} else{Element.update(receiver,response)}}
if(this.responseIsSuccess()){if(this.onComplete)
setTimeout(this.onComplete.bind(this),10)}}});Ajax.PeriodicalUpdater=Class.create();Ajax.PeriodicalUpdater.prototype=Object.extend(new Ajax.Base(),{initialize: function(container,url,options){this.setOptions(options);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=container;this.url=url;this.start()},start: function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop: function(){this.updater.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete: function(request){if(this.options.decay){this.decay=(request.responseText==this.lastText?this.decay * this.options.decay:1);this.lastText=request.responseText}
this.timer=setTimeout(this.onTimerEvent.bind(this),this.decay * this.frequency * 1000)},onTimerEvent: function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});
function $(){var results=[],element;for(var i=0;i<arguments.length;i++){element=arguments[i];if(typeof element=='string')
element=document.getElementById(element);results.push(Element.extend(element))}
return results.length<2?results[0]:results}
document.getElementsByClassName=function(className,parentElement){var children=($(parentElement)||document.body).getElementsByTagName('*');return $A(children).inject([], function(elements,child){if(child.className.match(new RegExp("(^|\\s)"+className+"(\\s|$)")))
elements.push(Element.extend(child));return elements})}
if(!window.Element)
var Element=new Object();Element.extend=function(element){if(!element) return;if(_nativeExtensions) return element;if(!element._extended&&element.tagName&&element!=window){var methods=Element.Methods,cache=Element.extend.cache;for(property in methods){var value=methods[property];if(typeof value=='function')
element[property]=cache.findOrStore(value)}}
element._extended=true;return element}
Element.extend.cache={findOrStore: function(value){return this[value]=this[value]|| function(){return value.apply(null,[this].concat($A(arguments)))}}}
Element.Methods={visible: function(element){return $(element).style.display!='none'},toggle: function(){for(var i=0;i<arguments.length;i++){var element=$(arguments[i]);Element[Element.visible(element)?'hide':'show'](element)}},hide: function(){for(var i=0;i<arguments.length;i++){var element=$(arguments[i]);element.style.display='none'}},show: function(){for(var i=0;i<arguments.length;i++){var element=$(arguments[i]);element.style.display=''}},remove: function(element){element=$(element);element.parentNode.removeChild(element)},update: function(element,html){$(element).innerHTML=html.stripScripts();setTimeout(function(){html.evalScripts()},10)},replace: function(element,html){element=$(element);if(element.outerHTML){element.outerHTML=html.stripScripts()} else{var range=element.ownerDocument.createRange();range.selectNodeContents(element);element.parentNode.replaceChild(range.createContextualFragment(html.stripScripts()),element)}
setTimeout(function(){html.evalScripts()},10)},getHeight: function(element){element=$(element);return element.offsetHeight},classNames: function(element){return new Element.ClassNames(element)},hasClassName: function(element,className){if(!(element=$(element))) return;return Element.classNames(element).include(className)},addClassName: function(element,className){if(!(element=$(element))) return;return Element.classNames(element).add(className)},removeClassName: function(element,className){if(!(element=$(element))) return;return Element.classNames(element).remove(className)},cleanWhitespace: function(element){element=$(element);for(var i=0;i<element.childNodes.length;i++){var node=element.childNodes[i];if(node.nodeType==3&&!/\S/.test(node.nodeValue))
Element.remove(node)}},empty: function(element){return $(element).innerHTML.match(/^\s*$/)},childOf: function(element,ancestor){element=$(element),ancestor=$(ancestor);while(element=element.parentNode)
if(element==ancestor) return true;return false},scrollTo: function(element){element=$(element);var x=element.x?element.x:element.offsetLeft,y=element.y?element.y:element.offsetTop;window.scrollTo(x,y)},getStyle: function(element,style){element=$(element);var value=element.style[style.camelize()];if(!value){if(document.defaultView&&document.defaultView.getComputedStyle){var css=document.defaultView.getComputedStyle(element,null);value=css?css.getPropertyValue(style):null} else if(element.currentStyle){value=element.currentStyle[style.camelize()]}}
if(window.opera&&['left','top','right','bottom'].include(style))
if(Element.getStyle(element,'position')=='static') value='auto';return value=='auto'?null:value},setStyle: function(element,style){element=$(element);for(var name in style)
element.style[name.camelize()]=style[name]},getDimensions: function(element){element=$(element);if(Element.getStyle(element,'display')!='none')
return{width:element.offsetWidth,height:element.offsetHeight};var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;els.visibility='hidden';els.position='absolute';els.display='';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display='none';els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight}},makePositioned: function(element){element=$(element);var pos=Element.getStyle(element,'position');if(pos=='static'||!pos){element._madePositioned=true;element.style.position='relative';if(window.opera){element.style.top=0;element.style.left=0}}},undoPositioned: function(element){element=$(element);if(element._madePositioned){element._madePositioned=undefined;element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right=''}},makeClipping: function(element){element=$(element);if(element._overflow) return;element._overflow=element.style.overflow;if((Element.getStyle(element,'overflow')||'visible')!='hidden')
element.style.overflow='hidden'},undoClipping: function(element){element=$(element);if(element._overflow) return;element.style.overflow=element._overflow;element._overflow=undefined}}
Object.extend(Element,Element.Methods);var _nativeExtensions=false;if(!HTMLElement&&/Konqueror|Safari|KHTML/.test(navigator.userAgent)){var HTMLElement={}
HTMLElement.prototype=document.createElement('div').__proto__}
Element.addMethods=function(methods){Object.extend(Element.Methods,methods||{});if(typeof HTMLElement!='undefined'){var methods=Element.Methods,cache=Element.extend.cache;for(property in methods){var value=methods[property];if(typeof value=='function')
HTMLElement.prototype[property]=cache.findOrStore(value)}
_nativeExtensions=true}}
Element.addMethods();var Toggle=new Object();Toggle.display=Element.toggle;Abstract.Insertion=function(adjacency){this.adjacency=adjacency}
Abstract.Insertion.prototype={initialize: function(element,content){this.element=$(element);this.content=content.stripScripts();if(this.adjacency&&this.element.insertAdjacentHTML){try{this.element.insertAdjacentHTML(this.adjacency,this.content)} catch(e){var tagName=this.element.tagName.toLowerCase();if(tagName=='tbody'||tagName=='tr'){this.insertContent(this.contentFromAnonymousTable())} else{throw e}}} else{this.range=this.element.ownerDocument.createRange();if(this.initializeRange) this.initializeRange();this.insertContent([this.range.createContextualFragment(this.content)])}
setTimeout(function(){content.evalScripts()},10)},contentFromAnonymousTable: function(){var div=document.createElement('div');div.innerHTML='<table><tbody>'+this.content+'</tbody></table>';return $A(div.childNodes[0].childNodes[0].childNodes)}}
var Insertion=new Object();Insertion.Before=Class.create();Insertion.Before.prototype=Object.extend(new Abstract.Insertion('beforeBegin'),{initializeRange: function(){this.range.setStartBefore(this.element)},insertContent: function(fragments){fragments.each((function(fragment){this.element.parentNode.insertBefore(fragment,this.element)}).bind(this))}});Insertion.Top=Class.create();Insertion.Top.prototype=Object.extend(new Abstract.Insertion('afterBegin'),{initializeRange: function(){this.range.selectNodeContents(this.element);this.range.collapse(true)},insertContent: function(fragments){fragments.reverse(false).each((function(fragment){this.element.insertBefore(fragment,this.element.firstChild)}).bind(this))}});Insertion.Bottom=Class.create();Insertion.Bottom.prototype=Object.extend(new Abstract.Insertion('beforeEnd'),{initializeRange: function(){this.range.selectNodeContents(this.element);this.range.collapse(this.element)},insertContent: function(fragments){fragments.each((function(fragment){this.element.appendChild(fragment)}).bind(this))}});Insertion.After=Class.create();Insertion.After.prototype=Object.extend(new Abstract.Insertion('afterEnd'),{initializeRange: function(){this.range.setStartAfter(this.element)},insertContent: function(fragments){fragments.each((function(fragment){this.element.parentNode.insertBefore(fragment,this.element.nextSibling)}).bind(this))}});Element.ClassNames=Class.create();Element.ClassNames.prototype={initialize: function(element){this.element=$(element)},_each: function(iterator){this.element.className.split(/\s+/).select(function(name){return name.length>0})._each(iterator)},set: function(className){this.element.className=className},add: function(classNameToAdd){if(this.include(classNameToAdd)) return;this.set(this.toArray().concat(classNameToAdd).join(' '))},remove: function(classNameToRemove){if(!this.include(classNameToRemove)) return;this.set(this.select(function(className){return className!=classNameToRemove}).join(' '))},toString: function(){return this.toArray().join(' ')}}
Object.extend(Element.ClassNames.prototype,Enumerable);var Selector=Class.create();Selector.prototype={initialize: function(expression){this.params={classNames:[]};this.expression=expression.toString().strip();this.parseExpression();this.compileMatcher()},parseExpression: function(){
function abort(message){throw 'Parse error in selector: '+message}
if(this.expression=='') abort('empty expression');var params=this.params,expr=this.expression,match,modifier,clause,rest;while(match=expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)){params.attributes=params.attributes||[];params.attributes.push({name:match[2],operator:match[3],value:match[4]||match[5]||''});expr=match[1]}
if(expr=='*') return this.params.wildcard=true;while(match=expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)){modifier=match[1],clause=match[2],rest=match[3];switch(modifier){case '#':params.id=clause;break;case '.':params.classNames.push(clause);break;case '':case undefined:params.tagName=clause.toUpperCase();break;default:abort(expr.inspect())}
expr=rest}
if(expr.length>0) abort(expr.inspect())},buildMatchExpression: function(){var params=this.params,conditions=[],clause;if(params.wildcard)
conditions.push('true');if(clause=params.id)
conditions.push('element.id == '+clause.inspect());if(clause=params.tagName)
conditions.push('element.tagName.toUpperCase() == '+clause.inspect());if((clause=params.classNames).length>0)
for(var i=0;i<clause.length;i++)
conditions.push('Element.hasClassName(element, '+clause[i].inspect()+')');if(clause=params.attributes){clause.each(function(attribute){var value='element.getAttribute('+attribute.name.inspect()+')';var splitValueBy=function(delimiter){return value+' && '+value+'.split('+delimiter.inspect()+')'}
switch(attribute.operator){case '=':conditions.push(value+' == '+attribute.value.inspect());break;case '~=':conditions.push(splitValueBy(' ')+'.include('+attribute.value.inspect()+')');break;case '|=':conditions.push(splitValueBy('-')+'.first().toUpperCase() == '+attribute.value.toUpperCase().inspect());break;case '!=':conditions.push(value+' != '+attribute.value.inspect());break;case '':case undefined:conditions.push(value+' != null');break;default:throw 'Unknown operator '+attribute.operator+' in selector'}})}
return conditions.join(' && ')},compileMatcher: function(){this.match=new Function('element','if(!element.tagName) return false;\
return '+this.buildMatchExpression())},findElements: function(scope){var element;if(element=$(this.params.id))
if(this.match(element))
if(!scope||Element.childOf(element,scope))
return [element];scope=(scope||document).getElementsByTagName(this.params.tagName||'*');var results=[];for(var i=0;i<scope.length;i++)
if(this.match(element=scope[i]))
results.push(Element.extend(element));return results},toString: function(){return this.expression}}
function $$(){return $A(arguments).map(function(expression){return expression.strip().split(/\s+/).inject([null], function(results,expr){var selector=new Selector(expr);return results.map(selector.findElements.bind(selector)).flatten()})}).flatten()}
var Field={clear: function(){for(var i=0;i<arguments.length;i++)
$(arguments[i]).value=''},focus: function(element){$(element).focus()},present: function(){for(var i=0;i<arguments.length;i++)
if($(arguments[i]).value=='') return false;return true},select: function(element){$(element).select()},activate: function(element){element=$(element);element.focus();if(element.select)
element.select()}}
var Form={serialize: function(form){var elements=Form.getElements($(form));var queryComponents=new Array();for(var i=0;i<elements.length;i++){var queryComponent=Form.Element.serialize(elements[i]);if(queryComponent)
queryComponents.push(queryComponent)}
return queryComponents.join('&')},getElements: function(form){form=$(form);var elements=new Array();for(var tagName in Form.Element.Serializers){var tagElements=form.getElementsByTagName(tagName);for(var j=0;j<tagElements.length;j++)
elements.push(tagElements[j])}
return elements},getInputs: function(form,typeName,name){form=$(form);var inputs=form.getElementsByTagName('input');if(!typeName&&!name)
return inputs;var matchingInputs=new Array();for(var i=0;i<inputs.length;i++){var input=inputs[i];if((typeName&&input.type!=typeName)||(name&&input.name!=name))
continue;matchingInputs.push(input)}
return matchingInputs},disable: function(form){var elements=Form.getElements(form);for(var i=0;i<elements.length;i++){var element=elements[i];element.blur();element.disabled='true'}},enable: function(form){var elements=Form.getElements(form);for(var i=0;i<elements.length;i++){var element=elements[i];element.disabled=''}},findFirstElement: function(form){return Form.getElements(form).find(function(element){return element.type!='hidden'&&!element.disabled&&['input','select','textarea'].include(element.tagName.toLowerCase())})},focusFirstElement: function(form){Field.activate(Form.findFirstElement(form))},reset: function(form){$(form).reset()}}
Form.Element={serialize: function(element){element=$(element);var method=element.tagName.toLowerCase();var parameter=Form.Element.Serializers[method](element);if(parameter){var key=encodeURIComponent(parameter[0]);if(key.length==0) return;if(parameter[1].constructor!=Array)
parameter[1]=[parameter[1]];return parameter[1].map(function(value){return key+'='+encodeURIComponent(value)}).join('&')}},getValue: function(element){element=$(element);var method=element.tagName.toLowerCase();var parameter=Form.Element.Serializers[method](element);if(parameter)
return parameter[1]}}
Form.Element.Serializers={input: function(element){switch(element.type.toLowerCase()){case 'submit':case 'hidden':case 'password':case 'text':return Form.Element.Serializers.textarea(element);case 'checkbox':case 'radio':return Form.Element.Serializers.inputSelector(element)}
return false},inputSelector: function(element){if(element.checked)
return [element.name,element.value]},textarea: function(element){return [element.name,element.value]},select: function(element){return Form.Element.Serializers[element.type=='select-one'?'selectOne':'selectMany'](element)},selectOne: function(element){var value='',opt,index=element.selectedIndex;if(index>=0){opt=element.options[index];value=opt.value||opt.text}
return [element.name,value]},selectMany: function(element){var value=[];for(var i=0;i<element.length;i++){var opt=element.options[i];if(opt.selected)
value.push(opt.value||opt.text)}
return [element.name,value]}}
var $F=Form.Element.getValue;Abstract.TimedObserver=function(){}
Abstract.TimedObserver.prototype={initialize: function(element,frequency,callback){this.frequency=frequency;this.element=$(element);this.callback=callback;this.lastValue=this.getValue();this.registerCallback()},registerCallback: function(){setInterval(this.onTimerEvent.bind(this),this.frequency * 1000)},onTimerEvent: function(){var value=this.getValue();if(this.lastValue!=value){this.callback(this.element,value);this.lastValue=value}}}
Form.Element.Observer=Class.create();Form.Element.Observer.prototype=Object.extend(new Abstract.TimedObserver(),{getValue: function(){return Form.Element.getValue(this.element)}});Form.Observer=Class.create();Form.Observer.prototype=Object.extend(new Abstract.TimedObserver(),{getValue: function(){return Form.serialize(this.element)}});Abstract.EventObserver=function(){}
Abstract.EventObserver.prototype={initialize: function(element,callback){this.element=$(element);this.callback=callback;this.lastValue=this.getValue();if(this.element.tagName.toLowerCase()=='form')
this.registerFormCallbacks();else
this.registerCallback(this.element)},onElementEvent: function(){var value=this.getValue();if(this.lastValue!=value){this.callback(this.element,value);this.lastValue=value}},registerFormCallbacks: function(){var elements=Form.getElements(this.element);for(var i=0;i<elements.length;i++)
this.registerCallback(elements[i])},registerCallback: function(element){if(element.type){switch(element.type.toLowerCase()){case 'checkbox':case 'radio':Event.observe(element,'click',this.onElementEvent.bind(this));break;case 'password':case 'text':case 'textarea':case 'select-one':case 'select-multiple':Event.observe(element,'change',this.onElementEvent.bind(this));break}}}}
Form.Element.EventObserver=Class.create();Form.Element.EventObserver.prototype=Object.extend(new Abstract.EventObserver(),{getValue: function(){return Form.Element.getValue(this.element)}});Form.EventObserver=Class.create();Form.EventObserver.prototype=Object.extend(new Abstract.EventObserver(),{getValue: function(){return Form.serialize(this.element)}});if(!window.Event){var Event=new Object()}
Object.extend(Event,{KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,element: function(event){return event.target||event.srcElement},isLeftClick: function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)))},pointerX: function(event){return event.pageX||(event.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft))},pointerY: function(event){return event.pageY||(event.clientY+(document.documentElement.scrollTop||document.body.scrollTop))},stop: function(event){if(event.preventDefault){event.preventDefault();event.stopPropagation()} else{event.returnValue=false;event.cancelBubble=true}},findElement: function(event,tagName){var element=Event.element(event);while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase())))
element=element.parentNode;return element},observers:false,_observeAndCache: function(element,name,observer,useCapture){if(!this.observers) this.observers=[];if(element.addEventListener){this.observers.push([element,name,observer,useCapture]);element.addEventListener(name,observer,useCapture)} else if(element.attachEvent){this.observers.push([element,name,observer,useCapture]);element.attachEvent('on'+name,observer)}},unloadCache: function(){if(!Event.observers) return;for(var i=0;i<Event.observers.length;i++){Event.stopObserving.apply(this,Event.observers[i]);Event.observers[i][0]=null}
Event.observers=false},observe: function(element,name,observer,useCapture){var element=$(element);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent))
name='keydown';this._observeAndCache(element,name,observer,useCapture)},stopObserving: function(element,name,observer,useCapture){var element=$(element);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.detachEvent))
name='keydown';if(element.removeEventListener){element.removeEventListener(name,observer,useCapture)} else if(element.detachEvent){element.detachEvent('on'+name,observer)}}});if(navigator.appVersion.match(/\bMSIE\b/))
Event.observe(window,'unload',Event.unloadCache,false);var Position={includeScrollOffsets:false,prepare: function(){this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0},realOffset: function(element){var valueT=0,valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode} while(element);return [valueL,valueT]},cumulativeOffset: function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent} while(element);return [valueL,valueT]},positionedOffset: function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){p=Element.getStyle(element,'position');if(p=='relative'||p=='absolute') break}} while(element);return [valueL,valueT]},offsetParent: function(element){if(element.offsetParent) return element.offsetParent;if(element==document.body) return element;while((element=element.parentNode)&&element!=document.body)
if(Element.getStyle(element,'position')!='static')
return element;return document.body},within: function(element,x,y){if(this.includeScrollOffsets)
return this.withinIncludingScrolloffsets(element,x,y);this.xcomp=x;this.ycomp=y;this.offset=this.cumulativeOffset(element);return(y>=this.offset[1]&&y<this.offset[1]+element.offsetHeight&&x>=this.offset[0]&&x<this.offset[0]+element.offsetWidth)},withinIncludingScrolloffsets: function(element,x,y){var offsetcache=this.realOffset(element);this.xcomp=x+offsetcache[0]-this.deltaX;this.ycomp=y+offsetcache[1]-this.deltaY;this.offset=this.cumulativeOffset(element);return(this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+element.offsetHeight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+element.offsetWidth)},overlap: function(mode,element){if(!mode) return 0;if(mode=='vertical')
return((this.offset[1]+element.offsetHeight)-this.ycomp)/element.offsetHeight;if(mode=='horizontal')
return((this.offset[0]+element.offsetWidth)-this.xcomp)/element.offsetWidth},clone: function(source,target){source=$(source);target=$(target);target.style.position='absolute';var offsets=this.cumulativeOffset(source);target.style.top=offsets[1]+'px';target.style.left=offsets[0]+'px';target.style.width=source.offsetWidth+'px';target.style.height=source.offsetHeight+'px'},page: function(forElement){var valueT=0,valueL=0;var element=forElement;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body)
if(Element.getStyle(element,'position')=='absolute') break} while(element=element.offsetParent);element=forElement;do{valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0} while(element=element.parentNode);return [valueL,valueT]},clone: function(source,target){var options=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{})
source=$(source);var p=Position.page(source);target=$(target);var delta=[0,0];var parent=null;if(Element.getStyle(target,'position')=='absolute'){parent=Position.offsetParent(target);delta=Position.page(parent)}
if(parent==document.body){delta[0]-=document.body.offsetLeft;delta[1]-=document.body.offsetTop}
if(options.setLeft) target.style.left=(p[0]-delta[0]+options.offsetLeft)+'px';if(options.setTop) target.style.top=(p[1]-delta[1]+options.offsetTop)+'px';if(options.setWidth) target.style.width=source.offsetWidth+'px';if(options.setHeight) target.style.height=source.offsetHeight+'px'},absolutize: function(element){element=$(element);if(element.style.position=='absolute') return;Position.prepare();var offsets=Position.positionedOffset(element);var top=offsets[1];var left=offsets[0];var width=element.clientWidth;var height=element.clientHeight;element._originalLeft=left-parseFloat(element.style.left||0);element._originalTop=top-parseFloat(element.style.top||0);element._originalWidth=element.style.width;element._originalHeight=element.style.height;element.style.position='absolute';element.style.top=top+'px';element.style.left=left+'px';element.style.width=width+'px';element.style.height=height+'px'},relativize: function(element){element=$(element);if(element.style.position=='relative') return;Position.prepare();element.style.position='relative';var top=parseFloat(element.style.top||0)-(element._originalTop||0);var left=parseFloat(element.style.left||0)-(element._originalLeft||0);element.style.top=top+'px';element.style.left=left+'px';element.style.height=element._originalHeight;element.style.width=element._originalWidth}}
if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)){Position.cumulativeOffset=function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body)
if(Element.getStyle(element,'position')=='absolute') break;element=element.offsetParent} while(element);return [valueL,valueT]}}

/* - scriptaculous.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/scriptaculous.js?original=1
var Scriptaculous={Version:'1.6.1',require: function(libraryName){document.write('<script type="text/javascript" src="'+libraryName+'"></script>')},load: function(){if((typeof Prototype=='undefined')||(typeof Element=='undefined')||(typeof Element.Methods=='undefined')||parseFloat(Prototype.Version.split(".")[0]+"."+Prototype.Version.split(".")[1])<1.5)
throw("script.aculo.us requires the Prototype JavaScript framework >= 1.5.0");$A(document.getElementsByTagName("script")).findAll( function(s){return(s.src&&s.src.match(/scriptaculous\.js(\?.*)?$/))}).each( function(s){var path=s.src.replace(/scriptaculous\.js(\?.*)?$/,'');var includes=s.src.match(/\?.*load=([a-z,]*)/);(includes?includes[1]:'builder,effects,dragdrop,controls,slider').split(',').each(
function(include){Scriptaculous.require(path+include+'.js')})})}}
Scriptaculous.load();

/* - builder.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/builder.js?original=1
var Builder={NODEMAP:{AREA:'map',CAPTION:'table',COL:'table',COLGROUP:'table',LEGEND:'fieldset',OPTGROUP:'select',OPTION:'select',PARAM:'object',TBODY:'table',TD:'table',TFOOT:'table',TH:'table',THEAD:'table',TR:'table'},node: function(elementName){elementName=elementName.toUpperCase();var parentTag=this.NODEMAP[elementName]||'div';var parentElement=document.createElement(parentTag);try{parentElement.innerHTML="<"+elementName+"></"+elementName+">"} catch(e){}
var element=parentElement.firstChild||null;if(element&&(element.tagName!=elementName))
element=element.getElementsByTagName(elementName)[0];if(!element) element=document.createElement(elementName);if(!element) return;if(arguments[1])
if(this._isStringOrNumber(arguments[1])||(arguments[1] instanceof Array)){this._children(element,arguments[1])} else{var attrs=this._attributes(arguments[1]);if(attrs.length){try{parentElement.innerHTML="<"+elementName+" "+attrs+"></"+elementName+">"} catch(e){}
element=parentElement.firstChild||null;if(!element){element=document.createElement(elementName);for(attr in arguments[1])
element[attr=='class'?'className':attr]=arguments[1][attr]}
if(element.tagName!=elementName)
element=parentElement.getElementsByTagName(elementName)[0]}}
if(arguments[2])
this._children(element,arguments[2]);return element},_text: function(text){return document.createTextNode(text)},_attributes: function(attributes){var attrs=[];for(attribute in attributes)
attrs.push((attribute=='className'?'class':attribute)+'="'+attributes[attribute].toString().escapeHTML()+'"');return attrs.join(" ")},_children: function(element,children){if(typeof children=='object'){children.flatten().each( function(e){if(typeof e=='object')
element.appendChild(e)
else
if(Builder._isStringOrNumber(e))
element.appendChild(Builder._text(e))})} else
if(Builder._isStringOrNumber(children))
element.appendChild(Builder._text(children))},_isStringOrNumber: function(param){return(typeof param=='string'||typeof param=='number')}}

/* - effects.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/effects.js?original=1
String.prototype.parseColor=function(){var color='#';if(this.slice(0,4)=='rgb('){var cols=this.slice(4,this.length-1).split(',');var i=0;do{color+=parseInt(cols[i]).toColorPart()} while(++i<3)} else{if(this.slice(0,1)=='#'){if(this.length==4) for(var i=1;i<4;i++) color+=(this.charAt(i)+this.charAt(i)).toLowerCase();if(this.length==7) color=this.toLowerCase()}}
return(color.length==7?color:(arguments[0]||this))}
Element.collectTextNodes=function(element){return $A($(element).childNodes).collect( function(node){return(node.nodeType==3?node.nodeValue:(node.hasChildNodes()?Element.collectTextNodes(node):''))}).flatten().join('')}
Element.collectTextNodesIgnoreClass=function(element,className){return $A($(element).childNodes).collect( function(node){return(node.nodeType==3?node.nodeValue:((node.hasChildNodes()&&!Element.hasClassName(node,className))?Element.collectTextNodesIgnoreClass(node,className):''))}).flatten().join('')}
Element.setContentZoom=function(element,percent){element=$(element);Element.setStyle(element,{fontSize:(percent/100)+'em'});if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0)}
Element.getOpacity=function(element){var opacity;if(opacity=Element.getStyle(element,'opacity'))
return parseFloat(opacity);if(opacity=(Element.getStyle(element,'filter')||'').match(/alpha\(opacity=(.*)\)/))
if(opacity[1]) return parseFloat(opacity[1])/100;return 1.0}
Element.setOpacity=function(element,value){element=$(element);if(value==1){Element.setStyle(element,{opacity:(/Gecko/.test(navigator.userAgent)&&!/Konqueror|Safari|KHTML/.test(navigator.userAgent))?0.999999:null});if(/MSIE/.test(navigator.userAgent))
Element.setStyle(element,{filter:Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')})} else{if(value<0.00001) value=0;Element.setStyle(element,{opacity:value});if(/MSIE/.test(navigator.userAgent))
Element.setStyle(element,{filter:Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')+'alpha(opacity='+value*100+')'})}}
Element.getInlineOpacity=function(element){return $(element).style.opacity||''}
Element.childrenWithClassName=function(element,className,findFirst){var classNameRegExp=new RegExp("(^|\\s)"+className+"(\\s|$)");var results=$A($(element).getElementsByTagName('*'))[findFirst?'detect':'select']( function(c){return(c.className&&c.className.match(classNameRegExp))});if(!results) results=[];return results}
Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n)} catch(e){}};Array.prototype.call=function(){var args=arguments;this.each(function(f){f.apply(this,args)})}
var Effect={tagifyText: function(element){var tagifyStyle='position:relative';if(/MSIE/.test(navigator.userAgent)) tagifyStyle+=';zoom:1';element=$(element);$A(element.childNodes).each( function(child){if(child.nodeType==3){child.nodeValue.toArray().each( function(character){element.insertBefore(Builder.node('span',{style:tagifyStyle},character==' '?String.fromCharCode(160):character),child)});Element.remove(child)}})},multiple: function(element,effect){var elements;if(((typeof element=='object')||(typeof element=='function'))&&(element.length))
elements=element;else
elements=$(element).childNodes;var options=Object.extend({speed:0.1,delay:0.0},arguments[2]||{});var masterDelay=options.delay;$A(elements).each( function(element,index){new effect(element,Object.extend(options,{delay:index * options.speed+masterDelay}))})},PAIRS:{'slide':['SlideDown','SlideUp'],'blind':['BlindDown','BlindUp'],'appear':['Appear','Fade']},toggle: function(element,effect){element=$(element);effect=(effect||'appear').toLowerCase();var options=Object.extend({queue:{position:'end',scope:(element.id||'global'),limit:1}},arguments[2]||{});Effect[element.visible()?Effect.PAIRS[effect][1]:Effect.PAIRS[effect][0]](element,options)}};var Effect2=Effect;Effect.Transitions={}
Effect.Transitions.linear=function(pos){return pos}
Effect.Transitions.sinoidal=function(pos){return(-Math.cos(pos*Math.PI)/2)+0.5}
Effect.Transitions.reverse=function(pos){return 1-pos}
Effect.Transitions.flicker=function(pos){return((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4}
Effect.Transitions.wobble=function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+0.5}
Effect.Transitions.pulse=function(pos){return(Math.floor(pos*10)%2==0?(pos*10-Math.floor(pos*10)):1-(pos*10-Math.floor(pos*10)))}
Effect.Transitions.none=function(pos){return 0}
Effect.Transitions.full=function(pos){return 1}
Effect.ScopedQueue=Class.create();Object.extend(Object.extend(Effect.ScopedQueue.prototype,Enumerable),{initialize: function(){this.effects=[];this.interval=null},_each: function(iterator){this.effects._each(iterator)},add: function(effect){var timestamp=new Date().getTime();var position=(typeof effect.options.queue=='string')?effect.options.queue:effect.options.queue.position;switch(position){case 'front':this.effects.findAll(function(e){return e.state=='idle'}).each( function(e){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn});break;case 'end':timestamp=this.effects.pluck('finishOn').max()||timestamp;break}
effect.startOn+=timestamp;effect.finishOn+=timestamp;if(!effect.options.queue.limit||(this.effects.length<effect.options.queue.limit))
this.effects.push(effect);if(!this.interval)
this.interval=setInterval(this.loop.bind(this),40)},remove: function(effect){this.effects=this.effects.reject(function(e){return e==effect});if(this.effects.length==0){clearInterval(this.interval);this.interval=null}},loop: function(){var timePos=new Date().getTime();this.effects.invoke('loop',timePos)}});Effect.Queues={instances:$H(),get: function(queueName){if(typeof queueName!='string') return queueName;if(!this.instances[queueName])
this.instances[queueName]=new Effect.ScopedQueue();return this.instances[queueName]}}
Effect.Queue=Effect.Queues.get('global');Effect.DefaultOptions={transition:Effect.Transitions.sinoidal,duration:1.0,fps:25.0,sync:false,from:0.0,to:1.0,delay:0.0,queue:'parallel'}
Effect.Base=function(){};Effect.Base.prototype={position:null,start: function(options){this.options=Object.extend(Object.extend({},Effect.DefaultOptions),options||{});this.currentFrame=0;this.state='idle';this.startOn=this.options.delay*1000;this.finishOn=this.startOn+(this.options.duration*1000);this.event('beforeStart');if(!this.options.sync)
Effect.Queues.get(typeof this.options.queue=='string'?'global':this.options.queue.scope).add(this)},loop: function(timePos){if(timePos>=this.startOn){if(timePos>=this.finishOn){this.render(1.0);this.cancel();this.event('beforeFinish');if(this.finish) this.finish();this.event('afterFinish');return}
var pos=(timePos-this.startOn)/(this.finishOn-this.startOn);var frame=Math.round(pos * this.options.fps * this.options.duration);if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame}}},render: function(pos){if(this.state=='idle'){this.state='running';this.event('beforeSetup');if(this.setup) this.setup();this.event('afterSetup')}
if(this.state=='running'){if(this.options.transition) pos=this.options.transition(pos);pos *=(this.options.to-this.options.from);pos+=this.options.from;this.position=pos;this.event('beforeUpdate');if(this.update) this.update(pos);this.event('afterUpdate')}},cancel: function(){if(!this.options.sync)
Effect.Queues.get(typeof this.options.queue=='string'?'global':this.options.queue.scope).remove(this);this.state='finished'},event: function(eventName){if(this.options[eventName+'Internal']) this.options[eventName+'Internal'](this);if(this.options[eventName]) this.options[eventName](this)},inspect: function(){return '#<Effect:'+$H(this).inspect()+',options:'+$H(this.options).inspect()+'>'}}
Effect.Parallel=Class.create();Object.extend(Object.extend(Effect.Parallel.prototype,Effect.Base.prototype),{initialize: function(effects){this.effects=effects||[];this.start(arguments[1])},update: function(position){this.effects.invoke('render',position)},finish: function(position){this.effects.each( function(effect){effect.render(1.0);effect.cancel();effect.event('beforeFinish');if(effect.finish) effect.finish(position);effect.event('afterFinish')})}});Effect.Opacity=Class.create();Object.extend(Object.extend(Effect.Opacity.prototype,Effect.Base.prototype),{initialize: function(element){this.element=$(element);if(/MSIE/.test(navigator.userAgent)&&(!this.element.hasLayout))
this.element.setStyle({zoom:1});var options=Object.extend({from:this.element.getOpacity()||0.0,to:1.0},arguments[1]||{});this.start(options)},update: function(position){this.element.setOpacity(position)}});Effect.Move=Class.create();Object.extend(Object.extend(Effect.Move.prototype,Effect.Base.prototype),{initialize: function(element){this.element=$(element);var options=Object.extend({x:0,y:0,mode:'relative'},arguments[1]||{});this.start(options)},setup: function(){this.element.makePositioned();this.originalLeft=parseFloat(this.element.getStyle('left')||'0');this.originalTop=parseFloat(this.element.getStyle('top')||'0');if(this.options.mode=='absolute'){this.options.x=this.options.x-this.originalLeft;this.options.y=this.options.y-this.originalTop}},update: function(position){this.element.setStyle({left:this.options.x * position+this.originalLeft+'px',top:this.options.y * position+this.originalTop+'px'})}});Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}))};Effect.Scale=Class.create();Object.extend(Object.extend(Effect.Scale.prototype,Effect.Base.prototype),{initialize: function(element,percent){this.element=$(element)
var options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:'box',scaleFrom:100.0,scaleTo:percent},arguments[2]||{});this.start(options)},setup: function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle('position');this.originalStyle={};['top','left','width','height','fontSize'].each( function(k){this.originalStyle[k]=this.element.style[k]}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=this.element.getStyle('font-size')||'100%';['em','px','%'].each( function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=='box')
this.dims=[this.element.offsetHeight,this.element.offsetWidth];if(/^content/.test(this.options.scaleMode))
this.dims=[this.element.scrollHeight,this.element.scrollWidth];if(!this.dims)
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth]},update: function(position){var currentScale=(this.options.scaleFrom/100.0)+(this.factor * position);if(this.options.scaleContent&&this.fontSize)
this.element.setStyle({fontSize:this.fontSize * currentScale+this.fontSizeType});this.setDimensions(this.dims[0] * currentScale,this.dims[1] * currentScale)},finish: function(position){if(this.restoreAfterFinish) this.element.setStyle(this.originalStyle)},setDimensions: function(height,width){var d={};if(this.options.scaleX) d.width=width+'px';if(this.options.scaleY) d.height=height+'px';if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-this.dims[1])/2;if(this.elementPositioning=='absolute'){if(this.options.scaleY) d.top=this.originalTop-topd+'px';if(this.options.scaleX) d.left=this.originalLeft-leftd+'px'} else{if(this.options.scaleY) d.top=-topd+'px';if(this.options.scaleX) d.left=-leftd+'px'}}
this.element.setStyle(d)}});Effect.Highlight=Class.create();Object.extend(Object.extend(Effect.Highlight.prototype,Effect.Base.prototype),{initialize: function(element){this.element=$(element);var options=Object.extend({startcolor:'#ffff99'},arguments[1]||{});this.start(options)},setup: function(){if(this.element.getStyle('display')=='none'){this.cancel();return}
this.oldStyle={backgroundImage:this.element.getStyle('background-image')};this.element.setStyle({backgroundImage:'none'});if(!this.options.endcolor)
this.options.endcolor=this.element.getStyle('background-color').parseColor('#ffffff');if(!this.options.restorecolor)
this.options.restorecolor=this.element.getStyle('background-color');this._base=$R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16)}.bind(this));this._delta=$R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]}.bind(this))},update: function(position){this.element.setStyle({backgroundColor:$R(0,2).inject('#',function(m,v,i){return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart())}.bind(this))})},finish: function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}))}});Effect.ScrollTo=Class.create();Object.extend(Object.extend(Effect.ScrollTo.prototype,Effect.Base.prototype),{initialize: function(element){this.element=$(element);this.start(arguments[1]||{})},setup: function(){Position.prepare();var offsets=Position.cumulativeOffset(this.element);if(this.options.offset) offsets[1]+=this.options.offset;var max=window.innerHeight?window.height-window.innerHeight:document.body.scrollHeight-(document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight);this.scrollStart=Position.deltaY;this.delta=(offsets[1]>max?max:offsets[1])-this.scrollStart},update: function(position){Position.prepare();window.scrollTo(Position.deltaX,this.scrollStart+(position*this.delta))}});Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();var options=Object.extend({from:element.getOpacity()||1.0,to:0.0,afterFinishInternal: function(effect){if(effect.options.to!=0) return;effect.element.hide();effect.element.setStyle({opacity:oldOpacity})}},arguments[1]||{});return new Effect.Opacity(element,options)}
Effect.Appear=function(element){element=$(element);var options=Object.extend({from:(element.getStyle('display')=='none'?0.0:element.getOpacity()||0.0),to:1.0,afterFinishInternal: function(effect){effect.element.forceRerendering()},beforeSetup: function(effect){effect.element.setOpacity(effect.options.from);effect.element.show()}},arguments[1]||{});return new Effect.Opacity(element,options)}
Effect.Puff=function(element){element=$(element);var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle('position')};return new Effect.Parallel([new Effect.Scale(element,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:1.0,beforeSetupInternal: function(effect){effect.effects[0].element.setStyle({position:'absolute'})},afterFinishInternal: function(effect){effect.effects[0].element.hide();effect.effects[0].element.setStyle(oldStyle)}},arguments[1]||{}))}
Effect.BlindUp=function(element){element=$(element);element.makeClipping();return new Effect.Scale(element,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal: function(effect){effect.element.hide();effect.element.undoClipping()}},arguments[1]||{}))}
Effect.BlindDown=function(element){element=$(element);var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup: function(effect){effect.element.makeClipping();effect.element.setStyle({height:'0px'});effect.element.show()},afterFinishInternal: function(effect){effect.element.undoClipping()}},arguments[1]||{}))}
Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element,{duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal: function(effect){new Effect.Scale(effect.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup: function(effect){effect.element.makePositioned();effect.element.makeClipping()},afterFinishInternal: function(effect){effect.element.hide();effect.element.undoClipping();effect.element.undoPositioned();effect.element.setStyle({opacity:oldOpacity})}})}})}
Effect.DropOut=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left'),opacity:element.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(element,{x:0,y:100,sync:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:0.5,beforeSetup: function(effect){effect.effects[0].element.makePositioned()},afterFinishInternal: function(effect){effect.effects[0].element.hide();effect.effects[0].element.undoPositioned();effect.effects[0].element.setStyle(oldStyle)}},arguments[1]||{}))}
Effect.Shake=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left')};return new Effect.Move(element,{x:20,y:0,duration:0.05,afterFinishInternal: function(effect){new Effect.Move(effect.element,{x:-40,y:0,duration:0.1,afterFinishInternal: function(effect){new Effect.Move(effect.element,{x:40,y:0,duration:0.1,afterFinishInternal: function(effect){new Effect.Move(effect.element,{x:-40,y:0,duration:0.1,afterFinishInternal: function(effect){new Effect.Move(effect.element,{x:40,y:0,duration:0.1,afterFinishInternal: function(effect){new Effect.Move(effect.element,{x:-20,y:0,duration:0.05,afterFinishInternal: function(effect){effect.element.undoPositioned();effect.element.setStyle(oldStyle)}})}})}})}})}})}})}
Effect.SlideDown=function(element){element=$(element);element.cleanWhitespace();var oldInnerBottom=$(element.firstChild).getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup: function(effect){effect.element.makePositioned();effect.element.firstChild.makePositioned();if(window.opera) effect.element.setStyle({top:''});effect.element.makeClipping();effect.element.setStyle({height:'0px'});effect.element.show()},afterUpdateInternal: function(effect){effect.element.firstChild.setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'})},afterFinishInternal: function(effect){effect.element.undoClipping();if(/MSIE/.test(navigator.userAgent)){effect.element.undoPositioned();effect.element.firstChild.undoPositioned()}else{effect.element.firstChild.undoPositioned();effect.element.undoPositioned()}
effect.element.firstChild.setStyle({bottom:oldInnerBottom})}},arguments[1]||{}))}
Effect.SlideUp=function(element){element=$(element);element.cleanWhitespace();var oldInnerBottom=$(element.firstChild).getStyle('bottom');return new Effect.Scale(element,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:'box',scaleFrom:100,restoreAfterFinish:true,beforeStartInternal: function(effect){effect.element.makePositioned();effect.element.firstChild.makePositioned();if(window.opera) effect.element.setStyle({top:''});effect.element.makeClipping();effect.element.show()},afterUpdateInternal: function(effect){effect.element.firstChild.setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'})},afterFinishInternal: function(effect){effect.element.hide();effect.element.undoClipping();effect.element.firstChild.undoPositioned();effect.element.undoPositioned();effect.element.setStyle({bottom:oldInnerBottom})}},arguments[1]||{}))}
Effect.Squish=function(element){return new Effect.Scale(element,window.opera?1:0,{restoreAfterFinish:true,beforeSetup: function(effect){effect.element.makeClipping(effect.element)},afterFinishInternal: function(effect){effect.element.hide(effect.element);effect.element.undoClipping(effect.element)}})}
Effect.Grow=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case 'top-left':initialMoveX=initialMoveY=moveX=moveY=0;break;case 'top-right':initialMoveX=dims.width;initialMoveY=moveY=0;moveX=-dims.width;break;case 'bottom-left':initialMoveX=moveX=0;initialMoveY=dims.height;moveY=-dims.height;break;case 'bottom-right':initialMoveX=dims.width;initialMoveY=dims.height;moveX=-dims.width;moveY=-dims.height;break;case 'center':initialMoveX=dims.width/2;initialMoveY=dims.height/2;moveX=-dims.width/2;moveY=-dims.height/2;break}
return new Effect.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetup: function(effect){effect.element.hide();effect.element.makeClipping();effect.element.makePositioned()},afterFinishInternal: function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:true,to:1.0,from:0.0,transition:options.opacityTransition}),new Effect.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new Effect.Scale(effect.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:true,scaleFrom:window.opera?1:0,transition:options.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup: function(effect){effect.effects[0].element.setStyle({height:'0px'});effect.effects[0].element.show()},afterFinishInternal: function(effect){effect.effects[0].element.undoClipping();effect.effects[0].element.undoPositioned();effect.effects[0].element.setStyle(oldStyle)}},options))}})}
Effect.Shrink=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var moveX,moveY;switch(options.direction){case 'top-left':moveX=moveY=0;break;case 'top-right':moveX=dims.width;moveY=0;break;case 'bottom-left':moveX=0;moveY=dims.height;break;case 'bottom-right':moveX=dims.width;moveY=dims.height;break;case 'center':moveX=dims.width/2;moveY=dims.height/2;break}
return new Effect.Parallel([new Effect.Opacity(element,{sync:true,to:0.0,from:1.0,transition:options.opacityTransition}),new Effect.Scale(element,window.opera?1:0,{sync:true,transition:options.scaleTransition,restoreAfterFinish:true}),new Effect.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],Object.extend({beforeStartInternal: function(effect){effect.effects[0].element.makePositioned();effect.effects[0].element.makeClipping()},afterFinishInternal: function(effect){effect.effects[0].element.hide();effect.effects[0].element.undoClipping();effect.effects[0].element.undoPositioned();effect.effects[0].element.setStyle(oldStyle)}},options))}
Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{};var oldOpacity=element.getInlineOpacity();var transition=options.transition||Effect.Transitions.sinoidal;var reverser=function(pos){return transition(1-Effect.Transitions.pulse(pos))};reverser.bind(transition);return new Effect.Opacity(element,Object.extend(Object.extend({duration:3.0,from:0,afterFinishInternal: function(effect){effect.element.setStyle({opacity:oldOpacity})}},options),{transition:reverser}))}
Effect.Fold=function(element){element=$(element);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};Element.makeClipping(element);return new Effect.Scale(element,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal: function(effect){new Effect.Scale(element,1,{scaleContent:false,scaleY:false,afterFinishInternal: function(effect){effect.element.hide();effect.element.undoClipping();effect.element.setStyle(oldStyle)}})}},arguments[1]||{}))};['setOpacity','getOpacity','getInlineOpacity','forceRerendering','setContentZoom','collectTextNodes','collectTextNodesIgnoreClass','childrenWithClassName'].each(
function(f){Element.Methods[f]=Element[f]});Element.Methods.visualEffect=function(element,effect,options){s=effect.gsub(/_/,'-').camelize();effect_class=s.charAt(0).toUpperCase()+s.substring(1);new Effect[effect_class](element,options);return $(element)};Element.addMethods();

/* - dragdrop.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/dragdrop.js?original=1
var Droppables={drops:[],remove: function(element){this.drops=this.drops.reject(function(d){return d.element==$(element)})},add: function(element){element=$(element);var options=Object.extend({greedy:true,hoverclass:null,tree:false},arguments[1]||{});if(options.containment){options._containers=[];var containment=options.containment;if((typeof containment=='object')&&(containment.constructor==Array)){containment.each( function(c){options._containers.push($(c))})} else{options._containers.push($(containment))}}
if(options.accept) options.accept=[options.accept].flatten();Element.makePositioned(element);options.element=element;this.drops.push(options)},findDeepestChild: function(drops){deepest=drops[0];for(i=1;i<drops.length;++i)
if(Element.isParent(drops[i].element,deepest.element))
deepest=drops[i];return deepest},isContained: function(element,drop){var containmentNode;if(drop.tree){containmentNode=element.treeNode} else{containmentNode=element.parentNode}
return drop._containers.detect(function(c){return containmentNode==c})},isAffected: function(point,element,drop){return((drop.element!=element)&&((!drop._containers)||this.isContained(element,drop))&&((!drop.accept)||(Element.classNames(element).detect(
function(v){return drop.accept.include(v)})))&&Position.within(drop.element,point[0],point[1]))},deactivate: function(drop){if(drop.hoverclass)
Element.removeClassName(drop.element,drop.hoverclass);this.last_active=null},activate: function(drop){if(drop.hoverclass)
Element.addClassName(drop.element,drop.hoverclass);this.last_active=drop},show: function(point,element){if(!this.drops.length) return;var affected=[];if(this.last_active) this.deactivate(this.last_active);this.drops.each( function(drop){if(Droppables.isAffected(point,element,drop))
affected.push(drop)});if(affected.length>0){drop=Droppables.findDeepestChild(affected);Position.within(drop.element,point[0],point[1]);if(drop.onHover)
drop.onHover(element,drop.element,Position.overlap(drop.overlap,drop.element));Droppables.activate(drop)}},fire: function(event,element){if(!this.last_active) return;Position.prepare();if(this.isAffected([Event.pointerX(event),Event.pointerY(event)],element,this.last_active))
if(this.last_active.onDrop)
this.last_active.onDrop(element,this.last_active.element,event)},reset: function(){if(this.last_active)
this.deactivate(this.last_active)}}
var Draggables={drags:[],observers:[],register: function(draggable){if(this.drags.length==0){this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.updateDrag.bindAsEventListener(this);this.eventKeypress=this.keyPress.bindAsEventListener(this);Event.observe(document,"mouseup",this.eventMouseUp);Event.observe(document,"mousemove",this.eventMouseMove);Event.observe(document,"keypress",this.eventKeypress)}
this.drags.push(draggable)},unregister: function(draggable){this.drags=this.drags.reject(function(d){return d==draggable});if(this.drags.length==0){Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(document,"mousemove",this.eventMouseMove);Event.stopObserving(document,"keypress",this.eventKeypress)}},activate: function(draggable){window.focus();this.activeDraggable=draggable},deactivate: function(){this.activeDraggable=null},updateDrag: function(event){if(!this.activeDraggable) return;var pointer=[Event.pointerX(event),Event.pointerY(event)];if(this._lastPointer&&(this._lastPointer.inspect()==pointer.inspect())) return;this._lastPointer=pointer;this.activeDraggable.updateDrag(event,pointer)},endDrag: function(event){if(!this.activeDraggable) return;this._lastPointer=null;this.activeDraggable.endDrag(event);this.activeDraggable=null},keyPress: function(event){if(this.activeDraggable)
this.activeDraggable.keyPress(event)},addObserver: function(observer){this.observers.push(observer);this._cacheObserverCallbacks()},removeObserver: function(element){this.observers=this.observers.reject( function(o){return o.element==element});this._cacheObserverCallbacks()},notify: function(eventName,draggable,event){if(this[eventName+'Count']>0)
this.observers.each( function(o){if(o[eventName]) o[eventName](eventName,draggable,event)})},_cacheObserverCallbacks: function(){['onStart','onEnd','onDrag'].each( function(eventName){Draggables[eventName+'Count']=Draggables.observers.select(
function(o){return o[eventName]}).length})}}
var Draggable=Class.create();Draggable.prototype={initialize: function(element){var options=Object.extend({handle:false,starteffect: function(element){element._opacity=Element.getOpacity(element);new Effect.Opacity(element,{duration:0.2,from:element._opacity,to:0.7})},reverteffect: function(element,top_offset,left_offset){var dur=Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;element._revert=new Effect.Move(element,{x:-left_offset,y:-top_offset,duration:dur})},endeffect: function(element){var toOpacity=typeof element._opacity=='number'?element._opacity:1.0
new Effect.Opacity(element,{duration:0.2,from:0.7,to:toOpacity})},zindex:1000,revert:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false},arguments[1]||{});this.element=$(element);if(options.handle&&(typeof options.handle=='string')){var h=Element.childrenWithClassName(this.element,options.handle,true);if(h.length>0) this.handle=h[0]}
if(!this.handle) this.handle=$(options.handle);if(!this.handle) this.handle=this.element;if(options.scroll&&!options.scroll.scrollTo&&!options.scroll.outerHTML)
options.scroll=$(options.scroll);Element.makePositioned(this.element);this.delta=this.currentDelta();this.options=options;this.dragging=false;this.eventMouseDown=this.initDrag.bindAsEventListener(this);Event.observe(this.handle,"mousedown",this.eventMouseDown);Draggables.register(this)},destroy: function(){Event.stopObserving(this.handle,"mousedown",this.eventMouseDown);Draggables.unregister(this)},currentDelta: function(){return([parseInt(Element.getStyle(this.element,'left')||'0'),parseInt(Element.getStyle(this.element,'top')||'0')])},initDrag: function(event){if(Event.isLeftClick(event)){var src=Event.element(event);if(src.tagName&&(src.tagName=='INPUT'||src.tagName=='SELECT'||src.tagName=='OPTION'||src.tagName=='BUTTON'||src.tagName=='TEXTAREA')) return;if(this.element._revert){this.element._revert.cancel();this.element._revert=null}
var pointer=[Event.pointerX(event),Event.pointerY(event)];var pos=Position.cumulativeOffset(this.element);this.offset=[0,1].map( function(i){return(pointer[i]-pos[i])});Draggables.activate(this);Event.stop(event)}},startDrag: function(event){this.dragging=true;if(this.options.zindex){this.originalZ=parseInt(Element.getStyle(this.element,'z-index')||0);this.element.style.zIndex=this.options.zindex}
if(this.options.ghosting){this._clone=this.element.cloneNode(true);Position.absolutize(this.element);this.element.parentNode.insertBefore(this._clone,this.element)}
if(this.options.scroll){if(this.options.scroll==window){var where=this._getWindowScroll(this.options.scroll);this.originalScrollLeft=where.left;this.originalScrollTop=where.top} else{this.originalScrollLeft=this.options.scroll.scrollLeft;this.originalScrollTop=this.options.scroll.scrollTop}}
Draggables.notify('onStart',this,event);if(this.options.starteffect) this.options.starteffect(this.element)},updateDrag: function(event,pointer){if(!this.dragging) this.startDrag(event);Position.prepare();Droppables.show(pointer,this.element);Draggables.notify('onDrag',this,event);this.draw(pointer);if(this.options.change) this.options.change(this);if(this.options.scroll){this.stopScrolling();var p;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){p=[left,top,left+width,top+height]}} else{p=Position.page(this.options.scroll);p[0]+=this.options.scroll.scrollLeft;p[1]+=this.options.scroll.scrollTop;p.push(p[0]+this.options.scroll.offsetWidth);p.push(p[1]+this.options.scroll.offsetHeight)}
var speed=[0,0];if(pointer[0]<(p[0]+this.options.scrollSensitivity)) speed[0]=pointer[0]-(p[0]+this.options.scrollSensitivity);if(pointer[1]<(p[1]+this.options.scrollSensitivity)) speed[1]=pointer[1]-(p[1]+this.options.scrollSensitivity);if(pointer[0]>(p[2]-this.options.scrollSensitivity)) speed[0]=pointer[0]-(p[2]-this.options.scrollSensitivity);if(pointer[1]>(p[3]-this.options.scrollSensitivity)) speed[1]=pointer[1]-(p[3]-this.options.scrollSensitivity);this.startScrolling(speed)}
if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);Event.stop(event)},finishDrag: function(event,success){this.dragging=false;if(this.options.ghosting){Position.relativize(this.element);Element.remove(this._clone);this._clone=null}
if(success) Droppables.fire(event,this.element);Draggables.notify('onEnd',this,event);var revert=this.options.revert;if(revert&&typeof revert=='function') revert=revert(this.element);var d=this.currentDelta();if(revert&&this.options.reverteffect){this.options.reverteffect(this.element,d[1]-this.delta[1],d[0]-this.delta[0])} else{this.delta=d}
if(this.options.zindex)
this.element.style.zIndex=this.originalZ;if(this.options.endeffect)
this.options.endeffect(this.element);Draggables.deactivate(this);Droppables.reset()},keyPress: function(event){if(event.keyCode!=Event.KEY_ESC) return;this.finishDrag(event,false);Event.stop(event)},endDrag: function(event){if(!this.dragging) return;this.stopScrolling();this.finishDrag(event,true);Event.stop(event)},draw: function(point){var pos=Position.cumulativeOffset(this.element);var d=this.currentDelta();pos[0]-=d[0];pos[1]-=d[1];if(this.options.scroll&&(this.options.scroll!=window)){pos[0]-=this.options.scroll.scrollLeft-this.originalScrollLeft;pos[1]-=this.options.scroll.scrollTop-this.originalScrollTop}
var p=[0,1].map(function(i){return(point[i]-pos[i]-this.offset[i])}.bind(this));if(this.options.snap){if(typeof this.options.snap=='function'){p=this.options.snap(p[0],p[1],this)} else{if(this.options.snap instanceof Array){p=p.map( function(v,i){return Math.round(v/this.options.snap[i])*this.options.snap[i]}.bind(this))} else{p=p.map( function(v){return Math.round(v/this.options.snap)*this.options.snap}.bind(this))}}}
var style=this.element.style;if((!this.options.constraint)||(this.options.constraint=='horizontal'))
style.left=p[0]+"px";if((!this.options.constraint)||(this.options.constraint=='vertical'))
style.top=p[1]+"px";if(style.visibility=="hidden") style.visibility=""},stopScrolling: function(){if(this.scrollInterval){clearInterval(this.scrollInterval);this.scrollInterval=null;Draggables._lastScrollPointer=null}},startScrolling: function(speed){this.scrollSpeed=[speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];this.lastScrolled=new Date();this.scrollInterval=setInterval(this.scroll.bind(this),10)},scroll: function(){var current=new Date();var delta=current-this.lastScrolled;this.lastScrolled=current;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){if(this.scrollSpeed[0]||this.scrollSpeed[1]){var d=delta/1000;this.options.scroll.scrollTo(left+d*this.scrollSpeed[0],top+d*this.scrollSpeed[1])}}} else{this.options.scroll.scrollLeft+=this.scrollSpeed[0] * delta/1000;this.options.scroll.scrollTop+=this.scrollSpeed[1] * delta/1000}
Position.prepare();Droppables.show(Draggables._lastPointer,this.element);Draggables.notify('onDrag',this);Draggables._lastScrollPointer=Draggables._lastScrollPointer||$A(Draggables._lastPointer);Draggables._lastScrollPointer[0]+=this.scrollSpeed[0] * delta/1000;Draggables._lastScrollPointer[1]+=this.scrollSpeed[1] * delta/1000;if(Draggables._lastScrollPointer[0]<0)
Draggables._lastScrollPointer[0]=0;if(Draggables._lastScrollPointer[1]<0)
Draggables._lastScrollPointer[1]=0;this.draw(Draggables._lastScrollPointer);if(this.options.change) this.options.change(this)},_getWindowScroll: function(w){var T,L,W,H;with(w.document){if(w.document.documentElement&&documentElement.scrollTop){T=documentElement.scrollTop;L=documentElement.scrollLeft} else if(w.document.body){T=body.scrollTop;L=body.scrollLeft}
if(w.innerWidth){W=w.innerWidth;H=w.innerHeight} else if(w.document.documentElement&&documentElement.clientWidth){W=documentElement.clientWidth;H=documentElement.clientHeight} else{W=body.offsetWidth;H=body.offsetHeight}}
return{top:T,left:L,width:W,height:H}}}
var SortableObserver=Class.create();SortableObserver.prototype={initialize: function(element,observer){this.element=$(element);this.observer=observer;this.lastValue=Sortable.serialize(this.element)},onStart: function(){this.lastValue=Sortable.serialize(this.element)},onEnd: function(){Sortable.unmark();if(this.lastValue!=Sortable.serialize(this.element))
this.observer(this.element)}}
var Sortable={sortables:{},_findRootElement: function(element){while(element.tagName!="BODY"){if(element.id&&Sortable.sortables[element.id]) return element;element=element.parentNode}},options: function(element){element=Sortable._findRootElement($(element));if(!element) return;return Sortable.sortables[element.id]},destroy: function(element){var s=Sortable.options(element);if(s){Draggables.removeObserver(s.element);s.droppables.each(function(d){Droppables.remove(d)});s.draggables.invoke('destroy');delete Sortable.sortables[s.element.id]}},create: function(element){element=$(element);var options=Object.extend({element:element,tag:'li',dropOnEmpty:false,tree:false,treeTag:'ul',overlap:'vertical',constraint:'vertical',containment:element,handle:false,only:false,hoverclass:null,ghosting:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,format:/^[^_]*_(.*)$/,onChange:Prototype.emptyFunction,onUpdate:Prototype.emptyFunction},arguments[1]||{});this.destroy(element);var options_for_draggable={revert:true,scroll:options.scroll,scrollSpeed:options.scrollSpeed,scrollSensitivity:options.scrollSensitivity,ghosting:options.ghosting,constraint:options.constraint,handle:options.handle};if(options.starteffect)
options_for_draggable.starteffect=options.starteffect;if(options.reverteffect)
options_for_draggable.reverteffect=options.reverteffect;else
if(options.ghosting) options_for_draggable.reverteffect=function(element){element.style.top=0;element.style.left=0};if(options.endeffect)
options_for_draggable.endeffect=options.endeffect;if(options.zindex)
options_for_draggable.zindex=options.zindex;var options_for_droppable={overlap:options.overlap,containment:options.containment,tree:options.tree,hoverclass:options.hoverclass,onHover:Sortable.onHover}
var options_for_tree={onHover:Sortable.onEmptyHover,overlap:options.overlap,containment:options.containment,hoverclass:options.hoverclass}
Element.cleanWhitespace(element);options.draggables=[];options.droppables=[];if(options.dropOnEmpty||options.tree){Droppables.add(element,options_for_tree);options.droppables.push(element)}(this.findElements(element,options)||[]).each( function(e){var handle=options.handle?Element.childrenWithClassName(e,options.handle)[0]:e;options.draggables.push(new Draggable(e,Object.extend(options_for_draggable,{handle:handle})));Droppables.add(e,options_for_droppable);if(options.tree) e.treeNode=element;options.droppables.push(e)});if(options.tree){(Sortable.findTreeElements(element,options)||[]).each( function(e){Droppables.add(e,options_for_tree);e.treeNode=element;options.droppables.push(e)})}
this.sortables[element.id]=options;Draggables.addObserver(new SortableObserver(element,options.onUpdate))},findElements: function(element,options){return Element.findChildren(element,options.only,options.tree?true:false,options.tag)},findTreeElements: function(element,options){return Element.findChildren(element,options.only,options.tree?true:false,options.treeTag)},onHover: function(element,dropon,overlap){if(Element.isParent(dropon,element)) return;if(overlap>.33&&overlap<.66&&Sortable.options(dropon).tree){return} else if(overlap>0.5){Sortable.mark(dropon,'before');if(dropon.previousSibling!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden";dropon.parentNode.insertBefore(element,dropon);if(dropon.parentNode!=oldParentNode)
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element)}} else{Sortable.mark(dropon,'after');var nextElement=dropon.nextSibling||null;if(nextElement!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden";dropon.parentNode.insertBefore(element,nextElement);if(dropon.parentNode!=oldParentNode)
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element)}}},onEmptyHover: function(element,dropon,overlap){var oldParentNode=element.parentNode;var droponOptions=Sortable.options(dropon);if(!Element.isParent(dropon,element)){var index;var children=Sortable.findElements(dropon,{tag:droponOptions.tag});var child=null;if(children){var offset=Element.offsetSize(dropon,droponOptions.overlap) *(1.0-overlap);for(index=0;index<children.length;index+=1){if(offset-Element.offsetSize(children[index],droponOptions.overlap)>=0){offset-=Element.offsetSize(children[index],droponOptions.overlap)} else if(offset-(Element.offsetSize(children[index],droponOptions.overlap)/2)>=0){child=index+1<children.length?children[index+1]:null;break} else{child=children[index];break}}}
dropon.insertBefore(element,child);Sortable.options(oldParentNode).onChange(element);droponOptions.onChange(element)}},unmark: function(){if(Sortable._marker) Element.hide(Sortable._marker)},mark: function(dropon,position){var sortable=Sortable.options(dropon.parentNode);if(sortable&&!sortable.ghosting) return;if(!Sortable._marker){Sortable._marker=$('dropmarker')||document.createElement('DIV');Element.hide(Sortable._marker);Element.addClassName(Sortable._marker,'dropmarker');Sortable._marker.style.position='absolute';document.getElementsByTagName("body").item(0).appendChild(Sortable._marker)}
var offsets=Position.cumulativeOffset(dropon);Sortable._marker.style.left=offsets[0]+'px';Sortable._marker.style.top=offsets[1]+'px';if(position=='after')
if(sortable.overlap=='horizontal')
Sortable._marker.style.left=(offsets[0]+dropon.clientWidth)+'px';else
Sortable._marker.style.top=(offsets[1]+dropon.clientHeight)+'px';Element.show(Sortable._marker)},_tree: function(element,options,parent){var children=Sortable.findElements(element,options)||[];for(var i=0;i<children.length;++i){var match=children[i].id.match(options.format);if(!match) continue;var child={id:encodeURIComponent(match?match[1]:null),element:element,parent:parent,children:new Array,position:parent.children.length,container:Sortable._findChildrenElement(children[i],options.treeTag.toUpperCase())}
if(child.container)
this._tree(child.container,options,child)
parent.children.push(child)}
return parent},_findChildrenElement: function(element,containerTag){if(element&&element.hasChildNodes)
for(var i=0;i<element.childNodes.length;++i)
if(element.childNodes[i].tagName==containerTag)
return element.childNodes[i];return null},tree: function(element){element=$(element);var sortableOptions=this.options(element);var options=Object.extend({tag:sortableOptions.tag,treeTag:sortableOptions.treeTag,only:sortableOptions.only,name:element.id,format:sortableOptions.format},arguments[1]||{});var root={id:null,parent:null,children:new Array,container:element,position:0}
return Sortable._tree(element,options,root)},_constructIndex: function(node){var index='';do{if(node.id) index='['+node.position+']'+index} while((node=node.parent)!=null);return index},sequence: function(element){element=$(element);var options=Object.extend(this.options(element),arguments[1]||{});return $(this.findElements(element,options)||[]).map( function(item){return item.id.match(options.format)?item.id.match(options.format)[1]:''})},setSequence: function(element,new_sequence){element=$(element);var options=Object.extend(this.options(element),arguments[2]||{});var nodeMap={};this.findElements(element,options).each( function(n){if(n.id.match(options.format))
nodeMap[n.id.match(options.format)[1]]=[n,n.parentNode];n.parentNode.removeChild(n)});new_sequence.each(function(ident){var n=nodeMap[ident];if(n){n[1].appendChild(n[0]);delete nodeMap[ident]}})},serialize: function(element){element=$(element);var options=Object.extend(Sortable.options(element),arguments[1]||{});var name=encodeURIComponent((arguments[1]&&arguments[1].name)?arguments[1].name:element.id);if(options.tree){return Sortable.tree(element,arguments[1]).children.map( function(item){return [name+Sortable._constructIndex(item)+"="+encodeURIComponent(item.id)].concat(item.children.map(arguments.callee))}).flatten().join('&')} else{return Sortable.sequence(element,arguments[1]).map( function(item){return name+"[]="+encodeURIComponent(item)}).join('&')}}}
Element.isParent=function(child,element){if(!child.parentNode||child==element) return false;if(child.parentNode==element) return true;return Element.isParent(child.parentNode,element)}
Element.findChildren=function(element,only,recursive,tagName){if(!element.hasChildNodes()) return null;tagName=tagName.toUpperCase();if(only) only=[only].flatten();var elements=[];$A(element.childNodes).each( function(e){if(e.tagName&&e.tagName.toUpperCase()==tagName&&(!only||(Element.classNames(e).detect(function(v){return only.include(v)}))))
elements.push(e);if(recursive){var grandchildren=Element.findChildren(e,only,recursive,tagName);if(grandchildren) elements.push(grandchildren)}});return(elements.length>0?elements.flatten():[])}
Element.offsetSize=function(element,type){if(type=='vertical'||type=='height')
return element.offsetHeight;else
return element.offsetWidth}

/* - controls.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/controls.js?original=1
var Autocompleter={}
Autocompleter.Base=function(){};Autocompleter.Base.prototype={baseInitialize: function(element,update,options){this.element=$(element);this.update=$(update);this.hasFocus=false;this.changed=false;this.active=false;this.index=0;this.entryCount=0;if(this.setOptions)
this.setOptions(options);else
this.options=options||{};this.options.paramName=this.options.paramName||this.element.name;this.options.tokens=this.options.tokens||[];this.options.frequency=this.options.frequency||0.4;this.options.minChars=this.options.minChars||1;this.options.onShow=this.options.onShow||
function(element,update){if(!update.style.position||update.style.position=='absolute'){update.style.position='absolute';Position.clone(element,update,{setHeight:false,offsetTop:element.offsetHeight})}
Effect.Appear(update,{duration:0.15})};this.options.onHide=this.options.onHide||
function(element,update){new Effect.Fade(update,{duration:0.15})};if(typeof(this.options.tokens)=='string')
this.options.tokens=new Array(this.options.tokens);this.observer=null;this.element.setAttribute('autocomplete','off');Element.hide(this.update);Event.observe(this.element,"blur",this.onBlur.bindAsEventListener(this));Event.observe(this.element,"keypress",this.onKeyPress.bindAsEventListener(this))},show: function(){if(Element.getStyle(this.update,'display')=='none') this.options.onShow(this.element,this.update);if(!this.iefix&&(navigator.appVersion.indexOf('MSIE')>0)&&(navigator.userAgent.indexOf('Opera')<0)&&(Element.getStyle(this.update,'position')=='absolute')){new Insertion.After(this.update,'<iframe id="'+this.update.id+'_iefix" '+'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" '+'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');this.iefix=$(this.update.id+'_iefix')}
if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this),50)},fixIEOverlapping: function(){Position.clone(this.update,this.iefix);this.iefix.style.zIndex=1;this.update.style.zIndex=2;Element.show(this.iefix)},hide: function(){this.stopIndicator();if(Element.getStyle(this.update,'display')!='none') this.options.onHide(this.element,this.update);if(this.iefix) Element.hide(this.iefix)},startIndicator: function(){if(this.options.indicator) Element.show(this.options.indicator)},stopIndicator: function(){if(this.options.indicator) Element.hide(this.options.indicator)},onKeyPress: function(event){if(this.active)
switch(event.keyCode){case Event.KEY_TAB:case Event.KEY_RETURN:this.selectEntry();Event.stop(event);case Event.KEY_ESC:this.hide();this.active=false;Event.stop(event);return;case Event.KEY_LEFT:case Event.KEY_RIGHT:return;case Event.KEY_UP:this.markPrevious();this.render();if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);return;case Event.KEY_DOWN:this.markNext();this.render();if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);return}
else
if(event.keyCode==Event.KEY_TAB||event.keyCode==Event.KEY_RETURN||(navigator.appVersion.indexOf('AppleWebKit')>0&&event.keyCode==0)) return;this.changed=true;this.hasFocus=true;if(this.observer) clearTimeout(this.observer);this.observer=setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1000)},activate: function(){this.changed=false;this.hasFocus=true;this.getUpdatedChoices()},onHover: function(event){var element=Event.findElement(event,'LI');if(this.index!=element.autocompleteIndex){this.index=element.autocompleteIndex;this.render()}
Event.stop(event)},onClick: function(event){var element=Event.findElement(event,'LI');this.index=element.autocompleteIndex;this.selectEntry();this.hide()},onBlur: function(event){setTimeout(this.hide.bind(this),250);this.hasFocus=false;this.active=false},render: function(){if(this.entryCount>0){for(var i=0;i<this.entryCount;i++)
this.index==i?Element.addClassName(this.getEntry(i),"selected"):Element.removeClassName(this.getEntry(i),"selected");if(this.hasFocus){this.show();this.active=true}} else{this.active=false;this.hide()}},markPrevious: function(){if(this.index>0) this.index--;else this.index=this.entryCount-1},markNext: function(){if(this.index<this.entryCount-1) this.index++;else this.index=0},getEntry: function(index){return this.update.firstChild.childNodes[index]},getCurrentEntry: function(){return this.getEntry(this.index)},selectEntry: function(){this.active=false;this.updateElement(this.getCurrentEntry())},updateElement: function(selectedElement){if(this.options.updateElement){this.options.updateElement(selectedElement);return}
var value='';if(this.options.select){var nodes=document.getElementsByClassName(this.options.select,selectedElement)||[];if(nodes.length>0) value=Element.collectTextNodes(nodes[0],this.options.select)} else
value=Element.collectTextNodesIgnoreClass(selectedElement,'informal');var lastTokenPos=this.findLastToken();if(lastTokenPos!=-1){var newValue=this.element.value.substr(0,lastTokenPos+1);var whitespace=this.element.value.substr(lastTokenPos+1).match(/^\s+/);if(whitespace)
newValue+=whitespace[0];this.element.value=newValue+value} else{this.element.value=value}
this.element.focus();if(this.options.afterUpdateElement)
this.options.afterUpdateElement(this.element,selectedElement)},updateChoices: function(choices){if(!this.changed&&this.hasFocus){this.update.innerHTML=choices;Element.cleanWhitespace(this.update);Element.cleanWhitespace(this.update.firstChild);if(this.update.firstChild&&this.update.firstChild.childNodes){this.entryCount=this.update.firstChild.childNodes.length;for(var i=0;i<this.entryCount;i++){var entry=this.getEntry(i);entry.autocompleteIndex=i;this.addObservers(entry)}} else{this.entryCount=0}
this.stopIndicator();this.index=0;this.render()}},addObservers: function(element){Event.observe(element,"mouseover",this.onHover.bindAsEventListener(this));Event.observe(element,"click",this.onClick.bindAsEventListener(this))},onObserverEvent: function(){this.changed=false;if(this.getToken().length>=this.options.minChars){this.startIndicator();this.getUpdatedChoices()} else{this.active=false;this.hide()}},getToken: function(){var tokenPos=this.findLastToken();if(tokenPos!=-1)
var ret=this.element.value.substr(tokenPos+1).replace(/^\s+/,'').replace(/\s+$/,'');else
var ret=this.element.value;return/\n/.test(ret)?'':ret},findLastToken: function(){var lastTokenPos=-1;for(var i=0;i<this.options.tokens.length;i++){var thisTokenPos=this.element.value.lastIndexOf(this.options.tokens[i]);if(thisTokenPos>lastTokenPos)
lastTokenPos=thisTokenPos}
return lastTokenPos}}
Ajax.Autocompleter=Class.create();Object.extend(Object.extend(Ajax.Autocompleter.prototype,Autocompleter.Base.prototype),{initialize: function(element,update,url,options){this.baseInitialize(element,update,options);this.options.asynchronous=true;this.options.onComplete=this.onComplete.bind(this);this.options.defaultParams=this.options.parameters||null;this.url=url},getUpdatedChoices: function(){entry=encodeURIComponent(this.options.paramName)+'='+encodeURIComponent(this.getToken());this.options.parameters=this.options.callback?this.options.callback(this.element,entry):entry;if(this.options.defaultParams)
this.options.parameters+='&'+this.options.defaultParams;new Ajax.Request(this.url,this.options)},onComplete: function(request){this.updateChoices(request.responseText)}});Autocompleter.Local=Class.create();Autocompleter.Local.prototype=Object.extend(new Autocompleter.Base(),{initialize: function(element,update,array,options){this.baseInitialize(element,update,options);this.options.array=array},getUpdatedChoices: function(){this.updateChoices(this.options.selector(this))},setOptions: function(options){this.options=Object.extend({choices:10,partialSearch:true,partialChars:2,ignoreCase:true,fullSearch:false,selector: function(instance){var ret=[];var partial=[];var entry=instance.getToken();var count=0;for(var i=0;i<instance.options.array.length&&ret.length<instance.options.choices ;i++){var elem=instance.options.array[i];var foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase()):elem.indexOf(entry);while(foundPos!=-1){if(foundPos==0&&elem.length!=entry.length){ret.push("<li><strong>"+elem.substr(0,entry.length)+"</strong>"+elem.substr(entry.length)+"</li>");break} else if(entry.length>=instance.options.partialChars&&instance.options.partialSearch&&foundPos!=-1){if(instance.options.fullSearch||/\s/.test(elem.substr(foundPos-1,1))){partial.push("<li>"+elem.substr(0,foundPos)+"<strong>"+elem.substr(foundPos,entry.length)+"</strong>"+elem.substr(foundPos+entry.length)+"</li>");break}}
foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase(),foundPos+1):elem.indexOf(entry,foundPos+1)}}
if(partial.length)
ret=ret.concat(partial.slice(0,instance.options.choices-ret.length))
return "<ul>"+ret.join('')+"</ul>"}},options||{})}});Field.scrollFreeActivate=function(field){setTimeout(function(){Field.activate(field)},1)}
Ajax.InPlaceEditor=Class.create();Ajax.InPlaceEditor.defaultHighlightColor="#FFFF99";Ajax.InPlaceEditor.prototype={initialize: function(element,url,options){this.url=url;this.element=$(element);this.options=Object.extend({okButton:true,okText:"ok",cancelLink:true,cancelText:"cancel",savingText:"Saving...",clickToEditText:"Click to edit",okText:"ok",rows:1,onComplete: function(transport,element){new Effect.Highlight(element,{startcolor:this.options.highlightcolor})},onFailure: function(transport){alert("Error communicating with the server: "+transport.responseText.stripTags())},callback: function(form){return Form.serialize(form)},handleLineBreaks:true,loadingText:'Loading...',savingClassName:'inplaceeditor-saving',loadingClassName:'inplaceeditor-loading',formClassName:'inplaceeditor-form',highlightcolor:Ajax.InPlaceEditor.defaultHighlightColor,highlightendcolor:"#FFFFFF",externalControl:null,submitOnBlur:false,ajaxOptions:{},evalScripts:false},options||{});if(!this.options.formId&&this.element.id){this.options.formId=this.element.id+"-inplaceeditor";if($(this.options.formId)){this.options.formId=null}}
if(this.options.externalControl){this.options.externalControl=$(this.options.externalControl)}
this.originalBackground=Element.getStyle(this.element,'background-color');if(!this.originalBackground){this.originalBackground="transparent"}
this.element.title=this.options.clickToEditText;this.onclickListener=this.enterEditMode.bindAsEventListener(this);this.mouseoverListener=this.enterHover.bindAsEventListener(this);this.mouseoutListener=this.leaveHover.bindAsEventListener(this);Event.observe(this.element,'click',this.onclickListener);Event.observe(this.element,'mouseover',this.mouseoverListener);Event.observe(this.element,'mouseout',this.mouseoutListener);if(this.options.externalControl){Event.observe(this.options.externalControl,'click',this.onclickListener);Event.observe(this.options.externalControl,'mouseover',this.mouseoverListener);Event.observe(this.options.externalControl,'mouseout',this.mouseoutListener)}},enterEditMode: function(evt){if(this.saving) return;if(this.editing) return;this.editing=true;this.onEnterEditMode();if(this.options.externalControl){Element.hide(this.options.externalControl)}
Element.hide(this.element);this.createForm();this.element.parentNode.insertBefore(this.form,this.element);Field.scrollFreeActivate(this.editField);if(evt){Event.stop(evt)}
return false},createForm: function(){this.form=document.createElement("form");this.form.id=this.options.formId;Element.addClassName(this.form,this.options.formClassName)
this.form.onsubmit=this.onSubmit.bind(this);this.createEditField();if(this.options.textarea){var br=document.createElement("br");this.form.appendChild(br)}
if(this.options.okButton){okButton=document.createElement("input");okButton.type="submit";okButton.value=this.options.okText;okButton.className='editor_ok_button';this.form.appendChild(okButton)}
if(this.options.cancelLink){cancelLink=document.createElement("a");cancelLink.href="#";cancelLink.appendChild(document.createTextNode(this.options.cancelText));cancelLink.onclick=this.onclickCancel.bind(this);cancelLink.className='editor_cancel';this.form.appendChild(cancelLink)}},hasHTMLLineBreaks: function(string){if(!this.options.handleLineBreaks) return false;return string.match(/<br/i)||string.match(/<p>/i)},convertHTMLLineBreaks: function(string){return string.replace(/<br>/gi,"\n").replace(/<br\/>/gi, "\n").replace(/<\/p>/gi,"\n").replace(/<p>/gi,"")},createEditField: function(){var text;if(this.options.loadTextURL){text=this.options.loadingText} else{text=this.getText()}
var obj=this;if(this.options.rows==1&&!this.hasHTMLLineBreaks(text)){this.options.textarea=false;var textField=document.createElement("input");textField.obj=this;textField.type="text";textField.name="value";textField.value=text;textField.style.backgroundColor=this.options.highlightcolor;textField.className='editor_field';var size=this.options.size||this.options.cols||0;if(size!=0) textField.size=size;if(this.options.submitOnBlur)
textField.onblur=this.onSubmit.bind(this);this.editField=textField} else{this.options.textarea=true;var textArea=document.createElement("textarea");textArea.obj=this;textArea.name="value";textArea.value=this.convertHTMLLineBreaks(text);textArea.rows=this.options.rows;textArea.cols=this.options.cols||40;textArea.className='editor_field';if(this.options.submitOnBlur)
textArea.onblur=this.onSubmit.bind(this);this.editField=textArea}
if(this.options.loadTextURL){this.loadExternalText()}
this.form.appendChild(this.editField)},getText: function(){return this.element.innerHTML},loadExternalText: function(){Element.addClassName(this.form,this.options.loadingClassName);this.editField.disabled=true;new Ajax.Request(this.options.loadTextURL,Object.extend({asynchronous:true,onComplete:this.onLoadedExternalText.bind(this)},this.options.ajaxOptions))},onLoadedExternalText: function(transport){Element.removeClassName(this.form,this.options.loadingClassName);this.editField.disabled=false;this.editField.value=transport.responseText.stripTags()},onclickCancel: function(){this.onComplete();this.leaveEditMode();return false},onFailure: function(transport){this.options.onFailure(transport);if(this.oldInnerHTML){this.element.innerHTML=this.oldInnerHTML;this.oldInnerHTML=null}
return false},onSubmit: function(){var form=this.form;var value=this.editField.value;this.onLoading();if(this.options.evalScripts){new Ajax.Request(this.url,Object.extend({parameters:this.options.callback(form,value),onComplete:this.onComplete.bind(this),onFailure:this.onFailure.bind(this),asynchronous:true,evalScripts:true},this.options.ajaxOptions))} else{new Ajax.Updater({success:this.element,failure:null},this.url,Object.extend({parameters:this.options.callback(form,value),onComplete:this.onComplete.bind(this),onFailure:this.onFailure.bind(this)},this.options.ajaxOptions))}
if(arguments.length>1){Event.stop(arguments[0])}
return false},onLoading: function(){this.saving=true;this.removeForm();this.leaveHover();this.showSaving()},showSaving: function(){this.oldInnerHTML=this.element.innerHTML;this.element.innerHTML=this.options.savingText;Element.addClassName(this.element,this.options.savingClassName);this.element.style.backgroundColor=this.originalBackground;Element.show(this.element)},removeForm: function(){if(this.form){if(this.form.parentNode) Element.remove(this.form);this.form=null}},enterHover: function(){if(this.saving) return;this.element.style.backgroundColor=this.options.highlightcolor;if(this.effect){this.effect.cancel()}
Element.addClassName(this.element,this.options.hoverClassName)},leaveHover: function(){if(this.options.backgroundColor){this.element.style.backgroundColor=this.oldBackground}
Element.removeClassName(this.element,this.options.hoverClassName)
if(this.saving) return;this.effect=new Effect.Highlight(this.element,{startcolor:this.options.highlightcolor,endcolor:this.options.highlightendcolor,restorecolor:this.originalBackground})},leaveEditMode: function(){Element.removeClassName(this.element,this.options.savingClassName);this.removeForm();this.leaveHover();this.element.style.backgroundColor=this.originalBackground;Element.show(this.element);if(this.options.externalControl){Element.show(this.options.externalControl)}
this.editing=false;this.saving=false;this.oldInnerHTML=null;this.onLeaveEditMode()},onComplete: function(transport){this.leaveEditMode();this.options.onComplete.bind(this)(transport,this.element)},onEnterEditMode: function(){},onLeaveEditMode: function(){},dispose: function(){if(this.oldInnerHTML){this.element.innerHTML=this.oldInnerHTML}
this.leaveEditMode();Event.stopObserving(this.element,'click',this.onclickListener);Event.stopObserving(this.element,'mouseover',this.mouseoverListener);Event.stopObserving(this.element,'mouseout',this.mouseoutListener);if(this.options.externalControl){Event.stopObserving(this.options.externalControl,'click',this.onclickListener);Event.stopObserving(this.options.externalControl,'mouseover',this.mouseoverListener);Event.stopObserving(this.options.externalControl,'mouseout',this.mouseoutListener)}}};Ajax.InPlaceCollectionEditor=Class.create();Object.extend(Ajax.InPlaceCollectionEditor.prototype,Ajax.InPlaceEditor.prototype);Object.extend(Ajax.InPlaceCollectionEditor.prototype,{createEditField: function(){if(!this.cached_selectTag){var selectTag=document.createElement("select");var collection=this.options.collection||[];var optionTag;collection.each(function(e,i){optionTag=document.createElement("option");optionTag.value=(e instanceof Array)?e[0]:e;if(this.options.value==optionTag.value) optionTag.selected=true;optionTag.appendChild(document.createTextNode((e instanceof Array)?e[1]:e));selectTag.appendChild(optionTag)}.bind(this));this.cached_selectTag=selectTag}
this.editField=this.cached_selectTag;if(this.options.loadTextURL) this.loadExternalText();this.form.appendChild(this.editField);this.options.callback=function(form,value){return "value="+encodeURIComponent(value)}}});Form.Element.DelayedObserver=Class.create();Form.Element.DelayedObserver.prototype={initialize: function(element,delay,callback){this.delay=delay||0.5;this.element=$(element);this.callback=callback;this.timer=null;this.lastValue=$F(this.element);Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this))},delayedListener: function(event){if(this.lastValue==$F(this.element)) return;if(this.timer) clearTimeout(this.timer);this.timer=setTimeout(this.onTimerEvent.bind(this),this.delay * 1000);this.lastValue=$F(this.element)},onTimerEvent: function(){this.timer=null;this.callback(this.element,$F(this.element))}};

/* - slider.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/slider.js?original=1
if(!Control) var Control={};Control.Slider=Class.create();Control.Slider.prototype={initialize: function(handle,track,options){var slider=this;if(handle instanceof Array){this.handles=handle.collect( function(e){return $(e)})} else{this.handles=[$(handle)]}
this.track=$(track);this.options=options||{};this.axis=this.options.axis||'horizontal';this.increment=this.options.increment||1;this.step=parseInt(this.options.step||'1');this.range=this.options.range||$R(0,1);this.value=0;this.values=this.handles.map( function(){return 0});this.spans=this.options.spans?this.options.spans.map(function(s){return $(s)}):false;this.options.startSpan=$(this.options.startSpan||null);this.options.endSpan=$(this.options.endSpan||null);this.restricted=this.options.restricted||false;this.maximum=this.options.maximum||this.range.end;this.minimum=this.options.minimum||this.range.start;this.alignX=parseInt(this.options.alignX||'0');this.alignY=parseInt(this.options.alignY||'0');this.trackLength=this.maximumOffset()-this.minimumOffset();this.handleLength=this.isVertical()?this.handles[0].offsetHeight:this.handles[0].offsetWidth;this.active=false;this.dragging=false;this.disabled=false;if(this.options.disabled) this.setDisabled();this.allowedValues=this.options.values?this.options.values.sortBy(Prototype.K):false;if(this.allowedValues){this.minimum=this.allowedValues.min();this.maximum=this.allowedValues.max()}
this.eventMouseDown=this.startDrag.bindAsEventListener(this);this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.update.bindAsEventListener(this);this.handles.each( function(h,i){i=slider.handles.length-1-i;slider.setValue(parseFloat((slider.options.sliderValue instanceof Array?slider.options.sliderValue[i]:slider.options.sliderValue)||slider.range.start),i);Element.makePositioned(h);Event.observe(h,"mousedown",slider.eventMouseDown)});Event.observe(this.track,"mousedown",this.eventMouseDown);Event.observe(document,"mouseup",this.eventMouseUp);Event.observe(document,"mousemove",this.eventMouseMove);this.initialized=true},dispose: function(){var slider=this;Event.stopObserving(this.track,"mousedown",this.eventMouseDown);Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(document,"mousemove",this.eventMouseMove);this.handles.each( function(h){Event.stopObserving(h,"mousedown",slider.eventMouseDown)})},setDisabled: function(){this.disabled=true},setEnabled: function(){this.disabled=false},getNearestValue: function(value){if(this.allowedValues){if(value>=this.allowedValues.max()) return(this.allowedValues.max());if(value<=this.allowedValues.min()) return(this.allowedValues.min());var offset=Math.abs(this.allowedValues[0]-value);var newValue=this.allowedValues[0];this.allowedValues.each( function(v){var currentOffset=Math.abs(v-value);if(currentOffset<=offset){newValue=v;offset=currentOffset}});return newValue}
if(value>this.range.end) return this.range.end;if(value<this.range.start) return this.range.start;return value},setValue: function(sliderValue,handleIdx){if(!this.active){this.activeHandle=this.handles[handleIdx];this.activeHandleIdx=handleIdx;this.updateStyles()}
handleIdx=handleIdx||this.activeHandleIdx||0;if(this.initialized&&this.restricted){if((handleIdx>0)&&(sliderValue<this.values[handleIdx-1]))
sliderValue=this.values[handleIdx-1];if((handleIdx<(this.handles.length-1))&&(sliderValue>this.values[handleIdx+1]))
sliderValue=this.values[handleIdx+1]}
sliderValue=this.getNearestValue(sliderValue);this.values[handleIdx]=sliderValue;this.value=this.values[0];this.handles[handleIdx].style[this.isVertical()?'top':'left']=this.translateToPx(sliderValue);this.drawSpans();if(!this.dragging||!this.event) this.updateFinished()},setValueBy: function(delta,handleIdx){this.setValue(this.values[handleIdx||this.activeHandleIdx||0]+delta,handleIdx||this.activeHandleIdx||0)},translateToPx: function(value){return Math.round(((this.trackLength-this.handleLength)/(this.range.end-this.range.start)) *(value-this.range.start))+"px"},translateToValue: function(offset){return((offset/(this.trackLength-this.handleLength) *(this.range.end-this.range.start))+this.range.start)},getRange: function(range){var v=this.values.sortBy(Prototype.K);range=range||0;return $R(v[range],v[range+1])},minimumOffset: function(){return(this.isVertical()?this.alignY:this.alignX)},maximumOffset: function(){return(this.isVertical()?this.track.offsetHeight-this.alignY:this.track.offsetWidth-this.alignX)},isVertical: function(){return(this.axis=='vertical')},drawSpans: function(){var slider=this;if(this.spans)
$R(0,this.spans.length-1).each(function(r){slider.setSpan(slider.spans[r],slider.getRange(r))});if(this.options.startSpan)
this.setSpan(this.options.startSpan,$R(0,this.values.length>1?this.getRange(0).min():this.value));if(this.options.endSpan)
this.setSpan(this.options.endSpan,$R(this.values.length>1?this.getRange(this.spans.length-1).max():this.value,this.maximum))},setSpan: function(span,range){if(this.isVertical()){span.style.top=this.translateToPx(range.start);span.style.height=this.translateToPx(range.end-range.start+this.range.start)} else{span.style.left=this.translateToPx(range.start);span.style.width=this.translateToPx(range.end-range.start+this.range.start)}},updateStyles: function(){this.handles.each( function(h){Element.removeClassName(h,'selected')});Element.addClassName(this.activeHandle,'selected')},startDrag: function(event){if(Event.isLeftClick(event)){if(!this.disabled){this.active=true;var handle=Event.element(event);var pointer=[Event.pointerX(event),Event.pointerY(event)];if(handle==this.track){var offsets=Position.cumulativeOffset(this.track);this.event=event;this.setValue(this.translateToValue((this.isVertical()?pointer[1]-offsets[1]:pointer[0]-offsets[0])-(this.handleLength/2)));var offsets=Position.cumulativeOffset(this.activeHandle);this.offsetX=(pointer[0]-offsets[0]);this.offsetY=(pointer[1]-offsets[1])} else{while((this.handles.indexOf(handle)==-1)&&handle.parentNode)
handle=handle.parentNode;this.activeHandle=handle;this.activeHandleIdx=this.handles.indexOf(this.activeHandle);this.updateStyles();var offsets=Position.cumulativeOffset(this.activeHandle);this.offsetX=(pointer[0]-offsets[0]);this.offsetY=(pointer[1]-offsets[1])}}
Event.stop(event)}},update: function(event){if(this.active){if(!this.dragging) this.dragging=true;this.draw(event);if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);Event.stop(event)}},draw: function(event){var pointer=[Event.pointerX(event),Event.pointerY(event)];var offsets=Position.cumulativeOffset(this.track);pointer[0]-=this.offsetX+offsets[0];pointer[1]-=this.offsetY+offsets[1];this.event=event;this.setValue(this.translateToValue(this.isVertical()?pointer[1]:pointer[0]));if(this.initialized&&this.options.onSlide)
this.options.onSlide(this.values.length>1?this.values:this.value,this)},endDrag: function(event){if(this.active&&this.dragging){this.finishDrag(event,true);Event.stop(event)}
this.active=false;this.dragging=false},finishDrag: function(event,success){this.active=false;this.dragging=false;this.updateFinished()},updateFinished: function(){if(this.initialized&&this.options.onChange)
this.options.onChange(this.values.length>1?this.values:this.value,this);this.event=null}}

/* - lightbox.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/lightbox.js?original=1
var fileLoadingImage="lightbox_loading.gif";var fileBottomNavCloseImage="lightbox_closelabel.gif";var resizeSpeed=7;var borderSize=10;var imageArray=new Array;var activeImage;if(resizeSpeed>10){resizeSpeed=10}
if(resizeSpeed<1){resizeSpeed=1}
resizeDuration=(11-resizeSpeed) * 0.15;Object.extend(Element,{getWidth: function(element){element=$(element);return element.offsetWidth},setWidth: function(element,w){element=$(element);element.style.width=w+"px"},setHeight: function(element,h){element=$(element);element.style.height=h+"px"},setTop: function(element,t){element=$(element);element.style.top=t+"px"},setSrc: function(element,src){element=$(element);element.src=src},setHref: function(element,href){element=$(element);element.href=href},setInnerHTML: function(element,content){element=$(element);element.innerHTML=content}});Array.prototype.removeDuplicates=function(){for(i=1;i<this.length;i++){if(this[i][0]==this[i-1][0]){this.splice(i,1)}}}
Array.prototype.empty=function(){for(i=0;i<=this.length;i++){this.shift()}}
var Lightbox=Class.create();Lightbox.prototype={initialize: function(){if(!document.getElementsByTagName){return}
var anchors=document.getElementsByTagName('a');for(var i=0;i<anchors.length;i++){var anchor=anchors[i];var relAttribute=String(anchor.getAttribute('rel'));if(anchor.getAttribute('target')){anchor.setAttribute('target','')}
if(anchor.getAttribute('href')&&(relAttribute.toLowerCase().match('lightbox'))){anchor.onclick=function(){myLightbox.start(this);return false}}}
var objBody=document.getElementsByTagName("body").item(0);var objOverlay=document.createElement("div");objOverlay.setAttribute('id','overlay');objOverlay.style.display='none';objBody.appendChild(objOverlay);this.MainOverlay=objOverlay;var objLightbox=document.createElement("div");objLightbox.setAttribute('id','lightbox');objLightbox.style.display='none';objBody.appendChild(objLightbox);var objOuterImageContainer=document.createElement("div");objOuterImageContainer.setAttribute('id','outerImageContainer');objLightbox.appendChild(objOuterImageContainer);var objImageContainer=document.createElement("div");objImageContainer.setAttribute('id','imageContainer');objOuterImageContainer.appendChild(objImageContainer);var objLightboxImage=document.createElement("img");objLightboxImage.setAttribute('id','lightboxImage');objImageContainer.appendChild(objLightboxImage);var objHoverNav=document.createElement("div");objHoverNav.setAttribute('id','hoverNav');objImageContainer.appendChild(objHoverNav);var objPrevLink=document.createElement("a");objPrevLink.setAttribute('id','prevLink');objPrevLink.setAttribute('href','#');objHoverNav.appendChild(objPrevLink);var objNextLink=document.createElement("a");objNextLink.setAttribute('id','nextLink');objNextLink.setAttribute('href','#');objHoverNav.appendChild(objNextLink);var objLoading=document.createElement("div");objLoading.setAttribute('id','loading');objImageContainer.appendChild(objLoading);var objLoadingLink=document.createElement("a");objLoadingLink.setAttribute('id','loadingLink');objLoadingLink.setAttribute('href','#');objLoadingLink.onclick=function(){myLightbox.end();return false}
objLoading.appendChild(objLoadingLink);var objLoadingImage=document.createElement("img");objLoadingImage.setAttribute('src',fileLoadingImage);objLoadingLink.appendChild(objLoadingImage);var objImageDataContainer=document.createElement("div");objImageDataContainer.setAttribute('id','imageDataContainer');objImageDataContainer.className='clearfix';objLightbox.appendChild(objImageDataContainer);var objImageData=document.createElement("div");objImageData.setAttribute('id','imageData');objImageDataContainer.appendChild(objImageData);var objImageDetails=document.createElement("div");objImageDetails.setAttribute('id','imageDetails');objImageData.appendChild(objImageDetails);var objCaption=document.createElement("span");objCaption.setAttribute('id','caption');objImageDetails.appendChild(objCaption);var objNumberDisplay=document.createElement("span");objNumberDisplay.setAttribute('id','numberDisplay');objImageDetails.appendChild(objNumberDisplay);var objBottomNav=document.createElement("div");objBottomNav.setAttribute('id','bottomNav');objImageData.appendChild(objBottomNav);var objBottomNavCloseLink=document.createElement("a");objBottomNavCloseLink.setAttribute('id','bottomNavClose');objBottomNavCloseLink.setAttribute('href','#');objBottomNavCloseLink.onclick=function(){myLightbox.end();return false}
objBottomNav.appendChild(objBottomNavCloseLink);var objBottomNavCloseImage=document.createElement("img");objBottomNavCloseImage.setAttribute('src',fileBottomNavCloseImage);objBottomNavCloseLink.appendChild(objBottomNavCloseImage)},startDocument: function(doclink){new LightboxDisplayer(doclink)},start: function(imageLink){hideSelectBoxes();this.MainOverlay.onclick=function(){myLightbox.end();return false}
var arrayPageSize=getPageSize();Element.setHeight('overlay',arrayPageSize[1]);new Effect.Appear('overlay',{duration:0.2,from:0.0,to:0.8});imageArray=[];imageNum=0;if(!document.getElementsByTagName){return}
var anchors=document.getElementsByTagName('a');if((imageLink.getAttribute('rel')=='lightbox')){imageArray.push(new Array(imageLink.getAttribute('href'),imageLink.getAttribute('title')))} else{for(var i=0;i<anchors.length;i++){var anchor=anchors[i];if(anchor.getAttribute('href')&&(anchor.getAttribute('rel')==imageLink.getAttribute('rel'))){imageArray.push(new Array(anchor.getAttribute('href'),anchor.getAttribute('title')))}}
imageArray.removeDuplicates();while(imageArray[imageNum][0]!=imageLink.getAttribute('href')){imageNum++}}
var arrayPageSize=getPageSize();var arrayPageScroll=getPageScroll();var lightboxTop=arrayPageScroll[1]+(arrayPageSize[3]/15);Element.setTop('lightbox',lightboxTop);Element.show('lightbox');this.changeImage(imageNum)},changeImage: function(imageNum){activeImage=imageNum;Element.show('loading');Element.hide('lightboxImage');Element.hide('hoverNav');Element.hide('prevLink');Element.hide('nextLink');Element.hide('imageDataContainer');Element.hide('numberDisplay');imgPreloader=new Image();imgPreloader.onload=function(){Element.setSrc('lightboxImage',imageArray[activeImage][0]);myLightbox.resizeImageContainer(imgPreloader.width,imgPreloader.height)}
imgPreloader.src=imageArray[activeImage][0]},resizeImageContainer: function(imgWidth,imgHeight){this.wCur=Element.getWidth('outerImageContainer');this.hCur=Element.getHeight('outerImageContainer');this.xScale=((imgWidth+(borderSize * 2))/this.wCur) * 100;this.yScale=((imgHeight+(borderSize * 2))/this.hCur) * 100;wDiff=(this.wCur-borderSize * 2)-imgWidth;hDiff=(this.hCur-borderSize * 2)-imgHeight;if(!(hDiff==0)){new Effect.Scale('outerImageContainer',this.yScale,{scaleX:false,duration:resizeDuration,queue:'front'})}
if(!(wDiff==0)){new Effect.Scale('outerImageContainer',this.xScale,{scaleY:false,delay:resizeDuration,duration:resizeDuration})}
if((hDiff==0)&&(wDiff==0)){if(navigator.appVersion.indexOf("MSIE")!=-1){pause(250)} else{pause(100)}}
Element.setHeight('prevLink',imgHeight);Element.setHeight('nextLink',imgHeight);Element.setWidth('imageDataContainer',imgWidth+(borderSize * 2));this.showImage()},showImage: function(){Element.hide('loading');new Effect.Appear('lightboxImage',{duration:0.5,queue:'end',afterFinish: function(){myLightbox.updateDetails()}});this.preloadNeighborImages()},updateDetails: function(){Element.show('caption');Element.setInnerHTML('caption',imageArray[activeImage][1]);if(imageArray.length>1){Element.show('numberDisplay');Element.setInnerHTML('numberDisplay',"Image "+eval(activeImage+1)+" of "+imageArray.length)}
new Effect.Parallel([new Effect.SlideDown('imageDataContainer',{sync:true,duration:resizeDuration+0.25,from:0.0,to:1.0}),new Effect.Appear('imageDataContainer',{sync:true,duration:1.0})],{duration:0.65,afterFinish: function(){myLightbox.updateNav()}})},updateNav: function(){Element.show('hoverNav');if(activeImage!=0){Element.show('prevLink');document.getElementById('prevLink').onclick=function(){myLightbox.changeImage(activeImage-1);return false}}
if(activeImage!=(imageArray.length-1)){Element.show('nextLink');document.getElementById('nextLink').onclick=function(){myLightbox.changeImage(activeImage+1);return false}}
this.enableKeyboardNav()},enableKeyboardNav: function(){document.onkeydown=this.keyboardAction},disableKeyboardNav: function(){document.onkeydown=''},keyboardAction: function(e){if(e==null){keycode=event.keyCode} else{keycode=e.which}
key=String.fromCharCode(keycode).toLowerCase();if((key=='x')||(key=='o')||(key=='c')){myLightbox.end()} else if(key=='p'){if(activeImage!=0){myLightbox.disableKeyboardNav();myLightbox.changeImage(activeImage-1)}} else if(key=='n'){if(activeImage!=(imageArray.length-1)){myLightbox.disableKeyboardNav();myLightbox.changeImage(activeImage+1)}}},preloadNeighborImages: function(){if((imageArray.length-1)>activeImage){preloadNextImage=new Image();preloadNextImage.src=imageArray[activeImage+1][0]}
if(activeImage>0){preloadPrevImage=new Image();preloadPrevImage.src=imageArray[activeImage-1][0]}},end: function(){this.disableKeyboardNav();Element.hide('lightbox');new Effect.Fade('overlay',{duration:0.2});showSelectBoxes()},endDoc: function(el){Element.hide($(el));new Effect.Fade('overlay',{duration:0.2})}}
var LightboxFetcher=Class.create();LightboxFetcher.prototype={initialize: function(xtra){var objBody=document.getElementsByTagName("body").item(0);var newDiv=document.createElement("div");newDiv.setAttribute('id',xtra+'-lbox');newDiv.setAttribute('class','lightbox-document');newDiv.style.display='none';var docwrap=document.createElement("div");docwrap.setAttribute('class','lightbox-document-wrapper');newDiv.appendChild(docwrap);var bodwrap=document.createElement("div");bodwrap.setAttribute('class','lightbox-document-body-wrapper');docwrap.appendChild(bodwrap);var objLoading=document.createElement("div");this.objLoading=objLoading;objLoading.setAttribute('id',xtra+'-body');objLoading.setAttribute('class','lightbox-document-body');bodwrap.appendChild(objLoading);var objLoadingLink=document.createElement("a");objLoadingLink.setAttribute('id','loadingLink');objLoadingLink.setAttribute('href','#');objLoadingLink.setAttribute('rel',xtra+'-lbox');objLoadingLink.onclick=function(){myLightbox.endDoc($(this.getAttribute('rel')));return false}
objLoading.appendChild(objLoadingLink);var objLoadingImage=document.createElement("img");objLoadingImage.setAttribute('src',fileLoadingImage);objLoadingLink.appendChild(objLoadingImage);var objBottomNav=document.createElement("div");objBottomNav.setAttribute('class','bottomNav');docwrap.appendChild(objBottomNav);var objBottomNavBackRef=document.createElement("div");objBottomNavBackRef.setAttribute('class','lightbox-back-link');objBottomNav.appendChild(objBottomNavBackRef);var objBottomNavBackRefLink=document.createElement("a");objBottomNavBackRefLink.setAttribute('href',xtra);objBottomNavBackRefLink.setAttribute('title','View as normal page');objBottomNavBackRefLink.innerHTML='Standard Page';objBottomNavBackRef.appendChild(objBottomNavBackRefLink);var objBottomNavCloseLink=document.createElement("a");objBottomNavCloseLink.setAttribute('id','bottomNavClose');objBottomNavCloseLink.setAttribute('href','#');objBottomNav.appendChild(objBottomNavCloseLink);var objBottomNavCloseImage=document.createElement("img");objBottomNavCloseImage.setAttribute('src',fileBottomNavCloseImage);objBottomNavCloseImage.setAttribute('alt','Close Window');objBottomNavCloseImage.setAttribute('rel',xtra+'-lbox');objBottomNavCloseImage.onclick=function(){myLightbox.endDoc($(this.getAttribute('rel')));return false}
objBottomNavCloseLink.appendChild(objBottomNavCloseImage);objBody.appendChild(newDiv);new Ajax.Updater({success:objLoading},String(xtra+"/lightbox_document_view"),{method:'get',onFailure: function(){lightboxDocumentError(objLoading);return true}})}}
var LightboxDisplayer=Class.create();LightboxDisplayer.prototype={initialize: function(doclink){if(!doclink.getAttribute('href')){return false}
var elem=$(doclink.getAttribute('href')+'-lbox');myLightbox.MainOverlay.setAttribute('rel',doclink.getAttribute('href')+'-lbox');myLightbox.MainOverlay.onclick=function(){myLightbox.endDoc(this.setAttribute('rel'));return false}
var arrayPageSize=getPageSize();Element.setHeight('overlay',arrayPageSize[1]);new Effect.Appear('overlay',{duration:0.2,from:0.0,to:0.8});var arrayPageSize=getPageSize();var arrayPageScroll=getPageScroll();var lightboxTop=arrayPageScroll[1]+(arrayPageSize[3]/15);Element.setTop(elem,lightboxTop);var lwrap=elem.childNodes[0];var lbodyw=lwrap.childNodes[0];var bnav=lwrap.childNodes[1];var lbody=lbodyw.childNodes[0];lwrap.style.width='350px';lwrap.style.height='300px';Element.show(elem);Element.show(lwrap);Element.show(lbodyw);Element.hide(bnav);Element.hide(lbody);new Effect.Scale(lwrap,200.0,{scaleY:false,duration:1.0,queue:'end'});new Effect.Scale(lwrap,200.0,{delay:0.5,scaleX:false,duration:1.0,queue:'end',afterFinish: function(el){el.element.style.fontSize=null}});new Effect.Appear(lbody,{queue:'end'});new Effect.Parallel([new Effect.SlideDown(bnav,{sync:true,duration:1.0}),new Effect.Appear(bnav,{sync:true,duration:1.0})],{queue:'end'})}}
function lightboxDocumentError(elem){elem.innerHTML=null;var newH=document.createElement("h2");newH.innerHTML='Our apologies...';var newP1=document.createElement("p");newP1.innerHTML='The item you requested does not exist on this server or cannot be served.';var newP2=document.createElement("p");var newC=document.createElement("code");newC.innerHTML='404 Not Found</p>';newP2.appendChild(newC);elem.appendChild(newH);elem.appendChild(newP1);elem.appendChild(newP2)}
function getPageScroll(){var yScroll;if(self.pageYOffset){yScroll=self.pageYOffset} else if(document.documentElement&&document.documentElement.scrollTop){yScroll=document.documentElement.scrollTop} else if(document.body){yScroll=document.body.scrollTop}
arrayPageScroll=new Array('',yScroll)
return arrayPageScroll}
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){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight} else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight}
var windowWidth,windowHeight;if(self.innerHeight){windowWidth=self.innerWidth;windowHeight=self.innerHeight} else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight} else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight}
if(yScroll<windowHeight){pageHeight=windowHeight} else{pageHeight=yScroll}
if(xScroll<windowWidth){pageWidth=windowWidth} else{pageWidth=xScroll}
arrayPageSize=new Array(pageWidth,pageHeight,windowWidth,windowHeight)
return arrayPageSize}
function getKey(e){if(e==null){keycode=event.keyCode} else{keycode=e.which}
key=String.fromCharCode(keycode).toLowerCase();if(key=='x'){}}
function listenKey(){document.onkeypress=getKey}
function showSelectBoxes(){selects=document.getElementsByTagName("select");for(i=0;i!=selects.length;i++){selects[i].style.visibility="visible"}}
function hideSelectBoxes(){selects=document.getElementsByTagName("select");for(i=0;i!=selects.length;i++){selects[i].style.visibility="hidden"}}
function pause(numberMillis){var now=new Date();var exitTime=now.getTime()+numberMillis;while(true){now=new Date();if(now.getTime()>exitTime)
return}}
function initLightbox(){myLightbox=new Lightbox()}
Event.observe(window,'load',initLightbox,false);

/* - behaviour.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/behaviour.js?original=1
var Behaviour={list:new Array,register: function(sheet){Behaviour.list.push(sheet)},start: function(){Behaviour.addLoadEvent(function(){Behaviour.apply()})},apply: function(){for(h=0;sheet=Behaviour.list[h];h++){for(selector in sheet){list=document.getElementsBySelector(selector);if(!list){continue}
for(i=0;element=list[i];i++){sheet[selector](element)}}}},addLoadEvent: function(func){var oldonload=window.onload;if(typeof window.onload!='function'){window.onload=func} else{window.onload=function(){oldonload();func()}}}}
Behaviour.start();
function getAllChildren(e){return e.all?e.all:e.getElementsByTagName('*')}
document.getElementsBySelector=function(selector){if(!document.getElementsByTagName){return new Array()}
var tokens=selector.split(' ');var currentContext=new Array(document);for(var i=0;i<tokens.length;i++){token=tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');if(token.indexOf('#')>-1){var bits=token.split('#');var tagName=bits[0];var id=bits[1];var element=document.getElementById(id);if(tagName&&element.nodeName.toLowerCase()!=tagName){return new Array()}
currentContext=new Array(element);continue}
if(token.indexOf('.')>-1){var bits=token.split('.');var tagName=bits[0];var className=bits[1];if(!tagName){tagName='*'}
var found=new Array;var foundCount=0;for(var h=0;h<currentContext.length;h++){var elements;if(tagName=='*'){elements=getAllChildren(currentContext[h])} else{elements=currentContext[h].getElementsByTagName(tagName)}
for(var j=0;j<elements.length;j++){found[foundCount++]=elements[j]}}
currentContext=new Array;var currentContextIndex=0;for(var k=0;k<found.length;k++){if(found[k].className&&found[k].className.match(new RegExp('\\b'+className+'\\b'))){currentContext[currentContextIndex++]=found[k]}}
continue}
if(token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)){var tagName=RegExp.$1;var attrName=RegExp.$2;var attrOperator=RegExp.$3;var attrValue=RegExp.$4;if(!tagName){tagName='*'}
var found=new Array;var foundCount=0;for(var h=0;h<currentContext.length;h++){var elements;if(tagName=='*'){elements=getAllChildren(currentContext[h])} else{elements=currentContext[h].getElementsByTagName(tagName)}
for(var j=0;j<elements.length;j++){found[foundCount++]=elements[j]}}
currentContext=new Array;var currentContextIndex=0;var checkFunction;switch(attrOperator){case '=':checkFunction=function(e){return(e.getAttribute(attrName)==attrValue)};break;case '~':checkFunction=function(e){return(e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b')))};break;case '|':checkFunction=function(e){return(e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?')))};break;case '^':checkFunction=function(e){return(e.getAttribute(attrName).indexOf(attrValue)==0)};break;case '$':checkFunction=function(e){return(e.getAttribute(attrName).lastIndexOf(attrValue)==e.getAttribute(attrName).length-attrValue.length)};break;case '*':checkFunction=function(e){return(e.getAttribute(attrName).indexOf(attrValue)>-1)};break;default:checkFunction=function(e){return e.getAttribute(attrName)}}
currentContext=new Array;var currentContextIndex=0;for(var k=0;k<found.length;k++){if(checkFunction(found[k])){currentContext[currentContextIndex++]=found[k]}}
continue}
if(!currentContext[0]){return}
tagName=token;var found=new Array;var foundCount=0;for(var h=0;h<currentContext.length;h++){var elements=currentContext[h].getElementsByTagName(tagName);for(var j=0;j<elements.length;j++){found[foundCount++]=elements[j]}}
currentContext=found}
return currentContext}


/* - plonebehave.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/plonebehave.js?original=1
document.writeln('<style type="text/css">');document.writeln('#breadcrumb-toggler-off { height: 9px; width: 35px; background: transparent url(tab-lost.gif) no-repeat top right; }');document.writeln('#breadcrumb-toggler-on { height: 11px; width: 11px; background: transparent url(tab-hide.gif) no-repeat top right; }');document.writeln('#ts-ns,#ts-nl,#ts-ln,#ts-sn,#ts-reg,#ts-full { width: 16px; height: 16px; }');document.writeln('#ts-ns { background: transparent url(text-minus.png) no-repeat center center; }');document.writeln('#ts-nl { background: transparent url(text-plus.png) no-repeat center center; }');document.writeln('#ts-ln { background: transparent url(text-minus.png) no-repeat center center; }');document.writeln('#ts-sn { background: transparent url(text-plus.png) no-repeat center center; }');document.writeln('#ts-reg { background: transparent url(fullscreen.png) no-repeat center center; }');document.writeln('#ts-full { background: transparent url(fullscreen-in.png) no-repeat center center; }');document.writeln('</style>');var breadstate=getCookieValue('breadcrumb-toggler');if(breadstate=='show'){zelph_onDOMload('div#breadcrumb-toggler-off','Element.hide(theTarget);')}
else{zelph_onDOMload('div#breadcrumb-toggler-on','Element.hide(theTarget);');zelph_onDOMload('div#breadcrumbs-wrapper','Element.hide(theTarget);')}
function initTogglers(el){var myidstr=el.innerHTML.stripTags().toLowerCase().replace(/(\s)*/g,'');var mystate=getCookieValue('toggle-box-id-'+myidstr);if(mystate=='compressed'){var tb=el.parentNode.parentNode;if(Element.hasClassName(tb,'box-expanded')){Element.removeClassName(tb,'box-expanded');Element.addClassName(tb,'box-compressed');for(kid in tb.childNodes){if(tb.childNodes[kid].className&&Element.hasClassName(tb.childNodes[kid],'toggle-box-body')){Element.hide($(tb.childNodes[kid]))}}}}}
zelph_onDOMload('div.toggle-box-idstr','initTogglers(theTarget);');registerPloneFunction(zelph_stopIt);
function getPageSizeArray(){return getPageSize()}
function getWindowWidth(){return getPageSize()[2]}
function isFirstTime(){if(getCookieValue("cpFirst")!=false) return false;writeSessionCookie("cpFirst","Yup");return true}
var Spellers=new Array();
function getSpeller(rich){var pos=Spellers.length;Spellers[pos]=new GoogieSpell("","/ceti/spellcheck?lang=",'Spellers['+pos+']',rich);return Spellers[pos]}
function hideBreadcrumbs(){new Effect.Fade('breadcrumbs-wrapper',{queue:{position:'end',scope:'crumbscope',limit:1},beforeStart: function(){Element.hide('breadcrumb-toggler-on')},afterFinish: function(){Element.show('breadcrumb-toggler-off');writeSessionCookie("breadcrumb-toggler","hide")}})}
function showBreadcrumbs(){new Effect.Appear('breadcrumbs-wrapper',{queue:{position:'end',scope:'crumbscope',limit:1},beforeStart: function(){Element.hide('breadcrumb-toggler-off')},afterFinish: function(){Element.show('breadcrumb-toggler-on');writeSessionCookie("breadcrumb-toggler","show")}})}
function textNormalToSmall(){setActiveStyleSheet('Small Text',1,'Large Text')}
function textNormalToLarge(){setActiveStyleSheet('Large Text',1,'Small Text')}
function textSmallToNormal(){setActiveStyleSheet('',1,'Small Text')}
function textLargeToNormal(){setActiveStyleSheet('',1,'Large Text')}
function viewNormalToLarge(){setActiveStyleSheet('Full Screen',1,'')}
function viewLargeToNormal(){setActiveStyleSheet('',1,'Full Screen')}
function checkWidthButton(){if(getWindowWidth()>1024){Element.show('ts-reg');Element.show('ts-full');removeFullStyleAndReset()}
else{Element.hide('ts-reg');Element.hide('ts-full');setActiveStyleSheet('Full Screen',0,'')}}
registerPloneFunction(checkWidthButton);Event.observe(window,'resize',checkWidthButton,false);zelph_onDOMload('div#text-sizer','checkWidthButton();');var DragScrollable=Class.create();DragScrollable.prototype={initialize: function(element){this.element=$(element);this.active=false;this.scrolling=false;this.element.style.cursor='pointer';this.eventMouseDown=this.startScroll.bindAsEventListener(this);this.eventMouseUp=this.endScroll.bindAsEventListener(this);this.eventMouseMove=this.scroll.bindAsEventListener(this);Event.observe(this.element,'mousedown',this.eventMouseDown)},destroy: function(){Event.stopObserving(this.element,'mousedown',this.eventMouseDown);Event.stopObserving(document,'mouseup',this.eventMouseUp);Event.stopObserving(document,'mousemove',this.eventMouseMove)},startScroll: function(event){this.startX=Event.pointerX(event);this.startY=Event.pointerY(event);if(Event.isLeftClick(event)&&(this.startX<this.element.offsetLeft+this.element.clientWidth)&&(this.startY<this.element.offsetTop+this.element.clientHeight)){this.element.style.cursor='move';Event.observe(document,'mouseup',this.eventMouseUp);Event.observe(document,'mousemove',this.eventMouseMove);this.active=true;Event.stop(event)}},endScroll: function(event){this.element.style.cursor='pointer';this.active=false;Event.stopObserving(document,'mouseup',this.eventMouseUp);Event.stopObserving(document,'mousemove',this.eventMouseMove);Event.stop(event)},scroll: function(event){if(this.active){this.element.scrollTop+=(this.startY-Event.pointerY(event));this.element.scrollLeft+=(this.startX-Event.pointerX(event));this.startX=Event.pointerX(event);this.startY=Event.pointerY(event)}
Event.stop(event)}}
var plonerules={'#portal-globalnav': function(el){new DragScrollable(el)},'#breadcrumb-toggler-on': function(el){el.onclick=hideBreadcrumbs},'#breadcrumb-toggler-off': function(el){el.onclick=showBreadcrumbs},'#ts-ns': function(el){el.onclick=textNormalToSmall},'#ts-nl': function(el){el.onclick=textNormalToLarge},'#ts-ln': function(el){el.onclick=textLargeToNormal},'#ts-sn': function(el){el.onclick=textSmallToNormal},'#ts-reg': function(el){el.onclick=viewNormalToLarge},'#ts-full': function(el){el.onclick=viewLargeToNormal},'.toggle-box-icon': function(el){if(Element.hasClassName($(el.parentNode.parentNode),'toggle-box')){var tb=el.parentNode.parentNode;el.onclick=function(){var myid=null;var skids=this.parentNode.childNodes;for(kid in skids){if(skids[kid].className&&Element.hasClassName(skids[kid],'toggle-box-idstr')){myid=skids[kid].innerHTML.stripTags().toLowerCase().replace(/(\s)*/g,'');break}}
if(Element.hasClassName(tb,'box-expanded')){Element.removeClassName(tb,'box-expanded');Element.addClassName(tb,'box-compressed');for(kid in tb.childNodes){if(tb.childNodes[kid].className&&Element.hasClassName(tb.childNodes[kid],'toggle-box-body')){writeSessionCookie('toggle-box-id-'+myid,'compressed');new Effect.BlindUp($(tb.childNodes[kid]),{queue:{position:'end',scope:'toggleboxscope'}})}}}
else if(Element.hasClassName(tb,'box-compressed')){Element.removeClassName(tb,'box-compressed');Element.addClassName(tb,'box-expanded');for(kid in tb.childNodes){if(tb.childNodes[kid].className&&Element.hasClassName(tb.childNodes[kid],'toggle-box-body')){writeSessionCookie('toggle-box-id-'+myid,'expanded');new Effect.BlindDown($(tb.childNodes[kid]),{queue:{position:'end',scope:'toggleboxscope'}})}}}
return false}}},'.portalMessage': function(el){new Effect.Pulsate($(el),{delay:10.0,duration:2.0,queue:{position:'end',scope:'pmessagescope'}});new Effect.Fade($(el),{queue:{position:'end',scope:'pmessagescope'}})},'.portaltab': function(el){var elkids=document.getElementsByClassName('portal-globalnav-sub',el);if(elkids.length>0){elkids[0].style.display='none';elkids[0].style.left='-4px'}
el.onmouseover=function(){this.className+=" sfhover";var elkids=document.getElementsByClassName('portal-globalnav-sub',this);if(elkids.length>0){clearTimeout(this.rolltimeout);if(elkids[0].style.display=='none'){this.rolltimeout=setTimeout(function(){new Effect.Appear(elkids[0],{duration:.5,to:0.9})},300)}}
return true}
el.onmouseout=function(){this.className=this.className.replace(new RegExp(" sfhover\\b"),"");var elkids=document.getElementsByClassName('portal-globalnav-sub',this);if(elkids.length>0){if(elkids[0].style.display=='none'){clearTimeout(this.rolltimeout)} else{this.rolltimeout=setTimeout(function(){new Effect.Fade(elkids[0],{duration:.7})},1000)}}
return true}}};Behaviour.register(plonerules);

/* - AmiJS.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/AmiJS.js?original=1
var AJS={getElement: function(id){if(typeof(id)=="string")
return document.getElementById(id);else
return id},getElements: function(){var elements=new Array();for(var i=0;i<arguments.length;i++){var element=this.getElement(arguments[i]);elements.push(element)}
return elements},getQueryArgument: function(var_name){var query=window.location.search.substring(1);var vars=query.split("&");for(var i=0;i<vars.length;i++){var pair=vars[i].split("=");if(pair[0]==var_name){return pair[1]}}
return null},isIe: function(){return(navigator.userAgent.toLowerCase().indexOf("msie")!=-1&&navigator.userAgent.toLowerCase().indexOf("opera")==-1)},getBody: function(){return this.getElementsByTagAndClassName('body')[0]},getElementsByTagAndClassName: function(tag_name,class_name,parent){var class_elements=new Array();if(!this.isDefined(parent))
parent=document;if(!this.isDefined(tag_name))
tag_name='*';var els=parent.getElementsByTagName(tag_name);var els_len=els.length;var pattern=new RegExp("(^|\\s)"+class_name+"(\\s|$)");for(i=0,j=0;i<els_len;i++){if(pattern.test(els[i].className)||class_name==null){class_elements[j]=els[i];j++}}
return class_elements},appendChildNodes: function(node){if(arguments.length>=2){for(var i=1;i<arguments.length;i++){var n=arguments[i];if(typeof(n)=="string")
n=document.createTextNode(n);if(this.isDefined(n))
node.appendChild(n)}}
return node},replaceChildNodes: function(node){var child;while((child=node.firstChild)){node.removeChild(child)}
if(arguments.length<2){return node} else{return this.appendChildNodes.apply(this,arguments)}},insertAfter: function(node,referenceNode){referenceNode.parentNode.insertBefore(node,referenceNode.nextSibling)},insertBefore: function(node,referenceNode){referenceNode.parentNode.insertBefore(node,referenceNode)},showElement: function(elm){elm.style.display=''},hideElement: function(elm){elm.style.display='none'},isElementHidden: function(elm){return elm.style.visibility=="hidden"},swapDOM: function(dest,src){dest=this.getElement(dest);var parent=dest.parentNode;if(src){src=this.getElement(src);parent.replaceChild(src,dest)} else{parent.removeChild(dest)}
return src},removeElement: function(elm){this.swapDOM(elm,null)},isDict: function(o){var str_repr=String(o);return str_repr.indexOf(" Object")!=-1},createDOM: function(name,attrs){var i=0;elm=document.createElement(name);if(this.isDict(attrs[i])){for(k in attrs[0]){if(k=="style")
elm.style.cssText=attrs[0][k];else if(k=="class")
elm.className=attrs[0][k];else
elm.setAttribute(k,attrs[0][k])}
i++}
if(attrs[0]==null)
i=1;for(i;i<attrs.length;i++){var n=attrs[i];if(this.isDefined(n)){if(typeof(n)=="string")
n=document.createTextNode(n);elm.appendChild(n)}}
return elm},UL: function(){return this.createDOM.apply(this,["ul",arguments])},LI: function(){return this.createDOM.apply(this,["li",arguments])},TD: function(){return this.createDOM.apply(this,["td",arguments])},TR: function(){return this.createDOM.apply(this,["tr",arguments])},TH: function(){return this.createDOM.apply(this,["th",arguments])},TBODY: function(){return this.createDOM.apply(this,["tbody",arguments])},TABLE: function(){return this.createDOM.apply(this,["table",arguments])},INPUT: function(){return this.createDOM.apply(this,["input",arguments])},SPAN: function(){return this.createDOM.apply(this,["span",arguments])},B: function(){return this.createDOM.apply(this,["b",arguments])},A: function(){return this.createDOM.apply(this,["a",arguments])},DIV: function(){return this.createDOM.apply(this,["div",arguments])},IMG: function(){return this.createDOM.apply(this,["img",arguments])},BUTTON: function(){return this.createDOM.apply(this,["button",arguments])},H1: function(){return this.createDOM.apply(this,["h1",arguments])},H2: function(){return this.createDOM.apply(this,["h2",arguments])},H3: function(){return this.createDOM.apply(this,["h3",arguments])},BR: function(){return this.createDOM.apply(this,["br",arguments])},TEXTAREA: function(){return this.createDOM.apply(this,["textarea",arguments])},FORM: function(){return this.createDOM.apply(this,["form",arguments])},P: function(){return this.createDOM.apply(this,["p",arguments])},SELECT: function(){return this.createDOM.apply(this,["select",arguments])},OPTION: function(){return this.createDOM.apply(this,["option",arguments])},TN: function(text){return document.createTextNode(text)},IFRAME: function(){return this.createDOM.apply(this,["iframe",arguments])},SCRIPT: function(){return this.createDOM.apply(this,["script",arguments])},getXMLHttpRequest: function(){var try_these=[
function(){return new XMLHttpRequest()},
function(){return new ActiveXObject('Msxml2.XMLHTTP')},
function(){return new ActiveXObject('Microsoft.XMLHTTP')},
function(){return new ActiveXObject('Msxml2.XMLHTTP.4.0')},
function(){throw "Browser does not support XMLHttpRequest"}];for(var i=0;i<try_these.length;i++){var func=try_these[i];try{return func()} catch(e){}}},doSimpleXMLHttpRequest: function(url){var req=this.getXMLHttpRequest();req.open("GET",url,true);return this.sendXMLHttpRequest(req)},getRequest: function(url,data){var req=this.getXMLHttpRequest();req.open("POST",url,true);req.setRequestHeader("Content-type","application/x-www-form-urlencoded");return this.sendXMLHttpRequest(req)},sendXMLHttpRequest: function(req,data){var d=new AJSDeferred(req);var onreadystatechange=function(){if(req.readyState==4){try{status=req.status}
catch(e){};if(status==200||status==304||req.responseText==null){d.callback(req,data)}
else{d.errback()}}}
req.onreadystatechange=onreadystatechange;return d},reprString: function(o){return('"'+o.replace(/(["\\])/g,'\\$1')+'"').replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r")},serializeJSON: function(o){var objtype=typeof(o);if(objtype=="undefined"){return "undefined"} else if(objtype=="number"||objtype=="boolean"){return o+""} else if(o===null){return "null"}
if(objtype=="string"){return this.reprString(o)}
var me=arguments.callee;var newObj;if(typeof(o.__json__)=="function"){newObj=o.__json__();if(o!==newObj){return me(newObj)}}
if(typeof(o.json)=="function"){newObj=o.json();if(o!==newObj){return me(newObj)}}
if(objtype!="function"&&typeof(o.length)=="number"){var res=[];for(var i=0;i<o.length;i++){var val=me(o[i]);if(typeof(val)!="string"){val="undefined"}
res.push(val)}
return "["+res.join(",")+"]"}
res=[];for(var k in o){var useKey;if(typeof(k)=="number"){useKey='"'+k+'"'} else if(typeof(k)=="string"){useKey=this.reprString(k)} else{continue}
val=me(o[k]);if(typeof(val)!="string"){continue}
res.push(useKey+":"+val)}
return "{"+res.join(",")+"}"},loadJSONDoc: function(url){var d=this.getRequest(url);var eval_req=function(req){var text=req.responseText;return eval('('+text+')')};d.addCallback(eval_req);return d},getMousePos: function(e){var posx=0;var posy=0;if(!e) var e=window.event;if(e.pageX||e.pageY){posx=e.pageX;posy=e.pageY}
else if(e.clientX||e.clientY){posx=e.clientX+document.body.scrollLeft;posy=e.clientY+document.body.scrollTop}
return [posx,posy]},findPosX: function(obj){var curleft=0;if(obj.offsetParent){while(obj.offsetParent){curleft+=obj.offsetLeft
obj=obj.offsetParent}}
else if(obj.x)
curleft+=obj.x;return curleft},findPosY: function(obj){var curtop=0;if(obj.offsetParent){while(obj.offsetParent){curtop+=obj.offsetTop
obj=obj.offsetParent}}
else if(obj.y)
curtop+=obj.y;return curtop},getEventElm: function(e){var targ;if(!e) var e=window.event;if(e.target) targ=e.target;else if(e.srcElement) targ=e.srcElement;if(targ.nodeType==3)
targ=targ.parentNode;return targ},keys: function(obj){var rval=[];for(var prop in obj){rval.push(prop)}
return rval},urlencode: function(str){return encodeURIComponent(str.toString())},isDefined: function(o){return(o!="undefined"&&o!=null)},isArray: function(obj){try{return(typeof(obj.length)=="undefined")?false:true}
catch(e){return false}},isObject: function(obj){return(obj&&typeof obj=='object')},exportDOMElements: function(){UL=this.UL;LI=this.LI;TD=this.TD;TR=this.TR;TH=this.TH;TBODY=this.TBODY;TABLE=this.TABLE;INPUT=this.INPUT;SPAN=this.SPAN;B=this.B;A=this.A;DIV=this.DIV;IMG=this.IMG;BUTTON=this.BUTTON;H1=this.H1;H2=this.H2;H3=this.H3;BR=this.BR;TEXTAREA=this.TEXTAREA;FORM=this.FORM;P=this.P;SELECT=this.SELECT;OPTION=this.OPTION;TN=this.TN;IFRAME=this.IFRAME;SCRIPT=this.SCRIPT},exportToGlobalScope: function(){getElement=this.getElement;getQueryArgument=this.getQueryArgument;isIe=this.isIe;$=this.getElement;getElements=this.getElements;getBody=this.getBody;getElementsByTagAndClassName=this.getElementsByTagAndClassName;appendChildNodes=this.appendChildNodes;ACN=appendChildNodes;replaceChildNodes=this.replaceChildNodes;RCN=replaceChildNodes;insertAfter=this.insertAfter;insertBefore=this.insertBefore;showElement=this.showElement;hideElement=this.hideElement;isElementHidden=this.isElementHidden;swapDOM=this.swapDOM;removeElement=this.removeElement;isDict=this.isDict;createDOM=this.createDOM;this.exportDOMElements();getXMLHttpRequest=this.getXMLHttpRequest;doSimpleXMLHttpRequest=this.doSimpleXMLHttpRequest;getRequest=this.getRequest;sendXMLHttpRequest=this.sendXMLHttpRequest;reprString=this.reprString;serializeJSON=this.serializeJSON;loadJSONDoc=this.loadJSONDoc;keys=this.keys;isDefined=this.isDefined;isArray=this.isArray}}
AJS.$=AJS.getElement;AJS.ACN=AJS.appendChildNodes;AJS.RCN=AJS.replaceChildNodes;AJSDeferred=function(req){this.callbacks=[];this.req=req;this.callback=function(res){while(this.callbacks.length>0){var fn=this.callbacks.pop();res=fn(res)}};this.errback=function(e){alert("Error encountered:\n"+e)};this.addErrback=function(fn){this.errback=fn};this.addCallback=function(fn){this.callbacks.unshift(fn)};this.addCallbacks=function(fn1,fn2){this.addCallback(fn1);this.addErrback(fn2)};this.sendReq=function(data){if(AJS.isObject(data)){var post_data=[];for(k in data){post_data.push(k+"="+AJS.urlencode(data[k]))}
post_data=post_data.join("&");this.req.send(post_data)}
else if(AJS.isDefined(data))
this.req.send(data);else{this.req.send("")}}};AJSDeferred.prototype=new AJSDeferred();

/* - googiespell.js - */
// https://ceti.cse.ohio-state.edu/ceti/portal_javascripts/googiespell.js?original=1
var GOOGIE_CUR_LANG="en";
function GoogieSpell(img_dir,server_url,name,rich){var cookie_value;var lang;cookie_value=getCookie('language');if(cookie_value!=null)
GOOGIE_CUR_LANG=cookie_value;this.img_dir=img_dir;this.server_url=server_url;this.lang_to_word={"da":"Dansk","de":"Deutsch","en":"English","es":"Espa&#241;ol","fr":"Fran&#231;ais","it":"Italiano","nl":"Nederlands","pl":"Polski","pt":"Portugu&#234;s","fi":"Suomi","sv":"Svenska"};this.langlist_codes=AJS.keys(this.lang_to_word);this.show_change_lang_pic=true;this.lang_state_observer=null;this.spelling_state_observer=null;this.report_state_change=true;this.state=null;this.request=null;this.error_window=null;this.language_window=null;this.edit_layer=null;this.orginal_text=null;this.results=null;this.text_area=null;this.ta_scroll_top=0;this.el_scroll_top=0;this.lang_chck_spell="Check spelling";this.lang_rsm_edt="Resume editing";this.lang_close="Close";this.lang_no_error_found="No spelling errors found";this.show_spell_img=true;this.error_window_iframe=null;this.custom_no_spelling_error=null;this.no_decoration=false;this.overlay_element=null;this.rich_text=rich;this.update_hook_func=null;this.get_hook_func=null;this.global_name=name}
GoogieSpell.prototype.setOverlayElement=function(el){this.overlay_element=$(el)}
GoogieSpell.prototype.setUpdateHook=function(func){this.update_hook_func=func}
GoogieSpell.prototype.setGetHook=function(func){this.get_hook_func=func}
GoogieSpell.prototype.decorateTextarea=function(id){var me=this;if(typeof(id)=="string")
this.text_area=AJS.getElement(id);else
this.text_area=id;var r_width,r_height;if(this.text_area!=null){if(!AJS.isDefined(this.spell_container)&&!this.no_decoration){var table=AJS.TABLE();var tbody=AJS.TBODY();var tr=AJS.TR();if(AJS.isDefined(this.force_width))
r_width=this.force_width;else
r_width=this.text_area.offsetWidth+"px";if(AJS.isDefined(this.force_height))
r_height=this.force_height;else
r_height="";var spell_container=AJS.TD();this.spell_container=spell_container;tr.appendChild(spell_container);tbody.appendChild(tr);table.appendChild(tbody);AJS.insertBefore(table,this.text_area);table.style.height=r_height;table.style.width=r_width;spell_container.style.height=r_height;spell_container.style.width=r_width;spell_container.style.textAlign="right"}
this.checkSpellingState()}
else{alert("Text area not found")}}
GoogieSpell.prototype.setSpellContainer=function(elm){this.spell_container=AJS.getElement(elm)}
GoogieSpell.prototype.setLanguages=function(lang_dict){this.lang_to_word=lang_dict;this.langlist_codes=AJS.keys(lang_dict)}
GoogieSpell.prototype.setForceWidthHeight=function(width,height){this.force_width=width;this.force_height=height}
GoogieSpell.prototype.setNodecoration=function(){this.no_decoration=true}
GoogieSpell.prototype.setStateChanged=function(current_state){this.state=current_state;if(this.spelling_state_observer!=null&&this.report_state_change)
this.spelling_state_observer(current_state)}
GoogieSpell.prototype.setReportStateChange=function(bool){this.report_state_change=bool}
GoogieSpell.prototype.getGoogleUrl=function(){return this.server_url+GOOGIE_CUR_LANG}
GoogieSpell.escapeSepcial=function(val){var ret=val.replace(/</g,' ').replace(/>/g,' ');ret=ret.replace(/&[A-Za-z];/g,'   ');ret=ret.replace(/&[A-Za-z][A-Za-z];/g,'    ');ret=ret.replace(/&[A-Za-z][A-Za-z][A-Za-z];/g,'     ');ret=ret.replace(/&[A-Za-z][A-Za-z][A-Za-z][A-Za-z];/g,'      ')
return ret.replace(/&/g,' ')}
GoogieSpell.createXMLReq=function(text){return 'reqlang='+GOOGIE_CUR_LANG+'&spellxml='+text}
GoogieSpell.prototype.spellCheck=function(){this.setStateChanged("checking_spell");this.ta_scroll_top=this.text_area.scrollTop;this.appendIndicator(this.spell_span);try{this.hideLangWindow()}
catch(e){}
if(this.overlay_element){this.createEditLayer(this.overlay_element.offsetWidth,this.overlay_element.offsetHeight)}
else{this.createEditLayer(this.text_area.offsetWidth,this.text_area.offsetHeight)}
this.createErrorWindow();AJS.getBody().appendChild(this.error_window);try{netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead")}
catch(e){}
this.spell_span.onclick=null;if(this.get_hook_func){this.orginal_text=this.get_hook_func()}
else{this.orginal_text=this.text_area.value}
var me=this;var d=AJS.getRequest(this.getGoogleUrl());var reqdone=function(req){var r_text=req.responseText;me.results=GoogieSpell.parseResult(r_text);if(r_text.match(/<c.*>/)!=null){me.showErrorsInIframe();me.resumeEditingState()}
else{if(!me.custom_no_spelling_error)
me.flashNoSpellingErrorState();else
me.custom_no_spelling_error(me)}
me.removeIndicator()};var reqfailed=function(req){alert("An error was encountered on the server. Please try again later.");AJS.removeElement(me.spell_span);me.checkSpellingState();me.removeIndicator()};d.addCallback(reqdone);d.addErrback(reqfailed);var req_text=GoogieSpell.escapeSepcial(this.orginal_text.replace(/<\S[^>]*>/g,' '));d.sendReq(GoogieSpell.createXMLReq(req_text))}
GoogieSpell.parseResult=function(r_text){var re_split_attr_c=/\w="\d+"/g;var re_split_text=/\t/g;var matched_c=r_text.match(/<c[^>]*>[^<]*<\/c>/g);var results=new Array();if(matched_c==null)
return results;for(var i=0;i<matched_c.length;i++){var item=new Array();item['attrs']=new Array();var split_c=matched_c[i].match(re_split_attr_c);for(var j=0;j<split_c.length;j++){var c_attr=split_c[j].split(/=/);item['attrs'][c_attr[0]]=parseInt(c_attr[1].replace('"',''))}
item['suggestions']=new Array();var only_text=matched_c[i].replace(/<[^>]*>/g,"");var split_t=only_text.split(re_split_text);for(var k=0;k<split_t.length;k++){if(split_t[k]!="")
item['suggestions'].push(split_t[k])}
results.push(item)}
return results}
GoogieSpell.prototype.createErrorWindow=function(){this.error_window=AJS.DIV();this.error_window.className="googie_window"}
GoogieSpell.prototype.hideErrorWindow=function(){this.error_window.style.visibility="hidden";this.error_edit_input.style.visibility="hidden";if(this.error_window_iframe)
this.error_window_iframe.style.visibility="hidden"}
GoogieSpell.prototype.updateOrginalText=function(offset,old_value,new_value,id){var part_1=this.orginal_text.substring(0,offset);var part_2=this.orginal_text.substring(offset+old_value.length);this.orginal_text=part_1+new_value+part_2;var add_2_offset=new_value.length-old_value.length;for(var j=0;j<this.results.length;j++){if(j!=id&&j>id){this.results[j]['attrs']['o']+=add_2_offset}}}
GoogieSpell.prototype.saveOldValue=function(id,old_value){this.results[id]['is_changed']=true;this.results[id]['old_value']=old_value}
GoogieSpell.prototype.showErrorWindow=function(elm,id){var me=this;var abs_pos=GoogieSpell.absolutePosition(elm);abs_pos.y-=this.edit_layer.scrollTop;this.error_window.style.visibility="visible";this.error_window.style.top=(abs_pos.y+20)+"px";this.error_window.style.left=(abs_pos.x)+"px";this.error_window.innerHTML="";var table=AJS.TABLE({'class':'googie_list'});var list=AJS.TBODY();var suggestions=this.results[id]['suggestions'];var offset=this.results[id]['attrs']['o'];var len=this.results[id]['attrs']['l'];if(suggestions.length==0){var row=AJS.TR();var item=AJS.TD();var dummy=AJS.SPAN();item.appendChild(AJS.TN("No suggestions :("));row.appendChild(item);list.appendChild(row)}
for(i=0;i<suggestions.length;i++){var row=AJS.TR();var item=AJS.TD();var dummy=AJS.SPAN();dummy.innerHTML=suggestions[i];item.appendChild(AJS.TN(dummy.innerHTML));item.onclick=function(e){var l_elm=AJS.getEventElm(e);var old_value=elm.innerHTML;var new_value=l_elm.innerHTML;elm.style.color="green";elm.innerHTML=l_elm.innerHTML;me.hideErrorWindow();me.updateOrginalText(offset,old_value,new_value,id);me.results[id]['attrs']['l']=new_value.length;me.saveOldValue(id,old_value)};item.onmouseover=GoogieSpell.item_onmouseover;item.onmouseout=GoogieSpell.item_onmouseout;row.appendChild(item);list.appendChild(row)}
var edit_row=AJS.TR();var edit=AJS.TD();var eoldval="";if(this.results[id]['is_changed'])
eoldval=this.results[id]['old_value'];else
eoldval=elm.innerHTML;var edit_input=AJS.INPUT({'style':'width: 120px; margin:0; padding:0','value':eoldval});this.error_edit_input=edit_input;var onsub=function(){if(edit_input.value!=""){if(AJS.isDefined(me.results[id]['old_value']))
me.saveOldValue(id,me.results[id]['old_value']);else
me.saveOldValue(id,elm.innerHTML);me.updateOrginalText(offset,elm.innerHTML,edit_input.value,id);elm.style.color="#59791c"
elm.innerHTML=edit_input.value;me.hideErrorWindow();return false}};var ok_pic=AJS.IMG({'src':this.img_dir+"ok.gif",'style':'width: 32px; height: 16px; margin-left: 2px; margin-right: 2px; border: none; padding: 0;'});var edit_form=AJS.FORM({'style':'margin: 0; padding: 0'},edit_input,ok_pic);ok_pic.onclick=onsub;edit_form.onsubmit=onsub;edit.appendChild(edit_form);edit_row.appendChild(edit);list.appendChild(edit_row);var close_row=AJS.TR();var close=AJS.TD();close.onmouseover=GoogieSpell.item_onmouseover;close.onmouseout=GoogieSpell.item_onmouseout;var spn_close=AJS.SPAN({'class':'googie_list_close'});spn_close.innerHTML=this.lang_close;close.appendChild(spn_close);close.onclick=function(){me.hideErrorWindow()};close_row.appendChild(close);list.appendChild(close_row);table.appendChild(list);this.error_window.appendChild(table);if(AJS.isIe()&&!this.error_window_iframe){var iframe=AJS.IFRAME({'style':'position: absolute; z-index: 0;'});AJS.ACN(AJS.getBody(),iframe);this.error_window_iframe=iframe}
if(AJS.isIe()){var iframe=this.error_window_iframe;iframe.style.top=this.error_window.offsetTop+"px";iframe.style.left=this.error_window.offsetLeft+"px";iframe.style.width=this.error_window.offsetWidth+"px";iframe.style.height=this.error_window.offsetHeight+"px";iframe.style.visibility="visible"}}
GoogieSpell.prototype.createEditLayer=function(width,height){this.edit_layer=AJS.DIV({'class':'googie_edit_layer'});this.edit_layer.className=this.text_area.className;this.edit_layer.style.border="1px solid #999";this.edit_layer.style.overflow="auto";this.edit_layer.style.padding="3px";this.edit_layer.style.margin="0px";this.edit_layer.style.position="relative";this.edit_layer.style.width=(width-8)+"px";this.edit_layer.style.height=(height-6)+"px"}
GoogieSpell.prototype.resumeEditing=function(){var me=this;this.setStateChanged("spell_check");this.switch_lan_pic.style.display="inline";this.el_scroll_top=me.edit_layer.scrollTop;this.hideErrorWindow();try{this.edit_layer.parentNode.removeChild(this.edit_layer)}
catch(e){}
if(this.update_hook_func){this.update_hook_func(this.orginal_text)}
else{this.text_area.value=this.orginal_text}
if(this.overlay_element){AJS.showElement(this.overlay_element)}
else{AJS.showElement(this.text_area)}
this.spell_span.className="googie_no_style";this.text_area.scrollTop=this.el_scroll_top;elm.onmouseout=null;this.checkSpellingState(false)}
GoogieSpell.prototype.createErrorLinkStr=function(text,id){var click=this.global_name+'.showErrorWindow(this, '+id+')'
return '<span class="googie_link" onclick="'+click+'">'+text+'</span>'}
GoogieSpell.prototype.createErrorLink=function(text,id){var elm=AJS.SPAN({'class':'googie_link'});var me=this;elm.onclick=function(){me.showErrorWindow(elm,id)};elm.innerHTML=text;return elm}
GoogieSpell.createPart=function(txt_part){if(txt_part==" ")
return AJS.TN(" ");var result=AJS.SPAN();var is_first=true;var is_safari=(navigator.userAgent.toLowerCase().indexOf("safari")!=-1);var part=AJS.SPAN();txt_part=GoogieSpell.escapeSepcial(txt_part);txt_part=txt_part.replace(/\n/g,"<br>");txt_part=txt_part.replace(/  /g," &nbsp;");txt_part=txt_part.replace(/^ /g,"&nbsp;");txt_part=txt_part.replace(/ $/g,"&nbsp;");part.innerHTML=txt_part;return part}
GoogieSpell.prototype.showErrorsInIframe=function(){var output=AJS.DIV();output.style.textAlign="left";var pointer=0;var skipped=0;var tagcount=0;var results=this.results;var output_str="";if(results.length>0&&this.rich_text){for(var i=0;i<results.length;i++){var offset=results[i]['attrs']['o'];var len=results[i]['attrs']['l'];var nexttag=this.orginal_text.indexOf("<",pointer);while(nexttag!=-1&&(nexttag-skipped)<=(offset-tagcount)){if(this.orginal_text.charAt(pointer).toLowerCase()=="<"){var skipstart=pointer;pointer+=1;skipped+=1;while(this.orginal_text.charAt(pointer).toLowerCase()!=">"&&pointer<this.orginal_text.length){pointer+=1;skipped+=1}
pointer+=1;skipped+=1;tagcount+=1;output_str=output_str+this.orginal_text.substring(skipstart,pointer);if(this.orginal_text.charAt(pointer).toLowerCase()!=">"&&pointer>this.orginal_text.length){alert("Doh! The spell checker detected an error!\n<, >, and & are probably not allowed in this textarea!\nContact the site admin if you feel this is a problem.")}}
else{output_str=output_str+this.orginal_text.substring(pointer,nexttag);pointer+=nexttag-pointer}
nexttag=this.orginal_text.indexOf("<",pointer)}
output_str=output_str+this.orginal_text.substring(pointer,skipped+offset-tagcount);pointer+=(skipped+offset-tagcount)-pointer;output_str=output_str+this.createErrorLinkStr(this.orginal_text.substr(skipped+offset-tagcount,len),i);results[i]['attrs']['o']=(skipped+offset-tagcount);pointer+=len}
output_str=output_str+this.orginal_text.substr(pointer,this.orginal_text.length);output.innerHTML=output_str}
else if(results.length>0){for(var i=0;i<results.length;i++){var offset=results[i]['attrs']['o'];var len=results[i]['attrs']['l'];var part_1_text=this.orginal_text.substring(pointer,offset);var part_1=GoogieSpell.createPart(part_1_text);output.appendChild(part_1);pointer+=offset-pointer;output.appendChild(this.createErrorLink(this.orginal_text.substr(offset,len),i));pointer+=len}
var part_2_text=this.orginal_text.substr(pointer,this.orginal_text.length);var part_2=GoogieSpell.createPart(part_2_text);output.appendChild(part_2)}
else{output.innerHTML=this.orginal_text}
this.edit_layer.appendChild(output);if(this.overlay_element){AJS.hideElement(this.overlay_element)}
else{AJS.hideElement(this.text_area)}
AJS.insertAfter(this.edit_layer,this.text_area.nextSibling);this.edit_layer.scrollTop=this.ta_scroll_top}
GoogieSpell.Position=function(x,y){this.x=x;this.y=y}
GoogieSpell.prototype.createLangWindow=function(){this.language_window=AJS.DIV({'class':'googie_window'});this.language_window.style.width="130px";var table=AJS.TABLE({'class':'googie_list'});var list=AJS.TBODY();this.lang_elms=new Array();for(i=0;i<this.langlist_codes.length;i++){var row=AJS.TR();var item=AJS.TD();item.googieId=this.langlist_codes[i];this.lang_elms.push(item);var lang_span=AJS.SPAN();lang_span.innerHTML=this.lang_to_word[this.langlist_codes[i]];item.appendChild(AJS.TN(lang_span.innerHTML));var me=this;item.onclick=function(e){var elm=AJS.getEventElm(e);me.deHighlightCurSel();me.setCurrentLanguage(elm.googieId);if(me.lang_state_observer!=null){me.lang_state_observer()}
me.highlightCurSel();me.hideLangWindow()};item.onmouseover=function(e){var i_it=AJS.getEventElm(e);if(i_it.className!="googie_list_selected")
i_it.className="googie_list_onhover"};item.onmouseout=function(e){var i_it=AJS.getEventElm(e);if(i_it.className!="googie_list_selected")
i_it.className="googie_list_onout"};row.appendChild(item);list.appendChild(row)}
this.highlightCurSel();var close_row=AJS.TR();var close=AJS.TD();close.onmouseover=GoogieSpell.item_onmouseover;close.onmouseout=GoogieSpell.item_onmouseout;var spn_close=AJS.SPAN({'class':'googie_list_close'});spn_close.innerHTML=this.lang_close;close.appendChild(spn_close);var me=this;close.onclick=function(e){me.hideLangWindow();GoogieSpell.item_onmouseout(e)};close_row.appendChild(close);list.appendChild(close_row);table.appendChild(list);this.language_window.appendChild(table)}
GoogieSpell.prototype.setCurrentLanguage=function(lan_code){GOOGIE_CUR_LANG=lan_code;var now=new Date();now.setTime(now.getTime()+365 * 24 * 60 * 60 * 1000);setCookie('language',lan_code,now)}
GoogieSpell.prototype.hideLangWindow=function(){this.language_window.style.visibility="hidden";this.switch_lan_pic.className="googie_lang_3d_on"}
GoogieSpell.prototype.deHighlightCurSel=function(){this.lang_cur_elm.className="googie_list_onout"}
GoogieSpell.prototype.highlightCurSel=function(){for(var i=0;i<this.lang_elms.length;i++){if(this.lang_elms[i].googieId==GOOGIE_CUR_LANG){this.lang_elms[i].className="googie_list_selected";this.lang_cur_elm=this.lang_elms[i]}
else{this.lang_elms[i].className="googie_list_onout"}}}
GoogieSpell.prototype.showLangWindow=function(elm,ofst_top,ofst_left){if(!AJS.isDefined(ofst_top))
ofst_top=20;if(!AJS.isDefined(ofst_left))
ofst_left=50;this.createLangWindow();AJS.getBody().appendChild(this.language_window);var abs_pos=GoogieSpell.absolutePosition(elm);AJS.showElement(this.language_window);this.language_window.style.top=(abs_pos.y+ofst_top)+"px";this.language_window.style.left=(abs_pos.x+ofst_left-this.language_window.offsetWidth)+"px";this.highlightCurSel();this.language_window.style.visibility="visible"}
GoogieSpell.prototype.createChangeLangPic=function(){var switch_lan=AJS.A({'class':'googie_lang_3d_on','style':'padding-left: 6px;'},AJS.IMG({'src':this.img_dir+'change_lang.gif','alt':"Change language",'style':'padding: 0; border: none;'}));switch_lan.onmouseover=function(){if(this.className!="googie_lang_3d_click")
this.className="googie_lang_3d_on"}
var me=this;switch_lan.onclick=function(){if(this.className=="googie_lang_3d_click"){me.hideLangWindow()}
else{me.showLangWindow(switch_lan);this.className="googie_lang_3d_click"}}
return switch_lan}
GoogieSpell.prototype.createSpellDiv=function(){var chk_spell=AJS.SPAN({'class':'googie_check_spelling_link'});chk_spell.innerHTML=this.lang_chck_spell;var spell_img=null;if(this.show_spell_img)
spell_img=AJS.IMG({'src':this.img_dir+"spellc.gif",'style':'padding: 0; border: none;'});return AJS.SPAN(spell_img," ",chk_spell)}
GoogieSpell.prototype.flashNoSpellingErrorState=function(){this.setStateChanged("no_error_found");var me=this;AJS.hideElement(this.switch_lan_pic);this.spell_span.innerHTML=this.lang_no_error_found;this.spell_span.className="googie_check_spelling_ok";this.spell_span.style.textDecoration="none";this.spell_span.style.cursor="default";var fu=function(){me.checkSpellingState(false)};setTimeout(fu,1000)}
GoogieSpell.prototype.resumeEditingState=function(){this.setStateChanged("resume_editing",false);var me=this;AJS.hideElement(me.switch_lan_pic);var dummy=AJS.IMG({'src':this.img_dir+"blank.gif",'style':'height: 16px; width: 1px; padding: 0; border: none;'});var rsm=AJS.SPAN();rsm.innerHTML=this.lang_rsm_edt;AJS.replaceChildNodes(me.spell_span,AJS.SPAN(dummy,rsm));me.spell_span.onclick=function(e){me.resumeEditing()}
me.spell_span.className="googie_check_spelling_ok";me.edit_layer.scrollTop=me.ta_scroll_top}
GoogieSpell.prototype.checkSpellingState=function(fire){if(!AJS.isDefined(fire)||fire)
this.setStateChanged("spell_check");var me=this;if(this.show_change_lang_pic)
this.switch_lan_pic=this.createChangeLangPic();else
this.switch_lan_pic=AJS.SPAN();var span_chck=this.createSpellDiv();span_chck.onclick=function(){me.spellCheck()};this.spell_span=span_chck;AJS.replaceChildNodes(this.spell_container,span_chck," ",this.switch_lan_pic)}
GoogieSpell.item_onmouseover=function(e){var elm=AJS.getEventElm(e);if(elm.className!="googie_list_close")
elm.className="googie_list_onhover";else
elm.parentNode.className="googie_list_onhover"}
GoogieSpell.item_onmouseout=function(e){var elm=AJS.getEventElm(e);if(elm.className!="googie_list_close")
elm.className="googie_list_onout";else
elm.parentNode.className="googie_list_onout"}
GoogieSpell.absolutePosition=function(element){var posObj=new GoogieSpell.Position(element.offsetLeft,element.offsetTop);if(element.offsetParent){var temp_pos=GoogieSpell.absolutePosition(element.offsetParent);posObj.x+=temp_pos.x;posObj.y+=temp_pos.y}
return posObj}
GoogieSpell.prototype.removeIndicator=function(elm){try{AJS.removeElement(this.indicator)}
catch(e){}}
GoogieSpell.prototype.appendIndicator=function(elm){var img=AJS.IMG({'src':this.img_dir+'indicator.gif','style':'margin-right: 5px; padding: 0; border: none;'});img.style.width="16px";img.style.height="16px";this.indicator=img;img.style.textDecoration="none";try{AJS.insertBefore(img,elm)}
catch(e){}}

