
/* 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 -
 */

/* - loop.js - */
// http://www.polarcat.no/portal_javascripts/loop.js?original=1
var animator_counter=1;
function Animator(){this.id=animator_counter++;this.image_root="image";this.n_frames=10;this.image_width=100;this.image_height=100;this.mode=1;this.active=false;this.direction=1;this.delay=400;this.current=null;this.next=null;this.loop_start=this.current;this.max_loop=50;this.consec_loop=0;this.delay_first=500;this.delay_last=500;this.fcst_begin=0;this.fcst_increment=1;this.timeID=null;this.omitImages=false;this.imageOmit;this.FrameURL=FrameURL;this.Load=Load;this.Write=Write;this.Write2=Write2;this.form_name="";this.form="";this.img_name="";this.img="";this.Display=Display;this.Play=Play;this.PlayNext=PlayNext;this.Stop=Stop;this.StopStart=StopStart;this.Swapper=Swapper;this.ImageOmit=ImageOmit;this.Initialize=Initialize;this.Initialize2=Initialize2}
registerPloneFunction(Animator);
function Load(){this.images=new Array(this.n_frames);if(this.omitImages){this.imageOmit=new Array(this.n_frames)}
for(var i=0;i<this.n_frames;i++){this.images[i]=new Image();this.images[i].src=this.FrameURL(i);if(this.omitImages){this.imageOmit[i]=false}}}
function FrameURL(num){if(this.image_ext){return this.image_root+this.files[num]+this.image_ext}
else{return this.image_root+this.files[num]}}
function Write(){this.form_name='form_animator_'+this.id
this.img_name='img_animator_'+this.id}
function Write2(){this.form=document.forms[this.form_name];this.img=document.images[this.img_name];this.form.animator=this;this.form.select_mode.onchange=new Function("this.form.animator.mode=this.selectedIndex;")
this.form.button_bwrd.onclick=new Function("this.form.animator.direction=0; this.form.animator.Play();")
this.form.button_stop.onclick=new Function("this.form.animator.Stop();")
this.form.button_fwrd.onclick=new Function("this.form.animator.direction=1; this.form.animator.Play();")
this.form.button_first.onclick=new Function("this.form.animator.Stop(); this.form.animator.Display(1);")
this.form.button_prev.onclick=new Function("this.form.animator.Stop(); this.form.animator.Display(this.form.animator.current-1);")
this.form.button_next.onclick=new Function("this.form.animator.Stop(); this.form.animator.Display(this.form.animator.current+1);")
this.form.button_last.onclick=new Function("this.form.animator.Stop(); this.form.animator.Display(this.form.animator.n_frames);")
if(this.omitImages){for(i=1;i<=this.n_frames;i++){this.form.elements[12+i].onclick=new Function("this.form.animator.ImageOmit(this.form.elements["+(12+i)+"].checked,"+i+");")}}
this.form.input_delay.onfocus=new Function("this.form.animator.Stop(); this.select();")
this.form.input_delay.onchange=new Function("this.form.animator.delay=parseInt(this.value);")
this.form.input_delay_first.onfocus=new Function("this.form.animator.Stop(); this.select();")
this.form.input_delay_first.onchange=new Function("this.form.animator.delay_first=parseInt(this.value);")
this.form.input_delay_last.onfocus=new Function("this.form.animator.Stop(); this.select();")
this.form.input_delay_last.onchange=new Function("this.form.animator.delay_last=parseInt(this.value);")
this.form.input_current.onfocus=new Function("this.form.animator.Stop(); this.select();")
this.form.input_current.onchange=new Function("this.form.animator.Display(parseInt(this.value));")
this.form.input_n_frames.onchange=new Function("this.value=this.form.animator.n_frames;")
this.img.onclick=new Function("document.forms['"+this.form.name+"'].animator.StopStart();")
this.form.select_mode.selectedIndex=this.mode;this.form.input_n_frames.value=this.n_frames;this.form.input_delay.value=this.delay;this.form.input_delay_first.value=this.delay_first;this.form.input_delay_last.value=this.delay_last}
function Display(num){num=Number(num);if(num<1){num=this.n_frames}
if(num>this.n_frames){num=1}
this.current=num;this.img.src=this.images[this.current-1].src;this.form.input_current.value=this.current}
function Play(){this.Stop();this.next=this.current;this.loop_start=this.current;this.consec_loop=0;this.active=true;this.PlayNext()}
function PlayNext(){if(this.active){if(this.current==this.loop_start){this.consec_loop+=1}
if(this.consec_loop==this.max_loop){alert("The loop has run for 50 consecutive loops.\nPlease hit the play button if you wish to continue.");this.Stop()}
else if(this.omitImages){while(this.imageOmit[this.next]==true){this.next=this.next+(-1+2*this.direction)}
this.current=this.next;this.next=this.current+(-1+2*this.direction)
this.Display(this.current);delay_time=this.delay;if(this.current==1) delay_time=delay_time+this.delay_first;if(this.current==this.n_frames) delay_time=delay_time+this.delay_last;command="document.forms['"+this.form.name+"'].animator.PlayNext()";switch(this.mode){case 0:if((this.next>=1)&&(this.next<=this.n_frames)){this.timeID=window.setTimeout(command,delay_time)}
else this.Stop();break;case 1:switch(this.direction){case 0:if(this.next<1) this.next=this.n_frames;break;case 1:if(this.next>this.n_frames) this.next=1;break}
this.timeID=window.setTimeout(command,delay_time);break;case 2:if(this.next<1){this.direction=1;this.next=2}
if(this.next>this.n_frames){this.direction=0;this.next=this.n_frames-1}
this.timeID=window.setTimeout(command,delay_time);break}}
else{this.current=this.next;this.next=this.current+(-1+2*this.direction)
this.Display(this.current);delay_time=this.delay;if(this.current==1) delay_time=delay_time+this.delay_first;if(this.current==this.n_frames) delay_time=delay_time+this.delay_last;command="document.forms['"+this.form.name+"'].animator.PlayNext()";switch(this.mode){case 0:if((this.next>=1)&&(this.next<=this.n_frames)){this.timeID=window.setTimeout(command,delay_time)}
else this.Stop();break;case 1:switch(this.direction){case 0:if(this.next<1) this.next=this.n_frames;break;case 1:if(this.next>this.n_frames) this.next=1;break}
this.timeID=window.setTimeout(command,delay_time);break;case 2:if(this.next<1){this.direction=1;this.next=2}
if(this.next>this.n_frames){this.direction=0;this.next=this.n_frames-1}
this.timeID=window.setTimeout(command,delay_time);break}}}}
function Stop(){if(this.active){window.clearTimeout(this.timeID)}
this.active=false;this.consec_loop=0}
function StopStart(){this.consec_loop=0;if(this.active) this.Stop();else this.Play()}
function Swapper(num){this.Stop();this.Display(num)}
function ImageOmit(Status,i){if(Status==true)
this.imageOmit[i]=true;else
this.imageOmit[i]=false}
function Initialize(){this.Load();this.Write()}
function Initialize2(){this.Write2();this.Display(1)}


/* - images.js - */
// http://www.polarcat.no/portal_javascripts/images.js?original=1
function imgUp(imgName){if(document.images){document[imgName].src="image_btn.gif"}}
registerPloneFunction(imgUp);
function imgDown(imgName){if(document.images){document[imgName].src="image_btn_dn.gif"}}
registerPloneFunction(imgDown);

/* - suckerfish.js - */
// http://www.polarcat.no/portal_javascripts/suckerfish.js?original=1
function suckerfish(type,tag,parentId){if(window.attachEvent){window.attachEvent("onload", function(){var sfEls=(parentId==null)?document.getElementsByTagName(tag):document.getElementById(parentId).getElementsByTagName(tag);type(sfEls)})}}
sfHover=function(sfEls){for(var i=0;i<sfEls.length;i++){sfEls[i].onmouseover=function(){this.className+=" sfhover"}
sfEls[i].onmouseout=function(){this.className=this.className.replace(new RegExp(" sfhover\\b"),"")}}}
