var FOLDERS={domainRoot:"http://www.piggyshouse.com/",images:"http://www.piggyshouse.com/template/images",css:"http://www.piggyshouse.com/template/styles",js:"http://www.piggyshouse.com/system/javascript"}; var ie = (document.all)?1:0; function addEvent( obj, type, fn ) { if (obj.addEventListener) { // standard obj.addEventListener( type, fn, false ); EventCache.add(obj, type, fn); // bugzilla bug #241518 } else if (obj.attachEvent) { // IE obj['e'+type+fn] = fn; obj[type+fn] = function() { obj['e'+type+fn]( window.event ); } obj.attachEvent( 'on'+type, obj[type+fn] ); EventCache.add(obj, type, fn); } else { // really old obj['on'+type] = obj['e'+type+fn]; } }; function removeEvent( obj, type, fn ) { EventCache.remove(obj, type, fn); }; var EventCache = function() { var listEvents = []; return { listEvents : listEvents, add : function(node, sEventName, fHandler) { listEvents.push(arguments); }, remove : function(node, sEventName, fHandler) { var i, item; for(i = listEvents.length - 1; i >= 0; i = i - 1) { if(node == listEvents[i][0] && sEventName == listEvents[i][1] && fHandler == listEvents[i][2]) { item = listEvents[i]; if(item[0].removeEventListener) { item[0].removeEventListener(item[1], item[2], item[3]); } if(item[1].substring(0, 2) != 'on') { item[1] = 'on' + item[1]; } if(item[0].detachEvent) { item[0].detachEvent(item[1], item[0][sEventName+fHandler]); } item[0][item[1]] = null; } } }, flush : function() { var i, item, eventtype; for(i = listEvents.length - 1; i >= 0; i = i - 1) { item = listEvents[i]; if(item[0].removeEventListener) { item[0].removeEventListener(item[1], item[2], item[3]); } eventtype = item[1]; if(item[1].substring(0, 2) != 'on') { item[1] = 'on' + item[1]; } if(item[0].detachEvent) { item[0].detachEvent(item[1], item[2]); item[0].detachEvent(item[1], item[0][eventtype+item[2]]); } item[0][item[1]] = null; } } } }(); function getElementsByClassName(oElm, strTagName, oClassNames){ /* USAGE: getElementsByClassName(element_where_to_search,tag,class) */ var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName); var arrReturnElements = new Array(); var arrRegExpClassNames = new Array(); if(typeof oClassNames == "object"){ for(var i=0; i4 && passwd.length<8) { // length between 5 and 7 intScore = (intScore+6) strLog = strLog + "6 points for length (" + passwd.length + ")\n" } else if (passwd.length>7 && passwd.length<16) { // length between 8 and 15 intScore = (intScore+12) strLog = strLog + "12 points for length (" + passwd.length + ")\n" } else if (passwd.length>15) { // length 16 or more intScore = (intScore+18) strLog = strLog + "18 point for length (" + passwd.length + ")\n" } // LETTERS (Not exactly implemented as dictacted above because of my limited understanding of Regex) if (passwd.match(/[a-z]/)) { // [verified] at least one lower case letter intScore = (intScore+1) strLog = strLog + "1 point for at least one lower case char\n" } if (passwd.match(/[A-Z]/)) { // [verified] at least one upper case letter intScore = (intScore+5) strLog = strLog + "5 points for at least one upper case char\n" } // NUMBERS if (passwd.match(/\d+/)) { // [verified] at least one number intScore = (intScore+5) strLog = strLog + "5 points for at least one number\n" } if (passwd.match(/(.*[0-9].*[0-9].*[0-9])/)) { // [verified] at least three numbers intScore = (intScore+5) strLog = strLog + "5 points for at least three numbers\n" } // SPECIAL CHAR if (passwd.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) { // [verified] at least one special character intScore = (intScore+5) strLog = strLog + "5 points for at least one special char\n" } if (passwd.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) { // [verified] at least two special characters } // COMBOS if (passwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) { // [verified] both upper and lower case intScore = (intScore+2) strLog = strLog + "2 combo points for upper and lower letters\n" } if (passwd.match(/(\d.*\D)|(\D.*\d)/)) { // [FAILED] both letters and numbers, almost works because an additional character is required intScore = (intScore+2) strLog = strLog + "2 combo points for letters and numbers\n" } if (passwd.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/)) { // [verified] letters, numbers, and special characters intScore = (intScore+2) strLog = strLog + "2 combo points for letters, numbers and special chars\n" } if($("passwordStrengthProgress")) { if(!passwd) { $("passwordStrengthProgress").style.width = "0" strVerdict = "" } else if(intScore < 16) { $("passwordStrengthProgress").style.width = "25%" $("passwordStrengthProgress").style.backgroundColor = "red" strVerdict = "very weak" } else if (intScore > 15 && intScore < 25) { $("passwordStrengthProgress").style.width = "50%" $("passwordStrengthProgress").style.backgroundColor = "#FFA900" strVerdict = "weak" } else if (intScore > 24 && intScore < 35) { $("passwordStrengthProgress").style.width = "75%" $("passwordStrengthProgress").style.backgroundColor = "#6CA7FF" strVerdict = "mediocre" } else if (intScore > 34 && intScore < 45) { $("passwordStrengthProgress").style.width = "100%" $("passwordStrengthProgress").style.backgroundColor = "" strVerdict = "strong" } else { $("passwordStrengthProgress").style.width = "100%" $("passwordStrengthProgress").style.backgroundColor = "" strVerdict = "stronger" } $("passwordStrengthStatus").innerHTML = (strVerdict) } return intScore; } function resize(e) { if(e.scrollHeight && (e.scrollHeight>e.clientHeight)) { // e.style.height = e.scrollHeight } } function print_r(obj,aler) { if(!aler) aler=false; try { var debugWindow = {}; if(typeof obj == "object" || typeof obj == "array") { var result = "" var name = (obj.name || obj.id); for (var i in obj) result += name+"." + i + " = " + obj[i] + "; " if(aler) { alert(result) } else { if(debugWindow) { debugWindow.innerText = debugWindow.innerText +"\n\n--------------------------------------------------\n\n"+ result } else { debugWindow = newElement({ tag:"div", innerText:result }) document.body.appendChild(debugWindow); } } } else { alert("you can't show element properties typeof "+typeof obj) } } catch(e){throw(e)} } function UserException(message) { this.message = message; this.name = "UserException"; } function selectImage(e,t) { document.body.style.cursor = "wait"; e.blur(); var width = 580; var height = (ie)?440:450; var posX = (screen.availWidth - width)/2; var posY = (screen.availHeight - height)/2; if(typeof win != "undefined") win.close(); win = window.open("../select_image.php#"+t,"_colorSelect","width="+width+",height="+height+",top="+posY+",left="+posX+",status=1"); if(!win) { alert("Error:\n\nSome Popup-Blocker program has blocked the ColorSelector!\nPlease allow popups from our site.\n"); } document.body.style.cursor = ""; } function uploadMusic(e) { document.body.style.cursor = "wait"; e.blur(); var width = 340; var height = 150; var posX = (screen.availWidth - width)/2; var posY = (screen.availHeight - height)/2; if(typeof win != "undefined") win.close(); win = window.open("upload.php","_uploader","width="+width+",height="+height+",top="+posY+",left="+posX+",status=1"); if(!win) { alert("Error:\n\nSome Popup-Blocker program has blocked the ColorSelector!\nPlease allow popups from our site.\n"); } document.body.style.cursor = ""; } function uploadPhotos(e) { document.body.style.cursor = "wait"; e.blur(); var width = 340; var height = 150; var posX = (screen.availWidth - width)/2; var posY = (screen.availHeight - height)/2; if(typeof win != "undefined") win.close(); win = window.open("upload_photos.php","_uploader","width="+width+",height="+height+",top="+posY+",left="+posX+",status=1"); if(!win) { alert("Error:\n\nSome Popup-Blocker program has blocked the ColorSelector!\nPlease allow popups from our site.\n"); } document.body.style.cursor = ""; } function isset(e) { if(typeof e =="undefined") return false; else return typeof e; } function redirect(url){ if(!url) return; document.location.href = url; } function forum(dir) { if(!dir) return; document.body.style.cursor = "wait"; if(typeof win != "undefined") win.close(); win = window.open("../"+dir+"/forum/","_uploader",""); if(!win) { alert("Error:\n\nSome Popup-Blocker program has blocked the ColorSelector!\nPlease allow popups from our site.\n"); } document.body.style.cursor = ""; } function checkLoginForm() { if($("username").value=="") { tip.show($("username"),"left","Enter your username","error"); $("username").focus(); return false; } else if($("password").value=="") { tip.show($("password"),"left","Plase enter the password","error"); $("password").focus(); return false; } } function confirmDelete() { if(confirm("Are you sure you want to delete this record?")) { return true; } else { return false; } } function copy(inElement) { if (inElement.createTextRange) { var range = inElement.createTextRange(); if (range && BodyLoaded==1) range.execCommand('Copy'); } else { var flashcopier = 'flashcopier'; if(!document.getElementById(flashcopier)) { var divholder = document.createElement('div'); divholder.id = flashcopier; document.body.appendChild(divholder); } document.getElementById(flashcopier).innerHTML = ''; var divinfo = ''; document.getElementById(flashcopier).innerHTML = divinfo; } } window.onload = function() { if($("filename")) { $("filename").onblur = function() { this.value = escape(this.value); }; } } Array.prototype.in_array = function ( obj ) { var len = this.length; for ( var x = 0 ; x <= len ; x++ ) { if ( this[x] == obj ) return true; } return false; } function showLevel(parent) { if(!$(parent)) return; if($(parent).style.display=="none") { $(parent).style.display = "block"; e = $(parent); while (e.parentNode) { e = e.parentNode; if(e.id && e.id=="sidebar") { break; } if(e.tagName.toUpperCase()=="UL" && e.id.indexOf("childsOf")!=-1) { e.style.display = "block"; } // alert("TAG: "+e.tagName+",ID"+e.id+",Display: "+e.style.display) } } else { $(parent).style.display = "none"; } } function submitInquiry() { Element.show('lightwindow_loading'); $("lightwindow_contents").style.overflow = "hidden" new Ajax.Request(FOLDERS.domainRoot+'bg/inquiry', { parameters: $('inquiryForm').serialize(true), onComplete: function(transport){ var response = transport.responseText || "no response text"; $('lightwindow_contents').innerHTML = response; $('lightwindow_contents').style.width= "auto"; $('lightwindow_contents').style.height= "auto"; myLightWindow._getPageDimensions(); // myLightWindow._setupDimensions(); $('lightwindow_contents').innerHTML+= myLightWindow.options.skin.loading; Element.hide('lightwindow_loading'); } }); return false; } addEvent(window,"load",function() { if(!$("nav")) return; var sfEls = document.getElementById("nav").getElementsByTagName("LI"); for (var i=0; i'+thisOptions.id+'" ('+thisOptions.url+')',1);if(self._idCheck(thisOptions.id,true)){self._writeDebug('sound '+thisOptions.id+' already defined - exiting',2);return false;} self.sounds[thisOptions.id]=new SMSound(self,thisOptions);self.soundIDs[self.soundIDs.length]=thisOptions.id;try{self.o._createSound(thisOptions.id,thisOptions.onjustbeforefinishtime);}catch(e){self._failSafely();return true;} if(thisOptions.autoLoad||thisOptions.autoPlay)self.sounds[thisOptions.id].load(thisOptions);if(thisOptions.autoPlay)self.sounds[thisOptions.id].playState=1;} this.destroySound=function(sID){if(!self._idCheck(sID))return false;for(var i=self.soundIDs.length;i--;){if(self.soundIDs[i]==sID){delete self.soundIDs[i];continue;}} self.sounds[sID].unload();delete self.sounds[sID];} this.load=function(sID,oOptions){if(!self._idCheck(sID))return false;self.sounds[sID].load(oOptions);} this.unload=function(sID){if(!self._idCheck(sID))return false;self.sounds[sID].unload();} this.play=function(sID,oOptions){if(!self._idCheck(sID)){if(typeof oOptions!='Object')oOptions={url:oOptions};if(oOptions&&oOptions.url){self._writeDebug('soundController.play(): attempting to create "'+sID+'"',1);oOptions.id=sID;self.createSound(oOptions);}else{return false;}} self.sounds[sID].play(oOptions);} this.start=this.play;this.setPosition=function(sID,nMsecOffset){if(!self._idCheck(sID))return false;self.sounds[sID].setPosition(nMsecOffset);} this.stop=function(sID){if(!self._idCheck(sID))return false;self._writeDebug('soundManager.stop('+sID+')',1);self.sounds[sID].stop();} this.stopAll=function(){self._writeDebug('soundManager.stopAll()',1);for(var oSound in self.sounds){if(self.sounds[oSound]instanceof SMSound)self.sounds[oSound].stop();}} this.pause=function(sID){if(!self._idCheck(sID))return false;self.sounds[sID].pause();} this.resume=function(sID){if(!self._idCheck(sID))return false;self.sounds[sID].resume();} this.togglePause=function(sID){if(!self._idCheck(sID))return false;self.sounds[sID].togglePause();} this.setPan=function(sID,nPan){if(!self._idCheck(sID))return false;self.sounds[sID].setPan(nPan);} this.setVolume=function(sID,nVol){if(!self._idCheck(sID))return false;self.sounds[sID].setVolume(nVol);} this.setPolling=function(bPolling){if(!self.o||!self.allowPolling)return false;self._writeDebug('soundManager.setPolling('+bPolling+')');self.o._setPolling(bPolling);} this.disable=function(){if(self._disabled)return false;self._disabled=true;self._writeDebug('soundManager.disable(): Disabling all functions - future calls will return false.',1);for(var i=self.soundIDs.length;i--;){self._disableObject(self.sounds[self.soundIDs[i]]);} self.initComplete();self._disableObject(self);} this.getSoundById=function(sID,suppressDebug){if(!sID)throw new Error('SoundManager.getSoundById(): sID is null/undefined');var result=self.sounds[sID];if(!result&&!suppressDebug){self._writeDebug('"'+sID+'" is an invalid sound ID.',2);} return result;} this.onload=function(){soundManager._writeDebug('Warning: soundManager.onload() is undefined.',2);} this.onerror=function(){} this._idCheck=this.getSoundById;this._disableObject=function(o){for(var oProp in o){if(typeof o[oProp]=='function'&&typeof o[oProp]._protected=='undefined')o[oProp]=function(){return false;}} oProp=null;} this._failSafely=function(){var flashCPLink='http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html';var fpgssTitle='You may need to whitelist this location/domain eg. file:///C:/ or C:/ or mysite.com, or set ALWAYS ALLOW under the Flash Player Global Security Settings page. Note that this seems to apply only to file system viewing.';var flashCPL='view/edit';var FPGSS='FPGSS';if(!self._disabled){self._writeDebug('soundManager: JS->Flash communication failed. Possible causes: flash/browser security restrictions ('+flashCPL+'), insufficient browser/plugin support, or .swf not found',2);self._writeDebug('Verify that the movie path of '+self.url+' is correct (test link)',1);if(self._didAppend){if(!document.domain){self._writeDebug('Loading from local file system? (document.domain appears to be null, this URL path may need to be added to \'trusted locations\' in '+FPGSS+')',1);self._writeDebug('Possible security/domain restrictions ('+flashCPL+'), should work when served by http on same domain',1);}} self.disable();}} this._createMovie=function(smID,smURL){if(self._didAppend&&self._appendSuccess)return false;if(window.location.href.indexOf('debug=1')+1)self.debugMode=true;self._didAppend=true;var html=['',''];var toggleElement='
-
';var debugHTML='
';var appXHTML='soundManager._createMovie(): appendChild/innerHTML set failed. Serving application/xhtml+xml MIME type? Browser may be enforcing strict rules, not allowing write to innerHTML. (PS: If so, this means your commitment to XML validation is going to break stuff now, because this part isn\'t finished yet. ;))';var sHTML='
'+html[self.isIE?0:1]+'
'+(self.debugMode&&((!self._hasConsole||!self.useConsole)||(self.useConsole&&self._hasConsole&&!self.consoleOnly))&&!document.getElementById(self.debugID)?'x'+debugHTML+toggleElement:'');var oTarget=(document.body?document.body:document.getElementsByTagName('div')[0]);if(oTarget){self.oMC=document.createElement('div');self.oMC.className='movieContainer';self.oMC.style.position='absolute';self.oMC.style.left='-256px';self.oMC.style.width='1px';self.oMC.style.height='1px';try{oTarget.appendChild(self.oMC);self.oMC.innerHTML=html[self.isIE?0:1];self._appendSuccess=true;}catch(e){throw new Error(appXHTML);} if(!document.getElementById(self.debugID)&&((!self._hasConsole||!self.useConsole)||(self.useConsole&&self._hasConsole&&!self.consoleOnly))){var oDebug=document.createElement('div');oDebug.id=self.debugID;oDebug.style.display=(self.debugMode?'block':'none');if(self.debugMode){try{var oD=document.createElement('div');oTarget.appendChild(oD);oD.innerHTML=toggleElement;}catch(e){throw new Error(appXHTML);}} oTarget.appendChild(oDebug);} oTarget=null;} self._writeDebug('-- SoundManager 2 Version '+self.version.substr(1)+' --',1);self._writeDebug('soundManager._createMovie(): trying to load '+smURL+'',1);} this._writeDebug=function(sText,sType){if(!self.debugMode)return false;if(self._hasConsole&&self.useConsole){console[self._debugLevels[sType]||'log'](sText);if(self.useConsoleOnly)return true;} var sDID='soundmanager-debug';try{var o=document.getElementById(sDID);if(!o)return false;var p=document.createElement('div');p.innerHTML=sText;o.insertBefore(p,o.firstChild);}catch(e){} o=null;} this._writeDebug._protected=true;this._writeDebugAlert=function(sText){alert(sText);} if(window.location.href.indexOf('debug=alert')+1){self.debugMode=true;self._writeDebug=self._writeDebugAlert;} this._toggleDebug=function(){var o=document.getElementById(self.debugID);var oT=document.getElementById(self.debugID+'-toggle');if(!o)return false;if(self._debugOpen){oT.innerHTML='+';o.style.display='none';}else{oT.innerHTML='-';o.style.display='block';} self._debugOpen=!self._debugOpen;} this._toggleDebug._protected=true;this._debug=function(){self._writeDebug('soundManager._debug(): sounds by id/url:',0);for(var i=0,j=self.soundIDs.length;itest URL]'));self.loaded=bSuccess;self.loadSuccess=bSuccess;self.readyState=bSuccess?3:2;if(self.options.onload)self.options.onload.apply(self);} this._onbeforefinish=function(){if(!self.didBeforeFinish){self.didBeforeFinish=true;if(self.options.onbeforefinish)self.options.onbeforefinish.apply(self);}} this._onjustbeforefinish=function(msOffset){if(!self.didJustBeforeFinish){self.didJustBeforeFinish=true;if(self.options.onjustbeforefinish)self.options.onjustbeforefinish.apply(self);;}} this._onfinish=function(){sm._writeDebug('SMSound._onfinish(): "'+self.sID+'"');self.playState=0;self.paused=false;if(self.options.onfinish)self.options.onfinish.apply(self);if(self.options.onbeforefinishcomplete)self.options.onbeforefinishcomplete.apply(self);self.setPosition(0);self.didBeforeFinish=false;self.didJustBeforeFinish=false;}} var soundManager=new SoundManager();if(window.addEventListener){window.addEventListener('load',soundManager.beginDelayedInit,false);window.addEventListener('beforeunload',soundManager.destruct,false);}else if(window.attachEvent){window.attachEvent('onload',soundManager.beginInit);window.attachEvent('beforeunload',soundManager.destruct);}else{soundManager.onerror();soundManager.disable();}soundManager.onload = function() { soundManager.createSound({ id: 'menuClick', url: FOLDERS.js+'/../sounds/menu.mp3', autoLoad: true, autoPlay: false }); } function init() { var accordion = new Accordion('.menu', '.submenu', { display: (typeof defaultToDisplay!="undefined")?defaultToDisplay:-1, opacity: false, onActive: function(toggler, element) { if(element.innerHTML=="") { if(typeof element.hide == "function") element.hide(); else element.style.overdlow == "none"; } else element.style.display = "block"; if(soundManager.sounds["menuClick"]) soundManager.play( 'menuClick' ); } }, $('accordion')); } eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('m 9O={9N:\'1.11\'};h $48(Y){c(Y!=6g)};h $q(Y){k(!$48(Y))c L;k(Y.3h)c\'U\';m q=43 Y;k(q==\'2b\'&&Y.9U){1E(Y.5n){N 1:c\'U\';N 3:c(/\\S/).1G(Y.75)?\'9L\':\'9E\'}}k(q==\'2b\'||q==\'h\'){1E(Y.6K){N 1I:c\'1d\';N 5j:c\'3M\';N 1a:c\'5O\'}k(43 Y.J==\'5g\'){k(Y.2h)c\'9H\';k(Y.6f)c\'P\'}}c q};h $2W(){m 3P={};B(m i=0;i-1:7.2w(2j)>-1},8b:h(){c 7.2A(/([.*+?^${}()|[\\]\\/\\\\])/g,\'\\\\$1\')}});1I.Q({4x:h(1d){k(7.J<3)c L;k(7.J==4&&7[3]==0&&!1d)c\'8Y\';m 2H=[];B(m i=0;i<3;i++){m 31=(7[i]-0).8I(16);2H.18((31.J==1)?\'0\'+31:31)}c 1d?2H:\'#\'+2H.1w(\'\')},4N:h(1d){k(7.J!=3)c L;m 1V=[];B(m i=0;i<3;i++){1V.18(3S((7[i].J==1)?7[i]+7[i]:7[i],16))}c 1d?1V:\'1V(\'+1V.1w(\',\')+\')\'}});55.Q({2a:h(r){m G=7;r=$2W({\'K\':G,\'u\':L,\'P\':1c,\'1J\':L,\'2P\':L,\'4H\':L},r);k($2S(r.P)&&$q(r.P)!=\'1d\')r.P=[r.P];c h(u){m 14;k(r.u){u=u||I.u;14=[(r.u===19)?u:V r.u(u)];k(r.P)14.Q(r.P)}T 14=r.P||P;m 2m=h(){c G.3j($3e(r.K,G),14)};k(r.1J)c 7F(2m,r.1J);k(r.2P)c 8T(2m,r.2P);k(r.4H)35{c 2m()}2Z(8S){c L};c 2m()}},8O:h(14,K){c 7.2a({\'P\':14,\'K\':K})},4H:h(14,K){c 7.2a({\'P\':14,\'K\':K,\'4H\':19})()},K:h(K,14){c 7.2a({\'K\':K,\'P\':14})},8l:h(K,14){c 7.2a({\'K\':K,\'u\':19,\'P\':14})},1J:h(1J,K,14){c 7.2a({\'1J\':1J,\'K\':K,\'P\':14})()},2P:h(7h,K,14){c 7.2a({\'2P\':7h,\'K\':K,\'P\':14})()}});7i.Q({4a:h(){c 3S(7)},7L:h(){c 3z(7)},8o:h(2O,3k){c 1M.2O(3k,1M.3k(2O,7))},3p:h(3u){3u=1M.8w(10,3u||0);c 1M.3p(7*3u)/3u},8x:h(G){B(m i=0;i<7;i++)G(i)}});m F=V 1a({1D:h(o,1m){k($q(o)==\'2j\'){k(I.21&&1m&&(1m.1g||1m.q)){m 1g=(1m.1g)?\' 1g="\'+1m.1g+\'"\':\'\';m q=(1m.q)?\' q="\'+1m.q+\'"\':\'\';5I 1m.1g;5I 1m.q;o=\'<\'+o+1g+q+\'>\'}o=15.6j(o)}o=$(o);c(!1m||!o)?o:o.3J(1m)}});m 1s=V 1a({1D:h(C){c(C)?$Q(C,7):7}});1s.Q=h(1m){B(m 1p 17 1m){7.1j[1p]=1m[1p];7[1p]=$3o.4e(1p)}};h $(o){k(!o)c 1c;k(o.3h)c 1L.3m(o);k([I,15].12(o))c o;m q=$q(o);k(q==\'2j\'){o=15.4l(o);q=(o)?\'U\':L}k(q!=\'U\')c 1c;k(o.3h)c 1L.3m(o);k([\'2b\',\'8z\'].12(o.4p.4f()))c o;$Q(o,F.1j);o.3h=h(){};c 1L.3m(o)};15.4n=15.26;h $$(){m C=[];B(m i=0,j=P.J;i0&&4c<13)7.1S=\'f\'+4c}7.1S=7.1S||5v.ax(7.47).4f()}T k(7.q.1G(/(6c|ay|av)/)){7.au={\'x\':u.5w||u.6J+15.6O.ar,\'y\':u.5x||u.6V+15.6O.as};7.at={\'x\':u.5w?u.5w-I.aT:u.6J,\'y\':u.5x?u.5x-I.bc:u.6V};7.bj=(u.76==3)||(u.bk==2);1E(7.q){N\'5N\':7.1x=u.1x||u.bl;1l;N\'5i\':7.1x=u.1x||u.bi}7.72()}c 7},3B:h(){c 7.3Y().42()},3Y:h(){k(7.u.3Y)7.u.3Y();T 7.u.bh=19;c 7},42:h(){k(7.u.42)7.u.42();T 7.u.be=L;c 7}});1Y.44={1x:h(){k(7.1x&&7.1x.5n==3)7.1x=7.1x.2d},71:h(){35{1Y.44.1x.1H(7)}2Z(e){7.1x=7.3f}}};1Y.1j.72=(I.5m)?1Y.44.71:1Y.44.1x;1Y.1q=V 3a({\'bf\':13,\'bm\':38,\'bt\':40,\'4G\':37,\'4q\':39,\'br\':27,\'bo\':32,\'bq\':8,\'bs\':9,\'5I\':46});F.25.28={2p:h(q,G){7.$M=7.$M||{};7.$M[q]=7.$M[q]||{\'1q\':[],\'24\':[]};k(7.$M[q].1q.12(G))c 7;7.$M[q].1q.18(G);m 4w=q;m 1C=F.28[q];k(1C){k(1C.5P)1C.5P.1H(7,G);k(1C.23)G=1C.23;k(1C.q)4w=1C.q}k(!7.5L)G=G.2a({\'K\':7,\'u\':19});7.$M[q].24.18(G);c(F.5D.12(4w))?7.2M(4w,G):7},5H:h(q,G){k(!7.$M||!7.$M[q])c 7;m 2r=7.$M[q].1q.2w(G);k(2r==-1)c 7;m 1S=7.$M[q].1q.4v(2r,1)[0];m H=7.$M[q].24.4v(2r,1)[0];m 1C=F.28[q];k(1C){k(1C.34)1C.34.1H(7,G);k(1C.q)q=1C.q}c(F.5D.12(q))?7.6E(q,H):7},5M:h(22){c F.4z(7,\'2p\',22)},4A:h(q){k(!7.$M)c 7;k(!q){B(m 4D 17 7.$M)7.4A(4D);7.$M=1c}T k(7.$M[q]){7.$M[q].1q.1r(h(G){7.5H(q,G)},7);7.$M[q]=1c}c 7},1v:h(q,14,1J){k(7.$M&&7.$M[q]){7.$M[q].1q.1r(h(G){G.2a({\'K\':7,\'1J\':1J,\'P\':14})()},7)}c 7},6v:h(R,q){k(!R.$M)c 7;k(!q){B(m 4D 17 R.$M)7.6v(R,4D)}T k(R.$M[q]){R.$M[q].1q.1r(h(G){7.2p(q,G)},7)}c 7}};I.Q(F.25.28);15.Q(F.25.28);F.Q(F.25.28);F.28=V 3a({\'7P\':{q:\'5N\',23:h(u){u=V 1Y(u);k(u.1x!=7&&!7.5C(u.1x))7.1v(\'7P\',u)}},\'7R\':{q:\'5i\',23:h(u){u=V 1Y(u);k(u.1x!=7&&!7.5C(u.1x))7.1v(\'7R\',u)}},\'4t\':{q:(I.5m)?\'5F\':\'4t\'}});F.5D=[\'6c\',\'b0\',\'b1\',\'aY\',\'4t\',\'5F\',\'5N\',\'5i\',\'aX\',\'7U\',\'aU\',\'aV\',\'6z\',\'51\',\'83\',\'aW\',\'b2\',\'b3\',\'b9\',\'74\',\'ba\',\'bb\',\'3g\',\'b8\',\'6C\',\'b7\',\'b4\'];55.Q({b5:h(K,14){c 7.2a({\'K\':K,\'P\':14,\'u\':1Y})}});1s.Q({b6:h(2g){c V 1s(7.2e(h(o){c(F.3d(o)==2g)}))},7u:h(1e,1N){m C=7.2e(h(o){c(o.1e&&o.1e.12(1e,\' \'))});c(1N)?C:V 1s(C)},7t:h(2L,1N){m C=7.2e(h(o){c(o.2L==2L)});c(1N)?C:V 1s(C)},7v:h(1g,52,H,1N){m C=7.2e(h(o){m 1A=F.3C(o,1g);k(!1A)c L;k(!52)c 19;1E(52){N\'=\':c(1A==H);N\'*=\':c(1A.12(H));N\'^=\':c(1A.7d(0,H.J)==H);N\'$=\':c(1A.7d(1A.J-H.J)==H);N\'!=\':c(1A!=H);N\'~=\':c 1A.12(H,\' \')}c L});c(1N)?C:V 1s(C)}});h $E(1i,2e){c($(2e)||15).6M(1i)};h $af(1i,2e){c($(2e)||15).4n(1i)};$$.2k={\'3M\':/^(\\w*|\\*)(?:#([\\w-]+)|\\.([\\w-]+))?(?:\\[(\\w+)(?:([!*^$]?=)["\']?([^"\'\\]]*)["\']?)?])?$/,\'2E\':{5a:h(1b,29,O,i){m 1y=[29.9p?\'5d:\':\'\',O[1]];k(O[2])1y.18(\'[@2L="\',O[2],\'"]\');k(O[3])1y.18(\'[12(5B(" ", @5O, " "), " \',O[3],\' ")]\');k(O[4]){k(O[5]&&O[6]){1E(O[5]){N\'*=\':1y.18(\'[12(@\',O[4],\', "\',O[6],\'")]\');1l;N\'^=\':1y.18(\'[9q-9r(@\',O[4],\', "\',O[6],\'")]\');1l;N\'$=\':1y.18(\'[9o(@\',O[4],\', 2j-J(@\',O[4],\') - \',O[6].J,\' + 1) = "\',O[6],\'"]\');1l;N\'=\':1y.18(\'[@\',O[4],\'="\',O[6],\'"]\');1l;N\'!=\':1y.18(\'[@\',O[4],\'!="\',O[6],\'"]\')}}T{1y.18(\'[@\',O[4],\']\')}}1b.18(1y.1w(\'\'));c 1b},5c:h(1b,29,1N){m C=[];m 2E=15.7C(\'.//\'+1b.1w(\'//\'),29,$$.2k.7r,9n.9k,1c);B(m i=0,j=2E.9l;i<\\/1T>\');$(\'5Z\').4I=h(){k(7.3w==\'6s\')3I()}}}T{I.2M("6z",3I);15.2M("91",3I)}}};I.92=h(G){c 7.2p(\'69\',G)};m 1P={};1P.65=V 1a({r:{6P:1a.1u,3l:1a.1u,5J:1a.1u,70:h(p){c-(1M.98(1M.99*p)-1)/2},61:9g,2l:\'3A\',3b:19,6R:50},1D:h(r){7.U=7.U||1c;7.3K(r);k(7.r.1D)7.r.1D.1H(7)},6W:h(){m 2o=$2o();k(2o<7.2o+7.r.61){7.73=7.r.70((2o-7.2o)/7.r.61);7.66();7.5Q()}T{7.3B(19);7.3J(7.W);7.1v(\'3l\',7.U,10);7.4W()}},3J:h(W){7.1X=W;7.5Q();c 7},66:h(){7.1X=7.3F(7.R,7.W)},3F:h(R,W){c(W-R)*7.73+R},1B:h(R,W){k(!7.r.3b)7.3B();T k(7.1O)c 7;7.R=R;7.W=W;7.74=7.W-7.R;7.2o=$2o();7.1O=7.6W.2P(1M.3p(9d/7.r.6R),7);7.1v(\'6P\',7.U);c 7},3B:h(49){k(!7.1O)c 7;7.1O=$64(7.1O);k(!49)7.1v(\'5J\',7.U);c 7},1C:h(R,W){c 7.1B(R,W)},9a:h(49){c 7.3B(49)}});1P.65.5A(V 5z,V 28,V 5p);1P.33={3g:h(t,W){k(t.1G(/4F/i))c 7.62;m q=$q(W);k((q==\'1d\')||(q==\'2j\'&&W.12(\' \')))c 7.4Q;c 7.82},2B:h(o,t,30){k(!30.18)30=[30];m R=30[0],W=30[1];k(!$2S(W)){W=R;R=o.2C(t)}m 1U=7.3g(t,W);c{\'R\':1U.2B(R),\'W\':1U.2B(W),\'1U\':1U}}};1P.33.82={2B:h(H){c 3z(H)},4J:h(R,W,1Q){c 1Q.3F(R,W)},3c:h(H,2l,t){k(2l==\'3A\'&&t!=\'1t\')H=1M.3p(H);c H+2l}};1P.33.4Q={2B:h(H){c H.18?H:H.4P(\' \').23(h(v){c 3z(v)})},4J:h(R,W,1Q){m 1X=[];B(m i=0;i=9Y)&&(2J<9Z))},3Q:h(){7.2x={\'1n\':7.1F.a5,\'3W\':7.1F.a6};7.1v(\'3Q\',[7.2x.1n,7.2x.3W]);7.4W()},4M:h(){7.1v(\'4M\',7.1F)},3T:h(1g,H){7.2I[1g]=H;c 7},4U:h(2n,1k){k(7.r.80)7.6D();T k(7.2Y)c 7;7.2Y=19;k(1k&&7.r.1z==\'6U\'){2n=2n+(2n.12(\'?\')?\'&\':\'?\')+1k;1k=1c}7.1F.ac(7.r.1z.5E(),2n,7.r.7Q);7.1F.4I=7.7l.K(7);k((7.r.1z==\'3i\')&&7.1F.ad)7.3T(\'ab\',\'aa\');$Q(7.2I,7.r.2I);B(m q 17 7.2I)35{7.1F.a7(q,7.2I[q])}2Z(e){};7.1v(\'6y\');7.1F.4U($3e(1k,1c));c 7},6D:h(){k(!7.2Y)c 7;7.2Y=L;7.1F.6C();7.1F.4I=1a.1u;7.5K();7.1v(\'5J\');c 7}});5o.5A(V 5z,V 28,V 5p);m 77=5o.Q({r:{1k:1c,4Z:1c,3l:1a.1u,4O:L,63:L},1D:h(2n,r){7.2p(\'3Q\',7.3l);7.3K(r);7.r.1k=7.r.1k||7.r.a8;k(![\'3i\',\'6U\'].12(7.r.1z)){7.3V=\'3V=\'+7.r.1z;7.r.1z=\'3i\'}7.1R();7.3T(\'X-a9-9W\',\'4T\');7.3T(\'9V\',\'1n/6I, 1n/9I, 6d/3W, 1n/3W, */*\');7.2n=2n},3l:h(){k(7.r.4Z)$(7.r.4Z).1u().4Y(7.2x.1n);k(7.r.4O||7.r.63)7.4O();7.1v(\'3l\',[7.2x.1n,7.2x.3W],20)},6H:h(1k){1k=1k||7.r.1k;1E($q(1k)){N\'U\':1k=$(1k).3D();1l;N\'2b\':1k=5S.3D(1k)}k(7.3V)1k=(1k)?[7.3V,1k].1w(\'&\'):7.3V;c 7.4U(7.2n,1k)},4O:h(){m 1T,2u;k(7.r.63||(/(9J|9K)1T/).1G(7.81(\'79-q\')))2u=7.2x.1n;T{2u=[];m 3M=/<1T[^>]*>([\\s\\S]*?)<\\/1T>/9G;58((1T=3M.9D(7.2x.1n)))2u.18(1T[1]);2u=2u.1w(\'\\n\')}k(2u)(I.7s)?I.7s(2u):I.7F(2u,0)},81:h(1g){35{c 7.1F.9F(1g)}2Z(e){};c 1c}});5S.3D=h(22){m 3q=[];B(m t 17 22)3q.18(67(t)+\'=\'+67(22[t]));c 3q.1w(\'&\')};F.Q({4U:h(r){c V 77(7.3C(\'9M\'),$2W({1k:7.3D()},r,{1z:\'3i\'})).6H()}});m 5f=1P.1s.Q({r:{5q:1a.1u,6A:1a.1u,2v:0,3y:L,3s:19,2U:L,1t:19,4h:L,4i:L,3b:L,4E:L},1D:h(){m r,1K,C,2T;$1r(P,h(2V,i){1E($q(2V)){N\'2b\':r=2V;1l;N\'U\':2T=$(2V);1l;4b:m 1y=$$(2V);k(!1K)1K=1y;T C=1y}});7.1K=1K||[];7.C=C||[];7.2T=$(2T);7.3K(r);7.1Z=-1;k(7.r.4E)7.r.3b=19;k($2S(7.r.3y)){7.r.2v=L;7.1Z=7.r.3y}k(7.r.1B){7.r.2v=L;7.r.3y=L}7.2y={};k(7.r.1t)7.2y.1t=\'7c\';k(7.r.2U)7.2y.2U=7.r.4i?\'7o\':\'9S\';k(7.r.3s)7.2y.3s=7.r.4h?\'7m\':\'9T\';B(m i=0,l=7.1K.J;i0));7.1v(53?\'6A\':\'5q\',[7.1K[i],o]);B(m 1Q 17 7.2y)Y[i][1Q]=53?0:o[7.2y[1Q]]},7);c 7.1B(Y)},9P:h(1o){c 7.2v(1o)}});1P.5f=5f;',62,714,'|||||||this|||||return|||||function|||if||var||el||type|options||property|event|||||||for|elements|||Element|fn|value|window|length|bind|false|events|case|param|arguments|extend|from||else|element|new|to||obj||||contains||args|document||in|push|true|Class|items|null|array|className|result|name|style|selector|prototype|data|break|props|text|index|prop|keys|each|Elements|opacity|empty|fireEvent|join|relatedTarget|temp|method|current|start|custom|initialize|switch|transport|test|call|Array|delay|togglers|Garbage|Math|nocash|timer|Fx|fx|parent|key|script|css|rgb|border|now|Event|previous||ie|source|map|values|Methods|getElementsByTagName||Events|context|create|object|toggler|parentNode|filter|match|tag|item|properties|string|shared|unit|returns|url|time|addEvent|option|pos|iCss|len|scripts|display|indexOf|response|effects|tmp|replace|parse|getStyle|iterable|xpath|inject|iTo|hex|headers|status|val|id|addListener|parsed|min|periodical|padding|chains|chk|container|width|argument|merge|Styles|running|catch|fromTo|bit||CSS|remove|try|setStyle||||Abstract|wait|getValue|getTag|pick|target|select|htmlElement|post|apply|max|onComplete|collect|results|native|round|queryString|iNow|height|unique|precision|top|readyState|encoding|show|parseFloat|px|stop|getProperty|toQueryString|HTMLElement|compute|iFrom|webkit|domReady|set|setOptions|include|regexp|next|klass|mix|onSuccess|walk|parseInt|setHeader|isSuccess|_method|xml|forEach|stopPropagation|setProperty||Properties|preventDefault|typeof|fix|Listeners||code|defined|end|toInt|default|fKey|trash|generic|toLowerCase|brother|fixedHeight|fixedWidth|visibility|every|getElementById|none|getElementsBySelector|setStyles|tagName|right|bottom|getElements|mousewheel|loaded|splice|realType|rgbToHex|src|setMany|removeEvents|currentStyle|hidden|evType|alwaysHide|color|left|attempt|onreadystatechange|getNow|proto|mp|onFailure|hexToRgb|evalScripts|split|Multi|included|regex|XMLHttpRequest|send|random|callChain|charAt|setHTML|update||unload|operator|hide|camelCase|Function|hasClass|found|while|trim|getParam|newArray|getItems|xhtml|appendChild|Accordion|number|on|mouseout|RegExp|clean|merged|gecko|nodeType|XHR|Options|onActive|innerText|flag|node|firstChild|String|pageX|pageY|cssText|Chain|implement|concat|hasChild|NativeEvents|toUpperCase|DOMMouseScroll|size|removeEvent|delete|onCancel|setTransport|addEventListener|addEvents|mouseover|class|add|increase|insertBefore|Object|qs|disabled|selected|multiple|checked|getMany|ie_ready|iProps|duration|Color|evalResponse|clear|Base|setNow|encodeURIComponent|pairs|domready|Dom|first|click|application|getNext|callee|undefined|capitalize|iParsed|createElement|textContent|elementsProperty|fixStyle|Left|getLast|ie6|sel|copy|complete|shift|normal|cloneEvents|extended|picked|onRequest|load|onBackground|idx|abort|cancel|removeListener|childNodes|www|request|javascript|clientX|constructor|styleSheet|getElement|setProperties|documentElement|onStart|urlEncoded|fps|removeChild|Merge|get|clientY|step|direction|innerHTML|ActiveXObject|transition|relatedTargetGecko|fixRelatedTarget|delta|change|nodeValue|which|Ajax|wheelDelta|Content|PropertiesIFlag|Width|fullOpacity|substr|contents|injectBefore|Right|interval|Number|setOpacity|input|onStateChange|fullHeight|continue|fullWidth|injectAfter|appendText|resolver|execScript|filterById|filterByClass|filterByAttribute|Top|margin|prefix|removeEventListener|0px|addClass|evaluate|removeClass|visible|setTimeout|head|hyphenate|before|after|pp|toFloat|borderShort|where|params|mouseenter|async|mouseleave|addSection|defaultView|keydown|zoom|slice|textarea|Bottom|getFormElements|autoCancel|getHeader|Single|beforeunload|borderStyle|some|borderColor|borderWidth|getText|associate|offset|escapeRegExp|Style|createTextNode|toggleClass|replaceChild|replaceWith|cloneNode|float|styleFloat|hasLayout|bindAsEventListener|zIndex|cssFloat|limit|clearChain|injectTop|injectInside|styles|htmlFor|adopt|boolean|pow|times|clone|embed|alpha|100|attributes|getAttribute|getChildren|getParent|removeProperty|removeAttribute|toString|setText|setAttribute|getProperties|lastChild|getFirst|pass|getPropertyValue|getComputedStyle|getRandom|err|setInterval|getPrevious|Sibling|getStyles|chain|transparent|org|defer|DOMContentLoaded|onDomReady|write|void|location|protocol|https|cos|PI|clearTimer|clearTimeout|getTime|1000|clearInterval|Document|500|Window|password|radio|UNORDERED_NODE_SNAPSHOT_TYPE|snapshotLength|snapshotItem|XPathResult|substring|namespaceURI|starts|with|taintEnabled|navigator|1999|getElementsByClassName|checkbox|w3|http|all|ie7|utf|Date|exec|whitespace|getResponseHeader|gi|collection|html|ecma|java|textnode|action|version|MooTools|showThisHideOpen|offsetHeight|overflow|offsetWidth|scrollHeight|nodeName|Accept|With|urlencoded|200|300|form|floor|Microsoft|XMLHTTP|charset|responseText|responseXML|setRequestHeader|postBody|Requested|close|Connection|open|overrideMimeType|colspan|ES|metaKey|wheel|120|meta|altKey|control|ctrlKey|alt|detail||keyCode|scrollLeft|scrollTop|client|page|menu|111|fromCharCode|mouse|shiftKey|srcElement|tabindex|tabIndex|maxlength|accessKey|accesskey|colSpan|rowspan|rowSpan|maxLength|readonly|attachEvent|detachEvent|CollectGarbage|href|frameBorder|readOnly|frameborder|webkit420|pageXOffset|keypress|keyup|resize|mousemove|mousedown|webkit419|dblclick|mouseup|move|focus|scroll|bindWithEvent|filterByTag|contextmenu|error|blur|submit|reset|pageYOffset|getBoxObjectFor|returnValue|enter|BackgroundImageCache|cancelBubble|toElement|rightClick|button|fromElement|up|execCommand|space|khtml|backspace|esc|tab|down|DOMElement|iframe'.split('|'),0,{})) // Settings var includeCaption = 0; // Turn on the "caption" feature, and write out the caption HTML var zoomTime = 3; // Milliseconds between frames of zoom animation var zoomSteps = 5; // Number of zoom animation frames var fade = 1; // Fade images in / out var minBorder = 90; // Amount of padding between large, scaled down images, and the window edges var zoomImageURI = FOLDERS.images+"/"; // Location of the zoom images if(typeof window.addEvent == "function") { window.addEvent("domready",function() { setupZoom(); }); } function fadeOut(elem) { if (elem.id) { fadeElementSetup(elem.id, 100, 0, 10); } } function fadeIn(elem) { if (elem.id) { fadeElementSetup(elem.id, 0, 100, 10); } } // Fade: Initialize the fade function var fadeActive = new Array(); var fadeQueue = new Array(); var fadeTimer = new Array(); var fadeClose = new Array(); function fadeElementSetup(theID, fdStart, fdEnd, fdSteps, fdClose) { if (fadeActive[theID] == true) { // Already animating, queue up this command fadeQueue[theID] = new Array(theID, fdStart, fdEnd, fdSteps); } else { fadeSteps = fdSteps; fadeCurrent = 0; fadeAmount = (fdStart - fdEnd) / fadeSteps; fadeTimer[theID] = setInterval("fadeElement('"+theID+"', '"+fadeCurrent+"', '"+fadeAmount+"', '"+fadeSteps+"')", 15); fadeActive[theID] = true; if (fdClose == 1) { fadeClose[theID] = true; } else { fadeClose[theID] = false; } } } // Fade: Do the fade. This function will call itself, modifying the parameters, so // many instances can run concurrently. function fadeElement(theID, fadeCurrent, fadeAmount, fadeSteps) { if (fadeCurrent == fadeSteps) { // We're done, so clear. clearInterval(fadeTimer[theID]); fadeActive[theID] = false; // Should we close it? if (fadeClose[theID] == true) { document.getElementById(theID).style.visibility = "hidden"; } // Hang on.. did a command queue while we were working? If so, make it happen now if (fadeQueue[theID] && fadeQueue[theID] != false) { fadeElementSetup(fadeQueue[theID][0], fadeQueue[theID][1], fadeQueue[theID][2], fadeQueue[theID][3]); fadeQueue[theID] = false; } } else { fadeCurrent++; // Set the opacity depending on if we're adding or subtracting (pos or neg) if (fadeAmount < 0) { setOpacity(Math.abs(fadeCurrent * fadeAmount), theID); } else { setOpacity(100 - (fadeCurrent * fadeAmount), theID); } // Keep going, and send myself the updated variables clearInterval(fadeTimer[theID]); fadeTimer[theID] = setInterval("fadeElement('"+theID+"', '"+fadeCurrent+"', '"+fadeAmount+"', '"+fadeSteps+"')", 15); } } // Utility: Set the opacity, compatible with a number of browsers. Value from 0 to 100. function setOpacity(opacity, theID) { var object = document.getElementById(theID).style; // If it's 100, set it to 99 for Firefox. if (navigator.userAgent.indexOf("Firefox") != -1) { if (opacity == 100) { opacity = 99.9999; } // This is majorly retarded } // Multi-browser opacity setting object.filter = "alpha(opacity=" + opacity + ")"; // IE/Win //object.KhtmlOpacity = (opacity / 100); // Safari 1.1 or lower, Konqueror //object.MozOpacity = (opacity / 100); // Older Mozilla+Firefox object.opacity = (opacity / 100); // Safari 1.2, Firefox+Mozilla } // Utility: Math functions for animation calucations - From http://www.robertpenner.com/easing/ // // t = time, b = begin, c = change, d = duration // time = current frame, begin is fixed, change is basically finish - begin, duration is fixed (frames), function linear(t, b, c, d) { return c*t/d + b; } function sineInOut(t, b, c, d) { return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; } function cubicIn(t, b, c, d) { return c*(t/=d)*t*t + b; } function cubicOut(t, b, c, d) { return c*((t=t/d-1)*t*t + 1) + b; } function cubicInOut(t, b, c, d) { if ((t/=d/2) < 1) return c/2*t*t*t + b; return c/2*((t-=2)*t*t + 2) + b; } function bounceOut(t, b, c, d) { if ((t/=d) < (1/2.75)){ return c*(7.5625*t*t) + b; } else if (t < (2/2.75)){ return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; } else if (t < (2.5/2.75)){ return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; } else { return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; } } //////////////////////////// // // ZOOM IMAGE functions // (C) 2007 Cabel Sasser / Panic Inc. // Init. Do not add anything below this line, unless it's something awesome. var myWidth = 0, myHeight = 0, myScroll = 0; myScrollWidth = 0; myScrollHeight = 0; var zoomOpen = false, preloadFrame = 1, preloadActive = false, preloadTime = 0, imgPreload = new Image(); var zoomActive = new Array(); var zoomTimer = new Array(); var zoomOrigW = new Array(); var zoomOrigH = new Array(); var zoomOrigX = new Array(); var zoomOrigY = new Array(); var zoomID = "ZoomBox"; var theID = "ZoomImage"; var theCap = "ZoomCaption"; var theCapDiv = "ZoomCapDiv"; var imagesArray = []; // Zoom: Setup The Page! Called onLoad(); function setupZoom() { prepZooms(); insertZoomHTML(); zoomdiv = document.getElementById(zoomID); zoomimg = document.getElementById(theID); } // Zoom: Inject Javascript functions into zoomable href's, one by one. // This is done at page load time via an onLoad() handler. function prepZooms() { if (! document.getElementsByTagName) { return; } var links = document.getElementsByTagName("a"); for (i = 0; i < links.length; i++) { if (links[i].getAttribute("href")) { file = links[i].getAttribute("href"); if ((file.indexOf(".php") != -1 && file.indexOf("image.php") != -1 ) && /(png|gif|jpg|jpeg)/i.test(file)) { links[i].onclick = function () { zoomClick(this); return false; }; links[i].onmouseover = function () { zoomPreload(this); }; imagesArray[imagesArray.length] = links[i]; } if (links[i].getAttribute("rel")=="zoom") { links[i].onclick = function () { zoomClick(this); return false; }; links[i].onmouseover = function () { zoomPreload(this); }; imagesArray[imagesArray.length] = links[i]; } } } } // Zoom: Preload a zoom image when hovering over the thumbnail, then set the image once the preload is complete. // Preloaded image is stored in imgPreload() and swapped out in the zoom function. function zoomPrev() { if(typeof imagesArray == "undefined") return; var current; for(i in imagesArray) { if(String(imagesArray[i]).indexOf(document.getElementById("ZoomImage").src)!=-1) { current = i; break; } } if(current==0) { var image = new Image(); image.src = imagesArray[imagesArray.length-1]; image.onload = function() { imgPreload = image; zoomClick(newElement({tag:"a",href:imagesArray[imagesArray.length-1],children:[{ tag:"img", src: image.src, width: image.width, height: image.height }]})) } } else { var image = new Image(); image.src = imagesArray[current-1]; image.onload = function() { imgPreload = image; zoomClick(newElement({tag:"a",href:imagesArray[current-1],children:[{ tag:"img", src: image.src, width: image.width, height: image.height }]})) } } } function zoomNext() { if(typeof imagesArray == "undefined") return; var current; for(i in imagesArray) { if(String(imagesArray[i]).indexOf(document.getElementById("ZoomImage").src)!=-1) { current = i; break; } } if(current==(imagesArray.length-1)) { var image = new Image(); image.src = imagesArray[0]; image.onload = function() { imgPreload = image; zoomClick(newElement({tag:"a",href:imagesArray[0],children:[{ tag:"img", src: image.src, width: image.width, height: image.height }]})) } } else { var image = new Image(); image.src = imagesArray[parseInt(current)+1]; image.onload = function() { imgPreload = image; zoomClick(newElement({tag:"a",href:imagesArray[parseInt(current)+1],children:[{ tag:"img", src: image.src, width: image.width, height: image.height }]})) } } } function zoomPreload(from) { var theimage = from.getAttribute("href"); // console.log("PRELOAD START: "+theimage); // Only preload if we have to, i.e. the image isn't this image already if (imgPreload.src.indexOf(from.getAttribute("href").substr(from.getAttribute("href").lastIndexOf("/"))) == -1) { preloadActive = true; imgPreload = new Image(); // Set a function to fire when the preload is complete, setting flags along the way. imgPreload.onload = function() { // console.log("PRELOAD END"); preloadActive = false; } // Load it! imgPreload.src = theimage; } } // Zoom: Start the preloading animation cycle. function preloadAnimStart() { preloadTime = new Date(); document.getElementById("ZoomSpin").style.left = (myWidth / 2) + 'px'; document.getElementById("ZoomSpin").style.top = ((myHeight / 2) + myScroll) + 'px'; document.getElementById("ZoomSpin").style.visibility = "visible"; preloadFrame = 1; document.getElementById("ZoomSpin").src = zoomImageURI+'zoom-spin-'+preloadFrame+'.png'; preloadAnimTimer = setInterval("preloadAnim()", 100); } // Until we've been preloading for one second, just chill out in here. // // function preloadAnimPending(from) { // if (preloadActive != false) { // if ((new Date() - preloadTime) > 1000) { // document.getElementById("ZoomSpin").style.visibility = "visible"; // clearInterval(preloadAnimTimer); // preloadAnimTimer = setInterval("preloadAnim()", 100); // } // else { // // Stay in this loop and don't do anything while we wait one second // } // } else { // clearInterval(preloadAnimTimer); // zoomIn(preloadFrom); // } // } // Zoom: Display and ANIMATE the jibber jabber widget. Once preloadActive is false, bail and zoom it up! function preloadAnim(from) { if (preloadActive != false) { document.getElementById("SpinImage").src = zoomImageURI+'zoom-spin-'+preloadFrame+'.png'; preloadFrame++; if (preloadFrame > 12) preloadFrame = 1; } else { document.getElementById("ZoomSpin").style.visibility = "hidden"; clearInterval(preloadAnimTimer); zoomIn(preloadFrom); } } // Zoom: We got a click! Should we do the zoom? Or wait for the preload to complete? function zoomClick(from) { // TODO: Double check that imgPreload src = clicked src // Get browser dimensions getWindowSizes(); if (preloadActive == true) { // Preloading is otherwise still going on. So wait. preloadFrom = from; preloadAnimStart(); } else { // Otherwise, we're loaded: do the zoom! zoomIn(from); } } // Zoom: Move an element in to endH endW, using zoomHost as a starting point. // "from" is an object reference to the href that spawned the zoom. function zoomIn(from) { zoomimg.src = from.getAttribute("href"); // Determine the zoom settings from where we came from, the element in the . // If there's no element in the , or we can't get the width, make stuff up if (from.childNodes[0].width) { startW = from.childNodes[0].width; startH = from.childNodes[0].height; startPos = findElementPos(from.childNodes[0]); } else { startW = 50; startH = 12; startPos = findElementPos(from); } hostX = startPos[0]; hostY = startPos[1]; // Make up for a scrolled containing div. // TODO: This HAS to move into findElementPos. if (document.getElementById('scroller')) { hostX = hostX - document.getElementById('scroller').scrollLeft; } // Determine the target zoom settings endW = imgPreload.width; endH = imgPreload.height; // TODO: need to get "rollover" setting somehow. // Don't act if we're already doing something. if (zoomActive[theID] != true) { // Clear everything out just in case something is already open document.getElementById("ShadowBox").style.visibility = "hidden"; document.getElementById("BlackBackground").style.visibility = "hidden"; document.getElementById("BlackBackground").style.display = "none"; document.getElementById("PrevBtn").style.visibility = "hidden"; document.getElementById("NextBtn").style.visibility = "hidden"; document.getElementById("ZoomClose").style.visibility = "hidden"; // Set the CAPTION if turned on if (includeCaption == 1) { zoomcap = document.getElementById(theCap); zoomcapd = document.getElementById(theCapDiv); if (from.getAttribute('title') && includeCaption == 1) { zoomcapd.style.display = 'block'; zoomcap.innerHTML = from.getAttribute('title'); } else { zoomcapd.style.display = 'none'; } } // Store original position in an array for future zoomOut. zoomOrigW[theID] = startW; zoomOrigH[theID] = startH; zoomOrigX[theID] = hostX; zoomOrigY[theID] = hostY; // Now set the starting dimensions zoomimg.style.width = startW + 'px'; zoomimg.style.height = startH + 'px'; zoomdiv.style.left = hostX + 'px'; zoomdiv.style.top = hostY + 'px'; // Show the zoom box, make it invisible if (fade == 1) { setOpacity(0, zoomID); } zoomdiv.style.visibility = "visible"; // If it's too big to fit in the window, shrink the width and height to fit (with ratio). sizeRatio = endW / endH; if (endW > myWidth - minBorder) { endW = myWidth - minBorder; endH = endW / sizeRatio; } if (endH > myHeight - minBorder) { endH = myHeight - minBorder; endW = endH * sizeRatio; } zoomChangeX = ((myWidth / 2) - (endW / 2) - hostX); zoomChangeY = (((myHeight / 2) - (endH / 2) - hostY) + myScroll); zoomChangeW = (endW - startW); zoomChangeH = (endH - startH); // console.log("X: "+zoomChangeX+" Y: "+zoomChangeY+" W: "+zoomChangeW+" H: "+zoomChangeH); // Setup Zoom zoomCurrent = 0; // Setup Fade with Zoom, If Requested if (fade == 1) { fadeCurrent = 0; fadeAmount = (0 - 100) / zoomSteps; } else { fadeAmount = 0; } // Do It! zoomTimer[theID] = setInterval("zoomElement('"+zoomID+"', '"+theID+"', "+zoomCurrent+", "+startW+", "+zoomChangeW+", "+startH+", "+zoomChangeH+", "+hostX+", "+zoomChangeX+", "+hostY+", "+zoomChangeY+", "+zoomSteps+", "+fade+", "+fadeAmount+", 'zoomDoneIn(zoomID)')", zoomTime); zoomActive[theID] = true; setOpacity(70, "BlackBackground"); document.getElementById("BlackBackground").style.visibility = "visible"; document.getElementById("BlackBackground").style.display = "block"; document.getElementById("PrevBtn").style.visibility = "visible"; document.getElementById("NextBtn").style.visibility = "visible"; document.getElementById("PrevBtn").style.top = myScroll+"px"; document.getElementById("NextBtn").style.top = myScroll+"px"; if(document.all) document.getElementById("BlackBackground").style.top = myScroll+"px"; } } // Zoom it back out. function zoomOut() { // Check to see if something is happening/open if (zoomActive[theID] != true) { // First, get rid of the shadow if necessary document.getElementById("ShadowBox").style.visibility = "hidden"; document.getElementById("BlackBackground").style.visibility = "hidden"; document.getElementById("BlackBackground").style.display = "none"; document.getElementById("ZoomClose").style.visibility = "hidden"; document.getElementById("PrevBtn").style.visibility = "hidden"; document.getElementById("NextBtn").style.visibility = "hidden"; // Now, figure out where we came from, to get back there startX = parseInt(zoomdiv.style.left); startY = parseInt(zoomdiv.style.top); startW = zoomimg.width; startH = zoomimg.height; zoomChangeX = zoomOrigX[theID] - startX; zoomChangeY = zoomOrigY[theID] - startY; zoomChangeW = zoomOrigW[theID] - startW; zoomChangeH = zoomOrigH[theID] - startH; // Setup Zoom zoomCurrent = 0; // Setup Fade with Zoom, If Requested if (fade == 1) { fadeCurrent = 0; fadeAmount = (100 - 0) / zoomSteps; } else { fadeAmount = 0; } // Do It! zoomTimer[theID] = setInterval("zoomElement('"+zoomID+"', '"+theID+"', "+zoomCurrent+", "+startW+", "+zoomChangeW+", "+startH+", "+zoomChangeH+", "+startX+", "+zoomChangeX+", "+startY+", "+zoomChangeY+", "+zoomSteps+", "+fade+", "+fadeAmount+", 'zoomDone(zoomID, theID)')", zoomTime); zoomActive[theID] = true; } } // Finished Zooming In function zoomDoneIn(zoomdiv, theID) { // Note that it's open zoomOpen = true; // Make sure they are gone setOpacity(0, "ShadowBox"); setOpacity(0, "ZoomClose"); // Position the shadow behind the zoomed in image. zoomdiv = document.getElementById(zoomdiv); shadowdiv = document.getElementById("ShadowBox"); shadowLeft = parseInt(zoomdiv.style.left) - 13; shadowTop = parseInt(zoomdiv.style.top) - 8; shadowWidth = zoomdiv.offsetWidth + 26; shadowHeight = zoomdiv.offsetHeight + 26; shadowdiv.style.width = shadowWidth + 'px'; shadowdiv.style.height = shadowHeight + 'px'; shadowdiv.style.left = shadowLeft + 'px'; shadowdiv.style.top = shadowTop + 'px'; // Display Shadow and Zoom // document.getElementById("ShadowBox").style.visibility = "visible"; // fadeElementSetup("ShadowBox", 0, 100, 5); if(!document.all) document.getElementById("ZoomClose").style.visibility = "visible"; fadeElementSetup("ZoomClose", 0, 100, 5); } // Finished Zooming Out function zoomDone(zoomdiv, theID) { // No longer open zoomOpen = false; // Clear stuff out, clean up zoomOrigH[theID] = ""; zoomOrigW[theID] = ""; document.getElementById(zoomdiv).style.visibility = "hidden"; zoomActive[theID] == false; } // Actually zoom the element function zoomElement(zoomdiv, theID, zoomCurrent, zoomStartW, zoomChangeW, zoomStartH, zoomChangeH, zoomStartX, zoomChangeX, zoomStartY, zoomChangeY, zoomSteps, fade, fadeAmount, execWhenDone) { // console.log("Zooming Step #"+zoomCurrent+ " of "+zoomSteps+" (zoom " + zoomStartW + "/" + zoomChangeW + ") (zoom " + zoomStartH + "/" + zoomChangeH + ") (zoom " + zoomStartX + "/" + zoomChangeX + ") (zoom " + zoomStartY + "/" + zoomChangeY + ") Fade: "+fadeAmount); // Test if we're done, or if we continue if (zoomCurrent == (zoomSteps + 1)) { zoomActive[theID] = false; clearInterval(zoomTimer[theID]); if (execWhenDone != "") { eval(execWhenDone); } } else { // Do the Fade! if (fade != 0) { if (fadeAmount < 0) { setOpacity(Math.abs(zoomCurrent * fadeAmount), zoomdiv); } else { setOpacity(100 - (zoomCurrent * fadeAmount), zoomdiv); } } // Calculate this step's difference, and move it! moveW = cubicInOut(zoomCurrent, zoomStartW, zoomChangeW, zoomSteps); moveH = cubicInOut(zoomCurrent, zoomStartH, zoomChangeH, zoomSteps); moveX = cubicInOut(zoomCurrent, zoomStartX, zoomChangeX, zoomSteps); moveY = cubicInOut(zoomCurrent, zoomStartY, zoomChangeY, zoomSteps); document.getElementById(zoomdiv).style.left = moveX + 'px'; document.getElementById(zoomdiv).style.top = moveY + 'px'; zoomimg.style.width = moveW + 'px'; zoomimg.style.height = moveH + 'px'; zoomCurrent++; clearInterval(zoomTimer[theID]); zoomTimer[theID] = setInterval("zoomElement('"+zoomdiv+"', '"+theID+"', "+zoomCurrent+", "+zoomStartW+", "+zoomChangeW+", "+zoomStartH+", "+zoomChangeH+", "+zoomStartX+", "+zoomChangeX+", "+zoomStartY+", "+zoomChangeY+", "+zoomSteps+", "+fade+", "+fadeAmount+", '"+execWhenDone+"')", zoomTime); } } // Zoom Rollover Functions // To be re-added function zoomMouseOver() { // if (rollOverImg) { // if (document.getElementById("ZoomImage").src != rollOverImg) { // document.getElementById("ZoomImage").src = rollOverImg; // } // } } function zoomMouseOut() { // if (rollOverImg) { // if (document.getElementById("ZoomImage").src != image) { // document.getElementById("ZoomImage").src = image; // } // } } // Get the size of the window, and set myWidth and myHeight function getWindowSizes() { if (document.all) { // IE4+ or IE6+ in standards compliant myWidth = (document.documentElement.clientWidth) ? document.documentElement.clientWidth : document.body.clientWidth; myHeight = (document.documentElement.clientHeight) ? document.documentElement.clientHeight : document.body.clientHeight; myScroll = (document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop; } else { // Non-IE myWidth = window.innerWidth; myHeight = window.innerHeight; myScroll = window.pageYOffset; } // Core code from - quirksmode.org if (window.innerHeight && window.scrollMaxY) { myScrollWidth = document.body.scrollWidth; myScrollHeight = window.innerHeight + window.scrollMaxY; } else if (document.body.scrollHeight > document.body.offsetHeight) { // all but Explorer Mac myScrollWidth = document.body.scrollWidth; myScrollHeight = document.body.scrollHeight; } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari myScrollWidth = document.body.offsetWidth; myScrollHeight = document.body.offsetHeight; } } // Find the Y position of an element on a page // Return Y and X as an array function findElementPos(elemFind) { var elemX = 0; var elemY = 0; do { elemX += elemFind.offsetLeft; elemY += elemFind.offsetTop; } while ( elemFind = elemFind.offsetParent ) //console.log("Found element "+elemFind+" at "+elemY+"/"+elemX); return Array(elemX, elemY); } // // ----- DISPLAY CODE ----- // function insertZoomHTML() { // All of this junk creates the three
's used to hold the closebox, image, and zoom shadow. // It's a lot of Javascript for a little HTML. But, hey, this must be the "right way", though, yeah? // I'd also like to ask forgiveness for the large amounts of tables in use. Sometimes, CSS just doesn't cut it... I think. var inBody = document.getElementsByTagName("body").item(0); // WAIT SPINNER var inSpinbox = document.createElement("div"); inSpinbox.setAttribute('id', 'ZoomSpin'); inSpinbox.style.position = 'absolute'; inSpinbox.style.left = '10px'; inSpinbox.style.top = '10px'; inSpinbox.style.visibility = 'hidden'; inSpinbox.style.zIndex = '5000'; inBody.insertBefore(inSpinbox, inBody.firstChild); var inSpinImage = document.createElement("img"); inSpinImage.setAttribute('id', 'SpinImage'); inSpinImage.setAttribute('src', zoomImageURI+'zoom-spin-1.png'); inSpinbox.appendChild(inSpinImage); // ZOOM IMAGE // //
// //
// //
//
var inZoombox = document.createElement("div"); inZoombox.setAttribute('id', 'ZoomBox'); inZoombox.style.position = 'absolute'; inZoombox.style.left = '10px'; inZoombox.style.top = '10px'; inZoombox.style.visibility = 'hidden'; inZoombox.style.zIndex = '499'; // inZoombox.style.background = 'white'; // DEBUG inBody.insertBefore(inZoombox, inSpinbox.nextSibling); var inLink1 = document.createElement("a"); inLink1.setAttribute('href','javascript:zoomOut();'); inZoombox.appendChild(inLink1); var inImage1 = document.createElement("img"); inImage1.setAttribute('src',zoomImageURI+'spacer.gif'); inImage1.setAttribute('id','ZoomImage'); inImage1.setAttribute('border', '0'); inImage1.setAttribute('onMouseOver', 'zoomMouseOver();') inImage1.setAttribute('onMouseOut', 'zoomMouseOut();') inImage1.style.display = 'block'; inImage1.style.width = '10px'; inImage1.style.height = '10px'; inLink1.appendChild(inImage1); var inClosebox = document.createElement("div"); inClosebox.setAttribute('id', 'ZoomClose'); inClosebox.style.position = 'absolute'; inClosebox.style.left = '-15px'; inClosebox.style.top = '-15px'; inClosebox.style.filter = 'alpha(opacity=0)'; inClosebox.style.MozOpacity = '0'; inClosebox.style.opacity = '0'; inClosebox.style.visibility = 'hidden'; inZoombox.appendChild(inClosebox); var inLink2 = document.createElement("a"); inLink2.setAttribute('href','javascript:zoomOut(1);'); inClosebox.appendChild(inLink2); var inImage2 = document.createElement("img"); inImage2.setAttribute('src',zoomImageURI+'closebox.png'); inImage2.setAttribute('width','30'); inImage2.setAttribute('height','30'); inImage2.setAttribute('border','0'); inLink2.appendChild(inImage2); // SHADOW // Now, the.. shudder.. shadow table. //
X // // // // // var inShadowbox = document.createElement("div"); inShadowbox.setAttribute('id', 'ShadowBox'); inShadowbox.style.position = 'absolute'; inShadowbox.style.left = '50px'; inShadowbox.style.top = '50px'; inShadowbox.style.width = '100px'; inShadowbox.style.height = '100px'; inShadowbox.style.visibility = 'hidden'; inShadowbox.style.zIndex = '45'; inBody.insertBefore(inShadowbox, inZoombox.nextSibling); var BlackBackground = document.createElement("div"); BlackBackground.setAttribute('id', 'BlackBackground'); BlackBackground.style.left = '0'; BlackBackground.style.top = '0'; BlackBackground.style.width = '100%'; BlackBackground.style.height = '100%'; BlackBackground.style.visibility = 'hidden'; BlackBackground.style.zIndex = '55'; BlackBackground.onclick = function() {zoomOut(1);} inBody.insertBefore(BlackBackground, inZoombox.nextSibling); var PrevBtn = newElement({ tag: "DIV", id: "PrevBtn", children: { tag:"a", children:" ", href: "javascript:zoomPrev()" } }) inBody.insertBefore(PrevBtn, inZoombox.nextSibling); var NextBtn = newElement({ tag: "DIV", id: "NextBtn", children: { tag:"a", children:" ", href: "javascript:zoomNext()" } }) inBody.insertBefore(NextBtn, inZoombox.nextSibling); var inTable = document.createElement("table"); inTable.setAttribute('border', '0'); inTable.setAttribute('width', '100%'); inTable.setAttribute('height', '100%'); inTable.setAttribute('cellpadding', '0'); inTable.setAttribute('cellspacing', '0'); inShadowbox.appendChild(inTable); var inRow1 = document.createElement("tr"); inRow1.style.height = '25px'; inTable.appendChild(inRow1); var inCol1 = document.createElement("td"); inCol1.style.width = '27px'; inRow1.appendChild(inCol1); var inShadowImg1 = document.createElement("img"); inShadowImg1.setAttribute('src', zoomImageURI+'zoom-shadow1.png'); inShadowImg1.setAttribute('width', '27'); inShadowImg1.setAttribute('height', '25'); inShadowImg1.style.display = 'block'; inCol1.appendChild(inShadowImg1); var inCol2 = document.createElement("td"); inCol2.setAttribute('background', zoomImageURI+'zoom-shadow2.png'); inRow1.appendChild(inCol2); // inCol2.innerHTML = ' // // // // inRow2 = document.createElement("tr"); inTable.appendChild(inRow2); var inCol4 = document.createElement("td"); inCol4.setAttribute('background', zoomImageURI+'zoom-shadow4.png'); inRow2.appendChild(inCol4); // inCol4.innerHTML = ' '; var inSpacer2 = document.createElement("img"); inSpacer2.setAttribute('src',zoomImageURI+'spacer.gif'); inSpacer2.setAttribute('height', '1'); inSpacer2.setAttribute('width', '1'); inSpacer2.style.display = 'block'; inCol4.appendChild(inSpacer2); var inCol5 = document.createElement("td"); inCol5.setAttribute('bgcolor', '#ffffff'); inRow2.appendChild(inCol5); // inCol5.innerHTML = ' '; var inSpacer3 = document.createElement("img"); inSpacer3.setAttribute('src',zoomImageURI+'spacer.gif'); inSpacer3.setAttribute('height', '1'); inSpacer3.setAttribute('width', '1'); inSpacer3.style.display = 'block'; inCol5.appendChild(inSpacer3); var inCol6 = document.createElement("td"); inCol6.setAttribute('background', zoomImageURI+'zoom-shadow5.png'); inRow2.appendChild(inCol6); // inCol6.innerHTML = ' '; var inSpacer4 = document.createElement("img"); inSpacer4.setAttribute('src',zoomImageURI+'spacer.gif'); inSpacer4.setAttribute('height', '1'); inSpacer4.setAttribute('width', '1'); inSpacer4.style.display = 'block'; inCol6.appendChild(inSpacer4); // // // // //
 
   
//  
var inRow3 = document.createElement("tr"); inRow3.style.height = '26px'; inTable.appendChild(inRow3); var inCol7 = document.createElement("td"); inCol7.style.width = '27px'; inRow3.appendChild(inCol7); var inShadowImg7 = document.createElement("img"); inShadowImg7.setAttribute('src', zoomImageURI+'zoom-shadow6.png'); inShadowImg7.setAttribute('width', '27'); inShadowImg7.setAttribute('height', '26'); inShadowImg7.style.display = 'block'; inCol7.appendChild(inShadowImg7); var inCol8 = document.createElement("td"); inCol8.setAttribute('background', zoomImageURI+'zoom-shadow7.png'); inRow3.appendChild(inCol8); // inCol8.innerHTML = ' '; var inSpacer5 = document.createElement("img"); inSpacer5.setAttribute('src',zoomImageURI+'spacer.gif'); inSpacer5.setAttribute('height', '1'); inSpacer5.setAttribute('width', '1'); inSpacer5.style.display = 'block'; inCol8.appendChild(inSpacer5); var inCol9 = document.createElement("td"); inCol9.style.width = '27px'; inRow3.appendChild(inCol9); var inShadowImg9 = document.createElement("img"); inShadowImg9.setAttribute('src', zoomImageURI+'zoom-shadow8.png'); inShadowImg9.setAttribute('width', '27'); inShadowImg9.setAttribute('height', '26'); inShadowImg9.style.display = 'block'; inCol9.appendChild(inShadowImg9); if (includeCaption == 1) { // CAPTION // // // // // // // //
var inCapDiv = document.createElement("div"); inCapDiv.setAttribute('id', 'ZoomCapDiv'); inCapDiv.style.display = 'none'; inCapDiv.style.marginLeft = '13px'; inCapDiv.style.marginRight = '13px'; inShadowbox.appendChild(inCapDiv); var inCapTable = document.createElement("table"); inCapTable.setAttribute('border', '0'); inCapTable.setAttribute('cellpadding', '0'); inCapTable.setAttribute('cellspacing', '0'); inCapTable.setAttribute('align', 'center'); inCapDiv.appendChild(inCapTable); var inCapRow1 = document.createElement("tr"); inCapTable.appendChild(inCapRow1); var inCapCol1 = document.createElement("td"); inCapRow1.appendChild(inCapCol1); var inCapImg1 = document.createElement("img"); inCapImg1.setAttribute('src', zoomImageURI+'zoom-caption-l.png'); inCapImg1.setAttribute('width', '13'); inCapImg1.setAttribute('height', '26'); inCapImg1.style.display = 'block'; inCapCol1.appendChild(inCapImg1); var inCapCol2 = document.createElement("td"); inCapCol2.setAttribute('background', zoomImageURI+'zoom-caption-fill.png'); inCapCol2.setAttribute('id', 'ZoomCaption'); inCapCol2.setAttribute('valign', 'middle'); inCapCol2.style.fontSize = '14px'; inCapCol2.style.fontFamily = 'Helvetica'; inCapCol2.style.fontWeight = 'bold'; inCapCol2.style.color = '#ffffff'; inCapCol2.style.textShadow = '0px 2px 4px #000000'; inCapCol2.style.whiteSpace = 'nowrap'; inCapRow1.appendChild(inCapCol2); var inCapCol3 = document.createElement("td"); inCapRow1.appendChild(inCapCol3); var inCapImg2 = document.createElement("img"); inCapImg2.setAttribute('src', zoomImageURI+'zoom-caption-r.png'); inCapImg2.setAttribute('width', '13'); inCapImg2.setAttribute('height', '26'); inCapImg2.style.display = 'block'; inCapCol3.appendChild(inCapImg2); } } /** * SWFObject v1.4.4: Flash Player detection and embed - http://blog.deconcept.com/swfobject/ * * SWFObject is (c) 2006 Geoff Stearns and is released under the MIT License: * http://www.opensource.org/licenses/mit-license.php * * **SWFObject is the SWF embed script formerly known as FlashObject. The name was changed for * legal reasons. */ if(typeof deconcept=="undefined"){var deconcept=new Object();} if(typeof deconcept.util=="undefined"){deconcept.util=new Object();} if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();} deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a,_b){if(!document.getElementById){return;} this.DETECT_KEY=_b?_b:"detectflash"; this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY); this.params=new Object(); this.variables=new Object(); this.attributes=new Array(); if(_1){this.setAttribute("swf",_1);} if(id){this.setAttribute("id",id);} if(w){this.setAttribute("width",w);} if(h){this.setAttribute("height",h);} if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));} this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion(); if(c){this.addParam("bgcolor",c);} var q=_8?_8:"high"; this.addParam("quality",q); this.setAttribute("useExpressInstall",_7); this.setAttribute("doExpressInstall",false); var _d=(_9)?_9:window.location; this.setAttribute("xiRedirectUrl",_d); this.setAttribute("redirectUrl",""); if(_a){this.setAttribute("redirectUrl",_a);}}; deconcept.SWFObject.prototype={setAttribute:function(_e,_f){ this.attributes[_e]=_f; },getAttribute:function(_10){ return this.attributes[_10]; },addParam:function(_11,_12){ this.params[_11]=_12; },getParams:function(){ return this.params; },addVariable:function(_13,_14){ this.variables[_13]=_14; },getVariable:function(_15){ return this.variables[_15]; },getVariables:function(){ return this.variables; },getVariablePairs:function(){ var _16=new Array(); var key; var _18=this.getVariables(); for(key in _18){_16.push(key+"="+_18[key]);} return _16;},getSWFHTML:function(){var _19=""; if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){ if(this.getAttribute("doExpressInstall")){ this.addVariable("MMplayerType","PlugIn");} _19="0){_19+="flashvars=\""+_1c+"\"";}_19+="/>"; }else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");} _19=""; _19+=""; var _1d=this.getParams(); for(var key in _1d){_19+="";} var _1f=this.getVariablePairs().join("&"); if(_1f.length>0){_19+="";}_19+="";} return _19; },write:function(_20){ if(this.getAttribute("useExpressInstall")){ var _21=new deconcept.PlayerVersion([6,0,65]); if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){ this.setAttribute("doExpressInstall",true); this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl"))); document.title=document.title.slice(0,47)+" - Flash Player Installation"; this.addVariable("MMdoctitle",document.title);}} if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){ var n=(typeof _20=="string")?document.getElementById(_20):_20; n.innerHTML=this.getSWFHTML();return true; }else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}} return false;}}; deconcept.SWFObjectUtil.getPlayerVersion=function(){ var _23=new deconcept.PlayerVersion([0,0,0]); if(navigator.plugins&&navigator.mimeTypes.length){ var x=navigator.plugins["Shockwave Flash"]; if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));} }else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");} catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); _23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";} catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");} catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}} return _23;}; deconcept.PlayerVersion=function(_27){ this.major=_27[0]!=null?parseInt(_27[0]):0; this.minor=_27[1]!=null?parseInt(_27[1]):0; this.rev=_27[2]!=null?parseInt(_27[2]):0; }; deconcept.PlayerVersion.prototype.versionIsValid=function(fv){ if(this.majorfv.major){return true;} if(this.minorfv.minor){return true;} if(this.rev