MediaWiki:Common.js

/* jQuery plugins */

/** * Cookie plugin * Copyright (c) 2006 Klaus Hartl (stilbuero.de) * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html */ jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value=;options.expires=-1;}var expires=;if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date;date.setTime(date.getTime+(options.expires*24*60*60*1000));}else{date=options.expires;}expires='; expires='+date.toUTCString;}var path=options.path?'; path='+(options.path):;var domain=options.domain?'; domain='+(options.domain):;var secure=options.secure?'; secure':;document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join();}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}return cookieValue;}};

/** * jQuery lightBox plugin * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/) * and adapted to me for use like a plugin from jQuery. * @name jquery-lightbox-0.5.js * @author Leandro Vieira Pinho - http://leandrovieira.com * @version 0.5 * @date April 11, 2008 * @category jQuery plugin * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com) * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin */ (function($){$.fn.lightBox=function(settings){settings=jQuery.extend({overlayBgColor:'#000',overlayOpacity:0.8,fixedNavigation:false,imageLoading:'images/lightbox-ico-loading.gif',imageBtnPrev:'images/lightbox-btn-prev.gif',imageBtnNext:'images/lightbox-btn-next.gif',imageBtnClose:'images/lightbox-btn-close.gif',imageBlank:'images/lightbox-blank.gif',containerBorderSize:10,containerResizeSpeed:400,txtImage:'Image',txtOf:'of',keyToClose:'c',keyToPrev:'p',keyToNext:'n',imageArray:[],activeImage:0},settings);var jQueryMatchedObj=this;function _initialize{_start(this,jQueryMatchedObj);return false;} function _start(objClicked,jQueryMatchedObj){$('embed, object, select').css({'visibility':'hidden'});_set_interface;settings.imageArray.length=0;settings.activeImage=0;if(jQueryMatchedObj.length==1){settings.imageArray.push(new Array(objClicked.getAttribute('data-url'),objClicked.getAttribute('data-title')));}else{for(var i=0;i              ');var arrPageSizes=___getPageSize;$('#jquery-overlay').css({backgroundColor:settings.overlayBgColor,opacity:settings.overlayOpacity,width:arrPageSizes[0],height:arrPageSizes[1]}).fadeIn;var arrPageScroll=___getPageScroll;$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]}).show;$('#jquery-overlay,#jquery-lightbox').click(function{_finish;});$('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function{_finish;return false;});$(window).resize(function{var arrPageSizes=___getPageSize;$('#jquery-overlay').css({width:arrPageSizes[0],height:arrPageSizes[1]});var arrPageScroll=___getPageScroll;$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]});});} function _set_image_to_view{$('#lightbox-loading').show;if(settings.fixedNavigation){$('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide;}else{$('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide;} var objImagePreloader=new Image;objImagePreloader.onload=function{$('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]);_resize_container_image_box(objImagePreloader.width,objImagePreloader.height);objImagePreloader.onload=function{};};objImagePreloader.src=settings.imageArray[settings.activeImage][0];};function _resize_container_image_box(intImageWidth,intImageHeight){var intCurrentWidth=$('#lightbox-container-image-box').width;var intCurrentHeight=$('#lightbox-container-image-box').height;var intWidth=(intImageWidth+(settings.containerBorderSize*2));var intHeight=(intImageHeight+(settings.containerBorderSize*2));var intDiffW=intCurrentWidth-intWidth;var intDiffH=intCurrentHeight-intHeight;$('#lightbox-container-image-box').animate({width:intWidth,height:intHeight},settings.containerResizeSpeed,function{_show_image;});if((intDiffW==0)&&(intDiffH==0)){if($.browser.msie){___pause(250);}else{___pause(100);}} $('#lightbox-container-image-data-box').css({width:intImageWidth});$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({height:intImageHeight+(settings.containerBorderSize*2)});};function _show_image{$('#lightbox-loading').hide;$('#lightbox-image').fadeIn(function{_show_image_data;_set_navigation;});_preload_neighbor_images;};function _show_image_data{$('#lightbox-container-image-data-box').slideDown('fast');$('#lightbox-image-details-caption').hide;if(settings.imageArray[settings.activeImage][1]){$('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show;} if(settings.imageArray.length>1){$('#lightbox-image-details-currentNumber').html(settings.txtImage+' '+(settings.activeImage+1)+' '+settings.txtOf+' '+settings.imageArray.length).show;}} function _set_navigation{$('#lightbox-nav').show;$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({'background':'transparent url('+settings.imageBlank+') no-repeat'});if(settings.activeImage!=0){if(settings.fixedNavigation){$('#lightbox-nav-btnPrev').css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'}).unbind.bind('click',function{settings.activeImage=settings.activeImage-1;_set_image_to_view;return false;});}else{$('#lightbox-nav-btnPrev').unbind.hover(function{$(this).css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'});},function{$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show.bind('click',function{settings.activeImage=settings.activeImage-1;_set_image_to_view;return false;});}} if(settings.activeImage!=(settings.imageArray.length-1)){if(settings.fixedNavigation){$('#lightbox-nav-btnNext').css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'}).unbind.bind('click',function{settings.activeImage=settings.activeImage+1;_set_image_to_view;return false;});}else{$('#lightbox-nav-btnNext').unbind.hover(function{$(this).css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'});},function{$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show.bind('click',function{settings.activeImage=settings.activeImage+1;_set_image_to_view;return false;});}} _enable_keyboard_navigation;} function _enable_keyboard_navigation{$(document).keydown(function(objEvent){_keyboard_action(objEvent);});} function _disable_keyboard_navigation{$(document).unbind;} function _keyboard_action(objEvent){if(objEvent==null){keycode=event.keyCode;escapeKey=27;}else{keycode=objEvent.keyCode;escapeKey=objEvent.DOM_VK_ESCAPE;} key=String.fromCharCode(keycode).toLowerCase;if((key==settings.keyToClose)||(key=='x')||(keycode==escapeKey)){_finish;} if((key==settings.keyToPrev)||(keycode==37)){if(settings.activeImage!=0){settings.activeImage=settings.activeImage-1;_set_image_to_view;_disable_keyboard_navigation;}} if((key==settings.keyToNext)||(keycode==39)){if(settings.activeImage!=(settings.imageArray.length-1)){settings.activeImage=settings.activeImage+1;_set_image_to_view;_disable_keyboard_navigation;}}} function _preload_neighbor_images{if((settings.imageArray.length-1)>settings.activeImage){objNext=new Image;objNext.src=settings.imageArray[settings.activeImage+1][0];} if(settings.activeImage>0){objPrev=new Image;objPrev.src=settings.imageArray[settings.activeImage-1][0];}} function _finish{$('#jquery-lightbox').remove;$('#jquery-overlay').fadeOut(function{$('#jquery-overlay').remove;});$('embed, object, select').css({'visibility':'visible'});} function ___getPageSize{var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=window.innerWidth+window.scrollMaxX;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){if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;}else{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=xScroll;}else{pageWidth=windowWidth;} arrayPageSize=new Array(pageWidth,pageHeight,windowWidth,windowHeight);return arrayPageSize;};function ___getPageScroll{var xScroll,yScroll;if(self.pageYOffset){yScroll=self.pageYOffset;xScroll=self.pageXOffset;}else if(document.documentElement&&document.documentElement.scrollTop){yScroll=document.documentElement.scrollTop;xScroll=document.documentElement.scrollLeft;}else if(document.body){yScroll=document.body.scrollTop;xScroll=document.body.scrollLeft;} arrayPageScroll=new Array(xScroll,yScroll);return arrayPageScroll;};function ___pause(ms){var date=new Date;curDate=null;do{var curDate=new Date;} while(curDate-date1){for(var e=1;e-1){return c.substr(c.lastIndexOf(".")+1,c.length).toLowerCase}return};b.utils.html=function(c,d){c.innerHTML=d};b.utils.wrap=function(c,d){c.parentNode.replaceChild(d,c);d.appendChild(c)};b.utils.ajax=function(g,f,c){var e;if(window.XMLHttpRequest){e=new XMLHttpRequest}else{e=new ActiveXObject("Microsoft.XMLHTTP")}e.onreadystatechange=function{if(e.readyState===4){if(e.status===200){if(f){f(e)}}else{if(c){c(g)}}}};try{e.open("GET",g,true);e.send(null)}catch(d){if(c){c(g)}}return e};b.utils.load=function(d,e,c){d.onreadystatechange=function{if(d.readyState===4){if(d.status===200){if(e){e}}else{if(c){c}}}}};b.utils.find=function(d,c){return d.getElementsByTagName(c)};b.utils.append=function(c,d){c.appendChild(d)};b.utils.isIE=function{return((!+"\v1")||(typeof window.ActiveXObject!="undefined"))};b.utils.isLegacyAndroid=function{var c=navigator.userAgent.toLowerCase;return(c.match(/android 2.[012]/i)!==null)};b.utils.isIOS=function{var c=navigator.userAgent.toLowerCase;return(c.match(/iP(hone|ad)/i)!==null)};b.utils.getFirstPlaylistItemFromConfig=function(c){var d={};var e;if(c.playlist&&c.playlist.length){e=c.playlist[0]}else{e=c}d.file=e.file;d.levels=e.levels;d.streamer=e.streamer;d.playlistfile=e.playlistfile;d.provider=e.provider;if(!d.provider){if(d.file&&(d.file.toLowerCase.indexOf("youtube.com")>-1||d.file.toLowerCase.indexOf("youtu.be")>-1)){d.provider="youtube"}if(d.streamer&&d.streamer.toLowerCase.indexOf("rtmp://")==0){d.provider="rtmp"}if(e.type){d.provider=e.type.toLowerCase}}return d};b.utils.getOuterHTML=function(d){if(d.outerHTML){return d.outerHTML}else{var e=d.parentNode;var c=document.createElement(e.tagName);var g=document.createElement(d.tagName);e.replaceChild(g,d);c.appendChild(d);var f=c.innerHTML;e.replaceChild(d,g);return f}};b.utils.setOuterHTML=function(f,e){if(f.outerHTML){f.outerHTML=e}else{var g=document.createElement("div");g.innerHTML=e;var c=document.createRange;c.selectNodeContents(g);var d=c.extractContents;f.parentNode.insertBefore(d,f);f.parentNode.removeChild(f)}};b.utils.hasFlash=function{if(typeof navigator.plugins!="undefined"&&typeof navigator.plugins["Shockwave Flash"]!="undefined"){return true}if(typeof window.ActiveXObject!="undefined"){try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash");return true}catch(c){}}return false};b.utils.getPluginName=function(c){if(c.lastIndexOf("/")>=0){c=c.substring(c.lastIndexOf("/")+1,c.length)}if(c.lastIndexOf("-")>=0){c=c.substring(0,c.lastIndexOf("-"))}if(c.lastIndexOf(".swf")>=0){c=c.substring(0,c.lastIndexOf(".swf"))}if(c.lastIndexOf(".js")>=0){c=c.substring(0,c.lastIndexOf(".js"))}return c};b.utils.getPluginVersion=function(c){if(c.lastIndexOf("-")>=0){if(c.lastIndexOf(".js")>=0){return c.substring(c.lastIndexOf("-")+1,c.lastIndexOf(".js"))}else{if(c.lastIndexOf(".swf")>=0){return c.substring(c.lastIndexOf("-")+1,c.lastIndexOf(".swf"))}else{return c.substring(c.lastIndexOf("-")+1)}}}return""};b.utils.getAbsolutePath=function(j,h){if(h===undefined){h=document.location.href}if(j===undefined){return undefined}if(a(j)){return j}var k=h.substring(0,h.indexOf("://")+3);var g=h.substring(k.length,h.indexOf("/",k.length+1));var d;if(j.indexOf("/")===0){d=j.split("/")}else{var e=h.split("?")[0];e=e.substring(k.length+g.length+1,e.lastIndexOf("/"));d=e.split("/").concat(j.split("/"))}var c=[];for(var f=0;f0&&(c<0||(c>e)))}b.utils.pluginPathType={ABSOLUTE:"ABSOLUTE",RELATIVE:"RELATIVE",CDN:"CDN"};b.utils.getPluginPathType=function(d){if(typeof d!="string"){return}d=d.split("?")[0];var e=d.indexOf("://");if(e>0){return b.utils.pluginPathType.ABSOLUTE}var c=d.indexOf("/");var f=b.utils.extension(d);if(e<0&&c<0&&(!f||!isNaN(f))){return b.utils.pluginPathType.CDN}return b.utils.pluginPathType.RELATIVE};b.utils.mapEmpty=function(c){for(var d in c){return false}return true};b.utils.mapLength=function(d){var c=0;for(var e in d){c++}return c};b.utils.log=function(d,c){if(typeof console!="undefined"&&typeof console.log!="undefined"){if(c){console.log(d,c)}else{console.log(d)}}};b.utils.css=function(d,g,c){if(d!==undefined){for(var e in g){try{if(typeof g[e]==="undefined"){continue}else{if(typeof g[e]=="number"&&!(e=="zIndex"||e=="opacity")){if(isNaN(g[e])){continue}if(e.match(/color/i)){g[e]="#"+b.utils.strings.pad(g[e].toString(16),6)}else{g[e]=Math.ceil(g[e])+"px"}}}d.style[e]=g[e]}catch(f){}}}};b.utils.isYouTube=function(c){return(c.indexOf("youtube.com")>-1||c.indexOf("youtu.be")>-1)};b.utils.transform=function(c,d){c.style.webkitTransform=d;c.style.MozTransform=d;c.style.OTransform=d};b.utils.stretch=function(h,m,l,f,k,g){if(typeof l=="undefined"||typeof f=="undefined"||typeof k=="undefined"||typeof g=="undefined"){return}var d=l/k;var e=f/g;var j=0;var i=0;m.style.overflow="hidden";b.utils.transform(m,"");var c={};switch(h.toUpperCase){case b.utils.stretching.NONE:c.width=k;c.height=g;break;case b.utils.stretching.UNIFORM:if(d>e){c.width=k*e;c.height=g*e}else{c.width=k*d;c.height=g*d}break;case b.utils.stretching.FILL:if(d>e){c.width=k*d;c.height=g*d}else{c.width=k*e;c.height=g*e}break;case b.utils.stretching.EXACTFIT:b.utils.transform(m,["scale(",d,",",e,")"," translate(0px,0px)"].join(""));c.width=k;c.height=g;break;default:break}c.top=(f-c.height)/2;c.left=(l-c.width)/2;b.utils.css(m,c)};b.utils.stretching={NONE:"NONE",FILL:"FILL",UNIFORM:"UNIFORM",EXACTFIT:"EXACTFIT"};b.utils.deepReplaceKeyName=function(h,e,c){switch(b.utils.typeOf(h)){case"array":for(var g=0;g<h.length;g++){h[g]=b.utils.deepReplaceKeyName(h[g],e,c)}break;case"object":for(var f in h){var d=f.replace(new RegExp(e,"g"),c);h[d]=b.utils.deepReplaceKeyName(h[f],e,c);if(f!=d){delete h[f]}}break}return h};b.utils.isInArray=function(e,d){if(!(e)||!(e instanceof Array)){return false}for(var c=0;c<e.length;c++){if(d===e[c]){return true}}return false}})(jwplayer);(function(a){a.events=function{};a.events.COMPLETE="COMPLETE";a.events.ERROR="ERROR"})(jwplayer);(function(jwplayer){jwplayer.events.eventdispatcher=function(debug){var _debug=debug;var _listeners;var _globallisteners;this.resetEventListeners=function{_listeners={};_globallisteners=[]};this.resetEventListeners;this.addEventListener=function(type,listener,count){try{if(_listeners[type]===undefined){_listeners[type]=[]}if(typeof(listener)=="string"){eval("listener = "+listener)}_listeners[type].push({listener:listener,count:count})}catch(err){jwplayer.utils.log("error",err)}return false};this.removeEventListener=function(type,listener){try{for(var listenerIndex=0;listenerIndex<_listeners[type].length;listenerIndex++){if(_listeners[type][lisenterIndex].toString==listener.toString){_listeners[type].slice(lisenterIndex,lisenterIndex+1);break}}}catch(err){jwplayer.utils.log("error",err)}return false};this.addGlobalListener=function(listener,count){try{if(typeof(listener)=="string"){eval("listener = "+listener)}_globallisteners.push({listener:listener,count:count})}catch(err){jwplayer.utils.log("error",err)}return false};this.removeGlobalListener=function(listener){try{for(var globalListenerIndex=0;globalListenerIndex<_globallisteners.length;globalListenerIndex++){if(_globallisteners[globalListenerIndex].toString==listener.toString){_globallisteners.slice(globalListenerIndex,globalListenerIndex+1);break}}}catch(err){jwplayer.utils.log("error",err)}return false};this.sendEvent=function(type,data){if(data===undefined){data={}}if(_debug){jwplayer.utils.log(type,data)}if(typeof _listeners[type]!="undefined"){for(var listenerIndex=0;listenerIndex<_listeners[type].length;listenerIndex++){try{_listeners[type][listenerIndex].listener(data)}catch(err){jwplayer.utils.log("There was an error while handling a listener: "+err.toString,_listeners[type][listenerIndex].listener)}if(_listeners[type][listenerIndex]){if(_listeners[type][listenerIndex].count===1){delete _listeners[type][listenerIndex]}else{if(_listeners[type][listenerIndex].count>0){_listeners[type][listenerIndex].count=_listeners[type][listenerIndex].count-1}}}}}for(var globalListenerIndex=0;globalListenerIndex<_globallisteners.length;globalListenerIndex++){try{_globallisteners[globalListenerIndex].listener(data)}catch(err){jwplayer.utils.log("There was an error while handling a listener: "+err.toString,_globallisteners[globalListenerIndex].listener)}if(_globallisteners[globalListenerIndex]){if(_globallisteners[globalListenerIndex].count===1){delete _globallisteners[globalListenerIndex]}else{if(_globallisteners[globalListenerIndex].count>0){_globallisteners[globalListenerIndex].count=_globallisteners[globalListenerIndex].count-1}}}}}}})(jwplayer);(function(a){var b={};a.utils.animations=function{};a.utils.animations.transform=function(c,d){c.style.webkitTransform=d;c.style.MozTransform=d;c.style.OTransform=d;c.style.msTransform=d};a.utils.animations.transformOrigin=function(c,d){c.style.webkitTransformOrigin=d;c.style.MozTransformOrigin=d;c.style.OTransformOrigin=d;c.style.msTransformOrigin=d};a.utils.animations.rotate=function(c,d){a.utils.animations.transform(c,["rotate(",d,"deg)"].join(""))};a.utils.cancelAnimation=function(c){delete b[c.id]};a.utils.fadeTo=function(l,f,e,i,h,d){if(b[l.id]!=d&&d!==undefined){return}var c=new Date.getTime;if(d>c){setTimeout(function{a.utils.fadeTo(l,f,e,i,0,d)},d-c)}l.style.display="block";if(i===undefined){i=l.style.opacity===""?1:l.style.opacity}if(l.style.opacity==f&&l.style.opacity!==""&&d!==undefined){if(f===0){l.style.display="none"}return}if(d===undefined){d=c;b[l.id]=d}if(h===undefined){h=0}var j=(c-d)/(e*1000);j=j>1?1:j;var k=f-i;var g=i+(j*k);if(g>1){g=1}else{if(g<0){g=0}}l.style.opacity=g;if(h>0){b[l.id]=d+h*1000;a.utils.fadeTo(l,f,e,i,0,b[l.id]);return}setTimeout(function{a.utils.fadeTo(l,f,e,i,0,d)},10)}})(jwplayer);(function(a){a.utils.arrays=function{};a.utils.arrays.indexOf=function(c,d){for(var b=0;b-1){c.splice(b,1)}}})(jwplayer);(function(a){a.utils.extensionmap={"3gp":{html5:"video/3gpp",flash:"video"},"3gpp":{html5:"video/3gpp"},"3g2":{html5:"video/3gpp2",flash:"video"},"3gpp2":{html5:"video/3gpp2"},flv:{flash:"video"},f4a:{html5:"audio/mp4"},f4b:{html5:"audio/mp4",flash:"video"},f4v:{html5:"video/mp4",flash:"video"},mov:{html5:"video/quicktime",flash:"video"},m4a:{html5:"audio/mp4",flash:"video"},m4b:{html5:"audio/mp4"},m4p:{html5:"audio/mp4"},m4v:{html5:"video/mp4",flash:"video"},mp4:{html5:"video/mp4",flash:"video"},rbs:{flash:"sound"},aac:{html5:"audio/aac",flash:"video"},mp3:{html5:"audio/mp3",flash:"sound"},ogg:{html5:"audio/ogg"},ogv:{html5:"video/ogg"},webm:{html5:"video/webm"},m3u8:{html5:"audio/x-mpegurl"},gif:{flash:"image"},jpeg:{flash:"image"},jpg:{flash:"image"},swf:{flash:"image"},png:{flash:"image"},wav:{html5:"audio/x-wav"}}})(jwplayer);(function(e){e.utils.mediaparser=function{};var g={element:{width:"width",height:"height",id:"id","class":"className",name:"name"},media:{src:"file",preload:"preload",autoplay:"autostart",loop:"repeat",controls:"controls"},source:{src:"file",type:"type",media:"media","data-jw-width":"width","data-jw-bitrate":"bitrate"},video:{poster:"image"}};var f={};e.utils.mediaparser.parseMedia=function(i){return d(i)};function c(j,i){if(i===undefined){i=g[j]}else{e.utils.extend(i,g[j])}return i}function d(m,i){if(f[m.tagName.toLowerCase]&&(i===undefined)){return f[m.tagName.toLowerCase](m)}else{i=c("element",i);var n={};for(var j in i){if(j!="length"){var l=m.getAttribute(j);if(!(l===""||l===undefined||l===null)){n[i[j]]=m.getAttribute(j)}}}var k=m.style["#background-color"];if(k&&!(k=="transparent"||k=="rgba(0, 0, 0, 0)")){n.screencolor=k}return n}}function h(n,k){k=c("media",k);var l=[];var j=e.utils.selectors("source",n);for(var m in j){if(!isNaN(m)){l.push(a(j[m]))}}var o=d(n,k);if(o.file!==undefined){l[0]={file:o.file}}o.levels=l;return o}function a(k,j){j=c("source",j);var i=d(k,j);i.width=i.width?i.width:0;i.bitrate=i.bitrate?i.bitrate:0;return i}function b(k,j){j=c("video",j);var i=h(k,j);return i}f.media=h;f.audio=h;f.source=a;f.video=b})(jwplayer);(function(a){a.utils.loaderstatus={NEW:"NEW",LOADING:"LOADING",ERROR:"ERROR",COMPLETE:"COMPLETE"};a.utils.scriptloader=function(c){var d=a.utils.loaderstatus.NEW;var b=new a.events.eventdispatcher;a.utils.extend(this,b);this.load=function{if(d==a.utils.loaderstatus.NEW){d=a.utils.loaderstatus.LOADING;var e=document.createElement("script");e.onload=function(f){d=a.utils.loaderstatus.COMPLETE;b.sendEvent(a.events.COMPLETE)};e.onerror=function(f){d=a.utils.loaderstatus.ERROR;b.sendEvent(a.events.ERROR)};e.onreadystatechange=function{if(e.readyState=="loaded"||e.readyState=="complete"){d=a.utils.loaderstatus.COMPLETE;b.sendEvent(a.events.COMPLETE)}};document.getElementsByTagName("head")[0].appendChild(e);e.src=c}};this.getStatus=function{return d}}})(jwplayer);(function(a){a.utils.selectors=function(b,d){if(d===undefined){d=document}b=a.utils.strings.trim(b);var c=b.charAt(0);if(c=="#"){return d.getElementById(b.substr(1))}else{if(c=="."){if(d.getElementsByClassName){return d.getElementsByClassName(b.substr(1))}else{return a.utils.selectors.getElementsByTagAndClass("*",b.substr(1))}}else{if(b.indexOf(".")>0){selectors=b.split(".");return a.utils.selectors.getElementsByTagAndClass(selectors[0],selectors[1])}else{return d.getElementsByTagName(b)}}}return null};a.utils.selectors.getElementsByTagAndClass=function(e,h,g){elements=[];if(g===undefined){g=document}var f=g.getElementsByTagName(e);for(var d=0;d<f.length;d++){if(f[d].className!==undefined){var c=f[d].className.split(" ");for(var b=0;b5||b.length==0){return b}else{return Number(b)}}}}};a.utils.strings.seconds=function(d){d=d.replace(",",".");var b=d.split(":");var c=0;if(d.substr(-1)=="s"){c=Number(d.substr(0,d.length-1))}else{if(d.substr(-1)=="m"){c=Number(d.substr(0,d.length-1))*60}else{if(d.substr(-1)=="h"){c=Number(d.substr(0,d.length-1))*3600}else{if(b.length>1){c=Number(b[b.length-1]);c+=Number(b[b.length-2])*60;if(b.length==3){c+=Number(b[b.length-3])*3600}}else{c=Number(d)}}}}return c};a.utils.strings.xmlAttribute=function(b,c){for(var d in b.attributes){if(b.attributes[d].name&&b.attributes[d].name.toLowerCase==c.toLowerCase){return b.attributes[d].value.toString}}return""};a.utils.strings.jsonToString=function(f){var h=h||{};if(h&&h.stringify){return h.stringify(f)}var c=typeof(f);if(c!="object"||f===null){if(c=="string"){f='"'+f+'"'}else{return String(f)}}else{var g=[],b=(f&&f.constructor==Array);for(var d in f){var e=f[d];switch(typeof(e)){case"string":e='"'+e+'"';break;case"object":if(e!==null){e=a.utils.strings.jsonToString(e)}break}if(b){if(typeof(e)!="function"){g.push(String(e))}}else{if(typeof(e)!="function"){g.push('"'+d+'":'+String(e))}}}if(b){return"["+String(g)+"]"}else{return"{"+String(g)+"}"}}}})(jwplayer);(function(c){var d=new RegExp(/^(#|0x)[0-9a-fA-F]{3,6}/);c.utils.typechecker=function(g,f){f=f===null?b(g):f;return e(g,f)};function b(f){var g=["true","false","t","f"];if(g.toString.indexOf(f.toLowerCase.replace(" ",""))>=0){return"boolean"}else{if(d.test(f)){return"color"}else{if(!isNaN(parseInt(f,10))&&parseInt(f,10).toString.length==f.length){return"integer"}else{if(!isNaN(parseFloat(f))&&parseFloat(f).toString.length==f.length){return"float"}}}}return"string"}function e(g,f){if(f===null){return g}switch(f){case"color":if(g.length>0){return a(g)}return null;case"integer":return parseInt(g,10);case"float":return parseFloat(g);case"boolean":if(g.toLowerCase=="true"){return true}else{if(g=="1"){return true}}return false}return g}function a(f){switch(f.toLowerCase){case"blue":return parseInt("0000FF",16);case"green":return parseInt("00FF00",16);case"red":return parseInt("FF0000",16);case"cyan":return parseInt("00FFFF",16);case"magenta":return parseInt("FF00FF",16);case"yellow":return parseInt("FFFF00",16);case"black":return parseInt("000000",16);case"white":return parseInt("FFFFFF",16);default:f=f.replace(/(#|0x)?([0-9A-F]{3,6})$/gi,"$2");if(f.length==3){f=f.charAt(0)+f.charAt(0)+f.charAt(1)+f.charAt(1)+f.charAt(2)+f.charAt(2)}return parseInt(f,16)}return parseInt("000000",16)}})(jwplayer);(function(a){var c={};var b={};a.plugins=function{};a.plugins.loadPlugins=function(e,d){b[e]=new a.plugins.pluginloader(new a.plugins.model(c),d);return b[e]};a.plugins.registerPlugin=function(h,f,e){var d=a.utils.getPluginName(h);if(c[d]){c[d].registerPlugin(h,f,e)}else{a.utils.log("A plugin ("+h+") was registered with the player that was not loaded. Please check your configuration.");for(var g in b){b[g].pluginFailed}}}})(jwplayer);(function(a){a.plugins.model=function(b){this.addPlugin=function(c){var d=a.utils.getPluginName(c);if(!b[d]){b[d]=new a.plugins.plugin(c)}return b[d]}}})(jwplayer);(function(a){a.plugins.pluginmodes={FLASH:"FLASH",JAVASCRIPT:"JAVASCRIPT",HYBRID:"HYBRID"};a.plugins.plugin=function(b){var d="http://plugins.longtailvideo.com";var i=a.utils.loaderstatus.NEW;var j;var h;var k;var c=new a.events.eventdispatcher;a.utils.extend(this,c);function e{switch(a.utils.getPluginPathType(b)){case a.utils.pluginPathType.ABSOLUTE:return b;case a.utils.pluginPathType.RELATIVE:return a.utils.getAbsolutePath(b,window.location.href);case a.utils.pluginPathType.CDN:var m=a.utils.getPluginName(b);var l=a.utils.getPluginVersion(b);return d+"/"+a.version.split(".")[0]+"/"+m+"/"+m+(l!==""?("-"+l):"")+".js"}}function g(l){k=setTimeout(function{i=a.utils.loaderstatus.COMPLETE;c.sendEvent(a.events.COMPLETE)},1000)}function f(l){i=a.utils.loaderstatus.ERROR;c.sendEvent(a.events.ERROR)}this.load=function{if(i==a.utils.loaderstatus.NEW){if(b.lastIndexOf(".swf")>0){j=b;i=a.utils.loaderstatus.COMPLETE;c.sendEvent(a.events.COMPLETE);return}i=a.utils.loaderstatus.LOADING;var l=new a.utils.scriptloader(e);l.addEventListener(a.events.COMPLETE,g);l.addEventListener(a.events.ERROR,f);l.load}};this.registerPlugin=function(n,m,l){if(k){clearTimeout(k);k=undefined}if(m&&l){j=l;h=m}else{if(typeof m=="string"){j=m}else{if(typeof m=="function"){h=m}else{if(!m&&!l){j=n}}}}i=a.utils.loaderstatus.COMPLETE;c.sendEvent(a.events.COMPLETE)};this.getStatus=function{return i};this.getPluginName=function{return a.utils.getPluginName(b)};this.getFlashPath=function{if(j){switch(a.utils.getPluginPathType(j)){case a.utils.pluginPathType.ABSOLUTE:return j;case a.utils.pluginPathType.RELATIVE:if(b.lastIndexOf(".swf")>0){return a.utils.getAbsolutePath(j,window.location.href)}return a.utils.getAbsolutePath(j,e);case a.utils.pluginPathType.CDN:if(j.indexOf("-")>-1){return j+"h"}return j+"-h"}}return null};this.getJS=function{return h};this.getPluginmode=function{if(typeof j!="undefined"&&typeof h!="undefined"){return a.plugins.pluginmodes.HYBRID}else{if(typeof j!="undefined"){return a.plugins.pluginmodes.FLASH}else{if(typeof h!="undefined"){return a.plugins.pluginmodes.JAVASCRIPT}}}};this.getNewInstance=function(m,l,n){return new h(m,l,n)};this.getURL=function{return b}}})(jwplayer);(function(a){a.plugins.pluginloader=function(h,e){var g={};var j=a.utils.loaderstatus.NEW;var d=false;var b=false;var c=new a.events.eventdispatcher;a.utils.extend(this,c);function f{if(!b){b=true;j=a.utils.loaderstatus.COMPLETE;c.sendEvent(a.events.COMPLETE)}}function i{if(!b){var l=0;for(plugin in g){var k=g[plugin].getStatus;if(k==a.utils.loaderstatus.LOADING||k==a.utils.loaderstatus.NEW){l++}}if(l==0){f}}}this.setupPlugins=function(m,k,r){var l={length:0,plugins:{}};var o={length:0,plugins:{}};for(var n in g){var p=g[n].getPluginName;if(g[n].getFlashPath){l.plugins[g[n].getFlashPath]=k.plugins[n];l.plugins[g[n].getFlashPath].pluginmode=g[n].getPluginmode;l.length++}if(g[n].getJS){var q=document.createElement("div");q.id=m.id+"_"+p;q.style.position="absolute";q.style.zIndex=o.length+10;o.plugins[p]=g[n].getNewInstance(m,k.plugins[n],q);o.length++;if(typeof o.plugins[p].resize!="undefined"){m.onReady(r(o.plugins[p],q,true));m.onResize(r(o.plugins[p],q))}}}m.plugins=o.plugins;return l};this.load=function{j=a.utils.loaderstatus.LOADING;d=true;for(var k in e){g[k]=h.addPlugin(k);g[k].addEventListener(a.events.COMPLETE,i);g[k].addEventListener(a.events.ERROR,i)}for(k in e){g[k].load}d=false;i};this.pluginFailed=function{f};this.getStatus=function{return j}}})(jwplayer);(function(b){var a=[];b.api=function(d){this.container=d;this.id=d.id;var l={};var p={};var c=[];var h=undefined;var k=false;var i=[];var n=b.utils.getOuterHTML(d);var o={};var j={};this.getBuffer=function{return this.callInternal("jwGetBuffer")};this.getContainer=function{return this.container};function e(q){return function(v,r,s,t){var u;if(r){j[v]=r;u="jwplayer('"+q+"').callback('"+v+"')"}else{if(!r&&j[v]){delete j[v]}}h.jwDockSetButton(v,u,s,t)}}this.getPlugin=function(r){var q=this.callInternal;if(r=="dock"){return{setButton:e(this.id),show:function{return q("jwShowDock")},hide:function{return q("jwHideDock")}}}else{if(r=="controlbar"){return{show:function{return q("jwShowControlbar")},hide:function{return q("jwHideControlbar")}}}else{if(r=="display"){return{show:function{return q("jwShowDisplay")},hide:function{return q("jwHideDisplay")}}}}}return this.plugins[r]};this.callback=function(q){if(j[q]){return j[q]}};this.getDuration=function{return this.callInternal("jwGetDuration")};this.getFullscreen=function{return this.callInternal("jwGetFullscreen")};this.getHeight=function{return this.callInternal("jwGetHeight")};this.getLockState=function{return this.callInternal("jwGetLockState")};this.getMeta=function{return this.getItemMeta};this.getMute=function{return this.callInternal("jwGetMute")};this.getPlaylist=function{var r=this.callInternal("jwGetPlaylist");if(this.renderingMode=="flash"){b.utils.deepReplaceKeyName(r,"__dot__",".")}for(var q=0;q<r.length;q++){if(r[q].index===undefined){r[q].index=q}}return r};this.getPlaylistItem=function(q){if(q===undefined){q=this.getCurrentItem}return this.getPlaylist[q]};this.getPosition=function{return this.callInternal("jwGetPosition")};this.getRenderingMode=function{return this.renderingMode};this.getState=function{return this.callInternal("jwGetState")};this.getVolume=function{return this.callInternal("jwGetVolume")};this.getWidth=function{return this.callInternal("jwGetWidth")};this.setFullscreen=function(q){if(q===undefined){this.callInternal("jwSetFullscreen",!this.callInternal("jwGetFullscreen"))}else{this.callInternal("jwSetFullscreen",q)}return this};this.setMute=function(q){if(q===undefined){this.callInternal("jwSetMute",!this.callInternal("jwGetMute"))}else{this.callInternal("jwSetMute",q)}return this};this.lock=function{return this};this.unlock=function{return this};this.load=function(q){this.callInternal("jwLoad",q);return this};this.playlistItem=function(q){this.callInternal("jwPlaylistItem",q);return this};this.playlistPrev=function{this.callInternal("jwPlaylistPrev");return this};this.playlistNext=function{this.callInternal("jwPlaylistNext");return this};this.resize=function(r,q){if(this.renderingMode=="html5"){h.jwResize(r,q)}else{this.container.width=r;this.container.height=q}return this};this.play=function(q){if(typeof q=="undefined"){q=this.getState;if(q==b.api.events.state.PLAYING||q==b.api.events.state.BUFFERING){this.callInternal("jwPause")}else{this.callInternal("jwPlay")}}else{this.callInternal("jwPlay",q)}return this};this.pause=function(q){if(typeof q=="undefined"){q=this.getState;if(q==b.api.events.state.PLAYING||q==b.api.events.state.BUFFERING){this.callInternal("jwPause")}else{this.callInternal("jwPlay")}}else{this.callInternal("jwPause",q)}return this};this.stop=function{this.callInternal("jwStop");return this};this.seek=function(q){this.callInternal("jwSeek",q);return this};this.setVolume=function(q){this.callInternal("jwSetVolume",q);return this};this.onBufferChange=function(q){return this.eventListener(b.api.events.JWPLAYER_MEDIA_BUFFER,q)};this.onBufferFull=function(q){return this.eventListener(b.api.events.JWPLAYER_MEDIA_BUFFER_FULL,q)};this.onError=function(q){return this.eventListener(b.api.events.JWPLAYER_ERROR,q)};this.onFullscreen=function(q){return this.eventListener(b.api.events.JWPLAYER_FULLSCREEN,q)};this.onMeta=function(q){return this.eventListener(b.api.events.JWPLAYER_MEDIA_META,q)};this.onMute=function(q){return this.eventListener(b.api.events.JWPLAYER_MEDIA_MUTE,q)};this.onPlaylist=function(q){return this.eventListener(b.api.events.JWPLAYER_PLAYLIST_LOADED,q)};this.onPlaylistItem=function(q){return this.eventListener(b.api.events.JWPLAYER_PLAYLIST_ITEM,q)};this.onReady=function(q){return this.eventListener(b.api.events.API_READY,q)};this.onResize=function(q){return this.eventListener(b.api.events.JWPLAYER_RESIZE,q)};this.onComplete=function(q){return this.eventListener(b.api.events.JWPLAYER_MEDIA_COMPLETE,q)};this.onSeek=function(q){return this.eventListener(b.api.events.JWPLAYER_MEDIA_SEEK,q)};this.onTime=function(q){return this.eventListener(b.api.events.JWPLAYER_MEDIA_TIME,q)};this.onVolume=function(q){return this.eventListener(b.api.events.JWPLAYER_MEDIA_VOLUME,q)};this.onBuffer=function(q){return this.stateListener(b.api.events.state.BUFFERING,q)};this.onPause=function(q){return this.stateListener(b.api.events.state.PAUSED,q)};this.onPlay=function(q){return this.stateListener(b.api.events.state.PLAYING,q)};this.onIdle=function(q){return this.stateListener(b.api.events.state.IDLE,q)};this.remove=function{l={};i=[];if(b.utils.getOuterHTML(this.container)!=n){b.api.destroyPlayer(this.id,n)}};this.setup=function(r){if(b.embed){var q=this.id;this.remove;var s=b(q);s.config=r;return new b.embed(s)}return this};this.registerPlugin=function(s,r,q){b.plugins.registerPlugin(s,r,q)};this.setPlayer=function(q,r){h=q;this.renderingMode=r};this.stateListener=function(q,r){if(!p[q]){p[q]=[];this.eventListener(b.api.events.JWPLAYER_PLAYER_STATE,g(q))}p[q].push(r);return this};function g(q){return function(s){var r=s.newstate,u=s.oldstate;if(r==q){var t=p[r];if(t){for(var v=0;v<t.length;v++){if(typeof t[v]=="function"){t[v].call(this,{oldstate:u,newstate:r})}}}}}}this.addInternalListener=function(q,r){q.jwAddEventListener(r,'function(dat) { jwplayer("'+this.id+'").dispatchEvent("'+r+'", dat); }')};this.eventListener=function(q,r){if(!l[q]){l[q]=[];if(h&&k){this.addInternalListener(h,q)}}l[q].push(r);return this};this.dispatchEvent=function(s){if(l[s]){var r=f(s,arguments[1]);for(var q=0;q<l[s].length;q++){if(typeof l[s][q]=="function"){l[s][q].call(this,r)}}}};function f(s,q){var u=b.utils.extend({},q);if(s==b.api.events.JWPLAYER_FULLSCREEN&&!u.fullscreen){u.fullscreen=u.message=="true"?true:false;delete u.message}else{if(typeof u.data=="object"){u=b.utils.extend(u,u.data);delete u.data}}var r=["position","duration","offset"];for(var t in r){if(u[r[t]]){u[r[t]]=Math.round(u[r[t]]*1000)/1000}}return u}this.callInternal=function(r,q){if(k){if(typeof h!="undefined"&&typeof h[r]=="function"){if(q!==undefined){return(h[r])(q)}else{return(h[r])}}return null}else{i.push({method:r,parameters:q})}};this.playerReady=function(s){k=true;if(!h){this.setPlayer(document.getElementById(s.id))}this.container=document.getElementById(this.id);for(var q in l){this.addInternalListener(h,q)}this.eventListener(b.api.events.JWPLAYER_PLAYLIST_ITEM,function(t){o={}});this.eventListener(b.api.events.JWPLAYER_MEDIA_META,function(t){b.utils.extend(o,t.metadata)});this.dispatchEvent(b.api.events.API_READY);while(i.length>0){var r=i.shift;this.callInternal(r.method,r.parameters)}};this.getItemMeta=function{return o};this.getCurrentItem=function{return this.callInternal("jwGetPlaylistIndex")};function m(s,u,t){var q=[];if(!u){u=0}if(!t){t=s.length-1}for(var r=u;r<=t;r++){q.push(s[r])}return q}return this};b.api.selectPlayer=function(d){var c;if(d===undefined){d=0}if(d.nodeType){c=d}else{if(typeof d=="string"){c=document.getElementById(d)}}if(c){var e=b.api.playerById(c.id);if(e){return e}else{return b.api.addPlayer(new b.api(c))}}else{if(typeof d=="number"){return b.getPlayers[d]}}return null};b.api.events={API_READY:"jwplayerAPIReady",JWPLAYER_READY:"jwplayerReady",JWPLAYER_FULLSCREEN:"jwplayerFullscreen",JWPLAYER_RESIZE:"jwplayerResize",JWPLAYER_ERROR:"jwplayerError",JWPLAYER_MEDIA_BUFFER:"jwplayerMediaBuffer",JWPLAYER_MEDIA_BUFFER_FULL:"jwplayerMediaBufferFull",JWPLAYER_MEDIA_ERROR:"jwplayerMediaError",JWPLAYER_MEDIA_LOADED:"jwplayerMediaLoaded",JWPLAYER_MEDIA_COMPLETE:"jwplayerMediaComplete",JWPLAYER_MEDIA_SEEK:"jwplayerMediaSeek",JWPLAYER_MEDIA_TIME:"jwplayerMediaTime",JWPLAYER_MEDIA_VOLUME:"jwplayerMediaVolume",JWPLAYER_MEDIA_META:"jwplayerMediaMeta",JWPLAYER_MEDIA_MUTE:"jwplayerMediaMute",JWPLAYER_PLAYER_STATE:"jwplayerPlayerState",JWPLAYER_PLAYLIST_LOADED:"jwplayerPlaylistLoaded",JWPLAYER_PLAYLIST_ITEM:"jwplayerPlaylistItem"};b.api.events.state={BUFFERING:"BUFFERING",IDLE:"IDLE",PAUSED:"PAUSED",PLAYING:"PLAYING"};b.api.playerById=function(d){for(var c=0;c=0){var c=document.getElementById(a[f].id);if(document.getElementById(a[f].id+"_wrapper")){c=document.getElementById(a[f].id+"_wrapper")}if(c){if(d){b.utils.setOuterHTML(c,d)}else{var h=document.createElement("div");var e=c.id;if(c.id.indexOf("_wrapper")==c.id.length-8){newID=c.id.substring(0,c.id.length-8)}h.setAttribute("id",e);c.parentNode.replaceChild(h,c)}}a.splice(f,1)}return null};b.getPlayers=function{return a.slice(0)}})(jwplayer);var _userPlayerReady=(typeof playerReady=="function")?playerReady:undefined;playerReady=function(b){var a=jwplayer.api.playerById(b.id);if(a){a.playerReady(b)}if(_userPlayerReady){_userPlayerReady.call(this,b)}};(function(a){a.embed=function(g){var i={width:400,height:300,components:{controlbar:{position:"over"}}};var f=a.utils.mediaparser.parseMedia(g.container);var e=new a.embed.config(a.utils.extend(i,f,g.config),this);var h=a.plugins.loadPlugins(g.id,e.plugins);function c(l,k){for(var j in k){if(typeof l[j]=="function"){(l[j]).call(l,k[j])}}}function d{if(h.getStatus==a.utils.loaderstatus.COMPLETE){for(var l=0;l<e.modes.length;l++){if(e.modes[l].type&&a.embed[e.modes[l].type]){var j=e;if(e.modes[l].config){j=a.utils.extend(a.utils.clone(e),e.modes[l].config)}var k=new a.embed[e.modes[l].type](document.getElementById(g.id),e.modes[l],j,h,g);if(k.supportsConfig){k.embed;c(g,e.events);return g}}}a.utils.log("No suitable players found");new a.embed.logo(a.utils.extend({hide:true},e.components.logo),"none",g.id)}}h.addEventListener(a.events.COMPLETE,d);h.addEventListener(a.events.ERROR,d);h.load;return g};function b{if(!document.body){return setTimeout(b,15)}var c=a.utils.selectors.getElementsByTagAndClass("video","jwplayer");for(var d=0;d<c.length;d++){var e=c[d];a(e.id).setup({})}}b})(jwplayer);(function(a){function c{return[{type:"flash",src:"/jwplayer/player.swf"},{type:"html5"},{type:"download"}]}function e(l){var k=l.toLowerCase;var j=["left","right","top","bottom"];for(var i=0;i<j.length;i++){if(k==j[i]){return true}}return false}function d(j){var i=false;i=(j instanceof Array)||(typeof j=="object"&&!j.position&&!j.size);return i}function h(i){if(typeof i=="string"){if(parseInt(i).toString==i||i.toLowerCase.indexOf("px")>-1){return parseInt(i)}}return i}var f=["playlist","dock","controlbar","logo"];function g(j){var m={};switch(a.utils.typeOf(j.plugins)){case"object":for(var l in j.plugins){m[a.utils.getPluginName(l)]=l}break;case"string":var n=j.plugins.split(",");for(var k=0;k<n.length;k++){m[a.utils.getPluginName(n[k])]=n[k]}break}return m}function b(m,l,k,i){if(a.utils.typeOf(m[l])!="object"){m[l]={}}var j=m[l][k];if(a.utils.typeOf(j)!="object"){m[l][k]=j={}}if(l=="plugins"){var n=a.utils.getPluginName(k);j[i]=m[n+"."+i];delete m[n+"."+i]}else{j[i]=m[k+"."+i];delete m[k+"."+i]}}a.embed.deserialize=function(i){var j=g(i);for(var m in i){if(m.indexOf(".")>-1){var l=m.split(".");var k=l[0];var m=l[1];if(a.utils.isInArray(f,k)){b(i,"components",k,m)}else{if(j[k]){b(i,"plugins",j[k],m)}}}}return i};a.embed.config=function(i,q){var p=a.utils.extend({},i);var n;if(d(p.playlist)){n=p.playlist;delete p.playlist}p=a.embed.deserialize(p);p.height=h(p.height);p.width=h(p.width);if(typeof p.plugins=="string"){var j=p.plugins.split(",");if(typeof p.plugins!="object"){p.plugins={}}for(var l=0;l<j.length;l++){var m=a.utils.getPluginName(j[l]);if(typeof p[m]=="object"){p.plugins[j[l]]=p[m];delete p[m]}else{p.plugins[j[l]]={}}}}for(var o=0;o<f.length;o++){if(typeof p[f[o]]=="string"){if(!p.components[f[o]]){p.components[f[o]]={}}if(f[o]=="logo"){p.components[f[o]].file=p[f[o]]}else{p.components[f[o]].position=p[f[o]]}delete p[f[o]]}else{if(typeof p[f[o]]!="undefined"){if(!p.components[f[o]]){p.components[f[o]]={}}a.utils.extend(p.components[f[o]],p[f[o]]);delete p[f[o]]}}if(typeof p[f[o]+"size"]!="undefined"){if(!p.components[f[o]]){p.components[f[o]]={}}p.components[f[o]].size=p[f[o]+"size"];delete p[f[o]+"size"]}}if(typeof p.icons!="undefined"){if(!p.components.display){p.components.display={}}p.components.display.icons=p.icons;delete p.icons}if(p.players){p.modes=p.players;delete p.players}var k;if(p.flashplayer&&!p.modes){k=c;k[0].src=p.flashplayer;delete p.flashplayer}else{if(p.modes){if(typeof p.modes=="string"){k=c;k[0].src=p.modes}else{if(p.modes instanceof Array){k=p.modes}else{if(typeof p.modes=="object"&&p.modes.type){k=[p.modes]}}}delete p.modes}else{k=c}}p.modes=k;if(n){p.playlist=n}return p}})(jwplayer);(function(a){a.embed.download=function(c,g,b,d,f){this.embed=function{var j=a.utils.extend({},b);var p={};var i=b.width?b.width:480;if(typeof i!="number"){i=parseInt(i,10)}var l=b.height?b.height:320;if(typeof l!="number"){l=parseInt(l,10)}var t,n,m;var r={};if(b.playlist&&b.playlist.length){r.file=b.playlist[0].file;n=b.playlist[0].image;r.levels=b.playlist[0].levels}else{r.file=b.file;n=b.image;r.levels=b.levels}if(r.file){t=r.file}else{if(r.levels&&r.levels.length){t=r.levels[0].file}}m=t?"pointer":"auto";var k={display:{style:{cursor:m,width:i,height:l,backgroundColor:"#000",position:"relative",textDecoration:"none",border:"none",display:"block"}},display_icon:{style:{cursor:m,position:"absolute",display:t?"block":"none",top:0,left:0,border:0,margin:0,padding:0,zIndex:3,width:50,height:50,backgroundImage:"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrs18ENgjAYhmFouDOCcQJGcARHgE10BDcgTOIosAGwQOuPwaQeuFRi2p/3Sb6EC5L3QCxZBgAAAOCorLW1zMn65TrlkH4NcV7QNcUQt7Gn7KIhxA+qNIR81spOGkL8oFJDyLJRdosqKDDkK+iX5+d7huzwM40xptMQMkjIOeRGo+VkEVvIPfTGIpKASfYIfT9iCHkHrBEzf4gcUQ56aEzuGK/mw0rHpy4AAACAf3kJMACBxjAQNRckhwAAAABJRU5ErkJggg==)"}},display_iconBackground:{style:{cursor:m,position:"absolute",display:t?"block":"none",top:((l-50)/2),left:((i-50)/2),border:0,width:50,height:50,margin:0,padding:0,zIndex:2,backgroundImage:"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEpJREFUeNrszwENADAIA7DhX8ENoBMZ5KR10EryckCJiIiIiIiIiIiIiIiIiIiIiIh8GmkRERERERERERERERERERERERGRHSPAAPlXH1phYpYaAAAAAElFTkSuQmCC)"}},display_image:{style:{width:i,height:l,display:n?"block":"none",position:"absolute",cursor:m,left:0,top:0,margin:0,padding:0,textDecoration:"none",zIndex:1,border:"none"}}};var h=function(u,w,x){var v=document.createElement(u);if(x){v.id=x}else{v.id=c.id+"_jwplayer_"+w}a.utils.css(v,k[w].style);return v};p.display=h("a","display",c.id);if(t){p.display.setAttribute("href",a.utils.getAbsolutePath(t))}p.display_image=h("img","display_image");p.display_image.setAttribute("alt","Click to download...");if(n){p.display_image.setAttribute("src",a.utils.getAbsolutePath(n))}if(true){p.display_icon=h("div","display_icon");p.display_iconBackground=h("div","display_iconBackground");p.display.appendChild(p.display_image);p.display_iconBackground.appendChild(p.display_icon);p.display.appendChild(p.display_iconBackground)}_css=a.utils.css;_hide=function(u){_css(u,{display:"none"})};function q(u){_imageWidth=p.display_image.naturalWidth;_imageHeight=p.display_image.naturalHeight;s}function s{a.utils.stretch(a.utils.stretching.UNIFORM,p.display_image,i,l,_imageWidth,_imageHeight)}p.display_image.onerror=function(u){_hide(p.display_image)};p.display_image.onload=q;c.parentNode.replaceChild(p.display,c);var o=(b.plugins&&b.plugins.logo)?b.plugins.logo:{};p.display.appendChild(new a.embed.logo(b.components.logo,"download",c.id));f.container=document.getElementById(f.id);f.setPlayer(p.display,"download")};this.supportsConfig=function{if(b){var j=a.utils.getFirstPlaylistItemFromConfig(b);if(typeof j.file=="undefined"&&typeof j.levels=="undefined"){return true}else{if(j.file){return e(j.file,j.provider,j.playlistfile)}else{if(j.levels&&j.levels.length){for(var h=0;h<j.levels.length;h++){if(j.levels[h].file&&e(j.levels[h].file,j.provider,j.playlistfile)){return true}}}}}}else{return true}};function e(i,k,h){if(h){return false}var j=["image","sound","youtube","http"];if(k&&(j.toString.indexOf(k)>-1)){return true}if(!k||(k&&k=="video")){var l=a.utils.extension(i);if(l&&a.utils.extensionmap[l]){return true}}return false}}})(jwplayer);(function(a){a.embed.flash=function(f,g,k,e,i){function l(n,m,o){var p=document.createElement("param");p.setAttribute("name",m);p.setAttribute("value",o);n.appendChild(p)}function j(n,o,m){return function(p){if(m){document.getElementById(i.id+"_wrapper").appendChild(o)}var r=document.getElementById(i.id).getPluginConfig("display");n.resize(r.width,r.height);var q={left:r.x,top:r.y};a.utils.css(o,q)}}function d(o){if(!o){return{}}var q={};for(var n in o){var m=o[n];for(var p in m){q[n+"."+p]=m[p]}}return q}function h(p,o){if(p[o]){var r=p[o];for(var n in r){var m=r[n];if(typeof m=="string"){if(!p[n]){p[n]=m}}else{for(var q in m){if(!p[n+"."+q]){p[n+"."+q]=m[q]}}}}delete p[o]}}function b(p){if(!p){return{}}var s={},r=[];for(var m in p){var o=a.utils.getPluginName(m);var n=p[m];r.push(m);for(var q in n){s[o+"."+q]=n[q]}}s.plugins=r.join(",");return s}function c(o){var m=o.netstreambasepath?"":"netstreambasepath="+encodeURIComponent(window.location.href)+"&";for(var n in o){if(typeof(o[n])=="object"){m+=n+"="+encodeURIComponent("JSON"+a.utils.strings.jsonToString(o[n]))+"&"}else{m+=n+"="+encodeURIComponent(o[n])+"&"}}return m.substring(0,m.length-1)}this.embed=function{k.id=i.id;var x;var p=a.utils.extend({},k);var m=p.width;var v=p.height;if(f.id+"_wrapper"==f.parentNode.id){x=document.getElementById(f.id+"_wrapper")}else{x=document.createElement("div");x.id=f.id+"_wrapper";a.utils.wrap(f,x);a.utils.css(x,{position:"relative",width:m,height:v})}var n=e.setupPlugins(i,p,j);if(n.length>0){a.utils.extend(p,b(n.plugins))}else{delete p.plugins}var q=["height","width","modes","events"];for(var t=0;t<q.length;t++){delete p[q[t]]}var o="opaque";if(p.wmode){o=p.wmode}h(p,"components");h(p,"providers");if(typeof p["dock.position"]!="undefined"){if(p["dock.position"].toString.toLowerCase=="false"){p.dock=p["dock.position"];delete p["dock.position"]}}var w="#000000";var s;if(a.utils.isIE){var u='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" bgcolor="'+w+'" width="100%" height="100%" id="'+f.id+'" name="'+f.id+'" tabindex=0"">';u+='<param name="movie" value="'+g.src+'">';u+='<param name="allowfullscreen" value="true">';u+='<param name="allowscriptaccess" value="always">';u+='<param name="seamlesstabbing" value="true">';u+='<param name="wmode" value="'+o+'">';u+='<param name="flashvars" value="'+c(p)+'">';u+=" ";a.utils.setOuterHTML(f,u);s=document.getElementById(f.id)}else{var r=document.createElement("object");r.setAttribute("type","application/x-shockwave-flash");r.setAttribute("data",g.src);r.setAttribute("width","100%");r.setAttribute("height","100%");r.setAttribute("bgcolor","#000000");r.setAttribute("id",f.id);r.setAttribute("name",f.id);r.setAttribute("tabindex",0);l(r,"allowfullscreen","true");l(r,"allowscriptaccess","always");l(r,"seamlesstabbing","true");l(r,"wmode",o);l(r,"flashvars",c(p));f.parentNode.replaceChild(r,f);s=r}i.container=s;i.setPlayer(s,"flash")};this.supportsConfig=function{if(a.utils.hasFlash){if(k){var n=a.utils.getFirstPlaylistItemFromConfig(k);if(typeof n.file=="undefined"&&typeof n.levels=="undefined"){return true}else{if(n.file){return flashCanPlay(n.file,n.provider)}else{if(n.levels&&n.levels.length){for(var m=0;m<n.levels.length;m++){if(n.levels[m].file&&flashCanPlay(n.levels[m].file,n.provider)){return true}}}}}}else{return true}}return false};flashCanPlay=function(m,o){var n=["video","http","sound","image"];if(o&&(n.toString.indexOf(o<0))){return true}var p=a.utils.extension(m);if(!p){return true}if(a.utils.extensionmap[p]!==undefined&&a.utils.extensionmap[p].flash===undefined){return false}return true}}})(jwplayer);(function(a){a.embed.html5=function(c,g,b,d,f){function e(i,j,h){return function(k){var l=document.getElementById(c.id+"_displayarea");if(h){l.appendChild(j)}var m=l.style;i.resize(parseInt(m.width.replace("px","")),parseInt(m.height.replace("px","")));j.left=m.left;j.top=m.top}}this.embed=function{if(a.html5){d.setupPlugins(f,b,e);c.innerHTML="";var j=a.utils.extend({screencolor:"0x000000"},b);var h=["plugins","modes","events"];for(var k=0;k<h.length;k++){delete j[h[k]]}if(j.levels&&!j.sources){j.sources=b.levels}if(j.skin&&j.skin.toLowerCase.indexOf(".zip")>0){j.skin=j.skin.replace(/\.zip/i,".xml")}var l=new (a.html5(c)).setup(j);f.container=document.getElementById(f.id);f.setPlayer(l,"html5")}else{return null}};this.supportsConfig=function{var h=document.createElement("video");if(!!h.canPlayType){if(b){var k=a.utils.getFirstPlaylistItemFromConfig(b);if(typeof k.file=="undefined"&&typeof k.levels=="undefined"){return true}else{if(k.file){return html5CanPlay(h,k.file,k.provider,k.playlistfile)}else{if(k.levels&&k.levels.length){for(var j=0;j<k.levels.length;j++){if(k.levels[j].file&&html5CanPlay(h,k.levels[j].file,k.provider,k.playlistfile)){return true}}}}}}else{return true}}return false};html5CanPlay=function(j,i,k,h){if(h){return false}if(k&&k=="youtube"){return true}if(k&&k!="video"&&k!="http"&&k!="sound"){return false}var l=a.utils.extension(i);if(!l||a.utils.extensionmap[l]===undefined){return true}if(a.utils.extensionmap[l].html5===undefined){return false}if(a.utils.isLegacyAndroid&&l.match(/m4v|mp4/)){return true}return browserCanPlay(j,a.utils.extensionmap[l].html5)};browserCanPlay=function(i,h){if(!h){return true}return i.canPlayType(h)}}})(jwplayer);(function(a){a.embed.logo=function(l,k,d){var i={prefix:"http://l.longtailvideo.com/"+k+"/",file:"logo.png",link:"http://www.longtailvideo.com/players/jw-flv-player/",margin:8,out:0.5,over:1,timeout:3,hide:false,position:"bottom-left"};_css=a.utils.css;var b;var h;j;function j{n;c;f}function n{if(i.prefix){var p=a.version.split(/\W/).splice(0,2).join("/");if(i.prefix.indexOf(p)<0){i.prefix+=p+"/"}}h=a.utils.extend({},i)}function o{var r={border:"none",textDecoration:"none",position:"absolute",cursor:"pointer",zIndex:10};r.display=h.hide?"none":"block";var q=h.position.toLowerCase.split("-");for(var p in q){r[q[p]]=h.margin}return r}function c{b=document.createElement("img");b.id=d+"_jwplayer_logo";b.style.display="none";b.onload=function(p){_css(b,o);e};if(!h.file){return}if(h.file.indexOf("http://")===0){b.src=h.file}else{b.src=h.prefix+h.file}}if(!h.file){return}function f{if(h.link){b.onmouseover=g;b.onmouseout=e;b.onclick=m}else{this.mouseEnabled=false}}function m(p){if(typeof p!="undefined"){p.preventDefault;p.stopPropagation}if(h.link){window.open(h.link,"_blank")}return}function e(p){if(h.link){b.style.opacity=h.out}return}function g(p){if(h.hide){b.style.opacity=h.over}return}return b}})(jwplayer);(function(a){a.html5=function(b){var c=b;this.setup=function(d){a.utils.extend(this,new a.html5.api(c,d));return this};return this}})(jwplayer);(function(b){var c=b.utils.css;b.html5.view=function(p,o,e){var s=p;var l=o;var v=e;var u;var f;var z;var q;var A;var n;function x{u=document.createElement("div");u.id=l.id;u.className=l.className;_videowrapper=document.createElement("div");_videowrapper.id=u.id+"_video_wrapper";l.id=u.id+"_video";c(u,{position:"relative",height:v.height,width:v.width,padding:0,backgroundColor:B,zIndex:0});function B{if(s.skin.getComponentSettings("display")&&s.skin.getComponentSettings("display").backgroundcolor){return s.skin.getComponentSettings("display").backgroundcolor}return parseInt("000000",16)}c(l,{width:v.width,height:v.height,top:0,left:0,zIndex:1,margin:"auto",display:"block"});c(_videowrapper,{overflow:"hidden",position:"absolute",top:0,left:0,bottom:0,right:0});b.utils.wrap(l,u);b.utils.wrap(l,_videowrapper);q=document.createElement("div");q.id=u.id+"_displayarea";u.appendChild(q)}function j{for(var B=0;B<v.plugins.order.length;B++){var C=v.plugins.order[B];if(v.plugins.object[C].getDisplayElement!==undefined){v.plugins.object[C].height=h(v.plugins.object[C].getDisplayElement.style.height);v.plugins.object[C].width=h(v.plugins.object[C].getDisplayElement.style.width);v.plugins.config[C].currentPosition=v.plugins.config[C].position}}t}function t(C){if(v.getMedia!==undefined){for(var B=0;B<v.plugins.order.length;B++){var D=v.plugins.order[B];if(v.plugins.object[D].getDisplayElement!==undefined){if(v.getMedia.hasChrome){v.plugins.config[D].currentPosition=b.html5.view.positions.NONE}else{v.plugins.config[D].currentPosition=v.plugins.config[D].position}}}}i(v.width,v.height)}function h(B){if(typeof B=="string"){if(B===""){return 0}else{if(B.lastIndexOf("%")>-1){return B}else{return parseInt(B.replace("px",""),10)}}}return B}this.setup=function(B){l=B;x;j;s.jwAddEventListener(b.api.events.JWPLAYER_MEDIA_LOADED,t);s.jwAddEventListener(b.api.events.JWPLAYER_MEDIA_META,function{w});var C;if(window.onresize!==null){C=window.onresize}window.onresize=function(D){if(C!==undefined){try{C(D)}catch(F){}}if(s.jwGetFullscreen){var E=document.body.getBoundingClientRect;v.width=Math.abs(E.left)+Math.abs(E.right);v.height=window.innerHeight}i(v.width,v.height)}};function g(B){switch(B.keyCode){case 27:if(s.jwGetFullscreen){s.jwSetFullscreen(false)}break;case 32:if(s.jwGetState!=b.api.events.state.IDLE&&s.jwGetState!=b.api.events.state.PAUSED){s.jwPause}else{s.jwPlay}break}}function i(E,B){if(u.style.display=="none"){return}var D=[].concat(v.plugins.order);D.reverse;A=D.length+2;if(!v.fullscreen){v.width=E;v.height=B;f=E;z=B;c(q,{top:0,bottom:0,left:0,right:0,width:E,height:B});c(u,{height:z,width:f});var C=m(r,D);if(C.length>0){A+=C.length;m(k,C,true)}}else{if(navigator.vendor.indexOf("Apple")!==0){m(y,D,true)}}w}function m(G,D,E){var C=[];for(var B=0;B<D.length;B++){var H=D[B];if(v.plugins.object[H].getDisplayElement!==undefined){if(v.plugins.config[H].currentPosition!=b.html5.view.positions.NONE){var F=G(H,A--);if(!F){C.push(H)}else{v.plugins.object[H].resize(F.width,F.height);if(E){delete F.width;delete F.height}c(v.plugins.object[H].getDisplayElement,F)}}else{c(v.plugins.object[H].getDisplayElement,{display:"none"})}}}return C}function r(C,D){if(v.plugins.object[C].getDisplayElement!==undefined){if(v.plugins.config[C].position&&a(v.plugins.config[C].position)){if(v.plugins.object[C].getDisplayElement.parentNode===null){u.appendChild(v.plugins.object[C].getDisplayElement)}var B=d(C);B.zIndex=D;return B}}return false}function k(D,E){if(v.plugins.object[D].getDisplayElement.parentNode===null){q.appendChild(v.plugins.object[D].getDisplayElement)}var B=v.width,C=v.height;if(typeof v.width=="string"&&v.width.lastIndexOf("%")>-1){percentage=parseFloat(v.width.substring(0,v.width.lastIndexOf("%")))/100;B=Math.round(window.innerWidth*percentage)}if(typeof v.height=="string"&&v.height.lastIndexOf("%")>-1){percentage=parseFloat(v.height.substring(0,v.height.lastIndexOf("%")))/100;C=Math.round(window.innerHeight*percentage)}return{position:"absolute",width:(B-h(q.style.left)-h(q.style.right)),height:(C-h(q.style.top)-h(q.style.bottom)),zIndex:E}}function y(B,C){return{position:"fixed",width:v.width,height:v.height,zIndex:C}}function w{q.style.position="absolute";v.getMedia.getDisplayElement.style.position="absolute";if(v.getMedia.getDisplayElement.videoWidth==0||v.getMedia.getDisplayElement.videoHeight==0){return}var B,D;if(q.style.width.toString.lastIndexOf("%")>-1||q.style.width.toString.lastIndexOf("%")>-1){var C=q.getBoundingClientRect;B=Math.abs(C.left)+Math.abs(C.right);D=Math.abs(C.top)+Math.abs(C.bottom)}else{B=h(q.style.width);D=h(q.style.height)}b.utils.stretch(s.jwGetStretching,v.getMedia.getDisplayElement,B,D,v.getMedia.getDisplayElement.videoWidth,v.getMedia.getDisplayElement.videoHeight)}function d(C){var D={position:"absolute",margin:0,padding:0,top:null};var B=v.plugins.config[C].currentPosition.toLowerCase;switch(B.toUpperCase){case b.html5.view.positions.TOP:D.top=h(q.style.top);D.left=h(q.style.left);D.width=f-h(q.style.left)-h(q.style.right);D.height=v.plugins.object[C].height;q.style[B]=h(q.style[B])+v.plugins.object[C].height+"px";q.style.height=h(q.style.height)-D.height+"px";break;case b.html5.view.positions.RIGHT:D.top=h(q.style.top);D.right=h(q.style.right);D.width=D.width=v.plugins.object[C].width;D.height=z-h(q.style.top)-h(q.style.bottom);q.style[B]=h(q.style[B])+v.plugins.object[C].width+"px";q.style.width=h(q.style.width)-D.width+"px";break;case b.html5.view.positions.BOTTOM:D.bottom=h(q.style.bottom);D.left=h(q.style.left);D.width=f-h(q.style.left)-h(q.style.right);D.height=v.plugins.object[C].height;q.style[B]=h(q.style[B])+v.plugins.object[C].height+"px";q.style.height=h(q.style.height)-D.height+"px";break;case b.html5.view.positions.LEFT:D.top=h(q.style.top);D.left=h(q.style.left);D.width=v.plugins.object[C].width;D.height=z-h(q.style.top)-h(q.style.bottom);q.style[B]=h(q.style[B])+v.plugins.object[C].width+"px";q.style.width=h(q.style.width)-D.width+"px";break;default:break}return D}this.resize=i;this.fullscreen=function(E){if(navigator.vendor.indexOf("Apple")===0){if(v.getMedia.getDisplayElement.webkitSupportsFullscreen){if(E){try{v.getMedia.getDisplayElement.webkitEnterFullscreen}catch(D){}}else{try{v.getMedia.getDisplayElement.webkitExitFullscreen}catch(D){}}}}else{if(E){document.onkeydown=g;clearInterval(n);var C=document.body.getBoundingClientRect;v.width=Math.abs(C.left)+Math.abs(C.right);v.height=window.innerHeight;var B={position:"fixed",width:"100%",height:"100%",top:0,left:0,zIndex:2147483000};c(u,B);B.zIndex=1;c(v.getMedia.getDisplayElement,B);B.zIndex=2;c(q,B)}else{document.onkeydown="";v.width=f;v.height=z;c(u,{position:"relative",height:v.height,width:v.width,zIndex:0})}i(v.width,v.height)}}};function a(d){return([b.html5.view.positions.TOP,b.html5.view.positions.RIGHT,b.html5.view.positions.BOTTOM,b.html5.view.positions.LEFT].toString.indexOf(d.toUpperCase)>-1)}b.html5.view.positions={TOP:"TOP",RIGHT:"RIGHT",BOTTOM:"BOTTOM",LEFT:"LEFT",OVER:"OVER",NONE:"NONE"}})(jwplayer);(function(a){var b={backgroundcolor:"",margin:10,font:"Arial,sans-serif",fontsize:10,fontcolor:parseInt("000000",16),fontstyle:"normal",fontweight:"bold",buttoncolor:parseInt("ffffff",16),position:a.html5.view.positions.BOTTOM,idlehide:false,layout:{left:{position:"left",elements:[{name:"play",type:"button"},{name:"divider",type:"divider"},{name:"prev",type:"button"},{name:"divider",type:"divider"},{name:"next",type:"button"},{name:"divider",type:"divider"},{name:"elapsed",type:"text"}]},center:{position:"center",elements:[{name:"time",type:"slider"}]},right:{position:"right",elements:[{name:"duration",type:"text"},{name:"blank",type:"button"},{name:"divider",type:"divider"},{name:"mute",type:"button"},{name:"volume",type:"slider"},{name:"divider",type:"divider"},{name:"fullscreen",type:"button"}]}}};_css=a.utils.css;_hide=function(c){_css(c,{display:"none"})};_show=function(c){_css(c,{display:"block"})};a.html5.controlbar=function(k,M){var j=k;var A=a.utils.extend({},b,j.skin.getComponentSettings("controlbar"),M);if(A.position==a.html5.view.positions.NONE||typeof a.html5.view.positions[A.position]=="undefined"){return}if(a.utils.mapLength(j.skin.getComponentLayout("controlbar"))>0){A.layout=j.skin.getComponentLayout("controlbar")}var R;var J;var Q;var B;var t="none";var f;var i;var S;var e;var d;var w;var K={};var o=false;var c={};var O;var h=false;function E{if(!O){O=j.skin.getSkinElement("controlbar","background");if(!O){O={width:0,height:0,src:null}}}return O}function I{Q=0;B=0;J=0;if(!o){var Z={height:E.height,backgroundColor:A.backgroundcolor};R=document.createElement("div");R.id=j.id+"_jwplayer_controlbar";_css(R,Z)}var Y=(j.skin.getSkinElement("controlbar","capLeft"));var X=(j.skin.getSkinElement("controlbar","capRight"));if(Y){v("capLeft","left",false,R)}var aa={position:"absolute",height:E.height,left:(Y?Y.width:0),zIndex:0};P("background",R,aa,"img");if(E.src){K.background.src=E.src}aa.zIndex=1;P("elements",R,aa);if(X){v("capRight","right",false,R)}}this.getDisplayElement=function{return R};this.resize=function(Z,X){a.utils.cancelAnimation(R);document.getElementById(j.id).onmousemove=x;d=Z;w=X;x;var Y=u;D({id:j.id,duration:S,position:i});s({id:j.id,bufferPercent:e});return Y};this.show=function{h=false;_show(R)};this.hide=function{h=true;_hide(R)};function p{var Y=["timeSlider","volumeSlider","timeSliderRail","volumeSliderRail"];for(var Z in Y){var X=Y[Z];if(typeof K[X]!="undefined"){c[X]=K[X].getBoundingClientRect}}}function x{if(h){return}a.utils.cancelAnimation(R);if(g){a.utils.fadeTo(R,1,0,1,0)}else{a.utils.fadeTo(R,0,0.1,1,2)}}function g{if(h){return false}if(j.jwGetState==a.api.events.state.IDLE||j.jwGetState==a.api.events.state.PAUSED){if(A.idlehide){return false}return true}if(j.jwGetFullscreen){return false}if(A.position==a.html5.view.positions.OVER){return false}return true}function P(ab,aa,Z,X){var Y;if(!o){if(!X){X="div"}Y=document.createElement(X);K[ab]=Y;Y.id=R.id+"_"+ab;aa.appendChild(Y)}else{Y=document.getElementById(R.id+"_"+ab)}if(Z!==undefined){_css(Y,Z)}return Y}function H{W(A.layout.left);W(A.layout.right,-1);W(A.layout.center)}function W(aa,X){var ab=aa.position=="right"?"right":"left";var Z=a.utils.extend([],aa.elements);if(X!==undefined){Z.reverse}for(var Y=0;Y<Z.length;Y++){z(Z[Y],ab)}}function F{return J++}function z(ab,ad){var aa,Y,Z,X,af;if(ab.type=="divider"){v("divider"+F,ad,true,undefined,undefined,ab.width,ab.element);return}switch(ab.name){case"play":v("playButton",ad,false);v("pauseButton",ad,true);L("playButton","jwPlay");L("pauseButton","jwPause");break;case"prev":v("prevButton",ad,true);L("prevButton","jwPlaylistPrev");break;case"next":v("nextButton",ad,true);L("nextButton","jwPlaylistNext");break;case"elapsed":v("elapsedText",ad,true);break;case"time":Y=j.skin.getSkinElement("controlbar","timeSliderCapLeft")===undefined?0:j.skin.getSkinElement("controlbar","timeSliderCapLeft").width;Z=j.skin.getSkinElement("controlbar","timeSliderCapRight")===undefined?0:j.skin.getSkinElement("controlbar","timeSliderCapRight").width;aa=ad=="left"?Y:Z;X=j.skin.getSkinElement("controlbar","timeSliderRail").width+Y+Z;af={height:E.height,position:"absolute",top:0,width:X};af[ad]=ad=="left"?Q:B;var ac=P("timeSlider",K.elements,af);v("timeSliderCapLeft",ad,true,ac,ad=="left"?0:aa);v("timeSliderRail",ad,false,ac,aa);v("timeSliderBuffer",ad,false,ac,aa);v("timeSliderProgress",ad,false,ac,aa);v("timeSliderThumb",ad,false,ac,aa);v("timeSliderCapRight",ad,true,ac,ad=="right"?0:aa);N("time");break;case"fullscreen":v("fullscreenButton",ad,false);v("normalscreenButton",ad,true);L("fullscreenButton","jwSetFullscreen",true);L("normalscreenButton","jwSetFullscreen",false);break;case"volume":Y=j.skin.getSkinElement("controlbar","volumeSliderCapLeft")===undefined?0:j.skin.getSkinElement("controlbar","volumeSliderCapLeft").width;Z=j.skin.getSkinElement("controlbar","volumeSliderCapRight")===undefined?0:j.skin.getSkinElement("controlbar","volumeSliderCapRight").width;aa=ad=="left"?Y:Z;X=j.skin.getSkinElement("controlbar","volumeSliderRail").width+Y+Z;af={height:E.height,position:"absolute",top:0,width:X};af[ad]=ad=="left"?Q:B;var ae=P("volumeSlider",K.elements,af);v("volumeSliderCapLeft",ad,true,ae,ad=="left"?0:aa);v("volumeSliderRail",ad,true,ae,aa);v("volumeSliderProgress",ad,false,ae,aa);v("volumeSliderCapRight",ad,true,ae,ad=="right"?0:aa);N("volume");break;case"mute":v("muteButton",ad,false);v("unmuteButton",ad,true);L("muteButton","jwSetMute",true);L("unmuteButton","jwSetMute",false);break;case"duration":v("durationText",ad,true);break}}function v(aa,ad,Y,ag,ab,X,Z){if(j.skin.getSkinElement("controlbar",aa)!==undefined||aa.indexOf("Text")>0||aa.indexOf("divider")===0){var ac={height:E.height,position:"absolute",display:"block",top:0};if((aa.indexOf("next")===0||aa.indexOf("prev")===0)&&j.jwGetPlaylist.length<2){Y=false;ac.display="none"}var ah;if(aa.indexOf("Text")>0){aa.innerhtml="00:00";ac.font=A.fontsize+"px/"+(E.height+1)+"px "+A.font;ac.color=A.fontcolor;ac.textAlign="center";ac.fontWeight=A.fontweight;ac.fontStyle=A.fontstyle;ac.cursor="default";ah=14+3*A.fontsize}else{if(aa.indexOf("divider")===0){if(X){if(!isNaN(parseInt(X))){ah=parseInt(X)}}else{if(Z){var ae=j.skin.getSkinElement("controlbar",Z);if(ae){ac.background="url("+ae.src+") repeat-x center left";ah=ae.width}}else{ac.background="url("+j.skin.getSkinElement("controlbar","divider").src+") repeat-x center left";ah=j.skin.getSkinElement("controlbar","divider").width}}}else{ac.background="url("+j.skin.getSkinElement("controlbar",aa).src+") repeat-x center left";ah=j.skin.getSkinElement("controlbar",aa).width}}if(ad=="left"){ac.left=isNaN(ab)?Q:ab;if(Y){Q+=ah}}else{if(ad=="right"){ac.right=isNaN(ab)?B:ab;if(Y){B+=ah}}}if(a.utils.typeOf(ag)=="undefined"){ag=K.elements}ac.width=ah;if(o){_css(K[aa],ac)}else{var af=P(aa,ag,ac);if(j.skin.getSkinElement("controlbar",aa+"Over")!==undefined){af.onmouseover=function(ai){af.style.backgroundImage=["url(",j.skin.getSkinElement("controlbar",aa+"Over").src,")"].join("")};af.onmouseout=function(ai){af.style.backgroundImage=["url(",j.skin.getSkinElement("controlbar",aa).src,")"].join("")}}}}}function C{j.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED,y);j.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_BUFFER,s);j.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE,q);j.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_TIME,D);j.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_MUTE,V);j.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_VOLUME,l);j.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_COMPLETE,G)}function y{I;H;u;T}function T{D({id:j.id,duration:j.jwGetDuration,position:0});s({id:j.id,bufferProgress:0});V({id:j.id,mute:j.jwGetMute});q({id:j.id,newstate:a.api.events.state.IDLE});l({id:j.id,volume:j.jwGetVolume})}function L(Z,aa,Y){if(o){return}if(j.skin.getSkinElement("controlbar",Z)!==undefined){var X=K[Z];if(X!==null){_css(X,{cursor:"pointer"});if(aa=="fullscreen"){X.onmouseup=function(ab){ab.stopPropagation;j.jwSetFullscreen(!j.jwGetFullscreen)}}else{X.onmouseup=function(ab){ab.stopPropagation;if(Y!==null){j[aa](Y)}else{j[aa]}}}}}}function N(X){if(o){return}var Y=K[X+"Slider"];_css(K.elements,{cursor:"pointer"});_css(Y,{cursor:"pointer"});Y.onmousedown=function(Z){t=X};Y.onmouseup=function(Z){Z.stopPropagation;U(Z.pageX)};Y.onmousemove=function(Z){if(t=="time"){f=true;var aa=Z.pageX-c[X+"Slider"].left-window.pageXOffset;_css(K.timeSliderThumb,{left:aa})}}}function U(Y){f=false;var X;if(t=="time"){X=Y-c.timeSliderRail.left+window.pageXOffset;var aa=X/c.timeSliderRail.width*S;if(aa<0){aa=0}else{if(aa>S){aa=S-3}}if(j.jwGetState==a.api.events.state.PAUSED||j.jwGetState==a.api.events.state.IDLE){j.jwPlay}j.jwSeek(aa)}else{if(t=="volume"){X=Y-c.volumeSliderRail.left-window.pageXOffset;var Z=Math.round(X/c.volumeSliderRail.width*100);if(Z<0){Z=0}else{if(Z>100){Z=100}}if(j.jwGetMute){j.jwSetMute(false)}j.jwSetVolume(Z)}}t="none"}function s(Y){if(Y.bufferPercent!==null){e=Y.bufferPercent}if(c.timeSliderRail){var Z=c.timeSliderRail.width;var X=isNaN(Math.round(Z*e/100))?0:Math.round(Z*e/100);_css(K.timeSliderBuffer,{width:X})}}function V(X){if(X.mute){_hide(K.muteButton);_show(K.unmuteButton);_hide(K.volumeSliderProgress)}else{_show(K.muteButton);_hide(K.unmuteButton);_show(K.volumeSliderProgress)}}function q(X){if(X.newstate==a.api.events.state.BUFFERING||X.newstate==a.api.events.state.PLAYING){_show(K.pauseButton);_hide(K.playButton)}else{_hide(K.pauseButton);_show(K.playButton)}x;if(X.newstate==a.api.events.state.IDLE){_hide(K.timeSliderBuffer);_hide(K.timeSliderProgress);_hide(K.timeSliderThumb);D({id:j.id,duration:j.jwGetDuration,position:0})}else{_show(K.timeSliderBuffer);if(X.newstate!=a.api.events.state.BUFFERING){_show(K.timeSliderProgress);_show(K.timeSliderThumb)}}}function G(X){s({bufferPercent:0});D(a.utils.extend(X,{position:0,duration:S}))}function D(aa){if(aa.position!==null){i=aa.position}if(aa.duration!==null){S=aa.duration}var Y=(i===S===0)?0:i/S;var ab=c.timeSliderRail;if(ab){var X=isNaN(Math.round(ab.width*Y))?0:Math.round(ab.width*Y);var Z=X;if(K.timeSliderProgress){K.timeSliderProgress.style.width=X+"px";if(!f){if(K.timeSliderThumb){K.timeSliderThumb.style.left=Z+"px"}}}}if(K.durationText){K.durationText.innerHTML=n(S)}if(K.elapsedText){K.elapsedText.innerHTML=n(i)}}function n(X){str="00:00";if(X>0){str=Math.floor(X/60)<10?"0"+Math.floor(X/60)+":":Math.floor(X/60)+":";str+=Math.floor(X%60)<10?"0"+Math.floor(X%60):Math.floor(X%60)}return str}function m{var aa,Y;var Z=document.getElementById(R.id+"_elements").childNodes;for(var X in document.getElementById(R.id+"_elements").childNodes){if(isNaN(parseInt(X,10))){continue}if(Z[X].id.indexOf(R.id+"_divider")===0&&Y&&Y.id.indexOf(R.id+"_divider")===0&&Z[X].style.backgroundImage==Y.style.backgroundImage){Z[X].style.display="none"}else{if(Z[X].id.indexOf(R.id+"_divider")===0&&aa&&aa.style.display!="none"){Z[X].style.display="block"}}if(Z[X].style.display!="none"){Y=Z[X]}aa=Z[X]}}function u{m;if(j.jwGetFullscreen){_show(K.normalscreenButton);_hide(K.fullscreenButton)}else{_hide(K.normalscreenButton);_show(K.fullscreenButton)}var Y={width:d};var X={};if(A.position==a.html5.view.positions.OVER||j.jwGetFullscreen){Y.left=A.margin;Y.width-=2*A.margin;Y.top=w-E.height-A.margin;Y.height=E.height}else{Y.left=0}var aa=j.skin.getSkinElement("controlbar","capLeft");var Z=j.skin.getSkinElement("controlbar","capRight");X.left=aa?aa.width:0;X.width=Y.width-X.left-(Z?Z.width:0);var ab=j.skin.getSkinElement("controlbar","timeSliderCapLeft")===undefined?0:j.skin.getSkinElement("controlbar","timeSliderCapLeft").width;_css(K.timeSliderRail,{width:(X.width-Q-B),left:ab});if(K.timeSliderCapRight!==undefined){_css(K.timeSliderCapRight,{left:ab+(X.width-Q-B)})}_css(R,Y);_css(K.elements,X);_css(K.background,X);p;return Y}function l(ab){if(K.volumeSliderRail!==undefined){var Z=isNaN(ab.volume/100)?1:ab.volume/100;var aa=parseInt(K.volumeSliderRail.style.width.replace("px",""),10);var X=isNaN(Math.round(aa*Z))?0:Math.round(aa*Z);var ac=parseInt(K.volumeSliderRail.style.right.replace("px",""),10);var Y=j.skin.getSkinElement("controlbar","volumeSliderCapLeft")===undefined?0:j.skin.getSkinElement("controlbar","volumeSliderCapLeft").width;_css(K.volumeSliderProgress,{width:X,left:Y});if(K.volumeSliderCapLeft!==undefined){_css(K.volumeSliderCapLeft,{left:0})}}}function r{I;H;p;o=true;C;T;R.style.opacity=A.idlehide?0:1}r;return this}})(jwplayer);(function(b){var a=["width","height","state","playlist","item","position","buffer","duration","volume","mute","fullscreen"];b.html5.controller=function(t,r,e,q){var w=t;var y=e;var d=q;var k=r;var A=true;var c=-1;var u=(y.config.debug!==undefined)&&(y.config.debug.toString.toLowerCase=="console");var i=new b.html5.eventdispatcher(k.id,u);b.utils.extend(this,i);function m(D){i.sendEvent(D.type,D)}y.addGlobalListener(m);function p{try{if(y.playlist[y.item].levels[0].file.length>0){if(A||y.state==b.api.events.state.IDLE){y.addEventListener(b.api.events.JWPLAYER_MEDIA_BUFFER_FULL,function{y.getMedia.play});y.addEventListener(b.api.events.JWPLAYER_MEDIA_TIME,function(E){if(E.position>=y.playlist[y.item].start&&c>=0){y.playlist[y.item].start=c;c=-1}});if(y.config.repeat){y.addEventListener(b.api.events.JWPLAYER_MEDIA_COMPLETE,function(E){setTimeout(n,25)})}y.getMedia.load(y.playlist[y.item]);A=false}else{if(y.state==b.api.events.state.PAUSED){y.getMedia.play}}}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function B{try{if(y.playlist[y.item].levels[0].file.length>0){switch(y.state){case b.api.events.state.PLAYING:case b.api.events.state.BUFFERING:y.getMedia.pause;break}}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function x(D){try{if(y.playlist[y.item].levels[0].file.length>0){if(typeof D!="number"){D=parseFloat(D)}switch(y.state){case b.api.events.state.IDLE:if(c<0){c=y.playlist[y.item].start;y.playlist[y.item].start=D}p;break;case b.api.events.state.PLAYING:case b.api.events.state.PAUSED:case b.api.events.state.BUFFERING:y.seek(D);break}}return true}catch(E){i.sendEvent(b.api.events.JWPLAYER_ERROR,E)}return false}function j{try{if(y.playlist[y.item].levels[0].file.length>0&&y.state!=b.api.events.state.IDLE){y.getMedia.stop}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function g{try{if(y.playlist[y.item].levels[0].file.length>0){if(y.config.shuffle){o(s)}else{if(y.item+1==y.playlist.length){o(0)}else{o(y.item+1)}}}if(y.state!=b.api.events.state.PLAYING&&y.state!=b.api.events.state.BUFFERING){p}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function f{try{if(y.playlist[y.item].levels[0].file.length>0){if(y.config.shuffle){o(s)}else{if(y.item===0){o(y.playlist.length-1)}else{o(y.item-1)}}}if(y.state!=b.api.events.state.PLAYING&&y.state!=b.api.events.state.BUFFERING){p}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function s{var D=null;if(y.playlist.length>1){while(D===null){D=Math.floor(Math.random*y.playlist.length);if(D==y.item){D=null}}}else{D=0}return D}function o(E){y.resetEventListeners;y.addGlobalListener(m);try{if(y.playlist[E].levels[0].file.length>0){var F=y.state;if(F!==b.api.events.state.IDLE){j}y.item=E;A=true;y.setActiveMediaProvider(y.playlist[y.item]);i.sendEvent(b.api.events.JWPLAYER_PLAYLIST_ITEM,{index:E});if(F==b.api.events.state.PLAYING||F==b.api.events.state.BUFFERING||y.config.chromeless||e.config.autostart===true){p}}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function z(E){try{switch(typeof(E)){case"number":y.getMedia.volume(E);break;case"string":y.getMedia.volume(parseInt(E,10));break}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function l(E){try{if(typeof E=="undefined"){y.getMedia.mute(!y.mute)}else{if(E.toString.toLowerCase=="true"){y.getMedia.mute(true)}else{y.getMedia.mute(false)}}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function h(E,D){try{y.width=E;y.height=D;d.resize(E,D);i.sendEvent(b.api.events.JWPLAYER_RESIZE,{width:y.width,height:y.height});return true}catch(F){i.sendEvent(b.api.events.JWPLAYER_ERROR,F)}return false}function v(E){try{if(typeof E=="undefined"){y.fullscreen=!y.fullscreen;d.fullscreen(!y.fullscreen)}else{if(E.toString.toLowerCase=="true"){y.fullscreen=true;d.fullscreen(true)}else{y.fullscreen=false;d.fullscreen(false)}}i.sendEvent(b.api.events.JWPLAYER_RESIZE,{width:y.width,height:y.height});i.sendEvent(b.api.events.JWPLAYER_FULLSCREEN,{fullscreen:E});return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function C(D){try{j;y.loadPlaylist(D);o(y.item);return true}catch(E){i.sendEvent(b.api.events.JWPLAYER_ERROR,E)}return false}b.html5.controller.repeatoptions={LIST:"LIST",ALWAYS:"ALWAYS",SINGLE:"SINGLE",NONE:"NONE"};function n{y.resetEventListeners;y.addGlobalListener(m);switch(y.config.repeat.toUpperCase){case b.html5.controller.repeatoptions.SINGLE:p;break;case b.html5.controller.repeatoptions.ALWAYS:if(y.item==y.playlist.length-1&&!y.config.shuffle){o(0);p}else{g}break;case b.html5.controller.repeatoptions.LIST:if(y.item==y.playlist.length-1&&!y.config.shuffle){o(0)}else{g}break}}this.play=p;this.pause=B;this.seek=x;this.stop=j;this.next=g;this.prev=f;this.item=o;this.setVolume=z;this.setMute=l;this.resize=h;this.setFullscreen=v;this.load=C}})(jwplayer);(function(a){a.html5.defaultSkin=function{this.text='<?xml version="1.0" ?><skin author="LongTail Video" name="Five" version="1.0"> <setting name="backcolor" value="0xFFFFFF"/><setting name="frontcolor" value="0x000000"/><setting name="lightcolor" value="0x000000"/><setting name="screencolor" value="0x000000"/>   <setting name="margin" value="20"/><setting name="fontsize" value="11"/>  <element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFJJREFUeNrslLENwAAIwxLU/09j5AiOgD5hVQzNAVY8JK4qEfHMIKBnd2+BQlBINaiRtL/aV2rdzYBsM6CIONbI1NZENTr3RwdB2PlnJgJ6BRgA4hwu5Qg5iswAAAAASUVORK5CYII="/><element name="capLeft" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="capRight" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="divider" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="playButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEhJREFUeNpiYqABYBo1dNRQ+hr6H4jvA3E8NS39j4SpZvh/LJig4YxEGEqy3kET+w+AOGFQRhTJhrEQkGcczfujhg4CQwECDADpTRWU/B3wHQAAAABJRU5ErkJggg=="/><element name="pauseButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNpiYBgFo2DwA0YC8v/R1P4nRu+ooaOGUtnQUTAKhgIACDAAFCwQCfAJ4gwAAAAASUVORK5CYII="/><element name="prevButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEtJREFUeNpiYBgFo2Dog/9QDAPyQHweTYwiQ/2B+D0Wi8g2tB+JTdBQRiIMJVkvEy0iglhDF9Aq9uOpHVEwoE+NJDUKRsFgAAABBgDe2hqZcNNL0AAAAABJRU5ErkJggg=="/><element name="nextButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAElJREFUeNpiYBgFo2Dog/9AfB6I5dHE/lNqKAi/B2J/ahsKw/3EGMpIhKEk66WJoaR6fz61IyqemhEFSlL61ExSo2AUDAYAEGAAiG4hj+5t7M8AAAAASUVORK5CYII="/><element name="timeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNpiYBgFo2AU0Bwwzluw+D8tLWARFhKiqQ9YuLg4aWsBGxs7bS1gZ6e5BWyjSX0UjIKhDgACDABlYQOGh5pYywAAAABJRU5ErkJggg=="/><element name="timeSliderBuffer" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYBgFo2AU0Bww1jc0/aelBSz8/Pw09QELOzs7bS1gY2OjrQWsrKy09gHraFIfBaNgqAOAAAMAvy0DChXHsZMAAAAASUVORK5CYII="/><element name="timeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeNpiYBgFo2AU0BwwAvF/WlrARGsfjFow8BaMglEwCugAAAIMAOHfAQunR+XzAAAAAElFTkSuQmCC"/><element name="timeSliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAICAYAAAA870V8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUeNpiZICA/yCCiQEJUJcDEGAAY0gBD1/m7Q0AAAAASUVORK5CYII="/><element name="muteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiYBgFIw3MB+L/5Gj8j6yRiRTFyICJXHfTXyMLAXlGati4YDRFDj8AEGAABk8GSqqS4CoAAAAASUVORK5CYII="/><element name="unmuteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYBgFgxz8p7bm+cQa+h8LHy7GhEcjIz4bmAjYykiun/8j0fakGPIfTfPgiSr6aB4FVAcAAQYAWdwR1G1Wd2gAAAAASUVORK5CYII="/><element name="volumeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAYCAYAAADkgu3FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGpJREFUeNpi/P//PwM9ABMDncCoRYPfIqqDZcuW1UPp/6AUDcNM1DQYKtRAlaAj1mCSLSLXYIIWUctgDItoZfDA5aOoqKhGEANIM9LVR7SymGDQUctikuOIXkFNdhHEOFrDjlpEd4sAAgwAriRMub95fu8AAAAASUVORK5CYII="/><element name="volumeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAYCAYAAADkgu3FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUeNpi/P//PwM9ABMDncCoRYPfIlqAeij9H5SiYZiqBqPTlFqE02BKLSLaYFItIttgQhZRzWB8FjENiuRJ7aAbsMQwYMl7wDIsWUUQ42gNO2oR3S0CCDAAKhKq6MLLn8oAAAAASUVORK5CYII="/><element name="fullscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE5JREFUeNpiYBgFo2DQA0YC8v/xqP1PjDlMRDrEgUgxkgHIlfZoriVGjmzLsLFHAW2D6D8eA/9Tw7L/BAwgJE90PvhPpNgoGAVDEQAEGAAMdhTyXcPKcAAAAABJRU5ErkJggg=="/><element name="normalscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEZJREFUeNpiYBgFo2DIg/9UUkOUAf8JiFFsyX88fJyAkcQgYMQjNkzBoAgiezyRbE+tFGSPxQJ7auYBmma0UTAKBhgABBgAJAEY6zON61sAAAAASUVORK5CYII="/>    <element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEpJREFUeNrszwENADAIA7DhX8ENoBMZ5KR10EryckCJiIiIiIiIiIiIiIiIiIiIiIh8GmkRERERERERERERERERERERERGRHSPAAPlXH1phYpYaAAAAAElFTkSuQmCC"/><element name="playIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrs18ENgjAYhmFouDOCcQJGcARHgE10BDcgTOIosAGwQOuPwaQeuFRi2p/3Sb6EC5L3QCxZBgAAAOCorLW1zMn65TrlkH4NcV7QNcUQt7Gn7KIhxA+qNIR81spOGkL8oFJDyLJRdosqKDDkK+iX5+d7huzwM40xptMQMkjIOeRGo+VkEVvIPfTGIpKASfYIfT9iCHkHrBEzf4gcUQ56aEzuGK/mw0rHpy4AAACAf3kJMACBxjAQNRckhwAAAABJRU5ErkJggg=="/><element name="muteIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHJJREFUeNrs1jEOgCAMBVAg7t5/8qaoIy4uoobyXsLCxA+0NCUAAADGUWvdQoQ41x4ixNBB2hBvBskdD3w5ZCkl3+33VqI0kjBBlh9rp+uTcyOP33TnolfsU85XX3yIRpQph8ZQY3wTZtU5AACASA4BBgDHoVuY1/fvOQAAAABJRU5ErkJggg=="/><element name="errorIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWlJREFUeNrsl+1twjAQhsHq/7BBYQLYIBmBDcoGMAIjtBPQTcII2SDtBDBBwrU6pGsUO7YbO470PtKJkz9iH++d4ywWAAAAAABgljRNsyWr2bZzDuJG1rLdZhcMbTjrBCGDyUKsqQLFciJb9bSvuG/WagRVRUVUI6gqy5HVeKWfSgRyJruKIU//TrZTSn2nmlaXThrloi/v9F2STC1W4+Aw5cBzkquRc09bofFNc6YLxEON0VUZS5FPTftO49vMjRsIF3RhOGr7/D/pJw+FKU+q0vDyq8W42jCunDqI3LC5XxNj2wHLU1XjaRnb0Lhykhqhhd8MtSF5J9tbjCv4mXGvKJz/65FF/qJryyaaIvzP2QRxZTX2nTuXjvV/VPFSwyLnW7mpH99yTh1FEVro6JBSd40/pMrRdV8vPtcKl28T2pT8TnFZ4yNosct3Q0io6JfBiz1FlGdqVQH3VHnepAEAAAAAADDzEGAAcTwB10jWgxcAAAAASUVORK5CYII="/><element name="bufferIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAuhJREFUeNrsWr9rU1EUznuNGqvFQh1ULOhiBx0KDtIuioO4pJuik3FxFfUPaAV1FTdx0Q5d2g4FFxehTnEpZHFoBy20tCIWtGq0TZP4HfkeHB5N8m6Sl/sa74XDybvv3vvOd8/Pe4lXrVZT3dD8VJc0B8QBcUAcEAfESktHGeR5XtMfqFQq/f92zPe/NbtGlKTdCY30kuxrpMGO94BlQCXs+rbh3ONgA6BlzP1p20d80gEI5hmA2A92Qua1Q2PtAFISM+bvjMG8U+Q7oA3rQGASwrYCU6WpNdLGYbA+Pq5jjXIiwi8EEa2UDbQSaKOIuV+SlkcCrfjY8XTI9EpKGwP0C2kru2hLtHqa4zoXtZRWyvi4CLwv9Opr6Hkn6A9HKgEANsQ1iqC3Ub/vRUk2JgmRkatK36kVrnt0qObunwUdUUMXMWYpakJsO5Am8tAw2GBIgwWA+G2S2dMpiw0gDioQRQJoKhRb1QiDwlHZUABYbaXWsm5ae6loTE4ZDxN4CZar8foVzOJ2iyZ2kWF3t7YIevffaMT5yJ70kQb2fQ1sE5SHr2wazs2wgMxgbsEKEAgxAvZUJbQLBGTSBMgNrncJbA6AljtS/eKDJ0Ez+DmrQEzXS2h1Ck25kAg0IZcUOaydCy4sYnN2fOA+2AP16gNoHALlQ+fwH7XO4CxLenUpgj4xr6ugY2roPMbMx+Xs18m/E8CVEIhxsNeg83XWOAN6grG3lGbk8uE5fr4B/WH3cJw+co/l9nTYsSGYCJ/lY5/qv0thn6nrIWmjeJcPSnWOeY++AkF8tpJHIMAUs/MaBBpj3znZfQo5psY+ZrG4gv5HickjEOymKjEeRpgyST6IuZcTcWbnjcgdPi5ghxciRKsl1lDSsgwA1i8fssonJgzmTSqfGUkCENndNdAL7PS6QQ7ZYISTo+1qq0LEWjTWcvY4isa4z+yfQB+7ooyHVg5RI7/i1Ijn/vnggDggDogD4oC00P4KMACd/juEHOrS4AAAAABJRU5ErkJggg=="/>    <element name="button" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFBJREFUeNrs0cEJACAQA8Eofu0fu/W6EM5ZSAFDRpKTBs00CQQEBAQEBAQEBAQEBAQEBATkK8iqbY+AgICAgICAgICAgICAgICAgIC86QowAG5PAQzEJ0lKAAAAAElFTkSuQmCC"/>    <element name="item" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAIAAAC1nk4lAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNrs2NEJwCAMBcBYuv/CFuIE9VN47WWCR7iocXR3pdWdGPqqwIoMjYfQeAiNh9B4JHc6MHQVHnjggQceeOCBBx77TifyeOY0iHi8DqIdEY8dD5cL094eePzINB5CO/LwcOTptNB4CP25L4TIbZzpU7UEGAA5wz1uF5rF9AAAAABJRU5ErkJggg=="/><element name="sliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA8CAIAAADpFA0BAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNrsy6ENACAMAMHClp2wYxZLAg5Fcu9e3OjuOKqqfTMzbs14CIZhGIZhGIZhGP4VLwEGAK/BBnVFpB0oAAAAAElFTkSuQmCC"/><element name="sliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA8CAIAAADpFA0BAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNrsy7ENACAMBLE8++8caFFKKiRffU53112SGs3ttOohGIZhGIZhGIZh+Fe8BRgAiaUGde6NOSEAAAAASUVORK5CYII="/>    ';this.xml=null;if(window.DOMParser){parser=new DOMParser;this.xml=parser.parseFromString(this.text,"text/xml")}else{this.xml=new ActiveXObject("Microsoft.XMLDOM");this.xml.async="false";this.xml.loadXML(this.text)}return this}})(jwplayer);(function(a){_css=a.utils.css;_hide=function(b){_css(b,{display:"none"})};_show=function(b){_css(b,{display:"block"})};a.html5.display=function(o,z){var r={icons:true};var j=a.utils.extend({},r,z);var w=o;var d={};var f;var A;var k;var x;var y;var p;var i;var n=w.skin.getComponentSettings("display").bufferrotation===undefined?15:parseInt(w.skin.getComponentSettings("display").bufferrotation,10);var e=w.skin.getComponentSettings("display").bufferinterval===undefined?100:parseInt(w.skin.getComponentSettings("display").bufferinterval,10);var c={display:{style:{cursor:"pointer",top:0,left:0,overflow:"hidden"},click:u},display_icon:{style:{cursor:"pointer",position:"absolute",top:((w.skin.getSkinElement("display","background").height-w.skin.getSkinElement("display","playIcon").height)/2),left:((w.skin.getSkinElement("display","background").width-w.skin.getSkinElement("display","playIcon").width)/2),border:0,margin:0,padding:0,zIndex:3}},display_iconBackground:{style:{cursor:"pointer",position:"absolute",top:((A-w.skin.getSkinElement("display","background").height)/2),left:((f-w.skin.getSkinElement("display","background").width)/2),border:0,backgroundImage:(["url(",w.skin.getSkinElement("display","background").src,")"]).join(""),width:w.skin.getSkinElement("display","background").width,height:w.skin.getSkinElement("display","background").height,margin:0,padding:0,zIndex:2}},display_image:{style:{display:"none",width:f,height:A,position:"absolute",cursor:"pointer",left:0,top:0,margin:0,padding:0,textDecoration:"none",zIndex:1}},display_text:{style:{zIndex:4,position:"relative",opacity:0.8,backgroundColor:parseInt("000000",16),color:parseInt("ffffff",16),textAlign:"center",fontFamily:"Arial,sans-serif",padding:"0 5px",fontSize:14}}};w.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE,l);w.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_MUTE,l);w.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_ITEM,l);w.jwAddEventListener(a.api.events.JWPLAYER_ERROR,t);B;function B{d.display=s("div","display");d.display_text=s("div","display_text");d.display.appendChild(d.display_text);d.display_image=s("img","display_image");d.display_image.onerror=function(C){_hide(d.display_image)};d.display_image.onload=m;d.display_icon=s("div","display_icon");d.display_iconBackground=s("div","display_iconBackground");d.display.appendChild(d.display_image);d.display_iconBackground.appendChild(d.display_icon);d.display.appendChild(d.display_iconBackground);b}this.getDisplayElement=function{return d.display};this.resize=function(D,C){f=D;A=C;_css(d.display,{width:D,height:C});_css(d.display_text,{width:(D-10),top:((A-d.display_text.getBoundingClientRect.height)/2)});_css(d.display_iconBackground,{top:((A-w.skin.getSkinElement("display","background").height)/2),left:((f-w.skin.getSkinElement("display","background").width)/2)});h;l({})};this.show=function{_show(d.display_icon);_show(d.display_iconBackground)};this.hide=function{q};function m(C){k=d.display_image.naturalWidth;x=d.display_image.naturalHeight;h}function h{a.utils.stretch(w.jwGetStretching,d.display_image,f,A,k,x)}function s(C,E){var D=document.createElement(C);D.id=w.id+"_jwplayer_"+E;_css(D,c[E].style);return D}function b{for(var C in d){if(c[C].click!==undefined){d[C].onclick=c[C].click}}}function u(C){if(typeof C.preventDefault!="undefined"){C.preventDefault}else{C.returnValue=false}if(w.jwGetState!=a.api.events.state.PLAYING){w.jwPlay}else{w.jwPause}}function g(C){if(i||!j.icons){q;return}_show(d.display_iconBackground);d.display_icon.style.backgroundImage=(["url(",w.skin.getSkinElement("display",C).src,")"]).join("");_css(d.display_icon,{display:"block",width:w.skin.getSkinElement("display",C).width,height:w.skin.getSkinElement("display",C).height,top:(w.skin.getSkinElement("display","background").height-w.skin.getSkinElement("display",C).height)/2,left:(w.skin.getSkinElement("display","background").width-w.skin.getSkinElement("display",C).width)/2});if(w.skin.getSkinElement("display",C+"Over")!==undefined){d.display_icon.onmouseover=function(D){d.display_icon.style.backgroundImage=["url(",w.skin.getSkinElement("display",C+"Over").src,")"].join("")};d.display_icon.onmouseout=function(D){d.display_icon.style.backgroundImage=["url(",w.skin.getSkinElement("display",C).src,")"].join("")}}else{d.display_icon.onmouseover=null;d.display_icon.onmouseout=null}}function q{_hide(d.display_icon);_hide(d.display_iconBackground)}function t(C){i=true;q;d.display_text.innerHTML=C.error;_show(d.display_text);d.display_text.style.top=((A-d.display_text.getBoundingClientRect.height)/2)+"px"}function v{var C=d.display_image;d.display_image=s("img","display_image");d.display_image.onerror=function(D){_hide(d.display_image)};d.display_image.onload=m;d.display.replaceChild(d.display_image,C)}function l(C){if((C.type==a.api.events.JWPLAYER_PLAYER_STATE||C.type==a.api.events.JWPLAYER_PLAYLIST_ITEM)&&i){i=false;_hide(d.display_text)}if(p!==undefined){clearInterval(p);p=null;a.utils.animations.rotate(d.display_icon,0)}switch(w.jwGetState){case a.api.events.state.BUFFERING:g("bufferIcon");y=0;p=setInterval(function{y+=n;a.utils.animations.rotate(d.display_icon,y%360)},e);g("bufferIcon");break;case a.api.events.state.PAUSED:if(w.jwGetPlaylist[w.jwGetItem].provider!="sound"){_css(d.display_image,{background:"transparent no-repeat center center"})}g("playIcon");break;case a.api.events.state.IDLE:if(w.jwGetPlaylist[w.jwGetItem].image){_css(d.display_image,{display:"block"});d.display_image.src=a.utils.getAbsolutePath(w.jwGetPlaylist[w.jwGetItem].image)}else{v}g("playIcon");break;default:if(w.jwGetMute&&j.showmute){if(w.jwGetPlaylist[w.jwGetItem].provider!="sound"){v}g("muteIcon")}else{if(w.jwGetPlaylist[w.jwGetItem].provider!="sound"){v}_hide(d.display_iconBackground);_hide(d.display_icon)}break}}return this}})(jwplayer);(function(a){_css=a.utils.css;a.html5.dock=function(g,c){function f{return{align:a.html5.view.positions.RIGHT}}var k=a.utils.extend({},f,c);if(k.align=="FALSE"){return}var h={};var b=[];var d;var e;var j=document.createElement("div");j.id=g.id+"_jwplayer_dock";this.getDisplayElement=function{return j};this.setButton=function(o,l,m,n){if(!l&&h[o]){a.utils.arrays.remove(b,o);j.removeChild(h[o].div);delete h[o]}else{if(l){if(!h[o]){h[o]={}}h[o].handler=l;h[o].outGraphic=m;h[o].overGraphic=n;if(!h[o].div){b.push(o);h[o].div=document.createElement("div");h[o].div.style.position="relative";j.appendChild(h[o].div);h[o].div.appendChild(document.createElement("img"));h[o].div.childNodes[0].style.position="absolute";h[o].div.childNodes[0].style.left=0;h[o].div.childNodes[0].style.top=0;h[o].div.childNodes[0].style.zIndex=10;h[o].div.childNodes[0].style.cursor="pointer";h[o].div.appendChild(document.createElement("img"));h[o].div.childNodes[1].style.position="absolute";h[o].div.childNodes[1].style.left=0;h[o].div.childNodes[1].style.top=0;if(g.skin.getSkinElement("dock","button")){h[o].div.childNodes[1].src=g.skin.getSkinElement("dock","button").src}h[o].div.childNodes[1].style.zIndex=9;h[o].div.childNodes[1].style.cursor="pointer";h[o].div.onmouseover=function{if(h[o].overGraphic){h[o].div.childNodes[0].src=h[o].overGraphic}if(g.skin.getSkinElement("dock","buttonOver")){h[o].div.childNodes[1].src=g.skin.getSkinElement("dock","buttonOver").src}};h[o].div.onmouseout=function{if(h[o].outGraphic){h[o].div.childNodes[0].src=h[o].outGraphic}if(g.skin.getSkinElement("dock","button")){h[o].div.childNodes[1].src=g.skin.getSkinElement("dock","button").src}};if(h[o].overGraphic){h[o].div.childNodes[0].src=h[o].overGraphic}if(h[o].outGraphic){h[o].div.childNodes[0].src=h[o].outGraphic}if(g.skin.getSkinElement("dock","button")){h[o].div.childNodes[1].src=g.skin.getSkinElement("dock","button").src}}if(l){h[o].div.onclick=function(p){p.preventDefault;a(g.id).callback(o);if(h[o].overGraphic){h[o].div.childNodes[0].src=h[o].overGraphic}if(g.skin.getSkinElement("dock","button")){h[o].div.childNodes[1].src=g.skin.getSkinElement("dock","button").src}}}}}i(d,e)};function i(n,l){d=n;e=l;if(b.length>0){var p=10;var r=n-g.skin.getSkinElement("dock","button").width-p;var o=p;var q=-1;if(k.align==a.html5.view.positions.LEFT){q=1;r=p}for(var m=0;m<b.length;m++){var s=Math.floor(o/l);if((o+g.skin.getSkinElement("dock","button").height+p)>((s+1)*l)){o=((s+1)*l)+p;s=Math.floor(o/l)}h[b[m]].div.style.top=(o%l)+"px";h[b[m]].div.style.left=(r+(g.skin.getSkinElement("dock","button").width+p)*s*q)+"px";o+=g.skin.getSkinElement("dock","button").height+p}}}this.resize=i;this.show=function{_css(j,{display:"block"})};this.hide=function{_css(j,{display:"none"})};return this}})(jwplayer);(function(a){a.html5.eventdispatcher=function(d,b){var c=new a.events.eventdispatcher(b);a.utils.extend(this,c);this.sendEvent=function(e,f){if(f===undefined){f={}}a.utils.extend(f,{id:d,version:a.version,type:e});c.sendEvent(e,f)}}})(jwplayer);(function(a){var b={prefix:"http://l.longtailvideo.com/html5/",file:"logo.png",link:"http://www.longtailvideo.com/players/jw-flv-player/",margin:8,out:0.5,over:1,timeout:3,hide:true,position:"bottom-left"};_css=a.utils.css;a.html5.logo=function(l,m){var r=l;var n;var i;var c;j;function j{p;d;f}function p{if(b.prefix){var t=l.version.split(/\W/).splice(0,2).join("/");if(b.prefix.indexOf(t)<0){b.prefix+=t+"/"}}if(m.position==a.html5.view.positions.OVER){m.position=b.position}i=a.utils.extend({},b)}function d{c=document.createElement("img");c.id=r.id+"_jwplayer_logo";c.style.display="none";c.onload=function(t){_css(c,q);r.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE,s);e};if(!i.file){return}if(i.file.indexOf("http://")===0){c.src=i.file}else{c.src=i.prefix+i.file}}if(!i.file){return}this.resize=function(u,t){};this.getDisplayElement=function{return c};function f{if(i.link){c.onmouseover=h;c.onmouseout=e;c.onclick=o}else{this.mouseEnabled=false}}function o(t){if(typeof t!="undefined"){t.stopPropagation}r.jwPause;r.jwSetFullscreen(false);if(i.link){window.open(i.link,"_blank")}return}function e(t){if(i.link){c.style.opacity=i.out}return}function h(t){if(i.hide){c.style.opacity=i.over}return}function q{var v={textDecoration:"none",position:"absolute",cursor:"pointer"};v.display=i.hide?"none":"block";var u=i.position.toLowerCase.split("-");for(var t in u){v[u[t]]=i.margin}return v}function k{if(i.hide){c.style.display="block";c.style.opacity=0;a.utils.fadeTo(c,i.out,0.1,parseFloat(c.style.opacity));n=setTimeout(function{g},i.timeout*1000)}}function g{if(i.hide){a.utils.fadeTo(c,0,0.1,parseFloat(c.style.opacity))}}function s(t){if(t.newstate==a.api.events.state.BUFFERING){clearTimeout(n);k}}return this}})(jwplayer);(function(a){var c={ended:a.api.events.state.IDLE,playing:a.api.events.state.PLAYING,pause:a.api.events.state.PAUSED,buffering:a.api.events.state.BUFFERING};var b=a.utils.css;a.html5.mediavideo=function(f,F){var J={abort:t,canplay:m,canplaythrough:m,durationchange:q,emptied:t,ended:m,error:l,loadeddata:q,loadedmetadata:q,loadstart:m,pause:m,play:M,playing:m,progress:B,ratechange:t,seeked:m,seeking:m,stalled:m,suspend:m,timeupdate:M,volumechange:t,waiting:m,canshowcurrentframe:t,dataunavailable:t,empty:t,load:e,loadedfirstframe:t};var K=new a.html5.eventdispatcher;a.utils.extend(this,K);var h=f;var x=F;var G;var I;var d=a.api.events.state.IDLE;var C=null;var n;var g=0;var A=false;var r=false;var O;var N;var i=[];var P;var E=false;function v{return d}function e(Q){}function t(Q){}function m(Q){if(c[Q.type]){s(c[Q.type])}}function s(Q){if(E){return}if(n){Q=a.api.events.state.IDLE}if(Q==a.api.events.state.PAUSED&&d==a.api.events.state.IDLE){return}if(Q==a.api.events.state.PLAYING&&d==a.api.events.state.IDLE){s(a.api.events.state.BUFFERING);K.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER,{bufferPercent:h.buffer});z;return}if(d!=Q){var R=d;h.state=Q;d=Q;var S=false;if(Q==a.api.events.state.IDLE){p;if(h.position>=h.duration&&(h.position>0||h.duration>0)){S=true}if(x.style.display!="none"&&!h.config.chromeless){x.style.display="none"}}K.sendEvent(a.api.events.JWPLAYER_PLAYER_STATE,{oldstate:R,newstate:Q});if(S){K.sendEvent(a.api.events.JWPLAYER_MEDIA_COMPLETE)}}n=false}function q(Q){var R={height:Q.target.videoHeight,width:Q.target.videoWidth,duration:Math.round(Q.target.duration*10)/10};if(h.duration===0||isNaN(h.duration)){h.duration=Math.round(Q.target.duration*10)/10}h.playlist[h.item]=a.utils.extend(h.playlist[h.item],R);K.sendEvent(a.api.events.JWPLAYER_MEDIA_META,{metadata:R})}function M(R){if(n){return}if(R!==undefined&&R.target!==undefined){if(h.duration===0||isNaN(h.duration)){h.duration=Math.round(R.target.duration*10)/10}if(!A&&x.readyState>0){s(a.api.events.state.PLAYING)}if(d==a.api.events.state.PLAYING){if(!A&&x.readyState>0){A=true;try{x.currentTime=h.playlist[h.item].start}catch(Q){}x.volume=h.volume/100;x.muted=h.mute}h.position=Math.round(R.target.currentTime*10)/10;K.sendEvent(a.api.events.JWPLAYER_MEDIA_TIME,{position:R.target.currentTime,duration:R.target.duration})}}B(R)}function z{if(G===false&&d==a.api.events.state.BUFFERING){K.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER_FULL);G=true}}function H{var Q=(i[i.length-1]-i[0])/i.length;P=setTimeout(function{if(!I){B({lengthComputable:true,loaded:1,total:1})}},Q*10)}function B(S){var R,Q;if(S!==undefined&&S.lengthComputable&&S.total){o;R=S.loaded/S.total*100;Q=R/100*(h.duration-x.currentTime);if(50<R&&!I){clearTimeout(P);H}}else{if((x.buffered!==undefined)&&(x.buffered.length>0)){maxBufferIndex=0;if(maxBufferIndex>=0){R=x.buffered.end(maxBufferIndex)/x.duration*100;Q=x.buffered.end(maxBufferIndex)-x.currentTime}}}z;if(!I){if(R==100&&I===false){I=true}if(R!==null&&(R>h.buffer)){h.buffer=Math.round(R);K.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER,{bufferPercent:Math.round(R)})}}}function w{if(C===null){C=setInterval(function{M},100)}}function p{clearInterval(C);C=null}function l(S){var R="There was an error: ";if((S.target.error&&S.target.tagName.toLowerCase=="video")||S.target.parentNode.error&&S.target.parentNode.tagName.toLowerCase=="video"){var Q=S.target.error===undefined?S.target.parentNode.error:S.target.error;switch(Q.code){case Q.MEDIA_ERR_ABORTED:R="You aborted the video playback: ";break;case Q.MEDIA_ERR_NETWORK:R="A network error caused the video download to fail part-way: ";break;case Q.MEDIA_ERR_DECODE:R="The video playback was aborted due to a corruption problem or because the video used features your browser did not support: ";break;case Q.MEDIA_ERR_SRC_NOT_SUPPORTED:R="The video could not be loaded, either because the server or network failed or because the format is not supported: ";break;default:R="An unknown error occurred: ";break}}else{if(S.target.tagName.toLowerCase=="source"){N--;if(N>0){return}R="The video could not be loaded, either because the server or network failed or because the format is not supported: "}else{a.utils.log("Erroneous error received. Continuing...");return}}u;R+=j;E=true;K.sendEvent(a.api.events.JWPLAYER_ERROR,{error:R});return}function j{var S="";for(var R in O.levels){var Q=O.levels[R];var T=x.ownerDocument.createElement("source");S+=a.utils.getAbsolutePath(Q.file);if(R<(O.levels.length-1)){S+=", "}}return S}this.getDisplayElement=function{return x};this.play=function{if(d!=a.api.events.state.PLAYING){if(x.style.display!="block"){x.style.display="block"}x.play;w;if(G){s(a.api.events.state.PLAYING)}}};this.pause=function{x.pause;s(a.api.events.state.PAUSED)};this.seek=function(Q){if(!(h.duration===0||isNaN(h.duration))&&!(h.position===0||isNaN(h.position))){x.currentTime=Q;x.play}};function u{x.pause;x.removeAttribute("src");var Q=x.getElementsByTagName("source");for(var R=0;R<Q.length;R++){x.removeChild(Q[R])}if(typeof x.load=="function"){x.load}p;h.position=0;n=true;s(a.api.events.state.IDLE)}this.stop=u;this.volume=function(Q){x.volume=Q/100;h.volume=Q;K.sendEvent(a.api.events.JWPLAYER_MEDIA_VOLUME,{volume:Math.round(Q)})};this.mute=function(Q){x.muted=Q;h.mute=Q;K.sendEvent(a.api.events.JWPLAYER_MEDIA_MUTE,{mute:Q})};this.resize=function(R,Q){if(false){b(x,{width:R,height:Q})}K.sendEvent(a.api.events.JWPLAYER_MEDIA_RESIZE,{fullscreen:h.fullscreen,width:R,hieght:Q})};this.fullscreen=function(Q){if(Q===true){this.resize("100%","100%")}else{this.resize(h.config.width,h.config.height)}};this.load=function(Q){L(Q);K.sendEvent(a.api.events.JWPLAYER_MEDIA_LOADED);G=false;I=false;A=false;if(!h.config.chromeless&&!r){i=[];o;s(a.api.events.state.BUFFERING);setTimeout(function{M},25)}};function o{var Q=new Date.getTime;i.push(Q)}this.hasChrome=function{return r};function L(Q){switch(Q.provider){case"youtube":k(Q);break;default:D(Q,document.createElement("video"));break}}function D(X,V){h.duration=X.duration;r=false;O=X;V.preload="none";V.setAttribute("x-webkit-airplay","allow");E=false;N=0;for(var R=0;R<X.levels.length;R++){var Q=X.levels[R];var S;var W=a.utils.extension(Q.file);if(Q.type===undefined){if(a.utils.extensionmap[W]!==undefined&&a.utils.extensionmap[W].html5!==undefined){S=a.utils.extensionmap[W].html5}}else{S=Q.type}if(!S||V.canPlayType(S)||(a.utils.isLegacyAndroid&&W.match(/m4v|mp4/))){var U=x.ownerDocument.createElement("source");U.src=a.utils.getAbsolutePath(Q.file);if(S&&!a.utils.isLegacyAndroid){U.type=S}N++;V.appendChild(U)}}if(N===0){E=true;K.sendEvent(a.api.events.JWPLAYER_ERROR,{error:"The media could not be loaded because the format is not supported by your browser: "+j})}if(h.config.chromeless){V.poster=a.utils.getAbsolutePath(X.image);V.controls="controls"}V.style.top=x.style.top;V.style.left=x.style.left;V.style.width=x.style.width;V.style.height=x.style.height;V.style.zIndex=x.style.zIndex;V.onload=e;V.volume=0;x.parentNode.replaceChild(V,x);V.id=x.id;x=V;for(var T in J){x.addEventListener(T,function(Y){if(Y.target.parentNode!==null){J[Y.type](Y)}},true)}}function k(Q){var Y=Q.levels[0].file;var T=document.createElement("object");Y=["http://www.youtube.com/v/",y(Y),"&amp;hl=en_US&amp;fs=1&autoplay=1"].join("");var W={movie:Y,allowFullScreen:"true",allowscriptaccess:"always"};for(var S in W){var R=document.createElement("param");R.name=S;R.value=W[S];T.appendChild(R)}var X=document.createElement("embed");var U={src:Y,type:"application/x-shockwave-flash",allowscriptaccess:"always",allowfullscreen:"true",width:document.getElementById(f.id).style.width,height:document.getElementById(f.id).style.height};for(var V in U){X[V]=U[V]}T.appendChild(X);T.style.position=x.style.position;T.style.top=x.style.top;T.style.left=x.style.left;T.style.width=document.getElementById(f.id).style.width;T.style.height=document.getElementById(f.id).style.height;T.style.zIndex=2147483000;x.parentNode.replaceChild(T,x);T.id=x.id;x=T;r=true}function y(R){var Q=R.split(/\?|\#\!/);var T="";for(var S=0;S<Q.length;S++){if(Q[S].substr(0,2)=="v="){T=Q[S].substr(2)}}if(T==""){if(R.indexOf("/v/")>=0){T=R.substr(R.indexOf("/v/")+3)}else{if(R.indexOf("youtu.be")>=0){T=R.substr(R.indexOf("youtu.be/")+9)}else{T=R}}}if(T.indexOf("?")>-1){T=T.substr(0,T.indexOf("?"))}if(T.indexOf("&")>-1){T=T.substr(0,T.indexOf("&"))}return T}this.embed=L;return this}})(jwplayer);(function(jwplayer){var _configurableStateVariables=["width","height","start","duration","volume","mute","fullscreen","item","plugins","stretching"];jwplayer.html5.model=function(api,container,options){var _api=api;var _container=container;var _model={id:_container.id,playlist:[],state:jwplayer.api.events.state.IDLE,position:0,buffer:0,config:{width:480,height:320,item:-1,skin:undefined,file:undefined,image:undefined,start:0,duration:0,bufferlength:5,volume:90,mute:false,fullscreen:false,repeat:"none",stretching:jwplayer.utils.stretching.UNIFORM,autostart:false,debug:undefined,screencolor:undefined}};var _media;var _eventDispatcher=new jwplayer.html5.eventdispatcher;var _components=["display","logo","controlbar","dock"];jwplayer.utils.extend(_model,_eventDispatcher);for(var option in options){if(typeof options[option]=="string"){var type=/color$/.test(option)?"color":null;options[option]=jwplayer.utils.typechecker(options[option],type)}var config=_model.config;var path=option.split(".");for(var edge in path){if(edge==path.length-1){config[path[edge]]=options[option]}else{if(config[path[edge]]===undefined){config[path[edge]]={}}config=config[path[edge]]}}}for(var index in _configurableStateVariables){var configurableStateVariable=_configurableStateVariables[index];_model[configurableStateVariable]=_model.config[configurableStateVariable]}var pluginorder=_components.concat([]);if(_model.plugins!==undefined){if(typeof _model.plugins=="string"){var userplugins=_model.plugins.split(",");for(var userplugin in userplugins){if(typeof userplugins[userplugin]=="string"){pluginorder.push(userplugins[userplugin].replace(/^\s+|\s+$/g,""))}}}}if(typeof _model.config.chromeless=="undefined"&&jwplayer.utils.isIOS){_model.config.chromeless=true}if(_model.config.chromeless){pluginorder=["logo"];if(_model.config.repeat===undefined||_model.config.repeat=="none"){_model.config.repeat="list"}}_model.plugins={order:pluginorder,config:{},object:{}};if(typeof _model.config.components!="undefined"){for(var component in _model.config.components){_model.plugins.config[component]=_model.config.components[component]}}for(var pluginIndex in _model.plugins.order){var pluginName=_model.plugins.order[pluginIndex];var pluginConfig=_model.config[pluginName]===undefined?{}:_model.config[pluginName];_model.plugins.config[pluginName]=_model.plugins.config[pluginName]===undefined?pluginConfig:jwplayer.utils.extend(_model.plugins.config[pluginName],pluginConfig);if(typeof _model.plugins.config[pluginName].position=="undefined"){_model.plugins.config[pluginName].position=jwplayer.html5.view.positions.OVER}else{_model.plugins.config[pluginName].position=_model.plugins.config[pluginName].position.toString.toUpperCase}}if(typeof _model.plugins.config.dock!="undefined"){if(typeof _model.plugins.config.dock!="object"){var position=_model.plugins.config.dock.toString.toUpperCase;_model.plugins.config.dock={position:position}}if(typeof _model.plugins.config.dock.position!="undefined"){_model.plugins.config.dock.align=_model.plugins.config.dock.position;_model.plugins.config.dock.position=jwplayer.html5.view.positions.OVER}}_model.loadPlaylist=function(arg,ready){var input;if(typeof arg=="string"){try{input=eval(arg)}catch(err){input=arg}}else{input=arg}var config;switch(jwplayer.utils.typeOf(input)){case"object":config=input;break;case"array":config={playlist:input};break;default:config={file:input};break}_model.playlist=new jwplayer.html5.playlist(config);if(_model.config.shuffle){_model.item=_getShuffleItem}else{if(_model.config.item>=_model.playlist.length){_model.config.item=_model.playlist.length-1}else{if(_model.config.item<0){_model.config.item=0}}_model.item=_model.config.item}if(!ready){_eventDispatcher.sendEvent(jwplayer.api.events.JWPLAYER_PLAYLIST_LOADED,{playlist:_model.playlist})}_model.setActiveMediaProvider(_model.playlist[_model.item])};function _getShuffleItem{var result=null;if(_model.playlist.length>1){while(result===null){result=Math.floor(Math.random*_model.playlist.length);if(result==_model.item){result=null}}}else{result=0}return result}function forward(evt){if(evt.type==jwplayer.api.events.JWPLAYER_MEDIA_LOADED){_container=_media.getDisplayElement}_eventDispatcher.sendEvent(evt.type,evt)}_model.setActiveMediaProvider=function(playlistItem){if(_media!==undefined){_media.resetEventListeners}_media=new jwplayer.html5.mediavideo(_model,_container);_media.addGlobalListener(forward);if(_model.config.chromeless){_media.load(playlistItem)}return true};_model.getMedia=function{return _media};_model.seek=function(pos){_eventDispatcher.sendEvent(jwplayer.api.events.JWPLAYER_MEDIA_SEEK,{position:_model.position,offset:pos});return _media.seek(pos)};_model.setupPlugins=function{for(var plugin in _model.plugins.order){try{var pluginName=_model.plugins.order[plugin];if(jwplayer.html5[pluginName]!==undefined){_model.plugins.object[pluginName]=new jwplayer.html5[pluginName](_api,_model.plugins.config[pluginName])}else{_model.plugins.order.splice(plugin,plugin+1)}}catch(err){jwplayer.utils.log("Could not setup "+pluginName)}}};return _model}})(jwplayer);(function(a){a.html5.playlist=function(b){var d=[];if(b.playlist&&b.playlist instanceof Array&&b.playlist.length>0){for(var c in b.playlist){if(!isNaN(parseInt(c))){d.push(new a.html5.playlistitem(b.playlist[c]))}}}else{d.push(new a.html5.playlistitem(b))}return d}})(jwplayer);(function(b){b.html5.playlistitem=function(d){var e={author:"",date:"",description:"",image:"",link:"",mediaid:"",tags:"",title:"",provider:"",file:"",streamer:"",duration:-1,start:0,currentLevel:-1,levels:[]};var c=b.utils.extend({},e,d);if(c.type){c.provider=c.type;delete c.type}if(c.levels.length===0){c.levels[0]=new b.html5.playlistitemlevel(c)}if(!c.provider){c.provider=a(c.levels[0])}else{c.provider=c.provider.toLowerCase}return c};function a(e){if(b.utils.isYouTube(e.file)){return"youtube"}else{var f=b.utils.extension(e.file);var c;if(f&&b.utils.extensionmap[f]){c=b.utils.extensionmap[f].html5}else{if(e.type){c=e.type}}if(c){var d=c.split("/")[0];if(d=="audio"){return"sound"}else{if(d=="video"){return d}}}}return""}})(jwplayer);(function(a){a.html5.playlistitemlevel=function(b){var d={file:"",streamer:"",bitrate:0,width:0};for(var c in d){if(b[c]!==undefined){d[c]=b[c]}}return d}})(jwplayer);(function(a){a.html5.skin=function{var b={};var c=false;this.load=function(d,e){new a.html5.skinloader(d,function(f){c=true;b=f;e},function{new a.html5.skinloader("",function(f){c=true;b=f;e})})};this.getSkinElement=function(d,e){if(c){try{return b[d].elements[e]}catch(f){a.utils.log("No such skin component / element: ",[d,e])}}return null};this.getComponentSettings=function(d){if(c){return b[d].settings}return null};this.getComponentLayout=function(d){if(c){return b[d].layout}return null}}})(jwplayer);(function(a){a.html5.skinloader=function(f,n,i){var m={};var c=n;var j=i;var e=true;var h;var l=f;var q=false;function k{if(typeof l!="string"||l===""){d(a.html5.defaultSkin.xml)}else{a.utils.ajax(a.utils.getAbsolutePath(l),function(r){try{if(r.responseXML!==null){d(r.responseXML);return}}catch(s){}d(a.html5.defaultSkin.xml)},function(r){d(a.html5.defaultSkin.xml)})}}function d(w){var C=w.getElementsByTagName("component");if(C.length===0){return}for(var F=0;F<C.length;F++){var A=C[F].getAttribute("name");var z={settings:{},elements:{},layout:{}};m[A]=z;var E=C[F].getElementsByTagName("elements")[0].getElementsByTagName("element");for(var D=0;D<E.length;D++){b(E[D],A)}var x=C[F].getElementsByTagName("settings")[0];if(x!==undefined&&x.childNodes.length>0){var I=x.getElementsByTagName("setting");for(var N=0;N<I.length;N++){var O=I[N].getAttribute("name");var G=I[N].getAttribute("value");var v=/color$/.test(O)?"color":null;m[A].settings[O]=a.utils.typechecker(G,v)}}var J=C[F].getElementsByTagName("layout")[0];if(J!==undefined&&J.childNodes.length>0){var K=J.getElementsByTagName("group");for(var u=0;u<K.length;u++){var y=K[u];m[A].layout[y.getAttribute("position")]={elements:[]};for(var M=0;M<y.attributes.length;M++){var B=y.attributes[M];m[A].layout[y.getAttribute("position")][B.name]=B.value}var L=y.getElementsByTagName("*");for(var t=0;t<L.length;t++){var r=L[t];m[A].layout[y.getAttribute("position")].elements.push({type:r.tagName});for(var s=0;s<r.attributes.length;s++){var H=r.attributes[s];m[A].layout[y.getAttribute("position")].elements[t][H.name]=H.value}if(m[A].layout[y.getAttribute("position")].elements[t].name===undefined){m[A].layout[y.getAttribute("position")].elements[t].name=r.tagName}}}}e=false;p}}function p{clearInterval(h);if(!q){h=setInterval(function{o},100)}}function b(w,v){var u=new Image;var r=w.getAttribute("name");var t=w.getAttribute("src");var y;if(t.indexOf("data:image/png;base64,")===0){y=t}else{var s=a.utils.getAbsolutePath(l);var x=s.substr(0,s.lastIndexOf("/"));y=[x,v,t].join("/")}m[v].elements[r]={height:0,width:0,src:"",ready:false};u.onload=function(z){g(u,r,v)};u.onerror=function(z){q=true;p;j};u.src=y}function o{for(var r in m){if(r!="properties"){for(var s in m[r].elements){if(!m[r].elements[s].ready){return}}}}if(e===false){clearInterval(h);c(m)}}function g(r,t,s){m[s].elements[t].height=r.height;m[s].elements[t].width=r.width;m[s].elements[t].src=r.src;m[s].elements[t].ready=true;p}k}})(jwplayer);(function(a){a.html5.api=function(b,l){var k={};var f=document.createElement("div");b.parentNode.replaceChild(f,b);f.id=b.id;k.version=a.version;k.id=f.id;var j=new a.html5.model(k,f,l);var h=new a.html5.view(k,f,j);var i=new a.html5.controller(k,f,j,h);k.skin=new a.html5.skin;k.jwPlay=function(m){if(typeof m=="undefined"){e}else{if(m.toString.toLowerCase=="true"){i.play}else{i.pause}}};k.jwPause=function(m){if(typeof m=="undefined"){e}else{if(m.toString.toLowerCase=="true"){i.pause}else{i.play}}};function e{if(j.state==a.api.events.state.PLAYING||j.state==a.api.events.state.BUFFERING){i.pause}else{i.play}}k.jwStop=i.stop;k.jwSeek=i.seek;k.jwPlaylistItem=i.item;k.jwPlaylistNext=i.next;k.jwPlaylistPrev=i.prev;k.jwResize=i.resize;k.jwLoad=i.load;function g(m){return function{return j[m]}}function d(m,o,n){return function{var p=j.plugins.object[m];if(p&&p[o]&&typeof p[o]=="function"){p[o].apply(p,n)}}}k.jwGetItem=g("item");k.jwGetPosition=g("position");k.jwGetDuration=g("duration");k.jwGetBuffer=g("buffer");k.jwGetWidth=g("width");k.jwGetHeight=g("height");k.jwGetFullscreen=g("fullscreen");k.jwSetFullscreen=i.setFullscreen;k.jwGetVolume=g("volume");k.jwSetVolume=i.setVolume;k.jwGetMute=g("mute");k.jwSetMute=i.setMute;k.jwGetStretching=g("stretching");k.jwGetState=g("state");k.jwGetVersion=function{return k.version};k.jwGetPlaylist=function{return j.playlist};k.jwGetPlaylistIndex=k.jwGetItem;k.jwAddEventListener=i.addEventListener;k.jwRemoveEventListener=i.removeEventListener;k.jwSendEvent=i.sendEvent;k.jwDockSetButton=function(p,m,n,o){if(j.plugins.object.dock&&j.plugins.object.dock.setButton){j.plugins.object.dock.setButton(p,m,n,o)}};k.jwShowControlbar=d("controlbar","show");k.jwHideControlbar=d("controlbar","hide");k.jwShowDock=d("dock","show");k.jwHideDock=d("dock","hide");k.jwShowDisplay=d("display","show");k.jwHideDisplay=d("display","hide");k.jwGetLevel=function{};k.jwGetBandwidth=function{};k.jwGetLockState=function{};k.jwLock=function{};k.jwUnlock=function{};function c(o,n,m){return function{o.loadPlaylist(o.config,true);o.setupPlugins;n.setup(o.getMedia.getDisplayElement);var p={id:k.id,version:k.version};m.sendEvent(a.api.events.JWPLAYER_READY,p);if(playerReady!==undefined){playerReady(p)}if(window[o.config.playerReady]!==undefined){window[o.config.playerReady](p)}o.sendEvent(a.api.events.JWPLAYER_PLAYLIST_LOADED,{playlist:o.playlist});m.item(o.item)}}if(j.config.chromeless){setTimeout(c(j,h,i),25)}else{k.skin.load(j.config.skin,c(j,h,i))}return k}})(jwplayer)}; /* End JW Player*/

/*BEGIN UTC CLOCK*/

/** additional monobook scripts **/ hookEvent( 'load', displayTimer );

/**** function displayTimer.js * by Patrick Westerhoff [poke] */ function displayTimer { if ( typeof( timerDisplay ) !== 'undefined' && timerDisplay === false ) return; var date; var timerParent = document.getElementById( 'p-personal' ).getElementsByTagName( 'ul' )[0]; var timerLink  = document.createElement( 'a' ); var timerObj   = document.createElement( 'li' ); timerLink.href              = '/wiki/' + wgPageName + '?action=purge'; timerLink.title             = 'Purge the server cache and update the contents of this page.' timerObj.id                 = 'pt-timer'; timerObj.style.textTransform = 'none'; timerObj.appendChild( timerLink ); timerParent.insertBefore( timerObj, timerParent.firstChild ); function actualizeUTC {   timerDate           = new Date; timerLink.innerHTML = ( timerDate.getUTCHours  < 10 ? '0' : '' ) + timerDate.getUTCHours   + ':' + ( timerDate.getUTCMinutes < 10 ? '0' : '' ) + timerDate.getUTCMinutes + ':' + ( timerDate.getUTCSeconds < 10 ? '0' : '' ) + timerDate.getUTCSeconds + ' (UTC)'; } function actualizeCustom {   timerDate           = new Date; timerDate.setMinutes( timerDate.getMinutes + timerDate.getTimezoneOffset + timerTimezone * 60 ); timerLink.innerHTML = ( timerDate.getHours  < 10 ? '0' : '' ) + timerDate.getHours   + ':' + ( timerDate.getMinutes < 10 ? '0' : '' ) + timerDate.getMinutes + ':' + ( timerDate.getSeconds < 10 ? '0' : '' ) + timerDate.getSeconds + ' (UTC' + ( timerTimezone < 0 ? '' : '+' ) + timerTimezone + ')'; } // start if ( typeof( timerTimezone ) !== 'number' ) {   actualizeUTC; setInterval( actualizeUTC, 1000 ); } else {   actualizeCustom; setInterval( actualizeCustom, 1000 ); } } /*END UTC CLOCK*/

/* BEGIN SPOILER TOGGLER */ var spoilers = { enabled: true, text: null, nodes: null, imgOn: null, imgOff: null, toggle: function { spoilers.set(!spoilers.enabled); },	set: function(enabled) { spoilers.enabled = enabled; if(enabled) { spoilers.nodes.removeClass('spoiler-inline'); $(".spoiler-thumb").remove; spoilers.nodes.find("img").show; $.cookie('spoilers', 'true', {expires: 31, path: '/'}); spoilers.text.text(' Spoilers on'); spoilers.imgOff.hide(0); spoilers.imgOn.show(0); } else { spoilers.nodes.addClass('spoiler-inline'); spoilers.nodes.find("img").hide; spoilers.thumbNodes.each(function { if($(this).find(".spoiler-text").length > 0) { $(this).find(".thumb, .thumbinner").append(' ');} }); $.cookie('spoilers', 'false', {expires: 31, path: '/'}); spoilers.text.text(' Spoilers off'); spoilers.imgOn.hide(0); spoilers.imgOff.show(0); }	},	init: function { spoilers.nodes = $('.spoiler-text'); spoilers.thumbNodes = $(".gallerybox, .thumb"); spoilers.text = $(' '); spoilers.imgOn = $('<img alt="" style="display:none;"/>').attr('src', 'http://portal.biringa.com/images/2/2b/Wheatley_spoils_you.png'); spoilers.imgOff = $('<img alt="" style="display:none;"/>').attr('src', 'http://portal.biringa.com/images/e/ef/Wheatley_spoils_nothing.png'); var wrapped = $('<li/>').append($(' ').append($('').append(spoilers.imgOn, spoilers.imgOff, spoilers.text))); wrapped.click(spoilers.toggle); $('#p-namespaces ul').append(wrapped); spoilers.set(!$.cookie('spoilers') || $.cookie('spoilers') == 'true'); } }; $(spoilers.init); /* END SPOILER TOGGLER */

// EmbedVideo fixes var youtubeHelper = { chromeSize: 25, // This is the height (in pixels) of the chrome of YouTube's embedded video player. Update this whenever they release a new embedded video player maxWidth: 0.85, // Maximum fraction of the available width that the video may take infoboxes: ['.infobox', '.testchamber'], // Selectors of infobox-style boxes that should be deducted from the page's available width ratioR: /ratio-(\d+)x(\d+)/i, widthsR: /widths((?:\D+\d+)+)/i, setSize:function { var widths = youtubeHelper.widthsR.exec($(this).attr('class')); if(widths != null) { widths = widths[1].substr(1).split(/\D+/g); var availableWidth = $('#bodyContent').width; for(var i in youtubeHelper.infoboxes) { if($(youtubeHelper.infoboxes[i]).length) { availableWidth -= $(youtubeHelper.infoboxes[i]).width; }			}			availableWidth *= youtubeHelper.maxWidth; var intWidths = []; for(var w = 0; w < widths.length; w++) { intWidths[w] = parseInt(widths[w]); }			intWidths.sort(function(a, b){return b - a;}); for(var w = 0; w < intWidths.length; w++) { if(intWidths[w] <= availableWidth || w == intWidths.length-1) { youtubeHelper.setWidth(this, intWidths[w]); break; }			}		}		else { youtubeHelper.setWidth(this, parseFloat(obj.attr('width'))); }	},	setUrl:function { var obj = $(this).children('object'); if(!obj) return; obj.append($('<param name="allowscriptaccess" value="true"> ')); obj.append($('<param name="allowfullscreen" value="true"> ')); var titleParts = wgPageName.split(/\//g); var lang = 'en'; if(titleParts.length == 2 && !wgCanonicalSpecialPageName) { lang = titleParts[titleParts.length-1]; }		var playerUrl = obj.children('param[name="movie"]').attr('value') + '&fs=1&theme=dark&color=white' + ($(this).hasClass('hd-on') ? '&hd=1' : '') + '&cc_load_policy=1&hl=' + lang + '&cc_lang_pref=' + lang; obj.children('param[name="movie"]').attr('value', playerUrl); obj.children('embed').attr('src', playerUrl).attr('allowscriptaccess', 'always').attr('allowfullscreen', 'true'); var resultHtml = $(this).html; $(this).html('').html(resultHtml); },	setWidth:function(youtube, width) { var obj = $(youtube).children('object'); if(!obj) return; if($(youtube).hasClass('youtube-audio')) { obj.attr('width', width).attr('height', youtubeHelper.chromeSize); // Set height obj.children('embed').attr('width', width).attr('height', youtubeHelper.chromeSize); // Set height }		else { var ratio = youtubeHelper.ratioR.exec($(youtube).attr('class')); if(ratio != null) { ratio = parseFloat(ratio[1])/parseFloat(ratio[2]); var newHeight = Math.round(width / ratio + youtubeHelper.chromeSize).toString; obj.attr('width', width).attr('height', newHeight); // Set height obj.children('embed').attr('width', width).attr('height', newHeight); // Set height }		}	},	resizeTimer:null, resize:function { if(youtubeHelper.resizeTimer != null) { clearTimeout(youtubeHelper.resizeTimer); }		youtubeHelper.resizeTimer = setTimeout(youtubeHelper.onResize, 100); },	onResize:function { $('.youtubebox').each(youtubeHelper.setSize); },	init:function { $('.youtubebox').each(youtubeHelper.setUrl); $(window).resize(youtubeHelper.resize); youtubeHelper.onResize; } }; $(youtubeHelper.init);

// Start overly-complicated collapsible tables // Todo: jQuery this thing /** Collapsible tables ********************************************************* * *  Description: Allows tables to be collapsed, showing only the header. See *              NavFrame. * Maintainers: User:R. Koot */ var hasClass = (function {    var reCache = {};    return function (element, className) {        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);   }; });

var autoCollapse = 2; var collapseCaption = "hide"; var expandCaption = "show"; function collapseTable( tableIndex ) {    var Button = document.getElementById( "collapseButton" + tableIndex ); var Table = document.getElementById( "collapsibleTable" + tableIndex ); if ( !Table || !Button ) { return false; }    var Rows = Table.rows; if ( Button.firstChild.data == collapseCaption ) { for ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = "none"; }        Button.firstChild.data = expandCaption; } else { for ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = Rows[0].style.display; }        Button.firstChild.data = collapseCaption; } } function createCollapseButtons {    var tableIndex = 0; var NavigationBoxes = new Object; var Tables = document.getElementsByTagName( "table" ); for ( var i = 0; i < Tables.length; i++ ) { if ( hasClass( Tables[i], "collapsible" ) ) { /* only add button and increment count if there is a header row to work with */ var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0]; if (!HeaderRow) continue; var Header = HeaderRow.getElementsByTagName( "th" )[0]; if (!Header) continue; NavigationBoxes[ tableIndex ] = Tables[i]; Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex ); var Button    = document.createElement( "span" ); var ButtonLink = document.createElement( "a" ); var ButtonText = document.createTextNode( collapseCaption ); Button.style.styleFloat = "right"; Button.style.cssFloat = "right"; Button.style.fontWeight = "normal"; Button.style.textAlign = "right"; Button.style.width = "6em"; ButtonLink.style.color = Header.style.color; ButtonLink.setAttribute( "id", "collapseButton" + tableIndex ); ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" ); ButtonLink.appendChild( ButtonText ); Button.appendChild( document.createTextNode( "[" ) ); Button.appendChild( ButtonLink ); Button.appendChild( document.createTextNode( "]" ) ); Header.insertBefore( Button, Header.childNodes[0] ); tableIndex++; }    }     for ( var i = 0;  i  \n';				if (obj.focusLine.plain != ) {					obj.changed.plain = '\n' + obj.changed.plain + '\n';				}			}			else {				obj.changed.plain = '\n{| class="wikitable" border="1"\n|+ ' + wikEd.config.text['table caption'] + ' \n! ' + wikEd.config.text['table heading'] + ' !! ' + wikEd.config.text['table heading'] + ' \n|-\n| ' + wikEd.config.text['table cell'] + ' || ' + wikEd.config.text['table cell'] + ' \n|-\n| ' + wikEd.config.text['table cell'] + ' || ' + wikEd.config.text['table cell'] + ' \n|}\n';				if (obj.focusLine.plain != ) {					obj.changed.plain = '\n' + obj.changed.plain + '\n';				}			}			break;

// wikify: always done above case 'wikEdWikify': break;

// textify: strip html from pasted content case 'wikEdTextify': wikEd.Textify(obj.changed); if (parameters == 'shift') { highlightNoTimeOut = true; }			break;

// redirect case 'wikEdRedirect': var linkTarget; if (obj.selection.plain != '') { linkTarget = obj.selection.plain; }			else if (obj.selectionWord.plain != '') { linkTarget = obj.selectionWord.plain; }			else { linkTarget = ' ' + wikEd.config.text['redirect article link'] + ' '; }

// remove link text after | linkTarget = linkTarget.replace(/\|(.|\n)*/, '');

// remove formatting and spaces linkTarget = linkTarget.replace(/^(=+|'+|<[^>]*>|\s+|\[)+((.|\n)*?)(=+|'+|<[^>]*>|\s+|\])+$/g, '$2'); linkTarget = linkTarget.replace(/&lt;/g, '<'); linkTarget = linkTarget.replace(/&gt;/g, '>'); linkTarget = linkTarget.replace(/\s+/g, ' '); linkTarget = linkTarget.replace(/^\s+|\s+$/g, '');

obj.changed.plain = '#REDIRECT ' + linkTarget + '';

// append to summary if (wikEd.wikiGlobals.wgUseAutomaticEditSummaries != true) { if (wikEd.inputElement.summary != null) { if ( (obj.selection.plain != ) || (obj.selectionWord.plain != ) ) { wikEd.inputElement.summary.value = wikEd.inputElement.summary.value.replace(/#REDIRECT( \[\^\*\]\])?(, *)?/g, ''); wikEd.inputElement.summary.value = wikEd.AppendToSummary(wikEd.inputElement.summary.value, '#REDIRECT ' + linkTarget + ''); }					else { wikEd.inputElement.summary.value = wikEd.AppendToSummary(wikEd.inputElement.summary.value, '#REDIRECT'); }				}			}			selectChanged = false; break;

// find and replace case 'wikEdFindPrev': case 'wikEdFindNext': case 'wikEdJumpPrev': case 'wikEdJumpNext': case 'wikEdReplacePrev': case 'wikEdReplaceNext': case 'wikEdFindAll': case 'wikEdReplaceAll':

// get the find text var findText;

// unescape <, >, and & obj.changed.plain = obj.changed.plain.replace(/&lt;/g, '<'); obj.changed.plain = obj.changed.plain.replace(/&gt;/g, '>'); obj.changed.plain = obj.changed.plain.replace(/&amp;/g, '&');

// copy selection/word under cursor to find field if ( (parameters == 'shift') && ( (buttonId == 'wikEdFindNext') || (buttonId == 'wikEdReplaceNext') ) ) { if (/\n/.test(obj.changed.plain) == false) { if (buttonId == 'wikEdFindNext') { wikEd.inputElement.find.value = obj.changed.plain; }					else { wikEd.inputElement.replace.value = obj.changed.plain; }					obj.changed.keepSel = true; obj.changed.plain = null; break; }			}

// get the find text from the selection if ( (buttonId == 'wikEdJumpPrev') || (buttonId == 'wikEdJumpNext') ) { findText = obj.changed.plain; if (obj.selection.plain == '') { obj.changed.keepSel = true; obj.changed.plain = null; break; }			}

// get the find text from the find field else { if (wikEd.inputElement.find.value != '') { findText = wikEd.inputElement.find.value; }				else { obj.changed.plain = null; break; }			}

// get button status var regExpChecked = wikEd.GetAttribute(wikEd.regExp, 'checked'); var caseSensitiveChecked = wikEd.GetAttribute(wikEd.caseSensitive, 'checked');

// get the replace text var replaceText = wikEd.inputElement.replace.value;

// format the find and replace texts for a plain text search var useRegExp = true; if ( (regExpChecked == 'false') || (buttonId == 'wikEdJumpPrev') || (buttonId == 'wikEdJumpNext') ) { useRegExp = false; }

// format the replace text for a regular expression search if ( (buttonId == 'wikEdReplacePrev') || (buttonId == 'wikEdReplaceNext') || (buttonId == 'wikEdReplaceAll') ) { if (useRegExp == true) {

// substitute \\ \n \r \t \' \" \127 \x1f \u12ef					replaceText = replaceText.replace(/\\\\/g, '\x00');					replaceText = replaceText.replace(/\\n/g, '\n');					replaceText = replaceText.replace(/\\r/g, '\r');					replaceText = replaceText.replace(/\\t/g, '\t');					replaceText = replaceText.replace(/\\'/g, '\'');					replaceText = replaceText.replace(/\\"/g, '\"');

replaceText = replaceText.replace(/\\([0-7]{3})/g,						function(p, p1) {							return(String.fromCharCode(parseInt(p1, 8)));						}					); replaceText = replaceText.replace(/\\x([0-9a-fA-F]{2})/g,						function(p, p1) {							return(String.fromCharCode(parseInt(p1, 16)));						}					); replaceText = replaceText.replace(/\\u([0-9a-fA-F]{4})/g,						function(p, p1) {							return(String.fromCharCode(parseInt(p1, 16)));						}					); replaceText = replaceText.replace(/\x00/g, '\\'); }			}

// check the regexp var replacedFlag = false; var regExpFind; if (				(buttonId == 'wikEdReplacePrev') || (buttonId == 'wikEdReplaceNext') || (buttonId == 'wikEdReplaceAll') ||				(buttonId == 'wikEdFindPrev') || (buttonId == 'wikEdFindNext') || (buttonId == 'wikEdFindAll')			) { var regExpFindText = findText; if (useRegExp != true){ regExpFindText = regExpFindText.replace(/([\\^$*+?.\[\]{}:=!|,\-])/g, '\\$1'); }				var regExpFlags = 'gm'; if (caseSensitive != true) { regExpFlags += 'i'; }				try { regExpFind = new RegExp(regExpFindText, regExpFlags); }				catch (err) { return; }			}

// replace all if (buttonId == 'wikEdReplaceAll') { if (regExpFind.test(obj.changed.plain)) { obj.changed.plain = obj.changed.plain.replace(regExpFind, replaceText); replacedFlag = true; }				else { obj.changed.plain = null; }			}

// replace an existing selection else if ( (buttonId == 'wikEdReplacePrev') || (buttonId == 'wikEdReplaceNext') ) { if (regExpFind.test(obj.selection.plain)) { var replaced = obj.selection.plain.replace(regExpFind, replaceText); if (obj.changed.plain != replaced) { obj.changed.plain = replaced; replacedFlag = true; }					else { obj.changed.plain = null; }				}				else { obj.changed.plain = null; }			}

else if (				(buttonId == 'wikEdFindPrev') || (buttonId == 'wikEdFindNext') ||				(buttonId == 'wikEdJumpPrev') || (buttonId == 'wikEdJumpNext')			) { obj.changed.plain = null; }

if (				(buttonId == 'wikEdFindPrev') || (buttonId == 'wikEdFindNext') ||				(buttonId == 'wikEdJumpPrev') || (buttonId == 'wikEdJumpNext') ||				(buttonId == 'wikEdReplacePrev') || (buttonId == 'wikEdReplaceNext') ||				(buttonId == 'wikEdFindAll')			) { if (replacedFlag == false) {

// get direction var backwards = false; if ( (buttonId == 'wikEdFindPrev') || (buttonId == 'wikEdJumpPrev') || (buttonId == 'wikEdReplacePrev') ) { backwards = true; }

// get case sensitive var caseSensitive = false; if (caseSensitiveChecked == 'true') { caseSensitive = true; }

// find all if (buttonId == 'wikEdFindAll') { var found; var foundRanges = [];

// start at top of text wikEd.RemoveAllRanges(obj.sel); var range = wikEd.frameDocument.createRange; if (wikEd.frameBody.firstChild != null) { range.setStartBefore(wikEd.frameBody.firstChild); }						range.collapse(true); range = obj.sel.addRange(range);

// cycle through matches var scrollTop = wikEd.frameBody.scrollTop; do {

// wikEd.Find(obj, findText, caseSensitive, backwards, wrap, useRegExp) found = wikEd.Find(obj, findText, caseSensitive, false, false, useRegExp); if (found == true) { foundRanges.push(obj.changed.range.cloneRange); }						} while (found == true);

// scroll back if (regExpChecked == 'false') { wikEd.frameBody.scrollTop = scrollTop; }

// add the found ranges, Webkit does not support multiple selections wikEd.RemoveAllRanges(obj.sel); for (var i = 0; i < foundRanges.length; i ++) { obj.sel.addRange(foundRanges[i]); }						obj.changed.plain = null; selectChanged = false; }

// normal find else { obj.selectChanged = selectChanged; wikEd.Find(obj, findText, caseSensitive, backwards, true, useRegExp); selectChanged = obj.selectChanged; }				}			}

// escape <, >, and & if (obj.changed.plain != null) { obj.changed.plain = obj.changed.plain.replace(/&/g, '&amp;'); obj.changed.plain = obj.changed.plain.replace(/</g, '&lt;'); obj.changed.plain = obj.changed.plain.replace(/>/g, '&gt;'); }

// save search history to settings if ( (buttonId == 'wikEdFindPrev') || (buttonId == 'wikEdFindNext') || (buttonId == 'wikEdFindAll') ) { wikEd.AddToHistory('find'); }			if ( (buttonId == 'wikEdReplacePrev') || (buttonId == 'wikEdReplaceNext') || (buttonId == 'wikEdReplaceAll') ) { wikEd.AddToHistory('find'); wikEd.AddToHistory('replace'); }			obj.changed.keepSel = true; break;

// fixbasic: fix characters, spaces, empty lines, certain headings, needed for all fixing functions // to do: only certain changes in multiline tags: comments, tables, subst case 'wikEdFixBasic': wikEd.FixBasic(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixPunct': wikEd.FixPunct(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixMath': wikEd.FixMath(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixChem': wikEd.FixChem(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixUnicode': wikEd.FixUnicode(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixRedirect': wikEd.FixRedirectCall(obj.changed); return; case 'wikEdFixRedirectReplace': wikEd.FixRedirectReplace(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixUnits': wikEd.FixUnits(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixDashes': wikEd.FixDashes(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixHtml': wikEd.FixHTML(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixRegExTypo': if ( (wikEd.config.regExTypoFix == true) && (wikEd.typoRulesFind.length > 0) ) { wikEd.FixTypos(obj.changed); }			else { obj.changed.plain = null; }			obj.changed.keepSel = true; break; case 'wikEdFixCaps': wikEd.FixCaps(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixAll': wikEd.FixAll(obj.changed); obj.changed.keepSel = true; break;

// source on		case 'wikEdSource': obj.changed.plain = obj.changed.code; obj.changed.plain = obj.changed.plain.replace(/(<(br|p)\b.*?>)/g, '$1\n\n'); obj.changed.plain = obj.changed.plain.replace(/&/g, '&amp;'); obj.changed.plain = obj.changed.plain.replace(/</g, '&lt;'); obj.changed.plain = obj.changed.plain.replace(/>/g, '&gt;'); highlightSyntax = false; break;

// insert tags case 'wikEdInsertTags': var tagOpen = parameters[0] || ''; var tagClose = parameters[1] || ''; var sampleText = parameters[2] || ''; tagOpen = tagOpen.replace(/&/g, '&amp;'); tagOpen = tagOpen.replace(/</g, '&lt;'); tagOpen = tagOpen.replace(/>/g, '&gt;'); tagClose = tagClose.replace(/&/g, '&amp;'); tagClose = tagClose.replace(/</g, '&lt;'); tagClose = tagClose.replace(/>/g, '&gt;'); tagsampleText = sampleText.replace(/&/g, '&amp;'); tagsampleText = sampleText.replace(/</g, '&lt;'); tagsampleText = sampleText.replace(/>/g, '&gt;');

// single string to insert if ( (tagOpen.length > 0) && (tagClose.length == 0) && (sampleText.length == 0) ) { obj.changed = obj.cursor; obj.changed.plain = tagOpen; }

// opening and closing strings else if ( (obj.changed.plain == '') && (sampleText.length > 0) ) { obj.changed.plain = tagOpen + sampleText + tagClose;

// select sample text selectChangedText = sampleText; obj.changed.keepSel = true; }			else { obj.changed.plain = tagOpen + obj.changed.plain + tagClose; }			break;

// convert wiki tables to html // case 'wikEdTablify': obj.changed.keepSel = true; if (wikEd.tableMode == true) { wikEd.WikiTableToHtml(obj.changed); }			break;

// update text view using current control button settings // case 'wikEdUpdateAll': obj.changed.keepSel = true; if (parameters != null) { if (parameters.keepSel == false) { obj.changed.keepSel = false; }			}			break;

// custom edit functions default: if (CustomHandler != null) { CustomHandler(obj); }			else { alert('Unknown edit function \ + buttonId + '\); }			break; }

// pause frame spellchecking var pauseFrameSpellchecking = false; var frameSpellchecking = wikEd.frameBody.spellcheck; if (frameSpellchecking == true) { var wholeLength = 0; var changedLength = 0; if (obj.whole != null) { if (obj.whole.plain != null) { wholeLength = obj.whole.plain.length; }		}		if (obj.changed.plain != null) { changedLength = obj.changed.plain.length; }		if ( (changedLength > 10000) || (wholeLength > 10000) ) { pauseFrameSpellchecking = true; wikEd.frameBody.spellcheck = false; }	}

// get the scroll position var frameScrollTop = wikEd.frameBody.scrollTop; var frameScrollLeft = wikEd.frameBody.scrollLeft;

// update the selection ranges, do not add any text changes if (obj.changed.plain == null) { if (buttonId != 'wikEdFindAll') { wikEd.RemoveAllRanges(obj.sel); obj.sel.addRange(obj.changed.range);

// scroll the selected text into the viewport if (selectChanged != false) { wikEd.ScrollToSelection; }		}	}

// apply text changes else {

// a text change erases the last version for redo all if ( (buttonId != 'wikEdUndo') && (buttonId != 'wikEdRedo') && (buttonId != 'wikEdUndoAll') ) { wikEd.lastVersion = null; }

// highlight the syntax obj.html = obj.changed.plain; if (highlightSyntax == true) { if (obj.changed.from == 'whole') { obj.whole = true; }			wikEd.HighlightSyntax(obj, highlightNoTimeOut); }

// at least highlight tab characters else { obj.html = obj.html.replace(/(\t)/g, ' $1 '); }

// display multiple blanks as blank- obj.html = obj.html.replace(/(^|\n) /g, '$1 '); obj.html = obj.html.replace(/ (\n|$)/g, ' $1'); obj.html = obj.html.replace(/ {2}/g, ' '); obj.html = obj.html.replace(/ {2}/g, ' ');

// newlines to 		obj.html = obj.html.replace(/\n/g, ' ');

// make changed range text the current selection wikEd.RemoveAllRanges(obj.sel); var range = obj.changed.range; obj.sel.addRange(range);

// replace the selection with changed text // Opera 9.50beta bug: inserthtml removes blanks and generates consecutive text nodes if (obj.html != '') { var reselectBefore = ''; var reselectAfter = ''; if (obj.changed.from != 'whole') { wikEd.insertCounter ++; reselectBefore = '<span class="wikEdScrollBefore" id="wikEdScrollBefore' + wikEd.insertCounter + '"> '; reselectAfter = '<span class="wikEdScrollAfter" id="wikEdScrollAfter' + wikEd.insertCounter + '"> '; }			wikEd.FrameExecCommand('inserthtml', reselectBefore + obj.html + reselectAfter); }		else if (obj.sel.isCollapsed == false) { wikEd.FrameExecCommand('delete'); }

// select the whole text after replacing the whole text and scroll to same height if (obj.changed.from == 'whole') { wikEd.RemoveAllRanges(obj.sel); wikEd.frameBody.scrollTop = frameScrollTop; var range = wikEd.frameDocument.createRange; range.setStartBefore(wikEd.frameBody.firstChild); range.setEndAfter(wikEd.frameBody.lastChild); obj.sel.addRange(range); selectChanged = false; }

// select the changed text and scroll it into the viewport else if (selectChanged != false) { wikEd.RemoveAllRanges(obj.sel); var range = wikEd.frameDocument.createRange; var startNodeReselect = wikEd.frameDocument.getElementById('wikEdScrollBefore' + wikEd.insertCounter); var endNodeReselect = wikEd.frameDocument.getElementById('wikEdScrollAfter' + wikEd.insertCounter); range.setStartAfter(startNodeReselect); // should be range.setEndAfter, but that causes caret at start of next line due to https://bugzilla.mozilla.org/show_bug.cgi?id=587461 range.setEndBefore(endNodeReselect); obj.sel.addRange(range); wikEd.ScrollToNodes(startNodeReselect, endNodeReselect); }	}

// remove selection, keep whole text auto-selection as warning if (		( (obj.changed.keepSel != true) && (obj.changed.from != 'whole') ) ||		(obj.changed.keepSel == false) ||		(buttonId == 'wikEdRedirect') ||		( (buttonId == 'wikEdWikify') && (parameters == 'whole') )	) { if (obj.sel.rangeCount == 0) { obj.sel.collapse(wikEd.frameBody, 0); }		else { obj.sel.collapseToEnd; }

// focus edit area to continue editing as there is no selection that would be overwritten wikEd.frameWindow.focus; }

// reset button to active, reset cursor if (buttonObj != null) { if (buttonObj.className != 'wikEdButtonInactive') { buttonObj.className = 'wikEdButton'; }		buttonObj.style.cursor = 'auto'; }

// grey out inactive buttons wikEd.InactiveButtons;

// add event handlers to unhide refs and templates if ( (highlightSyntax == true) && (obj.changed.plain != null) ) {

// add ref and template names to hide buttons wikEd.HighlightNamedHideButtons;

// add event handlers to unhide refs and templates wikEd.HideAddHandlers;

// add event handlers to make highlighted frame links ctrl-clickable wikEd.LinkifyAddHandlers; }

// resume frame spellchecking if (pauseFrameSpellchecking == true) { wikEd.frameBody.spellcheck = true; }

return; };

// // wikEd.LocalPreviewAjaxHandler: process the returned article preview //

wikEd.LocalPreviewAjaxHandler = function(ajax) {

wikEd.previewIsAjax = true;

// get response var html = ajax.responseText;

// livepreview if (html.indexOf(' ') != -1) { html = html.replace(/\s*<\/livepreview>\s*/, ''); html = html.replace(/\s*<\/preview>\s*/, ''); html = html.replace(/&lt;/g, '<'); html = html.replace(/&gt;/g, '>'); html = html.replace(/&quot;/g, '"');		html = html.replace(/&apos;/g, '\);		html = html.replace(/&amp;/g, '&');		html = html.replace(/(.|\n)*<div class=("|')previewnote("|')>(.|\n)*?<\/div>/, );	}

// full preview page else {

// attach stylesheet declarations to document (GeSHi) var regExpMatch; var regExp = /<style\b[^>]*?type="text\/css">((.|\n)*?)<\/style>/gi; while ( (regExpMatch = regExp.exec(html)) != null) { var css = regExpMatch[2]; var stylesheet = new wikEd.StyleSheet(document); stylesheet.AddCSSRules(css); }

// get preview html html = wikEd.StringGetInnerHTML(html, 'div', 'id', 'wikiPreview', true); html = wikEd.StringGetInnerHTML(html, 'div', 'class', 'previewnote', true, false, true); html = html.replace(//g, ''); html = html.replace(/\s+$/g, ''); }

// clean form elements html = html.replace(/<\/?form\b[^>]*>/g, ''); html = html.replace(/(<\/?input\b[^>]*?)\bname="search"([^>]*>)/g, '$1$2');

// remove cite errors for automatic section preview refs html = html.replace(/(<div\b[^>]*?\bclass="wikEdPreviewRefs"[^>]*>(.|\s)*$)/,		function (p, p1, p2) {			p1 = p1.replace(/<strong\b[^>]*?\bclass="error"[^>]*>(.|\s)*?<\/strong>/g, '');			return(p1);		}	); wikEd.previewBox.innerHTML = html;

// init sortable tables (wikibits.js) if (typeof(sortables_init) == 'function') { sortables_init; }

// init collapsible tables (common.js) if (typeof(createCollapseButtons) == 'function') { createCollapseButtons; }

// scroll to button, textarea, or preview field wikEd.ScrollToPreview;

// run scheduled custom functions wikEd.ExecuteHook(wikEd.config.previewHook);

return; };

// // wikEd.FilePreviewAjaxHandler: process the returned image addresses //

wikEd.FilePreviewAjaxHandler = function(ajax) {

// get response var html = ajax.responseText;

// html-ize html = html.replace(/\s*<\/preview>\s*/, ''); html = html.replace(/\s*<\/livepreview>\s*/, ''); html = html.replace(/&lt;/g, '<'); html = html.replace(/&gt;/g, '>'); html = html.replace(/&amp;/g, '&'); html = html.replace(/&quot;/g, '"');	html = html.replace(/&apos;/g, '\'');	html = html.replace(/<\/?(br|p)\b.*?>/g, '\n');

// parse response into file url cache var regExpFile = new RegExp('\\n((Image|File|' + wikEd.config.text['wikicode Image'] + '|' + wikEd.config.text['wikicode File'] + '):[^ ]+) +(\\d+) +(.*)', 'ig'); var regExpMatch; while ( (regExpMatch = regExpFile.exec(html)) != null) { var file = regExpMatch[1]; var filePreviewSize = regExpMatch[3]; var links = regExpMatch[4]; var fileObj = {}; var regExpMatch; if ( (regExpMatch = /\bsrc="(.+?)"/.exec(links)) != null) { fileObj.url = regExpMatch[1]; if ( (regExpMatch = /\bwidth="(\d+)"/.exec(links)) != null) { fileObj.width = parseInt(regExpMatch[1]); }			if ( (regExpMatch = /\bheight="(\d+)"/.exec(links)) != null) { fileObj.height = parseInt(regExpMatch[1]); }		}		else { fileObj.url = wikEd.config.image['noFile']; fileObj.width = 16; fileObj.height = 16; }		wikEd.filePreviewCache['wikEd' + file + filePreviewSize] = fileObj; }

// cycle through file preview spans and add missing images as background for (var i = 0; i < wikEd.filePreviewNo; i ++) { if (wikEd.filePreviewIds[i] != '') { var span = wikEd.frameDocument.getElementById('wikEdFilePreview' + i); var fileNameSize = wikEd.filePreviewIds[i]; var fileObj = wikEd.filePreviewCache['wikEd' + fileNameSize]; if (fileObj != null) { span.style.backgroundImage = 'url(' + fileObj.url + ')'; if (fileObj.height != null) { span.style.height = fileObj.height + 'px'; }				if (fileObj.width != null) { span.style.width = fileObj.width + 'px'; }				span.style.display = 'block'; }			wikEd.filePreviewIds[i] = ''; }	}

return; };

// // wikEd.DiffResponse: calculate calculate and linkify the diff between two versions (code copied to wikEdDiff.js) //

wikEd.DiffResponse = function(oldVersion, newVersion) {

// add trailing newline if (oldVersion.substr(oldVersion.length - 1, 1) != '\n') { oldVersion += '\n'; }	if (newVersion.substr(newVersion.length - 1, 1) != '\n') { newVersion += '\n'; }

// call external diff program var diffText = WDiffString(oldVersion, newVersion); if (wikEd.config.fullDiff != true) { diffText = WDiffShortenOutput(diffText); }

// linkify blockwise with breaks at delete and block move tags var diffTextLinkified = ''; var regExp = /<span\b[^>]+?\bclass="wDiffHtml(Delete|Block)"[^>]*>/g; var regExpMatch; var pos = 0; while ( (regExpMatch = regExp.exec(diffText)) != null) { diffTextLinkified += wikEd.DiffLinkify(diffText.substring(pos, regExpMatch.index)) + regExpMatch[0]; pos = regExp.lastIndex; }	diffTextLinkified += wikEd.DiffLinkify(diffText.substr(pos));

return(diffTextLinkified); };

// // wikEd.DiffLinkify: linkify external links and wikilinks in diffed text as  anchor elements (code copied to wikEdDiff.js) //

wikEd.DiffLinkify = function(html) {

// &lt; &gt; to \x00 \x01 html = html.replace(/&lt;/g, '\x00'); html = html.replace(/&gt;/g, '\x01');

// external links html = html.replace(/\b(((https?|ftp|irc|gopher):\/\/)|news:|mailto:)([^\x00-\x20\s"\[\]\x7f\|\{\}<>]|<[^>]*>)+?(?=([\!"\(\)\.\,\:\;\‘-•]*\s|[\x00-\x20\s"\[\]\x7f\|\{\}]))/gi,		function (p) {			var whole = p;

var title = whole; title = title.replace(/\x00!--.*?--\x01/g, ''); title = title.replace(/.*--\x01|\x00!--.*/g, ''); title = title.replace(/<.*?>/g, ''); title = title.replace(/^.*>|<.*$/g, ''); title = title.replace(/^\s+|\s+$/g, ''); title = decodeURI(title);

var url = title.replace(/\s/g, '_'); url = encodeURI(url); url = url.replace(/"/g, '%22');			url = url.replace(/'/g, '%27');			url = url.replace(/#/g, '%23');

var linkTitle = title.replace(/"/g, '&quot;');

// linkify all url text fragments between highlighting s seperately var anchorOpen = ''; var anchorClose = '</a>'; whole = whole.replace(/(<[^>]*>)/g, anchorClose + '$1' + anchorOpen); return(anchorOpen + whole + anchorClose); }	);

// linkify links and templates if ( (wikEd.wikiGlobals.wgServer != null) && (wikEd.wikiGlobals.wgArticlePath != null) ) {

//                  1  text       3   1 4 {{ 5title        56                6 4 html = html.replace(/(\[\[([^|\[\]{}\n]+)(\|[^\[\]{}<>]*)?\]\])|(\{\{([^|\[\]{}\n]*)([^\[\]{}<>]*\}\})?)/g,		function (p, p1, p2, p3, p4, p5, p6) {				var articleName = p2 || ;				var templateName = p5 || ;				var whole = p;

// extract title var title = articleName; if (title == '') { title = templateName; }				title = title.replace(/\x00!--.*?--\x01/g, ''); title = title.replace(/.*--\x01|\x00!--.*/g, ''); title = title.replace(/<.*?>/g, ''); title = title.replace(/^.*>|<.*$/g, ''); title = title.replace(/^\s+|\s+$/g, '');

// /subpage refers to a subpage of the current page, to a section of the current page if ( (title.indexOf('/') == 0) || (title.indexOf('#') == 0) ) { title = wikEd.pageName + title; }

// create url var url = title.replace(/\s/g, '_'); url = encodeURI(url); url = url.replace(/"/g, '%22');				url = url.replace(/'/g, '%27');				url = url.replace(/#/g, '%23');				var articleTitle = title.replace(/"/g, '&quot;'); if (templateName != '') { if (/:/.test(title) == false) { url = 'Template:' + url; articleTitle = 'Template:' + articleTitle; }				}				url = wikEd.wikiGlobals.wgServer + wikEd.wikiGlobals.wgArticlePath.replace(/\$1/, url);

// linkify all text fragments between highlighting s seperately var anchorOpen = ''; var anchorClose = '</a>'; whole = whole.replace(/(<[^>]*>)/g, anchorClose + '$1' + anchorOpen); return(anchorOpen + whole + anchorClose); }		);	}

// \x00 and \x01 back to &lt; and &gt; html = html.replace(/\x00/g, '&lt;'); html = html.replace(/\x01/g, '&gt;');

return(html); };

// // wikEd.StringGetInnerHTML: get innerHTML of element from html in a string; can also get text before or after node //

wikEd.StringGetInnerHTML = function(html, tag, attrib, value, defaultToWholeHTML, getBeforeHTML, getAfterHTML) {

var startPos; var startLength; var endPos; var endLength; var level = 0; var string = ''; var regExpMatch;

var attribValue = ''; if (attrib != '') { attribValue = '[^>]*?' + attrib + '\\s*=\\s*("|\\\')?' + value + '\\1';	}	var regExpStart = new RegExp('<' + tag + '\\b' + attribValue + '[^>]*?>', 'gi');	if ( (regExpMatch = regExpStart.exec(html)) != null) {		startPos = regExpMatch.index;		startLength = regExpMatch[0].length;		var regExpParse = new RegExp('<(\\/?)' + tag + '\\b.*?>', 'g');		regExpParse.lastIndex = startPos;		while ( (regExpMatch = regExpParse.exec(html)) != null) {			if (regExpMatch[1] == '') {				level ++;			}			else {				level --;				if (level == 0) {					endPos = regExpMatch.index;					endLength = regExpMatch[0].length;					break;				}			}		}	}

// return whole html if node does not exist if (endPos == null) { if (defaultToWholeHTML == true) { string = html; }	}

// return text before node else if (getBeforeHTML == true) { string = html.substr(0, startPos); }

// return text after node else if (getAfterHTML == true) { string = html.substr(endPos + endLength); }

// return innerHTML of node else { string = html.substring(startPos + startLength, endPos); }

return(string); };

// // wikEd.ScrollToPreview: scroll to edit buttons, textarea, or preview field depending on current position //

wikEd.ScrollToPreview = function {

// reset fixed height to auto wikEd.previewBox.style.height = 'auto';

var scrollOffset = window.pageYOffset || document.body.scrollTop; var inputOffset = wikEd.GetOffsetTop(wikEd.inputWrapper); var editOffset = wikEd.GetOffsetTop(wikEd.editWrapper); var submitOffset = 0; if (wikEd.saveButton != null) { submitOffset = wikEd.GetOffsetTop(wikEd.saveButton); }	else if (wikEd.previewButton != null) { submitOffset = wikEd.GetOffsetTop(wikEd.previewButton); }	else if (wikEd.diffPreviewButton != null) { submitOffset = wikEd.GetOffsetTop(wikEd.diffPreviewButton); }	var editHeight = wikEd.editWrapper.clientHeight;

if (scrollOffset > submitOffset) { window.scroll(0, submitOffset); }	else if (scrollOffset > (editHeight / 2 + editOffset) ) { window.scroll(0, submitOffset); }	else if (scrollOffset > editOffset) { window.scroll(0, editOffset); }	else { window.scroll(0, inputOffset); }	return; };

// // wikEd.LinkifyAddHandlers: register click handlers to make highlighted frame links ctrl-clickable (linkify) //

wikEd.LinkifyAddHandlers = function {

if (wikEd.config.linkify != true) { return; }

// much faster than individual getElementById in SeaMonkey 1.1.18 var spans = wikEd.frameDocument.getElementsByTagName('span'); for (var i = 0; i < spans.length; i ++) { var spanId = spans[i].id; if (spanId != null) { if (spanId.indexOf('wikEdLinkify') == 0) { wikEd.AddEventListener(spans[i], 'click', wikEd.LinkifyHandler, true); }		}	}	return; };

// // wikEd.HighlightNamedHideButtons: register :before text for named hiding buttons //

wikEd.HighlightNamedHideButtons = function {

if (wikEd.refHide != true) { return; }

var rules = '';

// references for (var i = 0; i < wikEd.referenceArray.length; i ++) { if (wikEd.referenceArray[i].added == true) { continue; }		rules += '.wikEdRefButton' + i + ' { border: 1px solid; border-color: #e8e8e8 #444 #444 #e8e8e8; background: #d8d4d0; }\n';

rules += '.wikEdRefButtonShow' + i + ' { border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0; }\n';

rules += '.wikEdRefButton' + i + ':before, .wikEdRefButtonShow' + i + ':before { content: "' + wikEd.config.text.hideRef + ' ' + wikEd.referenceArray[i].text + '"; line-height: 0.75em; font-size: 65%; color: #000; font-family: sans-serif; }\n';

wikEd.referenceArray[i].added = true; }

// templates for (var i = 0; i < wikEd.templateArray.length; i ++) { if (wikEd.templateArray[i].added == true) { continue; }		rules += '.wikEdTemplButton' + i + ' { border: 1px solid; border-color: #e8e8e8 #444 #444 #e8e8e8; background: #d8d4d0; }\n';

rules += '.wikEdTemplButtonShow' + i + ' { border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0; }\n';

rules += '.wikEdTemplButton' + i + ':before, .wikEdTemplButtonShow' + i + ':before { content: "' + wikEd.config.text.hideTempl + ' ' + wikEd.templateArray[i].text + '"; line-height: 0.75em; font-size: 65%; color: #000; font-family: sans-serif; }\n';

wikEd.templateArray[i].added = true; }

// character entities for (var i = 0; i < wikEd.charEntityArray.length; i ++) { if (wikEd.charEntityArray[i].added == true) { continue; }		var character = wikEd.charEntityArray[i].text; if (character == '"') {			character = '\\' + character;		}		rules += '.wikEdCharEntityButton' + i + ' { border: 1px solid; border-color: #e8e8e8 #444 #444 #e8e8e8; background: #d8d4d0; border-color: rgba(255, 255, 255, 0.75) rgba(64, 64, 64, 0.5)  rgba(64, 64, 64, 0.5) rgba(255, 255, 255, 0.75); background: rgba(192, 192, 192, 0.3); }\n';

rules += '.wikEdCharEntityButtonShow' + i + ' { border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0; border-color: rgba(64, 64, 64, 0.5) rgba(255, 255, 255, 0.75) rgba(255, 255, 255, 0.75) rgba(64, 64, 64, 0.5); background: rgba(192, 192, 192, 0.3); }\n';

rules += '.wikEdCharEntityButton' + i + ':before, .wikEdCharEntityButtonShow' + i + ':before { content: "' + character + '"; }\n';

wikEd.charEntityArray[i].added = true; }

// add or replace existing css rules if (rules != '') { wikEd.HighlightNamedHideButtonsStylesheet.AddCSSRules(rules); }	return; };

// // wikEd.HideAddHandlers: register mouseover handlers for tabs to unhide refs, templates, and character entities //

wikEd.HideAddHandlers = function {

if ( (wikEd.config.hideContent != true) || (wikEd.refHide != true) ) { return; }	var hideButton = wikEd.frameDocument.getElementsByTagName('button'); for (var i = 0; i < hideButton.length; i ++) { var tabClass = hideButton[i].className; if (			(tabClass.indexOf('wikEdRefButton') == 0) ||			(tabClass.indexOf('wikEdTemplButton') == 0) ||			(tabClass.indexOf('wikEdCharEntityButton') == 0)		) { wikEd.AddEventListener(hideButton[i], 'click', wikEd.HideShowHandler, true); if (				(tabClass.indexOf('wikEdRefButtonShow') == -1) &&				(tabClass.indexOf('wikEdTemplButtonShow') == -1) &&				(tabClass.indexOf('wikEdCharEntityButtonShow') == -1)			) { wikEd.AddEventListener(hideButton[i], 'mouseover', wikEd.HideShowHandler, true); }		}	}	return; };

// // wikEd.HideShowHandler: display hidden ref or template on mouse over hide tab //

wikEd.HideShowHandler = function(event) {

// event compatibility fixes event = wikEd.EventWrapper(event, this); if (event == null) { return; }	event.preventDefault;

// find hidden content node var hideTarget; var hideInto; var hideButtonClass; var hideClass; var hideButton; var hideContainer; var hide; if ( (event.type == 'mouseover') || (event.type == 'mouseout') || (event.type == 'click') ) { hideTarget = event.currentTarget; hideInto = event.safeRelatedTarget;

//    text

// target == button if (/^wikEd(Ref|Templ|CharEntity)Button(Show)?\d*$/.test(hideTarget.className) == true) { hideButton = hideTarget; hideContainer = hideButton.parentNode; if (hideContainer != null) { if (/^wikEd(Ref|Templ|CharEntity)Container$/.test(hideContainer.className) == false) { hideContainer = null; }				else {

// get hide text hide = wikEd.GetNextSiblingNode(hideContainer); if (hide != null) { if (/^wikEd(Ref|Templ|TemplNs|CharEntity)(Show)?$/.test(hide.className) == false) { hide = null; }					}				}			}		}

// target == hide text else if (/^wikEd(Ref|Templ|TemplNs|CharEntity)(Show)?$/.test(hideTarget.className) == true) {

hide = hideTarget; hideContainer = wikEd.GetPreviousSiblingNode(hideTarget); if (hideContainer != null) { if (/^wikEd(Ref|Templ|CharEntity)Container$/.test(hideContainer.className) == false) { hideContainer = null; }				else {

// get button hideButton = wikEd.GetFirstChildNode(hideContainer); if (hideButton != null) { if (/^wikEd(Ref|Templ|CharEntity)Button(Show)?\d*$/.test(hideButton.className) == false) { hideButton = null; }					}				}			}		}

if ( (hideContainer == null) || (hideButton == null) || (hide == null) ) { return; }

// get classes hideButtonClass = hideButton.className; hideClass = hide.className; }

// schedule unhide on later shift or ctrl key push if (event.type == 'mouseover') { if (wikEd.config.unhideShift == true) { if ( (event.type == 'mouseover') && (wikEd.config.unhideShift == true) && (event.shiftKey == false) && (event.ctrlKey == false) ) { wikEd.scheduledUnhide = [hide, hideButton]; wikEd.AddEventListener(wikEd.frameDocument, 'keydown', wikEd.HideShowHandler, true); wikEd.AddEventListener(hideButton, 'mouseout', wikEd.HideShowHandler, true); return; }		}	}	// scheduled unhide on shift or ctrl keydown if (event.type == 'keydown') { if ( (wikEd.scheduledUnhide != null) && ( (event.shiftKey == true) || (event.ctrlKey == true) ) ) { hide = wikEd.scheduledUnhide[0]; hideButton = wikEd.scheduledUnhide[1]; hideButtonClass = hideButton.className; hideClass = hide.className; }	}

// open on hover if ( (event.type == 'mouseover') || ( (event.type == 'keydown') && (wikEd.scheduledUnhide != null) ) ) { if (hideButtonClass.indexOf('wikEdRefButton') == 0) { hide.style.display = 'block'; }		else if (hideButtonClass.indexOf('wikEdTemplButton') == 0) { hide.style.display = 'block'; }		else if (hideButtonClass.indexOf('wikEdCharEntity') == 0) { hide.style.display = 'inline'; }		wikEd.RemoveEventListener(hideButton, 'mouseover', wikEd.HideShowHandler, true); wikEd.AddEventListener(hide, 'mouseout', wikEd.HideShowHandler, true); wikEd.AddEventListener(hideButton, 'mouseout', wikEd.HideShowHandler, true); }

// close after hover else if (event.type == 'mouseout') { if ( (hideInto != hideContainer) && (hideInto != hideButton) && (hideInto != hide) ) { if (/^wikEd(Ref|Templ|CharEntity)Button\d*$/.test(hideButton.className) == true) { var hideOut = false; var node = hideInto; while (node != null) { if (node == wikEd.frameBody) { hideOut = true; break; }					if ( (node == hideContainer) || (node == hide) ) { break; }					node = node.parentNode; }				if (hideOut == true) { hide.style.display = 'none'; wikEd.RemoveEventListener(hide, 'mouseout', wikEd.HideShowHandler, true); wikEd.RemoveEventListener(hideButton, 'mouseout', wikEd.HideShowHandler, true); wikEd.AddEventListener(hideButton, 'mouseover', wikEd.HideShowHandler, true);

// move cursor out of hidden text wikEd.UnhideCursor(hideContainer, hide); }			}		}	}

// hide on click else if (event.type == 'click') { if (/^wikEd(Ref|Templ|CharEntity)ButtonShow\d*$/.test(hideButtonClass) == true) { hide.style.display = 'none';

hideButtonClass = hideButtonClass.replace(/Show/, ''); hideClass = hideClass.replace(/Show/, '');

hideButton.className = hideButtonClass; hideButton.title = wikEd.config.text[hideButtonClass.replace(/\d+$/g, '') + 'Tooltip'];

wikEd.AddEventListener(hideButton, 'mouseover', wikEd.HideShowHandler, true);

// move cursor out of hidden text wikEd.UnhideCursor(hideContainer, hide); }

// open on click else if (/^wikEd(Ref|Templ|CharEntity)Button\d*$/.test(hideButtonClass) == true) { if (hideButtonClass.indexOf('wikEdCharEntityButton') == 0) { hide.style.display = 'inline'; }			else { hide.style.display = 'block'; }			hideButtonClass = hideButtonClass.replace(/Button(Show)?/, 'ButtonShow'); hideClass += 'Show'; hideClass = hideClass.replace(/Show/, '') + 'Show';

hideButton.className = hideButtonClass; hideButton.title = wikEd.config.text[hideButtonClass.replace(/\d+$/g, '') + 'Tooltip'];

wikEd.RemoveEventListener(hideButton, 'mouseover', wikEd.HideShowHandler, true); wikEd.RemoveEventListener(hide, 'mouseout', wikEd.HideShowHandler, true); wikEd.RemoveEventListener(hideButton, 'mouseout', wikEd.HideShowHandler, true); }	}	// clear scheduled unhide if (wikEd.scheduledUnhide != null) { wikEd.RemoveEventListener(wikEd.frameDocument, 'keydown', wikEd.HideShowHandler, true); wikEd.scheduledUnhide = null; }

return; };

// // wikEd.UnhideCursor: move cursor out of hidden element for wikEd.HideShowHandler //

wikEd.UnhideCursor = function(firstHiddenParent, lastHiddenParent) {

// get selection and clone range var sel = wikEd.GetSelection; var range = sel.getRangeAt(sel.rangeCount - 1); if (range != null) {

// check if selected text is hidden var startHidden = false; var node = range.startContainer; while (node != null) { if (node == wikEd.frameBody) { break; }			if ( (node == lastHiddenParent) || (node == firstHiddenParent) ) { startHidden = true; break; }			node = node.parentNode; }		var endHidden = false; var node = range.endContainer; while (node != null) { if (node == wikEd.frameBody) { break; }			if ( (node == lastHiddenParent) || (node == firstHiddenParent) ) { endHidden = true; break; }			node = node.parentNode; }

// unselect hidden text if ( (startHidden == false) && (endHidden == true) ) { range.setEndBefore(firstHiddenParent); }		else if ( (startHidden == true) && (endHidden == false) ) { range.setStartAfter(lastHiddenParent); }		else if ( (startHidden == true) && (endHidden == true) ) { range.setEndAfter(lastHiddenParent); range.collapse(false); }	}	return; };

// // wikEd.GetText: get the text fragments to manipulate //

wikEd.GetText = function(obj, whichFragment, wikify) {

// remove dynamically inserted nodes by other scripts wikEd.CleanNodes(wikEd.frameDocument);

// get selection object if (obj.sel == null) { obj.sel = wikEd.GetSelection; }

// cursor for the cursor position (always done) if (obj.cursor == null) { obj.cursor = { 'from': 'cursor', 'keepSel': null, 'plain': '' };

// set cursor range obj.cursor.range = wikEd.frameDocument.createRange; wikEd.SetRangeStart(obj.cursor.range, obj.sel.focusNode, obj.sel.focusOffset); obj.cursor.range.collapse(true); }

// whole for the whole text if (obj.whole == null) { if (/whole|selectionWord|selectionLine|selectionPara|focusWord|focusLine|focusPara/.test(whichFragment) == true) { obj.whole = { 'plainArray': [], 'plainNode': [], 'plainStart': [], 'from': 'whole', 'keepSel': null };

// set whole range obj.whole.range = wikEd.frameDocument.createRange; obj.whole.range.setStart(wikEd.frameBody, 0); obj.whole.range.setEnd(wikEd.frameBody, wikEd.frameBody.childNodes.length);

// get whole plain text wikEd.GetInnerHTML(obj.whole, wikEd.frameBody); obj.whole.code = obj.whole.html; wikEd.RemoveHighlightingWikify(obj.whole, wikify); obj.whole.plain = obj.whole.html; obj.whole.plain = obj.whole.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*/g, '\n'); obj.whole.plain = obj.whole.plain.replace(/\xa0/g, ' '); }	}

// selection for the selected text if (obj.selection == null) { if (/selection\b|selectionWord|selectionLine|selectionPara/.test(whichFragment) == true) { obj.selection = { 'from': 'selection', 'keepSel': null };

// copy range to document fragment if (obj.sel.rangeCount == 0) { obj.sel.collapse(wikEd.frameBody, 0); }			obj.selection.range = obj.sel.getRangeAt(obj.sel.rangeCount - 1); var documentFragment = obj.selection.range.cloneContents;

// get selected text wikEd.GetInnerHTML(obj.selection, documentFragment); obj.selection.code = obj.selection.html; wikEd.RemoveHighlightingWikify(obj.selection, wikify); obj.selection.plain = obj.selection.html; obj.selection.plain = obj.selection.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*/g, '\n'); obj.selection.plain = obj.selection.plain.replace(/\xa0/g, ' '); }	}

// focusWord, focusLine, and focusPara for the word, line, and paragraph under the cursor if (obj.focusWord == null) { if (/focusWord|focusLine|focusPara/.test(whichFragment) == true) { obj.focusWord = { 'from': 'focusWord', 'keepSel': false, 'range': wikEd.frameDocument.createRange, 'tableEdit': obj.tableEdit };

// setup focusLine object for the line under the cursor obj.focusLine = { 'from': 'focusLine', 'keepSel': false, 'range': wikEd.frameDocument.createRange, 'tableEdit': obj.tableEdit };

// setup focusPara object for the paragraph under the cursor obj.focusPara = { 'from': 'focusPara', 'keepSel': false, 'range': wikEd.frameDocument.createRange, 'tableEdit': obj.tableEdit };

// find the word and line boundaries wikEd.FindBoundaries(obj.focusWord, obj.focusLine, obj.focusPara, obj.whole, obj.cursor);

// get the wikified plain text for the word under the cursor var documentFragment = obj.focusWord.range.cloneContents; wikEd.GetInnerHTML(obj.focusWord, documentFragment); obj.focusWord.code = obj.focusWord.html; wikEd.RemoveHighlightingWikify(obj.focusWord, wikify); obj.focusWord.plain = obj.focusWord.html; obj.focusWord.plain = obj.focusWord.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*/g, '\n'); obj.focusWord.plain = obj.focusWord.plain.replace(/\xa0/g, ' ');

// get the wikified plain text for the line under the cursor var documentFragment = obj.focusLine.range.cloneContents; wikEd.GetInnerHTML(obj.focusLine, documentFragment); obj.focusLine.code = obj.focusLine.html; wikEd.RemoveHighlightingWikify(obj.focusLine, wikify); obj.focusLine.plain = obj.focusLine.html; obj.focusLine.plain = obj.focusLine.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*/g, '\n'); obj.focusLine.plain = obj.focusLine.plain.replace(/\xa0/g, ' ');

// get the wikified plain text for the paragraph under the cursor var documentFragment = obj.focusPara.range.cloneContents; wikEd.GetInnerHTML(obj.focusPara, documentFragment); obj.focusPara.code = obj.focusPara.html; wikEd.RemoveHighlightingWikify(obj.focusPara, wikify); obj.focusPara.plain = obj.focusPara.html; obj.focusPara.plain = obj.focusPara.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*/g, '\n'); obj.focusPara.plain = obj.focusPara.plain.replace(/\xa0/g, ' '); }	}

// selectionWord and selectionLine for the complete words and lines under the selection if (obj.selectionWord == null) { if (/selectionWord|selectionLine|selectionPara/.test(whichFragment) == true) {

// setup selectionWord object for the words under the selection obj.selectionWord = { 'from': 'selectionWord', 'keepSel': false, 'range': wikEd.frameDocument.createRange, 'tableEdit': obj.tableEdit };

// setup selectionLine object for the lines under the selection obj.selectionLine = { 'from': 'selectionLine', 'keepSel': false, 'range': wikEd.frameDocument.createRange, 'tableEdit': obj.tableEdit };

// setup focusPara object for the paragraph under the selection obj.selectionPara = { 'from': 'selectionPara', 'keepSel': false, 'range': wikEd.frameDocument.createRange, 'tableEdit': obj.tableEdit };

// find the word and line boundaries wikEd.FindBoundaries(obj.selectionWord, obj.selectionLine, obj.selectionPara, obj.whole, obj.selection);

// get the wikified plain text for the words under the selection var documentFragment = obj.selectionWord.range.cloneContents; wikEd.GetInnerHTML(obj.selectionWord, documentFragment); obj.selectionWord.code = obj.selectionWord.html; wikEd.RemoveHighlightingWikify(obj.selectionWord, wikify); obj.selectionWord.plain = obj.selectionWord.html; obj.selectionWord.plain = obj.selectionWord.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*/g, '\n'); obj.selectionWord.plain = obj.selectionWord.plain.replace(/\xa0/g, ' ');

// get the wikified plain text for the lines under the selection var documentFragment = obj.selectionLine.range.cloneContents; wikEd.GetInnerHTML(obj.selectionLine, documentFragment); obj.selectionLine.code = obj.selectionLine.html; wikEd.RemoveHighlightingWikify(obj.selectionLine, wikify); obj.selectionLine.plain = obj.selectionLine.html; obj.selectionLine.plain = obj.selectionLine.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*/g, '\n'); obj.selectionLine.plain = obj.selectionLine.plain.replace(/\xa0/g, ' ');

// get the wikified plain text for the paragraph under the selection var documentFragment = obj.selectionPara.range.cloneContents; wikEd.GetInnerHTML(obj.selectionPara, documentFragment); obj.selectionPara.code = obj.selectionPara.html; wikEd.RemoveHighlightingWikify(obj.selectionPara, wikify); obj.selectionPara.plain = obj.selectionPara.html; obj.selectionPara.plain = obj.selectionPara.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*/g, '\n'); obj.selectionPara.plain = obj.selectionPara.plain.replace(/\xa0/g, ' '); }	}	return; };

// // wikEd.Find: custom find function with regexp properties, sets obj.changed.range, uses obj ranges //

wikEd.Find = function(obj, findText, caseSensitive, backwards, wrap, useRegExp) {

var found = false;

// get selection if (obj.sel == null) { obj.sel = wikEd.GetSelection; }	if (obj.sel.rangeCount == 0) { obj.sel.collapse(wikEd.frameBody, 0); }	var range = obj.sel.getRangeAt(obj.sel.rangeCount - 1);

if (obj.changed == null) { obj.changed = {}; }	obj.selectChanged = false;

// empty the range to avoid error messages for reverse direction ranges obj.changed.range = wikEd.frameDocument.createRange;

// regexp instead of plain text search for browser lacking .find (Opera), built in .find ignores newlines if (useRegExp != true) { if (typeof(wikEd.frameWindow.find) != 'function') { useRegExp = true; findText = findText.replace(/([\\^$*+?.\[\]{}:=!|,\-])/g, '\\$1'); }	}

// create the regexp var regExpFind; if (useRegExp == true) { var regExpFlags = 'gm'; if (caseSensitive != true) { regExpFlags += 'i'; }		try { regExpFind = new RegExp(findText, regExpFlags); }		catch (err) { return(false); }	}

// use the fast built-in find function for non-regexp searches; Opera does not have .find if (useRegExp != true) {

// parameters: window.find(string, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog) found = wikEd.frameWindow.find(findText, caseSensitive, backwards, wrap, false, true, false); if (found == true) { range = obj.sel.getRangeAt(obj.sel.rangeCount - 1); }		obj.changed.range = range; }

// slow javascript regexp find and replace else {

// perform find if (obj.plainArray === undefined) { wikEd.ParseDOM(obj, wikEd.frameBody); }		var regExpMatch = [];

// find next, search to the right if (backwards == false) {

// set start position for search to right regExpFind.lastIndex = obj.plainFocus;

// execute the regexp search to the right regExpMatch = regExpFind.exec(obj.plain);

// remember position for repeated searches obj.plainFocus = regExpFind.lastIndex;

// wrap around, start at beginning if ( (wrap == true) && (regExpMatch == null) ) { regExpFind.lastIndex = 0; regExpMatch = regExpFind.exec(obj.plain); }		}

// find previous, search to the left else {

// cycle through the matches to the left var regExpMatchNext; do { regExpMatch = regExpMatchNext; regExpMatchNext = regExpFind.exec(obj.plain); if (regExpMatchNext == null) { break; }			} while (regExpMatchNext.index < obj.plainAnchor);

// wrap around, find last occurrence if ( (wrap == true) && (regExpMatch == null) ) { do { regExpMatch = regExpMatchNext; regExpMatchNext = regExpFind.exec(obj.plain); } while (regExpMatchNext != null); }		}

// select the find if (regExpMatch != null) { found = true;

var i = 0; while ( (obj.plainStart[i + 1] <= regExpMatch.index) && (obj.plainStart[i + 1] != null) ) { i ++; }

var j = i;			while ( (obj.plainStart[j + 1] <= regExpMatch.index + regExpMatch[0].length) && (obj.plainStart[j + 1] != null) ) { j ++; }

var startNode = obj.plainNode[i]; var startOffset = regExpMatch.index - obj.plainStart[i]; var endNode = obj.plainNode[j]; var endOffset = regExpMatch.index + regExpMatch[0].length - obj.plainStart[j]; wikEd.SetRange(obj.changed.range, startNode, startOffset, endNode, endOffset); obj.selectChanged = true; }	}	return(found); };

// // wikEd.ScrollToSelection: scroll iframe range into viewport //  for MSIE see http://www.webmasterworld.com/javascript/3820483.htm //  removig helper nodes gives Error: Node was not found = NS_ERROR_DOM_NOT_FOUND_ERR for certain undo actions //  adding nodes breaks the undo history in Chrome and Opera

wikEd.ScrollToSelection = function(frameScrollTop, frameScrollLeft, removeHelperNodes) {

// get selection and clone range var obj = {}; obj.sel = wikEd.GetSelection; if (obj.sel.rangeCount == 0) { return; }

// get selection plain text range = obj.sel.getRangeAt(obj.sel.rangeCount - 1); var documentFragment = range.cloneContents; wikEd.GetInnerHTML(obj, documentFragment); var plainText = obj.plain; plainText = plainText.replace(/&lt;/g, '<'); plainText = plainText.replace(/&gt;/g, '>'); plainText = plainText.replace(/&amp;/g, '&'); plainText = plainText.replace(/\xa0/g, ' ');

// select using backwards built-in find if ( (typeof(wikEd.frameWindow.find) == 'function') && (plainText.length > 0) ) { obj.sel.collapseToEnd;

// Chrome; parameters: wikEd.Find(obj, findText, caseSensitive, backwards, wrap, useRegExp) var found = wikEd.Find(obj, plainText, true, true, false, false);

// Firefox (removes \n), if (found == false) { wikEd.Find(obj, range.toString, true, true, false, false); }

// reinstate original range if it starts or ends with \n or spaces if (/^(\n| )|(\n| )$/.test(plainText) == true) { wikEd.RemoveAllRanges(obj.sel); obj.sel.addRange(range); }	}

// select empty range using backwards built-in find for previous character else if ( (typeof(wikEd.frameWindow.find) == 'function') && (plainText.length == 0) ) { var backwards = true;

// get plain text from start to selection var rangeClone = range.cloneRange; rangeClone.setStartBefore(wikEd.frameBody.firstChild); var documentFragment = rangeClone.cloneContents; wikEd.GetInnerHTML(obj, documentFragment); var plainText = obj.plain; plainText = plainText.replace(/&lt;/g, '<'); plainText = plainText.replace(/&gt;/g, '>'); plainText = plainText.replace(/&amp;/g, '&'); plainText = plainText.replace(/^([\s\S]*?)([^\n]\n*)$/, '$2');

// get plain text from selection to end for potentially less newlines if (plainText.length > 1) { var plainTextBack = plainText; var obj = {};

var rangeClone = range.cloneRange; rangeClone.setEndAfter(wikEd.frameBody.lastChild); var documentFragment = rangeClone.cloneContents; wikEd.GetInnerHTML(obj, documentFragment); var plainText = obj.plain; plainText = plainText.replace(/&lt;/g, '<'); plainText = plainText.replace(/&gt;/g, '>'); plainText = plainText.replace(/&amp;/g, '&'); plainText = plainText.replace(/^(\n*[^\n])([\s\S]*?)$/, '$1');

// backward or forward find if (plainTextBack.length > plainText.length) { backwards = false; }			else { plainText = plainTextBack; }		}

// Chrome; parameters: wikEd.Find(obj, findText, caseSensitive, backwards, wrap, useRegExp) var found = wikEd.Find(obj, plainText, true, backwards, false, false);

// Firefox if ( (found == false) && (/\n/.test(plainText) == true) ) { plainText = plainText.replace(/\n/g, ''); plainText = plainText.replace(/\xa0/g, ' '); wikEd.Find(obj, plainText, true, backwards, false, false); }		if (backwards == true) { obj.sel.collapseToEnd; }		else { obj.sel.collapseToStart; }	}

// use inserted spans as scroll marker, breaks undo history in Chrome and Opera else { var rangeStart = range.cloneRange; var rangeEnd = range.cloneRange;

// spans to be temporarily inserted before and after selection range to get range position wikEd.insertCounter ++; var scrollStartNode = wikEd.frameDocument.createElement('span'); scrollStartNode.className = 'wikEdScrollBefore'; scrollStartNode.id = 'wikEdScrollBefore' + wikEd.insertCounter; var scrollEndNode = wikEd.frameDocument.createElement('span'); scrollEndNode.className = 'wikEdScrollAfter'; scrollEndNode.id = 'wikEdScrollAfter' + wikEd.insertCounter;

// get the range border nodes and offsets var startNode = range.startContainer; var startOffset = range.startOffset; var endNode = range.endContainer; var endOffset = range.endOffset;

var startLength; if (startNode.nodeName == '#text') { startLength = startNode.nodeValue.length; }		var endLength; if (endNode.nodeName == '#text') { endLength = endNode.nodeValue.length; }

// insert end node if (endNode.nodeName == '#text') { if (endOffset == 0) { endNode.parentNode.insertBefore(scrollEndNode, endNode); }			else if (endOffset == endLength - 1) { endNode.parentNode.insertBefore(scrollEndNode, endNode.nextSibling); }			else { rangeEnd.collapse(false); rangeEnd.insertNode(scrollEndNode); }		}		else { var refNode = endNode.childNodes.item(endOffset); endNode.insertBefore(scrollEndNode, refNode); }

// insert start node if (startNode.nodeName == '#text') { if (startOffset == 0) { startNode.parentNode.insertBefore(scrollStartNode, startNode); }			else if (startOffset == startLength - 1) { startNode.parentNode.insertBefore(scrollStartNode, startNode.nextSibling); }			else {

// collapse as a Firefox bug work around; http://stackoverflow.com/questions/665676 rangeStart.collapse(true); rangeStart.insertNode(scrollStartNode); }		}		else { var refNode = startNode.childNodes.item(startOffset); startNode.insertBefore(scrollStartNode, refNode); }

wikEd.ScrollToNodes(scrollStartNode, scrollEndNode);

// set selection range.setStartBefore(scrollStartNode); range.setEndAfter(scrollEndNode); wikEd.RemoveAllRanges(sel); sel.addRange(range); }

return; };

// // wikEd.ScrollToNodes: scroll iframe range into viewport //

wikEd.ScrollToNodes = function(scrollStartNode, scrollEndNode) {

// absolute span for line height detection (Opera and Chrome do not vertically align empty span at bottom) var lineHeightNode = wikEd.frameDocument.createElement('span'); lineHeightNode.innerHTML = ' '; lineHeightNode.className = 'wikEdScrollLineHeight'; scrollEndNode.appendChild(lineHeightNode); lineHeight = lineHeightNode.clientHeight; lineHeightNode.innerHTML = ''; scrollEndNode.removeChild(lineHeightNode);

// scroll to node coordinates scrollStartNode.style.verticalAlign = 'top'; scrollEndNode.style.verticalAlign = 'top'; var startOffsetLeft = wikEd.GetOffsetLeft(scrollStartNode); var startOffsetTop = wikEd.GetOffsetTop(scrollStartNode); var endOffsetRight = wikEd.GetOffsetLeft(scrollEndNode); var endOffsetBottom = wikEd.GetOffsetTop(scrollEndNode); scrollStartNode.style.verticalAlign = 'baseline'; scrollEndNode.style.verticalAlign = 'baseline'; var frameScrollTop = wikEd.frameBody.scrollTop; var frameScrollLeft = wikEd.frameBody.scrollLeft; var x = frameScrollLeft; var y = frameScrollTop;

// current scroll position

// selection above viewport if (endOffsetBottom < frameScrollTop) { y = startOffsetTop; }

// selection below viewport else if (startOffsetTop > frameScrollTop + wikEd.frameBody.clientHeight) { y = endOffsetBottom - wikEd.frameBody.clientHeight + lineHeight; }

// selection left of viewport if (endOffsetRight < frameScrollLeft) { if (endOffsetRight <= wikEd.frameBody.clientWidth) { x = 0; }		else { x = startOffsetLeft; }	}

// selection right of viewport else if (startOffsetLeft > frameScrollLeft + wikEd.frameBody.clientWidth) { x = endOffsetRight - wikEd.frameBody.clientWidth; }

// do scroll wikEd.frameWindow.scrollTo(x, y);

return; };

// // wikEd.WikiTableToHtml: convert wiki tables to html // //

wikEd.WikiTableToHtml = function(obj) {

////	return; };

// // wikEd.Textify: strip html off of text //

wikEd.Textify = function(obj) {

// convert html to plain obj.plain = obj.html; obj.plain = obj.plain.replace(/ \n|\n /g, ' '); obj.plain = obj.plain.replace(/\n/g, ' ');

// delete content tags obj.plain = obj.plain.replace(/<(style|script|object|applet|embed)\b[^>]*>.*?<\/\1>/g, '');

// newlines obj.plain = obj.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*/g, '\n');

// ... to for Safari, Chrome, WebKit if ( (wikEd.safari == true) || (wikEd.chrome == true) || (wikEd.webkit == true) ) { var isRemove = []; obj.plain = obj.plain.replace(/(<(\/?)div\b([^>]*)>)/g,			function (p, p1, p2, p3) {				if (p2 == ) {					if (p3 == ) {						isRemove.push(true);						return('\x00');					}					isRemove.push(false);					return(p1);				}				if (isRemove.pop == true) {					return('\x01');				}				return(p1);			}		); obj.plain = obj.plain.replace(/\x00\n\x01/g, '\x01'); obj.plain = obj.plain.replace(/\x01\n/g, '\x01'); obj.plain = obj.plain.replace(/\n\x00/g, '\x00'); obj.plain = obj.plain.replace(/\x01\x00/g, '\x01'); obj.plain = obj.plain.replace(/^\x00|\x01$/g, ''); obj.plain = obj.plain.replace(/[\x00\x01]/g, '\n'); }

// remove empty lines from block tags obj.plain = obj.plain.replace(/(<(blockquote|center|div|p|pre|gallery)\b[^>]*>)[\s\x00]+/gi, '$1'); obj.plain = obj.plain.replace(/[\s\x00]+(<\/(blockquote|center|div|p|pre|gallery|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references)>)/gi, '$1');

// remove highlighting pre tags var isRemove = []; obj.plain = obj.plain.replace(/(<(\/?)pre\b([^>]*)>)/g,		function (p, p1, p2, p3) {			if (p2 == ) {				if (/\bclass="wikEd[\w\/]+"/.test(p3) == true) {					isRemove.push(true);					return();				}				isRemove.push(false);				return(p1);			}			if (isRemove.pop == true) {				return('');			}			return(p1);		}	);

// blocks obj.plain = obj.plain.replace(/<\/?(address|blockquote|center|div|hr|isindex|p|pre)\b.*?>/g, '\x00\x00');

// keep headings only if starting with a newline obj.plain = obj.plain.replace(/[\s|\x00]*(^|\n|\x00)[\s|\x00]*<h[1-6]\b[^>]*>(.*?)<\/h[1-6]>[\s|\x00]*/g, '\x00\x00$2\x00\x00');

// lists obj.plain = obj.plain.replace(/<\/?(dir|dl|menu|ol|ul)\b.*?>/g, '\x00'); obj.plain = obj.plain.replace(/<\/(dd|dt|li)>/g, '\x00');

// forms obj.plain = obj.plain.replace(/<\/?(select|textarea)\b.*?>/g, '\x00'); obj.plain = obj.plain.replace(/<\/(option|legend|optgroup)>/g, '\x00');

// tables if (wikEd.tableMode == true) {

// override pasted table class // obj.plain = obj.plain.replace(/( '; }						else { insertLeft = ' '; insertRight = ' '; }						break; }				break; case 'block': switch (tag) {

// pushRight instead of insertRight if enclosed text can contain other highlighting, e.g. single character highlighting case 'linkNamespace': insertLeft = ' '; pushRight = ' '; break; case 'linkInter': insertLeft = ' '; pushRight = ' '; break; case 'inlineURL': var url = ''; var regExpMatch; if ( (regExpMatch = /\w\S+/.exec(tagMatch)) != null) { url = regExpMatch[0]; }						insertLeft = '<span class="wikEdURLName" ' + wikEd.HighlightLinkify(, , url) + '>'; pushRight = ' '; break; case 'externalURL': insertLeft = ' '; pushRight = ' '; break; case 'templateModifier': insertLeft = ' '; pushRight = ' '; break; case 'templateNamespace': insertLeft = ' '; pushRight = ' '; break; case 'templateParserFunct': insertLeft = ' '; pushRight = ' '; break; case 'PMID': var idNumber = ''; var regExpMatch; if ( (regExpMatch = /\d+/.exec(tagMatch)) != null) { idNumber = regExpMatch[0]; }						insertLeft = '<span class="wikEdPMID" ' + wikEd.HighlightLinkify(, , 'http://www.ncbi.nlm.nih.gov/pubmed/' + idNumber) + '>'; insertRight = ' '; break; case 'ISBN': var idNumber = ''; var regExpMatch; if ( (regExpMatch = /\d[\s\d\-]+x?/.exec(tagMatch)) != null) { idNumber = regExpMatch[0].replace(/\D/g, ''); }						insertLeft = '<span class="wikEdISBN" ' + wikEd.HighlightLinkify('', 'Special:BookSources/' + idNumber) + '>'; pushRight = ' '; break; case 'RFC': var idNumber = ''; var regExpMatch; if ( (regExpMatch = /\d[\s\d\-]+x?/.exec(tagMatch)) != null) { idNumber = regExpMatch[0].replace(/\D/g, ''); }						insertLeft = '<span class="wikEdISBN" ' + wikEd.HighlightLinkify(, , 'http://tools.ietf.org/html/rfc' + idNumber) + '>'; pushRight = ' '; break; case 'magic': insertLeft = ' '; insertRight = ' '; break; case 'signature': var title = wikEd.config.text['wikEdSignature' + tagLength]; insertLeft = '<span class="wikEdSignature" title="' + title + '">'; insertRight = ' '; break; case 'hr': pushLeft = ' '; pushRight = ' '; break; case 'linkParam': insertLeft = ' '; insertRight = ' '; break; case 'fileParam':

// make text parameters a caption var params = ''; if (pairedTagPos != null) { params = obj.html.substring(tagFrom + 1, parseObj.tree[node.parent].pairedTagPos - 1); }						if (/^\s*(thumb|thumbnail|frame|right|left|center|none|\d+px|\d+x\d+px|link\=.*?|upright|border)\s*(\||$)/.test(params) == true) { insertLeft = ' '; insertRight = ' '; }						else { insertLeft = ' '; insertRight = ' '; }						break; case 'redirect': insertLeft = ' '; pushRight = ' '; break; case 'templateParam': insertLeft = ' '; pushRight = ' '; break; case 'parameterDefault': insertLeft = ' '; insertRight = ' '; break; case 'br'://inlineTag class case 'html': case 'htmlEmpty': insertLeft = ' '; pushRight = ' '; break; case 'htmlUnknown': insertLeft = '<span class="wikEdHtmlUnknown" title="' + wikEd.config.text.wikEdErrorHtmlUnknown + '">'; pushRight = ' '; break; case 'ref': var refName = ''; var regExpMatch; if ( (regExpMatch = /(\bname\s*=\s*('|"))([^\x01]+?)\2/i.exec(tagMatch)) != null) {							refName = regExpMatch[3];							wikEd.HighlightBuildTree('refName', 'block', tagFrom + regExpMatch.index + regExpMatch[1].length, regExpMatch[3].length, parseObj);						}						else if ( (regExpMatch = /(\bname\s*=\s*)(\w+)/i.exec(tagMatch)) != null) {							refName = regExpMatch[2];							wikEd.HighlightBuildTree('refName', 'block', tagFrom + regExpMatch.index + regExpMatch[1].length, regExpMatch[2].length, parseObj);						}						if (wikEd.refHide == true) {							if (refName != '') {								insertLeft = ' <button class="wikEdRefButton' + wikEd.referenceArray.length + '" title="' + wikEd.config.text.wikEdRefButtonTooltip + '"> ';								wikEd.referenceArray.push( {'text': refName + ' ↑', 'added': false} );							}							else {								insertLeft = ' <button class="wikEdRefButton" title="' + wikEd.config.text.wikEdRefButtonTooltip + '"> '; }						}						insertLeft += ' '; pushRight = ' '; break; case 'references': insertLeft = ' '; pushRight = ' '; break; case 'pre': insertLeft = ' '; pushRight = ' '; break; case 'math': insertLeft = ' '; pushRight = ' '; break; case 'nowiki': insertLeft = ' '; pushRight = ' '; break; case 'listTag': insertLeft = ' '; insertRight = ' '; break; case 'preformTag': insertLeft = ' '; insertRight = ' '; break; case 'refName': insertLeft = ' '; pushRight = ' '; break; case 'list': pushLeft = ' '; pushRight = ' '; break; case 'preform': pushLeft = ' '; pushRight = ' '; break; case 'caption': case 'row': case 'header': case 'headerParam': case 'headerSep': case 'cell': /*						if (parseObj.tableMode == true) { var regExpTable = /\| *((\w+ *= *('|")[^\n'"]*\3 *)*)\|\|/gi; regExpTable.lastIndex = tagFrom; var regExpMatch; if ( (regExpMatch = regExpTable.exec(obj.html) ) != null) { if (regExpMatch.index == tagFrom) { var params = regExpMatch[1]; if (params != '') { params += ' '; }									insertLeft = '<table ' + params + ' border="1" class="wikEdTableEdit">'; pushRightPos2 = regExpMatch.index + regExpMatch[0].length; }								else { parseObj.tableMode = false; }							}							else { parseObj.tableMode = false; }						}						if (parseObj.tableMode == false) { insertLeft = ' '; insertRight = ' '; }						break; case 'cellParam': case 'cellSep': insertLeft = ' '; insertRight = ' '; break; case 'colorLight': insertLeft = '<span style="background: ' + tagMatch + '" class="wikEdColorsLight">'; insertRight = ' '; break; case 'colorDark': insertLeft = '<span style="background: ' + tagMatch + '" class="wikEdColorsDark">'; insertRight = ' '; break; case 'colorHex3': var regExpMatch = /([0-9a-f])([0-9a-f])([0-9a-f])/i.exec(tagMatch); if ( (regExpMatch[1] > 255) || (regExpMatch[2] > 255) || (regExpMatch[3] > 255) ) { break; }						var luminance = parseInt(regExpMatch[1], 16) * 16 * 0.299 + parseInt(regExpMatch[2], 16) * 16 * 0.587 + parseInt(regExpMatch[3], 16) * 16 * 0.114; if (luminance > 128) { insertLeft = '<span style="background: ' + tagMatch + '" class="wikEdColorsLight">'; insertRight = ' '; }						else { insertLeft = '<span style="background: ' + tagMatch + '" class="wikEdColorsDark">'; insertRight = ' '; }						break; case 'colorHex6': var regExpMatch = /([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i.exec(tagMatch); if ( (regExpMatch[1] > 255) || (regExpMatch[2] > 255) || (regExpMatch[3] > 255) ) { break; }						var luminance = parseInt(regExpMatch[1], 16) * 0.299 + parseInt(regExpMatch[2], 16) * 0.587 + parseInt(regExpMatch[3], 16) * 0.114; if (luminance > 128) { insertLeft = '<span style="background: ' + tagMatch + '" class="wikEdColorsLight">'; insertRight = ' '; }						else { insertLeft = '<span style="background: ' + tagMatch + '" class="wikEdColorsDark">'; insertRight = ' '; }						break; case 'colorDec': var regExpMatch = /(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/i.exec(tagMatch); if ( (regExpMatch[1] > 255) || (regExpMatch[2] > 255) || (regExpMatch[3] > 255) ) { break; }						var luminance = regExpMatch[1] * 0.299 + regExpMatch[2] * 0.587 + regExpMatch[3] * 0.114; if (luminance > 128) { insertLeft = '<span style="background: ' + tagMatch + '" class="wikEdColorsLight">'; insertRight = ' '; }						else { insertLeft = '<span style="background: ' + tagMatch + '" class="wikEdColorsDark">'; insertRight = ' '; }						break; case 'ctrl': insertLeft = '<span class="wikEdCtrl" title="' + wikEd.controlCharHighlighting[tagMatch.charCodeAt(0).toString] + '">'; insertRight = ' '; break; case 'char': var charName = wikEd.charHighlighting[tagMatch.charCodeAt(0).toString]; var charClass = 'wikEd' + charName; insertLeft = '<span class="' + charClass + '" title="' + wikEd.config.text[charName] + '">'; insertRight = ' '; break; case 'charEntity': var regExpMatch = /&(\w+);/i.exec(tagMatch); var character = wikEd.charEntitiesByName[ regExpMatch[1] ]; if (character != null) { if (wikEd.refHide == true) { insertLeft = ' <button class="wikEdCharEntityButton' + wikEd.charEntityArray.length + '" title="' + wikEd.config.text.wikEdCharEntityButtonTooltip + '"> '; wikEd.charEntityArray.push( {'text': character, 'added': false} ); }							insertLeft += ' '; insertRight = ' '; }						break; }				break; case 'comment': insertLeft = ' ' + node.left + ' '; break; case 'keep': insertLeft = ' ' + node.left + ' '; break; case 'error': insertLeft = '<span class="wikEdError" title="' + node.left + '">'; if (wikEd.config.highlightError == true) { insertLeft += ' ' + node.left + ' '; }				pushRight = ' '; break; case 'note': // for debugging insertLeft = ' ' + node.tagLength + ' '; break; case 'root': break; }

// add left html into existing entry if (insertLeft != '') { node.left = insertLeft; node.index = i;		}

// add left html as new array element to allow for overlapping highlighting as in hr		else if (pushLeft != '') { parseObj.tree.push( { 'start': tagFrom, 'tagLength': 0, 'left': pushLeft, 'index': i - 0.5 } ); }

// add right html into existing entry if (insertRight != '') { node.right = insertRight; node.index = i;		}

// add right html as new array element to allow for overlapping highlighting as in html-like tags and urls else if (pushRight != '') { parseObj.tree.push( { 'start': tagTo, 'tagLength': 0, 'right': pushRight, 'index': i + 0.5 } ); }		if (pushRight2 != '') { parseObj.tree.push( { 'start': pushRightPos2, 'tagLength': 0, 'right': pushRight2, 'index': i + 0.5 } ); }

from = tagTo; i ++; }

return; };

// // wikEd.HighlightMergeHtml: merge parse tree highlighting html code with article text //

wikEd.HighlightMergeHtml = function(parseObj, obj) {

if (parseObj.tree.length <= 1) { return; }

// sort parse array by position, length, and index parseObj.tree.sort(		function(a, b) {

// by start position if (a.start != b.start) { return(a.start - b.start); }

// by length if (a.tagLength != b.tagLength) { return(a.tagLength - b.tagLength); }

// by index return(a.index - b.index); }	);

// add comments and highlighting var from = 0; var htmlArray = [];

// cycle through parse array and assemble html array for (var i = 0; i < parseObj.tree.length; i ++) { var node = parseObj.tree[i]; var tagFrom = node.start; var tagLength = node.tagLength; var htmlLeft = node.left; var htmlRight = node.right; var tagTo = tagFrom + tagLength;

// drop overlapping highlighting //// |- in tables?! if (tagFrom < from) { continue; }

// ignore root if (tagFrom == null) { continue; }

// push leading plain text htmlArray.push(obj.html.substring(from, tagFrom));

// push left html if (htmlLeft != null) { htmlArray.push(htmlLeft); }

// push right html if (htmlRight != null) { htmlArray.push(obj.html.substring(tagFrom, tagTo)); htmlArray.push(htmlRight); from = tagTo; }		else { from = tagFrom; }	}	htmlArray.push(obj.html.substring(from));

// join html array obj.html = htmlArray.join('');

// display highlighted html: // WED(obj.html.replace(/\x00/g, '&lt;').replace(/\x01/g, '&gt;'));

return; };

// // wikEd.HighlightLinkify: prepare the span tag parameters for ctrl-click opening of highlighted links //

wikEd.HighlightLinkify = function(linkPrefix, linkTitle, linkUrl) {

if (wikEd.config.linkify != true) { return(''); }	var linkName = ''; var subpage = false;

// generate url from interlanguage or namespace prefix and title if (linkUrl == null) {

// test for illegal characters if ( (/[\{\|\}\[\]<>#]/.test(linkPrefix) == true) || (/[<>]/.test(linkUrl) == true) ) { return(''); }

// remove highlighting code linkPrefix = linkPrefix.replace(/<.*?>/g, ''); linkTitle = linkTitle.replace(/<.*?>/g, '');

// remove control chars var regExp = new RegExp('[' + wikEd.controlCharHighlightingStr + '\t\n\r]', 'g'); linkPrefix = linkPrefix.replace(regExp, ''); linkTitle = linkTitle.replace(regExp, '');

// fix strange white spaces, leading colons linkPrefix = linkPrefix.replace(/\s/g, ' '); linkPrefix = linkPrefix.replace(/^ +/, ''); linkPrefix = linkPrefix.replace(/^:+ */, ''); linkPrefix = linkPrefix.replace(/ +/g, '_');

linkTitle = linkTitle.replace(/\s/g, ' '); linkTitle = linkTitle.replace(/ +$/, ''); linkTitle = linkTitle.replace(/^:+ */, ''); linkTitle = linkTitle.replace(/ +/g, '_');

linkName = linkPrefix + linkTitle;

// character accentuation for Esperanto, see Help:Special_characters if (wikEd.wikiGlobals.wgContentLanguage == 'eo') { linkTitle = linkTitle.replace(/([cghjsu])(x+)/gi,				function (p, p1, p2) {					var accentChar = p1;					var xString = p2;					var xLength = xString.length;					var xCount = Math.floor(xLength / 2);					if ( (xLength / 2 - xCount) > 0) {						var pos = 'CGHJSUcghjsu'.indexOf(accentChar);						accentChar = 'ĈĜĤĴŜŬĉĝĥĵŝŭ'.substr(pos, 1);						xString = xString.replace(/^x|(x)x/gi, '$1');					}					else {						xString = xString.replace(/(x)x/gi, '$1');					}					return(accentChar + xString);				}			); }

// /subpage refers to a subpage of the current page, to a section of the current page if ( (linkPrefix == '') && ( (linkTitle.indexOf('/') == 0) || (linkTitle.indexOf('#') == 0) ) ) { subpage = true; }

// Wiktionary differentiates between lower and uppercased titles, interwiki should not be uppercased if (subpage == true) { linkUrl = linkPrefix + wikEd.pageName + linkTitle; }		else { linkUrl = linkPrefix + linkTitle; }		linkUrl = encodeURI(linkUrl); linkUrl = linkUrl.replace(/%25(\d\d)/g, '%$1'); linkUrl = linkUrl.replace(/'/g, '%27'); linkUrl = linkUrl.replace(/#/g, '%23'); if (wikEd.config.LinkifyArticlePath != null) { linkUrl = wikEd.config.LinkifyArticlePath.replace(/\$1/, linkUrl); }		else if (wikEd.wikiGlobals.wgArticlePath != null) { linkUrl = wikEd.wikiGlobals.wgArticlePath.replace(/\$1/, linkUrl); }		else { linkUrl = ''; }	}

// url provided else {

// test for templates if (/\{|\}/.test(linkUrl) == true) { return(''); }		linkName = linkUrl; linkUrl = encodeURI(linkUrl); linkUrl = linkUrl.replace(/%25(\d\d)/g, '%$1'); linkUrl = linkUrl.replace(/'/g, '%27'); }	var linkPopup = linkName; if (subpage == true) { linkPopup = wikEd.pageName + linkPopup; }	linkPopup = linkPopup.replace(/</g, '&lt;'); linkPopup = linkPopup.replace(/>/g, '&gt;'); linkPopup = linkPopup.replace(/"/g, '&quot;');	var linkParam = ;	if (linkUrl != ) {		var titleClick;		if (wikEd.platform == 'mac') {			titleClick = wikEd.config.text.followLinkMac;		}		else {			titleClick = wikEd.config.text.followLink;		}		linkParam += 'id="wikEdLinkify' + wikEd.linkifyArray.length + '" title="' + linkPopup + ' ' + titleClick + '"';		wikEd.linkifyArray.push(linkUrl);	}	return(linkParam); };

// // wikEd.UpdateTextarea: copy frame content or provided text to textarea //

wikEd.UpdateTextarea = function(text) {

var obj = {}; if (text != null) { obj.html = text; }

// get frame content, remove dynamically inserted nodes by other scripts else { wikEd.CleanNodes(wikEd.frameDocument); obj.html = wikEd.frameBody.innerHTML; }

// remove trailing blanks and newlines at end of text obj.html = obj.html.replace(/((<br\b[^>]*>)|\s)+$/g, '');

// remove leading spaces in lines obj.html = obj.html.replace(/(<br\b[^>]*>)\n* */g, '$1');

// textify so that no html formatting is submitted wikEd.Textify(obj); obj.plain = obj.plain.replace(/ |&#160;|\xa0/g, ' '); obj.plain = obj.plain.replace(/&lt;/g, '<'); obj.plain = obj.plain.replace(/&gt;/g, '>'); obj.plain = obj.plain.replace(/&amp;/g, '&');

// copy to textarea wikEd.textarea.value = obj.plain;

// remember frame scroll position wikEd.frameScrollTop = wikEd.frameBody.scrollTop;

return; };

// // wikEd.UpdateFrame: copy textarea content or provided html to frame //

wikEd.UpdateFrame = function(html) {

// get textarea content var obj = {}; if (html != null) { obj.html = html; }	else { obj.html = wikEd.textarea.value; obj.html = obj.html.replace(/&/g, '&amp;'); obj.html = obj.html.replace(/>/g, '&gt;'); obj.html = obj.html.replace(/</g, '&lt;'); }

// Opera 0.9.51 obj.html = obj.html.replace(/\r\n|\n\r|\r/g, '\n');

// highlight the syntax if (wikEd.highlightSyntax == true) { obj.whole = true; wikEd.HighlightSyntax(obj); }

// at least display tabs else { obj.html = obj.html.replace(/(\t)/g, ' $1 '); }

// multiple blanks to blank- obj.html = obj.html.replace(/(^|\n) /g, '$1 '); obj.html = obj.html.replace(/ (\n|$)/g, ' $1'); obj.html = obj.html.replace(/ {2}/g, ' '); obj.html = obj.html.replace(/ {2}/g, ' ');

// newlines to 	obj.html = obj.html.replace(/\n/g, ' ');

// select the whole text after replacing the whole text and scroll to same height if (wikEd.msie == true) {

}	else { obj.sel = wikEd.GetSelection; wikEd.RemoveAllRanges(obj.sel); }

// insert content into empty frame if ( (wikEd.frameBody.firstChild == null) || (/^<br[^>]*>\s*$/.test(wikEd.frameBody.innerHTML) == true) ) { wikEd.frameBody.innerHTML = obj.html; }

// insert content into frame, preserve history else { var range = wikEd.frameDocument.createRange; range.setStartBefore(wikEd.frameBody.firstChild); range.setEndAfter(wikEd.frameBody.lastChild); obj.sel.addRange(range);

// replace the frame content with the new text, do not scroll var scrollOffset = window.pageYOffset || document.body.scrollTop; if (obj.html != '') { wikEd.FrameExecCommand('inserthtml', obj.html); }		else { wikEd.FrameExecCommand('delete'); }		window.scroll(0, scrollOffset); wikEd.RemoveAllRanges(obj.sel);

// scroll to previous position if (wikEd.frameScrollTop != null) { wikEd.frameBody.scrollTop = wikEd.frameScrollTop; }	}	wikEd.frameScrollTop = null;

// add event handlers and labels if (wikEd.highlightSyntax == true) {

// name ref and template buttons wikEd.HighlightNamedHideButtons;

// add event handlers to unhide refs and templates wikEd.HideAddHandlers;

// add event handlers to make highlighted frame links ctrl-clickable wikEd.LinkifyAddHandlers; }

return; };

// // wikEd.KeyHandler: event handler for keydown events in main document and frame //  detects emulated accesskey and traps enter in find/replace input elements //

wikEd.KeyHandler = function(event) {

// event compatibility fixes event = wikEd.EventWrapper(event, this); if (event == null) { return; }

if (wikEd.useWikEd == true) {

// trap enter in find/replace input elements if ( (event.type == 'keydown') && (event.keyCode == 13) ) { if (event.target.id == 'wikEdFindText') { event.preventDefault; event.stopPropagation; if (event.shiftKey == true) { wikEd.EditButton(null, 'wikEdFindPrev'); }				else if (event.ctrlKey == true) { wikEd.EditButton(null, 'wikEdFindAll'); }				else { wikEd.EditButton(null, 'wikEdFindNext'); }			}			else if (event.target.id == 'wikEdReplaceText') { event.preventDefault; event.stopPropagation; if (event.shiftKey == true) { wikEd.EditButton(null, 'wikEdReplacePrev'); }				else if (event.ctrlKey == true) { wikEd.EditButton(null, 'wikEdReplaceAll'); }				else { wikEd.EditButton(null, 'wikEdReplaceNext'); }			}		}

// detect emulated accesskeys else if ( (event.shiftKey == true) && (event.ctrlKey == false) && (event.altKey == true) && (event.metaKey == false) ) {

// get wikEd button id from keycode var buttonId = wikEd.buttonKeyCode[event.keyCode]; if (buttonId != null) { event.preventDefault; event.stopPropagation;

// execute the button click handler code var obj = document.getElementById(buttonId); objId = obj.id; eval(wikEd.editButtonHandler[buttonId]); }		}	}	return; };

// // wikEd.FrameExecCommand: wrapper for execCommand method //

wikEd.FrameExecCommand = function(command, option) {

if (typeof(wikEd.frameDocument.execCommand) == 'function') { wikEd.frameDocument.execCommand(command, false, option); }

// MSIE workaround, breaks the undo history else if (command == 'inserthtml') { wikEd.frameDocument.selection.createRange.pasteHTML(option); }	return; };

// // wikEd.FindAhead: find-as-you-type, event handler for find field, supports insensitive and regexp settings //

wikEd.FindAhead = function {

if (wikEd.GetAttribute(wikEd.findAhead, 'checked') == 'true') {

// get the find text var findText = wikEd.findText.value; if (findText == '') { return; }

// remember input field selection var findTextSelectionStart = wikEd.findText.selectionStart; var findTextSelectionEnd = wikEd.findText.selectionEnd;

// remember frame selection var sel = wikEd.GetSelection; var range = sel.getRangeAt(sel.rangeCount - 1).cloneRange; var rangeClone = range.cloneRange; var scrollTop = wikEd.frameBody.scrollTop;

// collapse selection to the left wikEd.RemoveAllRanges(sel); range.collapse(true); range = sel.addRange(range);

// create obj for regexp search var obj = {};

// get the replace text var replaceText = wikEd.inputElement.replace.value;

// get insensitive and regexp button states var regExpChecked = wikEd.GetAttribute(wikEd.regExp, 'checked'); var caseSensitiveChecked = wikEd.GetAttribute(wikEd.caseSensitive, 'checked');

// get case sensitive setting var caseSensitive = false; if (caseSensitiveChecked == 'true') { caseSensitive = true; }

// get regexp setting var useRegExp = false; if (regExpChecked == 'true') { useRegExp = true; }

// parameters: obj, findText, caseSensitive, backwards, wrap, useRegExp found = wikEd.Find(obj, findText, caseSensitive, false, true, useRegExp);

// restore original frame selection if (found == false) { wikEd.frameBody.scrollTop = scrollTop; wikEd.RemoveAllRanges(sel); sel.addRange(rangeClone); }		else { wikEd.RemoveAllRanges(obj.sel); obj.sel.addRange(obj.changed.range);

// scroll to selection wikEd.ScrollToSelection; }

// restore input field selection (needed for FF 3.6) wikEd.findText.select; wikEd.findText.setSelectionRange(findTextSelectionStart, findTextSelectionEnd); }	return; };

// // wikEd.MainSwitch: click handler for program logo //

wikEd.MainSwitch = function {

// disable function if browser is incompatible if (wikEd.browserNotSupported == true) { return; }

// enable wikEd if (wikEd.disabled == true) { wikEd.disabled = false; wikEd.SetPersistent('wikEdDisabled', '0', 0, '/');

// turn rich text frame on		if (wikEd.turnedOn == false) {

// setup wikEd wikEd.TurnOn(false); }		else { wikEd.SetLogo; var useWikEd = false; if (wikEd.GetAttribute(document.getElementById('wikEdUseWikEd'), 'checked') == 'true') { useWikEd = true; }			wikEd.SetEditArea(useWikEd); wikEd.useWikEd = useWikEd; if (wikEd.useWikEd == true) { wikEd.UpdateFrame; }			wikEd.buttonBarWrapper.style.display = 'block'; wikEd.buttonBarPreview.style.display = 'block'; if (wikEd.buttonBarJump != null) { wikEd.buttonBarJump.style.display = 'block'; }

// run scheduled custom functions wikEd.ExecuteHook(wikEd.config.onHook); }	}

// disable wikEd else { wikEd.SetPersistent('wikEdDisabled', '1', 0, '/'); if (wikEd.turnedOn == false) { wikEd.useWikEd = false; wikEd.disabled = true; wikEd.SetLogo; }		else { if (wikEd.fullScreenMode == true) { wikEd.FullScreen(false); }

// turn classic textarea on			if (wikEd.useWikEd == true) { wikEd.UpdateTextarea; }			wikEd.SetEditArea(false);

// reset textarea dimensions wikEd.textarea.style.height = (wikEd.textareaOffsetHeightInitial - wikEd.frameBorderHeight) + 'px'; wikEd.textarea.style.width = '100%';

wikEd.frameHeight = (wikEd.textareaOffsetHeightInitial - wikEd.frameBorderHeight) + 'px'; wikEd.frameWidth = (wikEd.editorWrapper.clientWidth - wikEd.frameBorderWidth) + 'px'; wikEd.frame.style.height = wikEd.frameHeight; wikEd.frame.style.width = wikEd.frameWidth;

wikEd.buttonBarWrapper.style.display = 'none'; wikEd.buttonBarPreview.style.display = 'none'; wikEd.localPrevWrapper.style.display = 'none'; wikEd.previewBox.style.height = 'auto'; if (wikEd.buttonBarJump != null) { wikEd.buttonBarJump.style.display = 'none'; }

wikEd.useWikEd = false; wikEd.disabled = true; wikEd.SetLogo;

// run scheduled custom functions wikEd.ExecuteHook(wikEd.config.offHook); }	}	return; };

// // wikEd.FullScreen: change to fullscreen edit area or back to normal view //

wikEd.FullScreen = function(fullscreen, notFrame) {

// hide or show elements var displayStyle; if (fullscreen == true) { displayStyle = 'none'; }	else { displayStyle = 'block'; }

// elements above input wrapper var node = document.getElementById('editform').previousSibling; while (node != null) { if ( (node.nodeName == 'DIV') || (node.nodeName == 'H3') ) { node.style.display = displayStyle; }		node = node.previousSibling; }	document.getElementsByTagName('h1')[0].style.display = displayStyle;

// divs below input wrapper var node = wikEd.inputWrapper.nextSibling; while (node != null) { if (node.nodeName == 'DIV') { node.style.display = displayStyle; }		node = node.nextSibling; }

// divs below input wrapper, some levels up	var node = document.getElementById('column-one'); while (node != null) { if (node.nodeName == 'DIV') { node.style.display = displayStyle; }		node = node.nextSibling; }

// insert wrapper document.getElementById('wikEdInsertWrapper').style.display = displayStyle;

// change styles if (fullscreen == true) { if (notFrame != true) { wikEd.inputWrapper.className = 'wikEdInputWrapperFull'; }		wikEd.buttonBarPreview.className = 'wikEdButtonBarPreviewFull'; }	else { if (notFrame != true) { wikEd.inputWrapper.className = 'wikEdInputWrapper'; }		wikEd.buttonBarPreview.className = 'wikEdButtonBarPreview'; }

// resize the frame if (fullscreen == true) {

// end frame resizing wikEd.RemoveEventListener(wikEd.frameDocument, 'mouseup', wikEd.ResizeStopHandler, true); wikEd.RemoveEventListener(document, 'mouseup', wikEd.ResizeStopHandler, true); wikEd.RemoveEventListener(wikEd.frameDocument, 'mousemove', wikEd.ResizeDragHandlerFrame, true); wikEd.RemoveEventListener(document, 'mousemove', wikEd.ResizeDragHandlerDocument, true); wikEd.resizeFrameMouseOverGrip = false; wikEd.RemoveEventListener(wikEd.frameDocument, 'mousedown', wikEd.ResizeStartHandler, true); wikEd.frameBody.style.cursor = 'auto'; wikEd.resizeFrameActive = false;

var consoleTop = wikEd.GetOffsetTop(wikEd.consoleWrapper); var consoleHeight = wikEd.consoleWrapper.offsetHeight; var frameHeight = wikEd.frame.offsetHeight; var windowHeight = wikEd.GetWindowInnerHeight;

wikEd.frame.style.height = (frameHeight + (windowHeight - (consoleTop + consoleHeight) ) - 2) + 'px'; wikEd.frame.style.width = (wikEd.editorWrapper.clientWidth - wikEd.frameBorderWidth) + 'px'; }	else { if (wikEd.frameHeight == 0) { wikEd.frameHeight = (wikEd.textareaOffsetHeightInitial - wikEd.frameBorderHeight) + 'px'; wikEd.frameWidth = (wikEd.editorWrapper.clientWidth - wikEd.frameBorderWidth) + 'px'; }		wikEd.frame.style.height = wikEd.frameHeight; wikEd.frame.style.width = wikEd.frameWidth; }

// scroll to edit-frame if (fullscreen == false) { window.scroll(0, wikEd.GetOffsetTop(wikEd.inputWrapper) - 2); }

// set the fullscreen button state wikEd.Button(document.getElementById('wikEdFullScreen'), 'wikEdFullScreen', null, fullscreen);

// grey out or re-activate scroll-to buttons var hideButtonClass; if (fullscreen == true) { hideButtonClass = 'wikEdButtonInactive'; }	else { hideButtonClass = 'wikEdButton'; }	document.getElementById('wikEdScrollToPreview').className = hideButtonClass; document.getElementById('wikEdScrollToPreview2').className = hideButtonClass; document.getElementById('wikEdScrollToEdit').className = hideButtonClass; document.getElementById('wikEdScrollToEdit2').className = hideButtonClass;

// resize the summary field wikEd.ResizeSummary;

wikEd.fullScreenMode = fullscreen;

return; };

// // wikEd.ResizeSummary: recalculate the summary width after resizing the window //

wikEd.ResizeSummary = function {

// check if combo field exists if (wikEd.summarySelect == null) { return; }

wikEd.summaryText.style.width = ''; wikEd.summarySelect.style.width = '';

wikEd.summaryTextWidth = wikEd.summaryWrapper.clientWidth - ( wikEd.GetOffsetLeft(wikEd.summaryText) - wikEd.GetOffsetLeft(wikEd.summaryWrapper) ); if (wikEd.summaryTextWidth < 150) { wikEd.summaryTextWidth = 150; }	wikEd.summaryText.style.width = wikEd.summaryTextWidth + 'px'; wikEd.ResizeComboInput('summary'); return; };

// // wikEd.ResizeComboInput: set the size of the background select boxes so that the button is visible //  calculates the select button width as the difference between select and option width //  adjusts widths so that only the select button is visible behind the input field //

wikEd.ResizeComboInput = function(field) {

// check if combo field exists if (wikEd.selectElement[field] == null) { return; }

// detect browser for MS IE fixes var standardBrowser = true; if (wikEd.selectElement[field].options.offsetWidth != null ) { standardBrowser = false; }

// set select height and top if (standardBrowser == false) { wikEd.selectElement[field].style.height = (wikEd.inputElement[field].clientHeight + 6) + 'px'; wikEd.selectElement[field].style.top = '3px'; wikEd.inputElement[field].style.top = '3px'; }

// add a dummy option if no option exists yet var dummy; var testOption = 1; if (standardBrowser == true) { if (wikEd.selectElement[field].options.length == 0) { testOption = 0; wikEd.selectElement[field].options[0] = new Option(''); dummy = true; }	}

// set option widths to 0 if (standardBrowser == true) { for (var i = 0; i < wikEd.selectElement[field].options.length; i ++) { wikEd.selectElement[field].options[i].style.width = '0'; }	}

// get input width var inputBorder = (wikEd.inputElement[field].offsetWidth - wikEd.inputElement[field].clientWidth); var inputWidthInner = wikEd.inputElement[field].clientWidth; var inputWidthOuter = wikEd.inputElement[field].offsetWidth;

// get select width var selectWidthInner = wikEd.selectElement[field].clientWidth; var selectWidthOuter = wikEd.selectElement[field].offsetWidth;

// get option width and calculate button width var optionWidthInner; var buttonWidth; if (standardBrowser == true) {

// Firefox < 3.0 if ( typeof(wikEd.selectElement[field].options[testOption].clientLeft) == 'undefined' ) { optionWidthInner = wikEd.selectElement[field].options[testOption].clientWidth; buttonWidth = selectWidthInner - optionWidthInner - 6; }

// Firefox >= 3.0 else { optionWidthInner = wikEd.selectElement[field].options[testOption].clientWidth; buttonWidth = selectWidthInner - optionWidthInner; }	}	else { buttonWidth = selectWidthOuter - selectWidthInner - 4; }

// for long fields shorten input if (inputWidthOuter + buttonWidth > 150) { wikEd.inputElement[field].style.width = (inputWidthInner - inputBorder - buttonWidth) + 'px'; wikEd.selectElement[field].style.width = (inputWidthInner) + 'px'; }

// otherwise increase select width else { wikEd.selectElement[field].style.width = (inputWidthOuter + buttonWidth) + 'px'; }

// delete dummy option if (dummy == true) { wikEd.selectElement[field].options[0] = null; }

// set option widths to auto if (standardBrowser == true) { for (var i = 0; i < wikEd.selectElement[field].options.length; i ++) { wikEd.selectElement[field].options[i].style.width = 'auto'; }	}	return; };

// // wikEd.ChangeComboInput: sets the input value to selected option; onchange event handler for select boxes //

wikEd.ChangeComboInput = function(field) {

// get selection index (-1 for unselected) var selected = wikEd.selectElement[field].selectedIndex; if (selected >= 0) { wikEd.selectElement[field].selectedIndex = -1;

// get selected option var option = wikEd.selectElement[field].options[selected]; if (option.text != '') {

// jump to heading if ( (field == 'find') && (/^=.*?=$/.test(option.value) == true) ) { var obj = {}; var findText = option.value.replace(/([\\^$*+?.\[\]{}:=!|,\-])/g, '\\$1'); findText = '^' + findText + '$';

// find and select heading text var found = wikEd.Find(obj, findText, true, false, true, true); wikEd.RemoveAllRanges(obj.sel); obj.sel.addRange(obj.changed.range);

// and scroll it into the viewport wikEd.ScrollToSelection; return; }

// update input field else {

// add a tag to the summary box if (field == 'summary') { wikEd.inputElement[field].value = wikEd.AppendToSummary(wikEd.inputElement[field].value, option.text); }

// add case and regexp checkboxes to find / replace fields else if (option.value == 'setcheck') { wikEd.Button(document.getElementById('wikEdCaseSensitive'), 'wikEdCaseSensitive', null, (option.text.charAt(0) == wikEd.checkMarker[true]) ); wikEd.Button(document.getElementById('wikEdRegExp'), 'wikEdRegExp', null, (option.text.charAt(1) == wikEd.checkMarker[true]) ); wikEd.inputElement[field].value = option.text.substr(3); }

// add option text else { wikEd.inputElement[field].value = option.text; }

// find the new text if ( (field == 'find') && (wikEd.GetAttribute(wikEd.findAhead, 'checked') == 'true') ) { wikEd.FindAhead; }			}		}	}	wikEd.inputElement[field].focus;

return; };

// // wikEd.AppendToSummary: append a phrase to the summary text //

wikEd.AppendToSummary = function(summary, append) {

summary = summary.replace(/^[, ]+/, ''); summary = summary.replace(/[, ]+$/, ''); if (summary != '') { if (summary.match(/ \*\/$/) != null) { summary += ' '; }		else if (summary.match(/[\.\;\:]$/) != null) { summary += ' '; }		else { var regExp = new RegExp('^[' + wikEd.letters + '_"\'+\\-]', '');			if (summary.match(regExp) == null) {				summary += ' ';			}			else {				summary += ', ';			}		}	}	summary += append;

return(summary); };

// // wikEd.AddToHistory: add an input value to the saved history //

wikEd.AddToHistory = function(field) {

if (wikEd.inputElement[field].value != '') {

// load history from saved settings wikEd.LoadHistoryFromSettings(field);

// add current value to history wikEd.fieldHist[field].unshift(wikEd.inputElement[field].value);

// add case and regexp checkboxes to find / replace value if ( (field == 'find') || (field == 'replace') ) { wikEd.fieldHist[field][0] = wikEd.checkMarker[ (wikEd.GetAttribute(wikEd.caseSensitive, 'checked') == 'true') ] + wikEd.checkMarker[ (wikEd.GetAttribute(wikEd.regExp, 'checked') == 'true') ] + ' ' + wikEd.fieldHist[field][0]; }

// remove paragraph names from summary if (field == 'summary') { wikEd.fieldHist[field][0] = wikEd.fieldHist[field][0].replace(/^\/\* .*? \*\/ */, ''); }

// remove multiple old copies from history var i = 1; while (i < wikEd.fieldHist[field].length) { if (wikEd.fieldHist[field][i] == wikEd.fieldHist[field][0]) { wikEd.fieldHist[field].splice(i, 1); }			else { i ++; }		}

// remove new value if it is a preset value if (wikEd.config.comboPresetOptions[field] != null) { var i = 0; while (i < wikEd.config.comboPresetOptions[field].length) { if (wikEd.config.comboPresetOptions[field][i] == wikEd.fieldHist[field][0]) { wikEd.fieldHist[field].shift; break; }				else { i ++; }			}		}

// cut history number to maximal history length wikEd.fieldHist[field] = wikEd.fieldHist[field].slice(0, wikEd.config.historyLength[field]);

// save history to settings if (wikEd.fieldHist[field][0] != '') { wikEd.SaveHistoryToSetting(field); }	}	return; };

// // wikEd.SetComboOptions: generate the select options from saved history; onfocus handler for select box //

wikEd.SetComboOptions = function(field) {

// load history from saved settings wikEd.LoadHistoryFromSettings(field);

var option = {}; var selectedOption = null;

// delete options var options = wikEd.selectElement[field].options; for (var i = 0; i < options.length; i ++) { wikEd.selectElement[field].remove(i); }

// delete optgroup option = document.getElementById(field + 'Optgroup'); if (option != null) { wikEd.selectElement[field].removeChild(option); }

// workaround for onchange not firing when selecting first option from unselected dropdown option = document.createElement('option'); option.style.display = 'none'; j = 0; wikEd.selectElement[field].options[j++] = option;

// add history entries for (var i = 0; i < wikEd.fieldHist[field].length; i ++) { if (wikEd.fieldHist[field][i] != null) { if (wikEd.fieldHist[field][i] == wikEd.inputElement[field].value) { selectedOption = j;			} option = document.createElement('option');

// replace spaces with nbsp to allow for multiple, leading, and trailing spaces option.text = wikEd.fieldHist[field][i].replace(/ /g, '\xa0'); if ( (field == 'find') || (field == 'replace') ) { option.value = 'setcheck'; }			wikEd.selectElement[field].options[j++] = option; }	}

// add preset entries var startPreset = 0; if (wikEd.config.comboPresetOptions[field] != null) { startPreset = j;		for (var i = 0; i < wikEd.config.comboPresetOptions[field].length; i ++) { if (wikEd.config.comboPresetOptions[field][i] != null) {

// replace spaces with nbsp to allow for multiple, leading, and trailing spaces wikEd.config.comboPresetOptions[field][i] = wikEd.config.comboPresetOptions[field][i].replace(/ /g, '\xa0');

// select a dropdown value if (wikEd.config.comboPresetOptions[field][i] == wikEd.inputElement[field].value) { selectedOption = j;				}

option = document.createElement('option'); option.text = wikEd.config.comboPresetOptions[field][i].replace(/ /g, '\xa0'); if (field == 'summary') { option.text = option.text.replace(/\{wikEdUsing\}/g, wikEd.config.summaryUsing); }				wikEd.selectElement[field].options[j++] = option; }		}	}

// set the selection wikEd.selectElement[field].selectedIndex = selectedOption;

// add a blank preset separator if ( (startPreset > 1) && (startPreset < j) ) { option = document.createElement('optgroup'); option.label = '\xa0'; option.id = field + 'Optgroup'; wikEd.selectElement[field].insertBefore(option, wikEd.selectElement[field].options[startPreset]); }

// add the TOC jumper to the find field var startTOC = 0; if (field == 'find') { startTOC = j;

// get the whole plain text var plain = wikEd.frameBody.innerHTML; plain = plain.replace(/<br\b[^>]*>/g, '\n'); plain = plain.replace(/<.*?>/g, ''); plain = plain.replace(/ /g, '\xa0'); plain = plain.replace(/&gt;/g, '>'); plain = plain.replace(/&lt;/g, '<'); plain = plain.replace(/&amp;/g, '&');

// cycle through the headings var heading = plain.match(/(^|\n)=+.+?=+[^\n=]*[ =\t]*(?=(\n|$))/g); if (heading != null) { for (var i = 0; i < heading.length; i ++) { var headingMatch = heading[i].match(/\n?((=+) *(.+?)( *\2))/); var headingIndent = headingMatch[2]; headingIndent = headingIndent.replace(/^=/g, ''); headingIndent = headingIndent.replace(/\=/g, '\xa0');

// add headings to the select element option = document.createElement('option'); option.text = '\u21d2' + headingIndent + headingMatch[3]; option.value = headingMatch[1]; wikEd.selectElement[field].options[j++] = option; }		}	}

// add a blank TOC separator if ( (startTOC > 1) && (startTOC < j) ) { option = document.createElement('optgroup'); option.label = '\xa0'; option.id = field + 'Optgroup'; wikEd.selectElement[field].insertBefore(option, wikEd.selectElement[field].options[startTOC]); }

return; };

// // wikEd.ClearHistory: clear the history of combo input fields //

wikEd.ClearHistory = function(field) {

wikEd.SetPersistent(wikEd.savedName[field], '', 0, '/'); wikEd.SetComboOptions(field); return; };

// // wikEd.LoadHistoryFromSettings: get the input box history from the respective saved settings //

wikEd.LoadHistoryFromSettings = function(field) {

var setting = wikEd.GetPersistent(wikEd.savedName[field]); if ( (setting != '') && (setting != null) ) { setting = decodeURIComponent(setting); wikEd.fieldHist[field] = setting.split('\n'); }	else { wikEd.fieldHist[field] = []; }	return; };

// // wikEd.SaveHistoryToSetting: save the input box history to the respective saved settings //

wikEd.SaveHistoryToSetting = function(field) {

var setting = ''; setting = wikEd.fieldHist[field].join('\n'); setting = setting.replace(/\n$/, ''); setting = encodeURIComponent(setting); wikEd.SetPersistent(wikEd.savedName[field], setting, 0, '/'); return; };

// // wikEd.GetSelection: cross-browser method to get the current iframe selection //

wikEd.GetSelection = function {

// standard var sel; if (typeof(wikEd.frameWindow.getSelection) == 'function') { sel = wikEd.frameWindow.getSelection; }

// MS IE compatibility else if (typeof(wikEd.frameDocument.selection) == 'object') { sel = wikEd.frameDocument.selection; }

// make sure there is at least an empty range if (sel.rangeCount == 0) { sel.collapse(wikEd.frameBody, 0); }

return(sel); };

// // wikEd.ClearSelection: cross-browser method to clear the currently selected text //

wikEd.RemoveAllRanges = function(sel) {

if (typeof(sel.removeAllRanges) == 'function') { sel.removeAllRanges; }

// MS IE compatibility else if (typeof(sel.empty) == 'function') { sel.empty; }	return; };

// // wikEd.SetRange: set a range, control for non-text nodes (Opera 10.50 beta bug) //

wikEd.SetRange = function(range, startNode, startOffset, endNode, endOffset) {

wikEd.SetRangeStart(range, startNode, startOffset); wikEd.SetRangeEnd(range, endNode, endOffset); return; };

// // wikEd.SetRangeStart: set range start //

wikEd.SetRangeStart = function(range, startNode, startOffset) {

if ( (startNode.childNodes.length > 0) && (startOffset < startNode.childNodes.length) ) { startNode = startNode.childNodes.item(startOffset); startOffset = 0; }	if (startNode.nodeName == '#text') { range.setStart(startNode, startOffset); }	else if (startNode.childNodes.length == 0) { range.setStart(startNode, 0); }	else { range.setStartAfter(startNode); }	return; };

// // wikEd.SetRangeEnd: set range end //

wikEd.SetRangeEnd = function(range, endNode, endOffset) {

if ( (endNode.childNodes.length > 0) && (endOffset < endNode.childNodes.length) ) { endNode = endNode.childNodes.item(endOffset); endOffset = 0; }	if (endNode.nodeName == '#text') { range.setEnd(endNode, endOffset); }	else if (endNode.childNodes.length == 0) { /////		range.setEndBefore(endNode); range.setEnd(endNode, 0); }	else { range.setEndBefore(endNode); }	return; };

// // wikEd.GetSavedSetting: get a wikEd setting //

wikEd.GetSavedSetting = function(settingName, preset) {

var setting = wikEd.GetPersistent(settingName); if (setting == '') { setting = preset; }	else if (setting == '1') { setting = true; }	else { setting = false; }	return(setting); };

// // wikEd.GetPersistent: get a cookie or a Greasemonkey persistent value (code copied to wikEdDiff.js) //

wikEd.GetPersistent = function(name) {

var getStr = '';

// check for web storage wikEd.DetectWebStorage;

// get a value from web storage if (wikEd.webStorage == true) { getStr = window.localStorage.getItem(name); }

// get a Greasemonkey persistent value else if (wikEd.greasemonkey == true) { getStr = GM_getValue(name, ''); }

// get a cookie value else { getStr = wikEd.GetCookie(name); }	return(getStr); };

// // wikEd.SetPersistent: set a cookie or a Greasemonkey persistent value, deletes the value for expire = -1 //

wikEd.SetPersistent = function(name, value, expires, path, domain, secure) {

// check for web storage wikEd.DetectWebStorage; // set a value in web storage if (wikEd.webStorage == true) { if (expires == -1) { value = ''; }		window.localStorage.setItem(name, value); }	// set a Greasemonkey persistent value else if (wikEd.greasemonkey == true) { if (expires == -1) { value = ''; }

// see http://wiki.greasespot.net/Greasemonkey_access_violation setTimeout(function {			GM_setValue(name, value);		}, 0); }

// set a cookie value else { wikEd.SetCookie(name, value, expires, path, domain, secure); }	return; };

// // wikEd.DetectWebStorage: detect if local storage is available (code copied to wikEdDiff.js) //

wikEd.DetectWebStorage = function {

if (wikEd.webStorage == null) { wikEd.webStorage = false; if (typeof(window.localStorage) == 'object') { // web storage does not persist between local html page loads in firefox if (/^file:\/\//.test(wikEd.pageOrigin) == false) { wikEd.webStorage = true; }		}	}	return; };

// // wikEd.GetCookie: get a cookie (code copied to wikEdDiff.js) //

wikEd.GetCookie = function(cookieName) {

var cookie = ' ' + document.cookie; var search = ' ' + cookieName + '='; var cookieValue = ''; var offset = 0; var end = 0; offset = cookie.indexOf(search); if (offset != -1) { offset += search.length; end = cookie.indexOf(';', offset); if (end == -1) { end = cookie.length; }		cookieValue = cookie.substring(offset, end); cookieValue = cookieValue.replace(/\\+/g, ' '); cookieValue = decodeURIComponent(cookieValue); }	return(cookieValue); };

// // wikEd.SetCookie: set a cookie, deletes a cookie for expire = -1 //

wikEd.SetCookie = function(name, value, expires, path, domain, secure) {

var cookie = name + '=' + encodeURIComponent(value);

if (expires != null) {

// generate a date 1 hour ago to delete the cookie if (expires == -1) { var cookieExpire = new Date; expires = cookieExpire.setTime(cookieExpire.getTime - 60 * 60 * 1000); expires = cookieExpire.toUTCString; }

// get date from expiration preset else if (expires == 0) { var cookieExpire = new Date; expires = cookieExpire.setTime(cookieExpire.getTime + wikEd.config.cookieExpireSec * 1000); expires = cookieExpire.toUTCString; }		cookie += '; expires=' + expires; }	if (path != null) { cookie += '; path=' + path; }	if (domain != null) { cookie += '; domain=' + domain; }	if (secure != null) { cookie += '; secure'; }	document.cookie = cookie; return; };

// // wikEd.GetOffsetTop: get element offset relative to window top (code copied to wikEdDiff.js) //

wikEd.GetOffsetTop = function(element) { var offset = 0; do { offset += element.offsetTop; } while ( (element = element.offsetParent) != null ); return(offset); };

// // wikEd.GetOffsetLeft: get element offset relative to left window border //

wikEd.GetOffsetLeft = function(element) { var offset = 0; do { offset += element.offsetLeft; } while ( (element = element.offsetParent) != null ); return(offset); };

// // wikEd.AppendScript: append script to head //

wikEd.AppendScript = function(scriptUrl, onLoadFunction) {

var script = document.createElement('script'); script.setAttribute('type', 'text/javascript'); script.setAttribute('src', scriptUrl); wikEd.head.appendChild(script); if (onLoadFunction != null) { wikEd.AddEventListener(script, 'load', onLoadFunction, false); }	return; };

// // wikEd.CleanNodes: remove DOM elements dynamically inserted by other scripts //

wikEd.CleanNodes = function(node) {

if (wikEd.cleanNodes == false) { return; }

// remove Web of Trust (WOT) tags var divs = node.getElementsByTagName('div'); for (var i = 0; i < divs.length; i ++) { var div = divs[i];

// test for WOT class names var divClass = div.className; if (/^wot-/.test(divClass) == true) { var divParent = div.parentNode; if (divParent != null) { divParent.removeChild(div); }			continue; }

// test for WOT attributes var divAttrs = div.attributes; for (var j = 0; j < divAttrs.length; ++ j) { var attr = divAttrs.item(j); if ( (attr.nodeName == 'wottarget') || (/^link[0-9a-f]{30,}/.test(attr.nodeName) == true) ) { var divParent = div.parentNode; if (divParent != null) { divParent.removeChild(div); }				break; }		}	}	return; };

// // wikEd.ParseDOM: parses a DOM subtree into a linear array of plain text fragments //

wikEd.ParseDOM = function(obj, topNode) {

obj.plainLength = 0; obj.plainArray = []; obj.plainNode = []; obj.plainStart = []; obj.plainPos = [];

var anchorNode = obj.sel.anchorNode; var	focusNode = obj.sel.focusNode; var anchorOffset = obj.sel.anchorOffset; var focusOffset = obj.sel.focusOffset;

wikEd.ParseDOMRecursive(obj, topNode, anchorNode, anchorOffset, focusNode, focusOffset); obj.plain = obj.plainArray.join(''); obj.plain = obj.plain.replace(/\xa0/g, ' '); return; };

// // wikEd.ParseDOMRecursive: parses a DOM subtree into a linear array of plain text fragments //

wikEd.ParseDOMRecursive = function(obj, currentNode, anchorNode, anchorOffset, focusNode, focusOffset) {

// cycle through the child nodes of currentNode var childNodes = currentNode.childNodes; for (var i = 0; i < childNodes.length; i ++) { var childNode = childNodes.item(i);

// check for selection, non-text nodes if ( (currentNode == anchorNode) && (i == anchorOffset) ) { obj.plainAnchor = obj.plainLength; }		if ( (currentNode == focusNode) && (i == focusOffset) ) { obj.plainFocus = obj.plainLength; }

// check for selection, text nodes if (childNode == obj.sel.anchorNode) { obj.plainAnchor = obj.plainLength + obj.sel.anchorOffset; }		if (childNode == obj.sel.focusNode) { obj.plainFocus = obj.plainLength + obj.sel.focusOffset; }

// get text of child node var value = null; switch (childNode.nodeType) { case childNode.ELEMENT_NODE:

// skip hidden elements if (wikEd.GetStyle(childNode, 'display') == 'none') { continue; }				if ( (childNode.childNodes.length == 0) && (wikEd.leafElements[childNode.nodeName] == true) ) { if (childNode.nodeName == 'BR') { value = '\n'; }				}				else { wikEd.ParseDOMRecursive(obj, childNode, anchorNode, anchorOffset, focusNode, focusOffset); }				break; case childNode.TEXT_NODE: value = childNode.nodeValue; value = value.replace(/\n/g, ' '); break; case childNode.ENTITY_REFERENCE_NODE: value = '&' + childNode.nodeName + ';'; break; }

// add text to text object if (value != null) {

// array of text fragments obj.plainArray.push(value);

// array of text fragment node references obj.plainNode.push(childNode);

// array of text fragment text positions obj.plainStart.push(obj.plainLength);

// node references containing text positions obj.plainPos[childNode] = obj.plainLength;

// current text length obj.plainLength += value.length; }	}	return; };

// // wikEd.GetInnerHTML: get the innerHTML of a document fragment //

wikEd.GetInnerHTML = function(obj, currentNode) {

// initialize string if (obj.html == null) { obj.html = ''; }	if (obj.plain == null) { obj.plain = ''; }	if (obj.plainArray == null) { obj.plainArray = []; obj.plainNode = []; obj.plainStart = []; }

var childNodes = currentNode.childNodes; for (var i = 0; i < childNodes.length; i ++) { var childNode = childNodes.item(i); switch (childNode.nodeType) { case childNode.ELEMENT_NODE: obj.html += '<' + childNode.nodeName.toLowerCase; for (var j = 0; j < childNode.attributes.length; j ++) { if (childNode.attributes.item(j).nodeValue != null) { obj.html += ' ' + childNode.attributes.item(j).nodeName + '="' + childNode.attributes.item(j).nodeValue.replace(/</g, '&lt;').replace(/>/g, '&gt;') + '"'; }				}				if ( (childNode.childNodes.length == 0) && (wikEd.leafElements[childNode.nodeName] == true) ) { obj.html += '>'; if (childNode.nodeName == 'BR') { obj.plainArray.push('\n'); obj.plainNode.push(childNode); obj.plainStart.push(obj.plain.length); obj.plain += '\n'; }				}				else { obj.html += '>'; wikEd.GetInnerHTML(obj, childNode); obj.html += '</' + childNode.nodeName.toLowerCase + '>'; }				break; case childNode.TEXT_NODE: var value = childNode.nodeValue; value = value.replace(/\n/g, ' '); // important for pasted page content obj.plainArray.push(value);       // plain array contains & < > instead of &amp; &lt; &gt; obj.plainNode.push(childNode); obj.plainStart.push(obj.plain.length); value = value.replace(/&/g, '&amp;'); value = value.replace(/</g, '&lt;'); value = value.replace(/>/g, '&gt;'); obj.html += value; obj.plain += value; break; case childNode.CDATA_SECTION_NODE: obj.html += '<![CDATA[' + childNode.nodeValue + ']]>'; break; case childNode.ENTITY_REFERENCE_NODE: var value = '&' + childNode.nodeName + ';'; obj.plainArray.push(value); obj.plainNode.push(childNode); obj.plainStart.push(obj.plain.length); value = value.replace(/&/g, '&amp;'); obj.html += value; obj.plain += value; break; case childNode.COMMENT_NODE: obj.html += ''; break; }	}	return; };

// // wikEd.GetNextNode: recurse through DOM to next text-like node for anti-highlight bleeding //

wikEd.GetNextTextNode = function(obj, currentNode, currentLevel) {

// ascend until there is a sibling while (currentNode != wikEd.frameBody) {

// check for sibling var nextNode = null; if ( (obj.backwards == true) && (currentNode.previousSibling != null) ) { nextNode = currentNode.previousSibling; }		else if ( (obj.backwards != true) && (currentNode.nextSibling != null) ) { nextNode = currentNode.nextSibling }

// found sibling if (nextNode != null) { currentNode = nextNode;

// found text-like node if (				(currentNode.nodeName == '#text') ||				(currentNode.nodeType == currentNode.ENTITY_REFERENCE_NODE) ||				(wikEd.leafElements[currentNode.nodeName] == true)			) { obj.foundNode = currentNode; obj.foundLevel = currentLevel; return; }

// recurse into child nodes if ( (currentNode.nodeType == currentNode.ELEMENT_NODE) && (/wikEd.scroll(Before|After)/.test(currentNode.className) != true) ) { wikEd.GetNextTextNodeChilds(obj, currentNode, currentLevel - 1); if (obj.foundNode != null) { return; }			}		}

// no sibling, ascend to parent else { currentNode = currentNode.parentNode; currentLevel ++; }	}	return; };

// wikEd.GetNextTextNodeChilds: recurse through child nodes to next text-like node for anti-highlight bleeding

wikEd.GetNextTextNodeChilds = function(obj, currentNode, currentLevel) {

// set direction var childNodes = currentNode.childNodes; if (childNodes.length == 0) { return; }	var start = 0; var add = 1; if (obj.backwards == true) { start = childNodes.length - 1; add = -1; }

// cycle through child nodes (left or right) for (var i = start; ( (obj.backwards == true) && (i >= 0) ) || ( (obj.backwards != true) && (i < childNodes.length) ); i = i + add) { var currentNode = childNodes.item(i);

// found text-like node if (			(currentNode.nodeName == '#text') ||			(currentNode.nodeType == currentNode.ENTITY_REFERENCE_NODE) ||			(wikEd.leafElements[currentNode.nodeName] == true)		) { obj.foundNode = currentNode; obj.foundLevel = currentLevel; return; }

// recurse into child nodes if ( (currentNode.nodeType == currentNode.ELEMENT_NODE) && (/wikEd.scroll(Before|After)/.test(currentNode.className) != true) ) { wikEd.GetNextTextNodeChilds(obj, currentNode, currentLevel - 1); if (obj.foundNode != null) { return; }		}	}	return; };

// // wikEd.ApplyCSS: Attach css rules to document //

wikEd.ApplyCSS = function(cssDocument, cssRules) {

var stylesheet = new wikEd.StyleSheet(cssDocument); var rules = ''; for (var ruleName in cssRules) { if (cssRules.hasOwnProperty(ruleName) == true) { var ruleStyle = cssRules[ruleName];

// replace {wikedImage:image} in css rules with image path ruleStyle = ruleStyle.replace(/\{wikEdImage:(\w+)\}/g,				function (p, p1) {					return(wikEd.config.image[p1]);				}			);

// replace {wikedText:text} in css rules with translation ruleStyle = ruleStyle.replace(/\{wikEdText:(\w+)\}/g,				function (p, p1) {					return(wikEd.config.text[p1]);				}			);

rules += ruleName + ' {' + ruleStyle + '}\n'; }	}	stylesheet.AddCSSRules(rules); return; };

// // wikEd.StyleSheet: create a new style sheet object (code copied to wikEdDiff.js) //

wikEd.StyleSheet = function(contextObj) {

if (contextObj == null) { contextObj = document; }	this.styleElement = null;

// MS IE compatibility if (contextObj.createStyleSheet) { this.styleElement = contextObj.createStyleSheet; }

// standards compliant browsers else { this.styleElement = contextObj.createElement('style'); this.styleElement.from = 'text/css'; var insert = contextObj.getElementsByTagName('head')[0]; if (insert != null) { this.styleElement.appendChild(contextObj.createTextNode('')); // Safari 3 fix insert.appendChild(this.styleElement); }	}

// // wikEd.StyleSheet.AddCSSRule: add one rule at the time using DOM method, very slow //

this.AddCSSRule = function(selector, declaration) {

// MS IE compatibility if (this.styleElement.addRule != null) { if (declaration.length > 0) { this.styleElement.addRule(selector, declaration); }		}

// standards compliant browsers else { if (this.styleElement.sheet != null) { if (this.styleElement.sheet.insertRule != null) { this.styleElement.sheet.insertRule(selector + ' { ' + declaration + ' } ', 0); }			}		}	};

// // wikEd.StyleSheet.AddCSSRules: add or replace all rules at once, much faster //

this.AddCSSRules = function(rules) {

// MS IE compatibility if (this.styleElement.innerHTML == null) { this.styleElement.cssText = rules; }

// Safari, Chrome, WebKit else if ( (wikEd.safari == true) || (wikEd.chrome == true) || (wikEd.webkit == true) ) { if (this.styleElement.firstChild != null) { this.styleElement.removeChild(this.styleElement.firstChild); }			this.styleElement.appendChild(contextObj.createTextNode(rules)); }

// via innerHTML else { this.styleElement.innerHTML = rules; }		return; }; };

// // wikEd.GetStyle: get computed style properties for non-inline css definitions //

wikEd.GetStyle = function(element, styleProperty) {

var styleDocument = element.ownerDocument;

var style; if (element != null) { if ( (styleDocument.defaultView != null) && (styleDocument.defaultView.getComputedStyle != null) ) { style = styleDocument.defaultView.getComputedStyle(element, null)[styleProperty]; }

// MS IE compatibility else if (element.currentStyle != null) { style = element.currentStyle[styleProperty];

// recurse up trough the DOM tree if (style == 'inherit') { style = wikEd.GetStyle(element.parentNode, styleProperty); }		}		else { style = element.style[styleProperty]; }	}	return(style); };

// // wikEd.AjaxPreview: get rendered page text using an Ajax non-api POST call //

wikEd.AjaxPreview = function(textValue, ResponseHandler, livePreview) {

// prepare the url var requestUrl; if ( (wikEd.uploadEdit != true) && (wikEd.watchlistEdit != true) && (wikEd.viewDeleted != true) ) { requestUrl = wikEd.editForm.action.replace(/\?.*/, ''); if (/:\/\//.test(requestUrl) == false) { requestUrl = window.location.protocol + '//' + window.location.host + requestUrl; }	}	else if (wikEd.wikiGlobals.wgScriptPath != null) { requestUrl = wikEd.wikiGlobals.wgScriptPath + '/index.php'; }	else { requestUrl = window.location.href; requestUrl = requestUrl.replace(/\?.*/, ''); requestUrl = requestUrl.replace(/\/[\w\.]*$/, '/index.php'); }

// prepare the form fields var postFields = {}; if ( (wikEd.pageName != null) && (wikEd.wikiGlobals.wgCanonicalNamespace != 'Special') ) { postFields['title'] = wikEd.pageName; }	else { postFields['title'] = 'wikEd_preview'; }	postFields['action'] = 'submit'; postFields['wpTextbox1'] = textValue;

if (wikEd.starttime != null) { postFields['wpStarttime'] = wikEd.starttime; }	if (wikEd.edittime != null) { postFields['wpEdittime'] = wikEd.edittime; }	if (wikEd.editToken != null) { postFields['wpEditToken'] = wikEd.editToken; }	if (wikEd.autoSummary != null) { postFields['wpAutoSummary'] = wikEd.autoSummary; }

postFields['wpPreview'] = 'true'; if (livePreview != false) { postFields['live'] = 'true'; }

// make the ajax request wikEd.AjaxRequest('POST', requestUrl, postFields, 'text/plain', ResponseHandler);

return; };

// // wikEd.AjaxRequest: cross browser wrapper for Ajax requests (code copied to wikEdDiff.js) //

wikEd.AjaxRequest = function(requestMethod, requestUrl, postFields, overrideMimeType, ResponseHandler) {

var request; var headers = {}; var formData;

// prepare POST request if (requestMethod == 'POST') {

// assemble string body if (typeof(FormData) != 'function') {

// create boundary var boundary = wikEd.CreateRandomString(12);

// POST header, charset: WebKit workaround http://aautar.digital-radiation.com/blog/?p=1645 headers['Content-Type'] = 'multipart/form-data; charset=UTF-8; boundary=' + boundary;

// assemble body data formData = ''; for (var fieldName in postFields) { if (postFields.hasOwnProperty(fieldName) == true) { formData += '--' + boundary + '\r\n'; formData += 'Content-Disposition: form-data; name="' + fieldName + '"\r\n\r\n' + postFields[fieldName] + '\r\n'; }			}			formData += '--' + boundary + '--\r\n'; }

// use FormData object else { formData = new FormData; for (var fieldName in postFields) { if (postFields.hasOwnProperty(fieldName) == true) { formData.append(fieldName, postFields[fieldName]); }			}		}	}

// send the request using Greasemonkey GM_xmlhttpRequest if (wikEd.greasemonkey == true) { headers['User-Agent'] = navigator.userAgent;

// workaround for Error: Greasemonkey access violation: unsafeWindow cannot call GM_xmlhttpRequest. // see http://wiki.greasespot.net/Greasemonkey_access_violation setTimeout(function {			new GM_xmlhttpRequest({ 'method': requestMethod, 'url':    requestUrl, 'overrideMimeType': overrideMimeType, 'headers': headers, 'data':   formData, 'onreadystatechange': function(ajax) { if (ajax.readyState != 4) { return; }						ResponseHandler(ajax); return; }			});		}, 0);	}

// use standard XMLHttpRequest else {

// allow ajax request from local copy for testing if (wikEd.config.allowLocalAjax == true) { if (typeof(netscape) == 'object') { netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead'); }		}

// create new XMLHttpRequest object if (typeof(XMLHttpRequest) == 'function') { request = new XMLHttpRequest; }

// IE		else if (typeof(ActiveXObject) == 'object') {

// IE 6 try { request = new ActiveXObject('Microsoft.XMLHTTP'); }

// IE 5.5 catch(err) { try { request = new ActiveXObject('Msxml2.XMLHTTP'); }				catch(err) { return; }			}		}		if (request == null) { return; }

// open the request request.open(requestMethod, requestUrl, true);

// set the headers for (var headerName in headers) { if (headers.hasOwnProperty(headerName) == true) { request.setRequestHeader(headerName, headers[headerName]); }		}

// set the mime type if ( (request.overrideMimeType != null) && (overrideMimeType != null) ) { request.overrideMimeType(overrideMimeType); }

// send the request, catch security violations Opera 0.9.51 try { request.send(formData); }		catch(err) { return; }

// wait for the data request.onreadystatechange = function { if (request.readyState != 4) { return; }			ResponseHandler(request); return; };	}	return; };

// // wikEd.GetGlobals: parse global context variables (code copied to wikEdDiff.js) //  uses postMessage, head script, and JSON encoding for Greasemonkey global to GM context access

wikEd.GetGlobals = function(names, gotGlobalsHook) {

if (gotGlobalsHook != null) { wikEd.gotGlobalsHook.push(gotGlobalsHook); }

// code already running in global context if (wikEd.greasemonkey != true) { var globalScopeCode = ''; for (var i = 0; i < names.length; i ++) { globalScopeCode += '' + 'if (typeof(' + names[i] + ') != \'undefined\') {' + ' wikEd.wikiGlobals.' + names[i] + ' = ' + names[i] + ';' + '}';		}		if (gotGlobalsHook != null) { globalScopeCode += 'wikEd.ExecuteHook(wikEd.gotGlobalsHook[' + (wikEd.gotGlobalsHook.length - 1) + '], true);'; }		eval(globalScopeCode); return; }

// prepare code to be executed in global context for Greasemonkey if ( (typeof(window.postMessage) == 'undefined') || (typeof(JSON) != 'object') ) { return; }	var globalScopeCode = 'var globalObj = {};'; if (gotGlobalsHook != null) { wikEd.gotGlobalsHook.push(gotGlobalsHook); globalScopeCode += 'globalObj.hookNumber = ' + (wikEd.gotGlobalsHook.length - 1) + ';'; }	globalScopeCode += 'globalObj.scriptId = \'wikEdGetGlobalScript' + wikEd.getGlobalsCounter + '\';'; globalScopeCode += 'globalObj.wikEdGetGlobals = {};';

// add global scope variables for (var i = 0; i < names.length; i ++) { globalScopeCode += '' + 'if (typeof(' + names[i] + ') != \'undefined\') {' + ' globalObj.wikEdGetGlobals[\'' + names[i] + '\'] = ' + names[i] + ';' + '}';	}	globalScopeCode += 'var globalObjStr = JSON.stringify(globalObj);'; var origin = wikEd.pageOrigin; if (origin == 'file://') { origin = '*'; }	globalScopeCode += 'window.postMessage(globalObjStr, \'' + origin + '\');';

// create head script to execute the code var script = document.createElement('script'); script.id = 'wikEdGetGlobalScript' + wikEd.getGlobalsCounter; wikEd.getGlobalsCounter ++; if (typeof(script.innerText) != 'undefined') { script.innerText = globalScopeCode; }	else { script.textContent = globalScopeCode; }	wikEd.head.appendChild(script);

return; };

// // wikEd.GetGlobalsReceiver: event handler for wikEd.GetGlobals postMessage (code copied to wikEdDiff.js) //

wikEd.GetGlobalsReceiver = function(event) {

if (event.source != window) { return; }	if ( (event.origin != 'null') && (event.origin != wikEd.pageOrigin) ) { return; }	if (event.data != '') { var globalObj = JSON.parse(event.data); var globals = globalObj.wikEdGetGlobals; if (globals != null) { for (var key in globals) { if (globals.hasOwnProperty(key) == true) { wikEd.wikiGlobals[key] = globals[key]; }			}

// run scheduled functions only once if (globalObj.hookNumber != null) { wikEd.ExecuteHook(wikEd.gotGlobalsHook[globalObj.hookNumber], true); }

// clean up head script var script = document.getElementById(globalObj.scriptId); wikEd.head.removeChild(script); }	}	return; };

// // wikEd.GetAttribute: MS IE compatibility wrapper for element.getAttribute //

wikEd.GetAttribute = function(element, attribName) {

var attribValue = element.getAttribute(attribName);

// MS IE compatibility for checked if (attribName == 'checked') { if ( typeof(attribValue) == 'boolean' ) { if (attribValue == true) { attribValue = 'true'; }			else { attribValue = 'false'; }		}	}	return(attribValue); };

// // wikEd.GetWindowInnerHeight: MS IE compatibility wrapper for window.innerHeight //

wikEd.GetWindowInnerHeight = function {

var value = window.innerHeight; if (value == null) { if (document.documentElement != null) { value = document.documentElement.clientHeight; }		if ( (value == null) || (value == 0) ) { value = document.body.clientHeight; }	}	return(value); };

// // wikEd.GetWindowInnerWidth: MS IE compatibility wrapper for window.innerWidth //

wikEd.GetWindowInnerWidth = function {

var value = window.innerWidth; if (value == null) { if (document.documentElement != null) { value = document.documentElement.clientWidth; }		if ( (value == null) || (value == 0) ) { value = document.body.clientWidth; }	}	return(value); };

// // wikEd.AddEventListener: wrapper for addEventListener (http://ejohn.org/projects/flexible-javascript-events/) (code copied to wikEdDiff.js) //

wikEd.AddEventListener = function(domElement, eventType, eventHandler, useCapture) {

if (domElement == null) { return; }	if (typeof(domElement.addEventListener) == 'function') { domElement.addEventListener(eventType, eventHandler, useCapture); }	else { domElement['wikEd' + eventType + eventHandler] = eventHandler; domElement[eventType + eventHandler] = function { var eventRootElement = document; if (document.addEventListener == null) { eventRootElement = window; }			domElement['wikEd' + eventType + eventHandler](eventRootElement.event); };		domElement.attachEvent('on' + eventType, domElement[eventType + eventHandler] ); }	return; };

// // wikEd.RemoveEventListener: wrapper for removeEventListener //

wikEd.RemoveEventListener = function(domElement, eventType, eventHandler, useCapture) {

if (domElement == null) { return; }	if (typeof(domElement.removeEventListener) == 'function') { domElement.removeEventListener(eventType, eventHandler, useCapture); }	else { domElement.detachEvent('on' + eventType, domElement[eventType + eventHandler]); domElement[eventType + eventHandler] = null; }	return; };

// // wikEd.EventWrapper: MS IE and Mozilla compatibility fix for event object //

wikEd.EventWrapper = function(event, thisElement) {

var eventAlt; if (window.event != null) { eventAlt = window.event; }	else if (wikEd.frameWindow != null) { if (typeof(wikEd.frameWindow.event) != 'undefined') { eventAlt = wikEd.frameWindow.event; }	}	if (eventAlt != null) { event = eventAlt; event.stopPropagation = function { event.cancelBubble = true; };		event.preventDefault = function { event.returnValue = false; };		if (event.target == null) { event.target = event.srcElement; }		if (event.currentTarget == null) { event.currentTarget = thisElement; }		if (event.relatedTarget == null) { if (event.type == 'mouseout') { event.relatedTarget = event.toElement; }			else if (event.type == 'mouseover') { event.relatedTarget = event.fromElement; }		}	}

// avoid strange Mozilla security error https://bugzilla.mozilla.org/show_bug.cgi?id=101197, fixed in FF3.6 if ( (event.type == 'mouseout') || (event.type == 'mouseover') ) { event.safeRelatedTarget = event.relatedTarget; if (wikEd.mozilla == true) { try { event.safeRelatedTarget.toString; }			catch(error) { event.safeRelatedTarget = null; }		}	}	return(event); };

// // wikEd.GetElementsByClassName: cross browser / backwards compatibility wrapper //

wikEd.GetElementsByClassName = function(className, tagName, parent) {

if (parent == null) { parent = document.body; }

// new browsers var nodeList = []; if (document.getElementsByClassName != null) { nodeList = parent.getElementsByClassName(className); }

// querySelector (IE8 standards mode) else if (parent.querySelectorAll != null) { nodeList = parent.querySelectorAll(tagName + '.' + className); }

// all others (slow) else { var tags = parent.getElementsByTagName(tagName); for (var i = 0; i < tags.length; i ++) { if (tags[i].className == className) { nodeList.push(tags[i]); }		}	}	return(nodeList); };

// // wikEd.GetPreviousSiblingNode: getPreviousSibling, ignore non-element nodes such as comments //

wikEd.GetPreviousSiblingNode = function(node) {

while (node != null) { node = node.previousSibling; if (node == null) { break; }		if (node.nodeType == node.ELEMENT_NODE) { break; }	}	return(node); };

// // wikEd.GetNextSiblingNode: getNextSibling, ignore non-element nodes such as comments //

wikEd.GetNextSiblingNode = function(node) {

while (node != null) { node = node.nextSibling; if (node == null) { break; }		if (node.nodeType == node.ELEMENT_NODE) { break; }	}	return(node); };

// // wikEd.GetFirstChildNode: getFirstChild, ignore non-element nodes such as comments //

wikEd.GetFirstChildNode = function(node) {

if (node != null) { node = node.firstChild; wikEd.GetNextSiblingNode(node); }	return(node); };

// // wikEd.GetLastChildNode: getLastChild, ignore non-element nodes such as comments //

wikEd.GetLastChildNode = function(node) {

if (node != null) { node = node.lastChild; wikEd.GetPreviousSiblingNode(node); return(node); } };

// // wikEd.CreateRandomString: create random string of specified length and character set (code copied to wikEdDiff.js) //

wikEd.CreateRandomString = function(strLength, charSet) {

if (charSet == null) { charSet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789'; }	var str = ''; for (var i = 0; i < strLength; i ++) { str += charSet.charAt(Math.floor(Math.random * charSet.length)); }	return(str); };

// // wikEd.Debug: print the value of variables //  use either a single value or a description followed by a value //  popup = true: use alert popup if debug textarea is not yet setup //

wikEd.Debug = function(objectName, object, usePopup) {

// string var value = ''; if (typeof(object) == 'string') { value = ': ' + '"' + object + '"'; }

// objects else if (typeof(object) == 'object') {

// null if (object == null) { value = ': [null]'; }

// whole parse tree array // { 'tag':, 'parent': , 'firstChild': , 'nextSibling': , 'start': , 'tagLength': , 'type': , 'pairedTagPos': , 'left': , 'right': , 'index': } else if ( (typeof(object[0]) == 'object') && (typeof(object[0].type) == 'string') ) { value = ': Parse tree full:\n'; for (var i = 0; i < object.length; i ++) { value += i + ': '; var node = object[i]; if (node == null) { value += '(null)\n'; }				else { if (node.type == 'root') { value += '[type: "' + node.type + '"]\n'; }					else { value += '[type: "' + node.type + '", tag: "' + node.tag + '", start: ' + node.start + ', tagLength: ' + node.tagLength + ', parent: ' + node.parent; if (typeof(node.left) == 'string') { value += ', left: "' + node.left + '", right: "' + node.right + '"'; }						value += '],\n'; }				}			}		}

// whole parse tree up		else if ( (typeof(object.tree) == 'object') && (typeof(object.lastOpenNode) == 'number') ) { value = ': Parse tree upwards:\n'; var parseTreeIndex = object.lastOpenNode; var node = object.tree[parseTreeIndex]; while (node != null) { if (node.type == 'root') { value += parseTreeIndex + ': [type: "' + node.type + '"]\n'; }				else { value += parseTreeIndex + ': [type: "' + node.type + '", tag: "' + node.tag + '", start: ' + node.start + ', tagLength: ' + node.tagLength + ', parent: ' + node.parent; if (typeof(node.left) == 'string') { value += ', left: "' + node.left + '", right: "' + node.right + '"'; }					value += '],\n'; }				if (node.parent == parseTreeIndex) { value += '(circular reference, break)'; break; }				parseTreeIndex = node.parent; node = object.tree[node.parent]; }		}

// parse tree node // { 'tag':, 'parent': , 'firstChild': , 'nextSibling': , 'start': , 'tagLength': , 'type': , 'pairedTagPos': , 'left': , 'right': , 'index': } else if (typeof(object.type) == 'string') { var node = object; if (node.type == 'root') { value = ': [type: "' + node.type + '"]'; }			else { value = ': [tag: "' + node.tag + '", type: "' + node.type + '", start: ' + node.start + ', tagLength: ' + node.tagLength + ', parent: ' + node.parent + ']'; }		}

// DOM nodes else if (typeof(object.nodeName) == 'string') { value = ': [node; nodeName: ' + object.nodeName; if (typeof(object.id) == 'string') { if (object.id != '') { value += ', id: "' + object.id + '"'; }			}			if (typeof(object.className) == 'string') { if (object.className != '') { value += ', class: "' + object.className + '"'; }			}			if (typeof(object.nodeValue) == 'string') { value += ', nodeValue: "' + object.nodeValue + '"'; }			if ( (object.innerHTML != null) && (object.innerHTML != '') ) { var html = object.innerHTML; if (html.length > wikEd.config.debugInnerHtmlLength) { html = html.substr(0, wikEd.config.debugInnerHtmlLength - 3) + '...'; }				value += ', innerHTML: "' + html + '"'; }			value += ']'; }

// default else { value = ': [' + object + ']'; }	}

// undefined else if (typeof(object) == 'undefined') { value = ''; }

// default else { value = ': ' + object; }

// use debug textarea var useDebug = false; if (typeof(wikEd.debug) != 'undefined') { if (wikEd.debug != null) { useDebug = true; }	}	if (useDebug == true) { if (wikEd.debugOpen == false) { wikEd.debugWrapper.style.visibility = 'visible'; wikEd.debug.style.display = 'block'; window.scroll(0, wikEd.GetOffsetTop(wikEd.debug)); wikEd.debugOpen = true; }		if (objectName == null) { wikEd.debug.value = ''; }		else {

// cut text if having reached maximum length value = objectName + value + '\n'; if (wikEd.debug.value.length > wikEd.config.debugMaxLength) { wikEd.debug.value = value + wikEd.debug.value.substr(0, wikEd.config.debugMaxLength * 2 / 3); }			else { wikEd.debug.value = value + wikEd.debug.value; }		}	}

// use popup alert else if (usePopup == true) { if (object == null) { alert(objectName); }		else { alert(objectName + ': ' + value); }	}

// use error console else { var msg; if (object == null) { msg = objectName + ''; }		else { msg = objectName + ': ' + value; }		wikEd.ConsoleLog(msg); }	return; };

// // wikEd.ConsoleLog: log message to console //

wikEd.ConsoleLog = function(msg) {

if ( (typeof(mw) == 'object') && (typeof(mw.log) == 'function') ) { mw.log(msg); }	else { msg = msg.replace(/([\'\\])/g, '\\$1'); setTimeout('throw new Error(\'wikEd.ConsoleLog: ' + msg + '\')', 0); }	return; };

// // wikEd.DebugTimer: show all measured timepoints //  add a new time measurement: wikEd.debugTimer.push([1234, new Date]);

wikEd.DebugTimer = function { var times = ''; var start = wikEd.debugTimer[0][1].getTime; var prev = 0; for (var i = 0; i < wikEd.debugTimer.length; i ++) { var curr = wikEd.debugTimer[i][1].getTime - start; var diff = curr - prev; prev = curr; times += wikEd.debugTimer[i][0] + ': ' + curr + ' ms (+ ' + diff + ' ms)\n'; }	wikEd.Debug(times); wikEd.debugTimer = []; };

// // wikEd.InsertTags: overrides the insertTags function in wikibits.js used by the standard button toolbar and the editpage special chars //

wikEd.InsertTags = function(openTag, closeTag, sampleText) {

if (wikEd.useWikEd == true) { wikEd.EditButton(document.getElementById('wikEdInsertTags'), 'wikEdInsertTags', [openTag, closeTag, sampleText]); }	else if (wikEd.InsertTagsOriginal != null) { wikEd.InsertTagsOriginal(openTag, closeTag, sampleText); }	return; };

// // wikEd.InsertAtCursor: overrides the insertAtCursor function in wikia.com MediaWiki:Functions.js //

wikEd.InsertAtCursor = function(myField, myValue) {

if (wikEd.useWikEd == true) { if (myField == wikEd.textarea) { wikEd.EditButton(document.getElementById('wikEdInsertTags'), 'wikEdInsertTags', [ myValue ]); }	}	else if (wikEd.InsertAtCursorOriginal != null) { wikEd.InsertAtCursorOriginal(myField, myValue); }	return; };

// // wikEd.ExecuteHook: executes scheduled custom functions from functionsHook array (code copied to wikEdDiff.js) //

wikEd.ExecuteHook = function(functionsHook, onlyOnce) {

for (var i = 0; i < functionsHook.length; i ++) { if (typeof(functionsHook[i]) == 'function') { functionsHook[i]; }	}	if (onlyOnce == true) { functionsHook = []; }	return; };

// // wikEd.InitUnicode: define character tables used in wikEd.FixUnicode //  see http://kmi.open.ac.uk/projects/ceryle/doc/docs/NOTE-charents.html

wikEd.InitUnicode = function {

// define only once if (wikEd.supportedChars != null) { return; }

// supported chars in Mozilla and IE	wikEd.supportedChars = [ [ 'a1', 'iexcl'],  // ¡ [ 'a2', 'cent'],   // ¢ [ 'a3', 'pound'],  // £ [ 'a4', 'curren'], // ¤ [ 'a5', 'yen'],    // ¥ [ 'a6', 'brvbar'], // ¦ [ 'a7', 'sect'],   // § [ 'a8', 'uml'],    // ¨ [ 'a9', 'copy'],   // © [ 'aa', 'ordf'],   // ª [ 'ab', 'laquo'],  // « [ 'ac', 'not'],    // ¬ [ 'ae', 'reg'],    // ® [ 'af', 'macr'],   // ¯ [ 'b0', 'deg'],    // ° [ 'b1', 'plusmn'], // ± [ 'b2', 'sup2'],   // ² [ 'b3', 'sup3'],   // ³ [ 'b4', 'acute'],  // ´ [ 'b5', 'micro'],  // µ [ 'b6', 'para'],   // ¶ [ 'b7', 'middot'], // · [ 'b8', 'cedil'],  // ¸ [ 'b9', 'sup1'],   // ¹ [ 'ba', 'ordm'],   // º [ 'bb', 'raquo'],  // » [ 'bc', 'frac14'], // ¼ [ 'bd', 'frac12'], // ½ [ 'be', 'frac34'], // ¾ [ 'bf', 'iquest'], // ¿ [ 'c0', 'Agrave'], // À [ 'c1', 'Aacute'], // Á [ 'c2', 'Acirc'],  // Â [ 'c3', 'Atilde'], // Ã [ 'c4', 'Auml'],   // Ä [ 'c5', 'Aring'],  // Å [ 'c6', 'AElig'],  // Æ [ 'c7', 'Ccedil'], // Ç [ 'c8', 'Egrave'], // È [ 'c9', 'Eacute'], // É [ 'ca', 'Ecirc'],  // Ê [ 'cb', 'Euml'],   // Ë [ 'cc', 'Igrave'], // Ì [ 'cd', 'Iacute'], // Í [ 'ce', 'Icirc'],  // Î [ 'cf', 'Iuml'],   // Ï [ 'd0', 'ETH'],    // Ð [ 'd1', 'Ntilde'], // Ñ [ 'd2', 'Ograve'], // Ò [ 'd3', 'Oacute'], // Ó [ 'd4', 'Ocirc'],  // Ô [ 'd5', 'Otilde'], // Õ [ 'd6', 'Ouml'],   // Ö [ 'd7', 'times'],  // × [ 'd8', 'Oslash'], // Ø [ 'd9', 'Ugrave'], // Ù [ 'da', 'Uacute'], // Ú [ 'db', 'Ucirc'],  // Û [ 'dc', 'Uuml'],   // Ü [ 'dd', 'Yacute'], // Ý [ 'de', 'THORN'],  // Þ [ 'df', 'szlig'],  // ß [ 'e0', 'agrave'], // à [ 'e1', 'aacute'], // á [ 'e2', 'acirc'],  // â [ 'e3', 'atilde'], // ã [ 'e4', 'auml'],   // ä [ 'e5', 'aring'],  // å [ 'e6', 'aelig'],  // æ [ 'e7', 'ccedil'], // ç [ 'e8', 'egrave'], // è [ 'e9', 'eacute'], // é [ 'ea', 'ecirc'],  // ê [ 'eb', 'euml'],   // ë [ 'ec', 'igrave'], // ì [ 'ed', 'iacute'], // í [ 'ee', 'icirc'],  // î [ 'ef', 'iuml'],   // ï [ 'f0', 'eth'],    // ð [ 'f1', 'ntilde'], // ñ [ 'f2', 'ograve'], // ò [ 'f3', 'oacute'], // ó [ 'f4', 'ocirc'],  // ô [ 'f5', 'otilde'], // õ [ 'f6', 'ouml'],   // ö [ 'f7', 'divide'], // ÷ [ 'f8', 'oslash'], // ø [ 'f9', 'ugrave'], // ù [ 'fa', 'uacute'], // ú [ 'fb', 'ucirc'],  // û [ 'fc', 'uuml'],   // ü [ 'fd', 'yacute'], // ý [ 'fe', 'thorn'],  // þ [ 'ff', 'yuml'],   // ÿ [ '27', 'apos'],   // ' [ '22', 'quot'],   // "		[ '152', 'OElig'],  // Œ		[ '153', 'oelig'],  // œ		[ '160', 'Scaron'], // Š		[ '161', 'scaron'], // š		[ '178', 'Yuml'],   // Ÿ		[ '2c6', 'circ'],   // ˆ		[ '2dc', 'tilde'],  // ˜		['2013', 'ndash'],  // –		['2014', 'mdash'],  // —		['2018', 'lsquo'],  // ‘		['2019', 'rsquo'],  // ’		['201a', 'sbquo'],  // ‚		['201c', 'ldquo'],  // “		['201d', 'rdquo'],  // ”		['201e', 'bdquo'],  // „		['2020', 'dagger'], // †		['2021', 'Dagger'], // ‡		['2030', 'permil'], // ‰		['2039', 'lsaquo'], // ‹		['203a', 'rsaquo'], // ›		['20ac', 'euro'],   // €		[ '192', 'fnof'],   // ƒ		[ '391', 'Alpha'],  // Α		[ '392', 'Beta'],   // Β		[ '393', 'Gamma'],  // Γ		[ '394', 'Delta'],  // Δ		[ '395', 'Epsilon'],// Ε		[ '396', 'Zeta'],   // Ζ		[ '397', 'Eta'],    // Η		[ '398', 'Theta'],  // Θ		[ '399', 'Iota'],   // Ι		[ '39a', 'Kappa'],  // Κ		[ '39b', 'Lambda'], // Λ		[ '39c', 'Mu'],     // Μ [ '39d', 'Nu'],    // Ν [ '39e', 'Xi'],    // Ξ [ '39f', 'Omicron'],// Ο [ '3a0', 'Pi'],    // Π [ '3a1', 'Rho'],   // Ρ [ '3a3', 'Sigma'], // Σ [ '3a4', 'Tau'],   // Τ [ '3a5', 'Upsilon'],// Υ [ '3a6', 'Phi'],   // Φ [ '3a7', 'Chi'],   // Χ [ '3a8', 'Psi'],   // Ψ [ '3a9', 'Omega'], // Ω [ '3b1', 'alpha'], // α [ '3b2', 'beta'],  // β [ '3b3', 'gamma'], // γ [ '3b4', 'delta'], // δ [ '3b5', 'epsilon'],// ε [ '3b6', 'zeta'],  // ζ [ '3b7', 'eta'],   // η [ '3b8', 'theta'], // θ [ '3b9', 'iota'],  // ι [ '3ba', 'kappa'], // κ [ '3bb', 'lambda'], // λ [ '3bc', 'mu'],    // μ [ '3bd', 'nu'],    // ν [ '3be', 'xi'],    // ξ [ '3bf', 'omicron'],// ο [ '3c0', 'pi'],    // π [ '3c1', 'rho'],   // ρ [ '3c2', 'sigmaf'], // ς [ '3c3', 'sigma'], // σ [ '3c4', 'tau'],   // τ [ '3c5', 'upsilon'],// υ [ '3c6', 'phi'],   // φ [ '3c7', 'chi'],   // χ [ '3c8', 'psi'],   // ψ [ '3c9', 'omega'], // ω ['2022', 'bull'],  // • ['2026', 'hellip'], // … ['2032', 'prime'], // ′ ['2033', 'Prime'], // ″ ['203e', 'oline'], // ‾ ['2044', 'frasl'], // ⁄ ['2122', 'trade'], // ™ ['2190', 'larr'],  // ← ['2191', 'uarr'],  // ↑ ['2192', 'rarr'],  // → ['2193', 'darr'],  // ↓ ['2194', 'harr'],  // ↔ ['21d2', 'rArr'],  // ⇒ ['21d4', 'hArr'],  // ⇔ ['2200', 'forall'], // ∀ ['2202', 'part'],  // ∂ ['2203', 'exist'], // ∃ ['2207', 'nabla'], // ∇ ['2208', 'isin'],  // ∈ ['220b', 'ni'],    // ∋ ['220f', 'prod'],  // ∏ ['2211', 'sum'],   // ∑ ['2212', 'minus'], // − ['221a', 'radic'], // √ ['221d', 'prop'],  // ∝ ['221e', 'infin'], // ∞ ['2220', 'ang'],   // ∠ ['2227', 'and'],   // ∧ ['2228', 'or'],    // ∨ ['2229', 'cap'],   // ∩ ['222a', 'cup'],   // ∪ ['222b', 'int'],   // ∫ ['2234', 'there4'], // ∴ ['223c', 'sim'],   // ∼ ['2248', 'asymp'], // ≈ ['2260', 'ne'],    // ≠ ['2261', 'equiv'], // ≡ ['2264', 'le'],    // ≤ ['2265', 'ge'],    // ≥ ['2282', 'sub'],   // ⊂ ['2283', 'sup'],   // ⊃ ['2286', 'sube'],  // ⊆ ['2287', 'supe'],  // ⊇ ['2295', 'oplus'], // ⊕ ['25ca', 'loz'],   // ◊ ['2660', 'spades'], // ♠ ['2663', 'clubs'], // ♣ ['2665', 'hearts'], // ♥ ['2666', 'diams']  // ♦ ];

// reserved for internal wikEd use wikEd.reservedChars = [ [ '26', 'amp'],    // & [ '3c', 'lt'],     // < [ '3e', 'gt'],     // > [ 'a0', 'nbsp']    // ];

// special chars (spaces and invisible characters) wikEd.specialChars = [ ['2002', 'ensp'],  //   en space [ 'ad', 'shy'],    // ­ soft hyphen ['2003', 'emsp'],  //   em space ['2009', 'thinsp'], //   thin space ['200c', 'zwnj'],  // ‌ zero width non-joiner ['200d', 'zwj'],   // ‍ zero width joiner ['200e', 'lrm'],   // ‎ left-to-right mark ['200f', 'rlm']    // ‏ right-to-left mark ];

// unsupported chars in IE6 wikEd.problemChars = [ [ '3d1', 'thetasym'], // ϑ [ '3d2', 'upsih'],   // ϒ [ '3d6', 'piv'],     // ϖ ['2118', 'weierp'],  // ℘ ['2111', 'image'],   // ℑ ['211c', 'real'],    // ℜ ['2135', 'alefsym'], // ℵ ['21b5', 'crarr'],   // ↵ ['21d0', 'lArr'],    // ⇐ ['21d1', 'uArr'],    // ⇑ ['21d3', 'dArr'],    // ⇓ ['2205', 'empty'],   // ∅ ['2209', 'notin'],   // ∉ ['2217', 'lowast'],  // ∗ ['2245', 'cong'],    // ≅ ['2284', 'nsub'],    // ⊄ ['22a5', 'perp'],    // ⊥ ['2297', 'otimes'],  // ⊗ ['22c5', 'sdot'],    // ⋅ ['2308', 'lceil'],   // ⌈ ['2309', 'rceil'],   // ⌉ ['230a', 'lfloor'],  // ⌊ ['230b', 'rfloor'],  // ⌋ ['2329', 'lang'],    // 〈 ['232a', 'rang']     // 〉 ];

// index to all existing 253 HTML/XHTML character entities var allCharEntities = wikEd.supportedChars.concat(wikEd.reservedChars, wikEd.specialChars, wikEd.problemChars); for (var i = 0; i < allCharEntities.length; i ++) { wikEd.charEntitiesByName[ allCharEntities[i][1] ] = String.fromCharCode(parseInt(allCharEntities[i][0], 16)); }

// syntax highlighting of ASCII control characters and invisibles (decimal value, title) wikEd.controlCharHighlighting = { '0': 'null', '1': 'start of heading', '2': 'start of text', '3': 'end of text', '4': 'end of transmission', '5': 'enquiry', '6': 'acknowledge', '7': 'bell', '8': 'backspace', '11': 'vertical tab', '12': 'form feed, new page', '14': 'shift out', '15': 'shift in', '16': 'data link escape', '17': 'device control 1', '18': 'device control 2', '19': 'device control 3', '20': 'device control 4', '21': 'negative acknowledge', '22': 'synchronous idle', '23': 'end of trans. block', '24': 'cancel', '25': 'end of medium', '26': 'substitute', '27': 'escape', '28': 'file separator', '29': 'group separator', '30': 'record separator', '31': 'unit separator', '8204': 'zero width non-joiner', // \u200c '8205': 'zero width joiner',    // \u200d '8206': 'left-to-right mark',   // \u200e '8207': 'right-to-left mark',   // \u200f '8232': 'line separator',       // \u2028 '8233': 'paragraph separator'   // \u2028 };	for (var decimalValue in wikEd.controlCharHighlighting) { if (wikEd.controlCharHighlighting.hasOwnProperty(decimalValue) == true) { wikEd.controlCharHighlightingStr += '\\' + String.fromCharCode(decimalValue); }	}

// character syntax highlighting: strange spaces, hyphens, and dashes (decimal value, class = title) wikEd.charHighlighting = { '9':    'tab',        // \u0009 '	' '8194': 'enSpace',    // \u2002 ' ' '8195': 'emSpace',    // \u2003 ' ' '8201': 'thinSpace',  // \u2009 ' ' '12288': 'ideographicSpace', // \u3000 '　' '45':   'hyphenDash', // \u00a0 '-' '173':  'softHyphen', // \u00ad '­' '8210': 'figureDash', // \u2012 '‒' '8211': 'enDash',     // \u2013 '–' '8212': 'emDash',     // \u2014 '—' '8213': 'barDash',    // \u2015 '―' '8722': 'minusDash'   // \u2212 '−' };	for (var decimalValue in wikEd.charHighlighting) { if (wikEd.charHighlighting.hasOwnProperty(decimalValue) == true) { wikEd.charHighlightingStr += '\\' + String.fromCharCode(decimalValue); }	}

// UniCode support for regexps, from http://xregexp.com/plugins/xregexp-unicode-base.js and /xregexp-unicode-categories.js	wikEd.letters = '0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC'.replace(/(\w{4})/g, '\\u$1');

return; }; // call startup wikEd.Startup; // End wikEd

// Google Analytics var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-22928841-2']); _gaq.push(['_trackPageview']); _gaq.push(['_trackPageLoadTime']); (function { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); });