(function(jQuery){jQuery.each(['backgroundColor','borderBottomColor','borderLeftColor','borderRightColor','borderTopColor','color','outlineColor'],function(i,attr){jQuery.fx.step[attr]=function(fx){if(fx.state==0){fx.start=getColor(fx.elem,attr);fx.end=getRGB(fx.end)}fx.elem.style[attr]="rgb("+[Math.max(Math.min(parseInt((fx.pos*(fx.end[0]-fx.start[0]))+fx.start[0]),255),0),Math.max(Math.min(parseInt((fx.pos*(fx.end[1]-fx.start[1]))+fx.start[1]),255),0),Math.max(Math.min(parseInt((fx.pos*(fx.end[2]-fx.start[2]))+fx.start[2]),255),0)].join(",")+")"}});function getRGB(color){var result;if(color&&color.constructor==Array&&color.length==3)return color;if(result=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))return[parseInt(result[1]),parseInt(result[2]),parseInt(result[3])];if(result=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))return[parseFloat(result[1])*2.55,parseFloat(result[2])*2.55,parseFloat(result[3])*2.55];if(result=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))return[parseInt(result[1],16),parseInt(result[2],16),parseInt(result[3],16)];if(result=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))return[parseInt(result[1]+result[1],16),parseInt(result[2]+result[2],16),parseInt(result[3]+result[3],16)];return colors[jQuery.trim(color).toLowerCase()]}function getColor(elem,attr){var color;do{color=jQuery.curCSS(elem,attr);if(color!=''&&color!='transparent'||jQuery.nodeName(elem,"body"))break;attr="backgroundColor"}while(elem=elem.parentNode);return getRGB(color)};var colors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);(function($){function Countdown(){this.regional=[];this.regional['']={labels:['Years','Months','Weeks','Days','Hours','Minutes','Seconds'],labelsSingle:['Year','Month','Week','Day','Hour','Minute','Second'],compactLabels:['y','m','w','d'],compactLabelsSingle:['y','m','w','d'],timeSeparator:':'};this._defaults={format:'dHMS',layout:'',compact:false,description:'',expiryUrl:null,alwaysExpire:false,onExpiry:null,onTick:null,serverTime:null};$.extend(this._defaults,this.regional[''])}var PROP_NAME='countdown';var Y=0;var O=1;var W=2;var D=3;var H=4;var M=5;var S=6;$.extend(Countdown.prototype,{markerClassName:'hasCountdown',setDefaults:function(options){extendRemove(this._defaults,options||{})},_attachCountdown:function(target,options){target=$(target);if(target.is('.'+this.markerClassName)){return}target.addClass(this.markerClassName);if(!target[0].id){target[0].id='cdn'+new Date().getTime()}var inst={};inst.options=$.extend({},options);inst._periods=[0,0,0,0,0,0,0];this._adjustSettings(inst);$.data(target[0],PROP_NAME,inst);this._updateCountdown(target,inst)},_updateCountdown:function(id,inst){var target=$(id);inst=inst||$.data(target[0],PROP_NAME);if(!inst){return}target.html(this._generateHTML(inst));var onTick=this._get(inst,'onTick');if(onTick){onTick.apply(target[0],[inst._hold!='lap'?inst._periods:this._calculatePeriods(inst,inst._show,new Date())])}var expired=inst._hold!='pause'&&(inst._since?inst._now.getTime()<=inst._since.getTime():inst._now.getTime()>=inst._until.getTime());if(expired){if(inst._timer||this._get(inst,'alwaysExpire')){var onExpiry=this._get(inst,'onExpiry');if(onExpiry){onExpiry.apply(target[0],[])}var expiryUrl=this._get(inst,'expiryUrl');if(expiryUrl){window.location=expiryUrl}}inst._timer=null}else if(inst._hold=='pause'){inst._time=null}else{var format=this._get(inst,'format');inst._timer=setTimeout('$.countdown._updateCountdown("#'+target[0].id+'")',(format.match('s|S')?1:(format.match('m|M')?30:600))*980)}$.data(target[0],PROP_NAME,inst)},_changeCountdown:function(target,options){var inst=$.data(target,PROP_NAME);if(inst){extendRemove(inst.options,options||{});this._adjustSettings(inst);$.data(target,PROP_NAME,inst);this._updateCountdown(target,inst)}},_destroyCountdown:function(target){target=$(target);if(!target.is('.'+this.markerClassName)){return}target.removeClass(this.markerClassName).empty();var inst=$.data(target[0],PROP_NAME);if(inst._timer){clearTimeout(inst._timer)}$.removeData(target[0],PROP_NAME)},_pauseCountdown:function(target){this._hold(target,'pause')},_lapCountdown:function(target){this._hold(target,'lap')},_resumeCountdown:function(target){this._hold(target,null)},_hold:function(target,hold){var inst=$.data(target,PROP_NAME);if(inst){if(inst._hold=='pause'&&!hold){inst._periods=inst._savePeriods;var sign=(inst._since?'-':'+');inst[inst._since?'_since':'_until']=this._determineTime(sign+inst._periods[0]+'Y'+sign+inst._periods[1]+'O'+sign+inst._periods[2]+'W'+sign+inst._periods[3]+'D'+sign+inst._periods[4]+'H'+sign+inst._periods[5]+'M'+sign+inst._periods[6]+'S')}inst._hold=hold;inst._savePeriods=(hold=='pause'?inst._periods:null);$.data(target,PROP_NAME,inst);this._updateCountdown(target,inst)}},_getTimesCountdown:function(target){var inst=$.data(target,PROP_NAME);return(!inst?null:(!inst._hold?inst._periods:this._calculatePeriods(inst,inst._show,new Date())))},_get:function(inst,name){return(inst.options[name]!=null?inst.options[name]:$.countdown._defaults[name])},_adjustSettings:function(inst){var now=new Date();var serverTime=this._get(inst,'serverTime');inst._offset=(serverTime?serverTime.getTime()-now.getTime():0);inst._since=this._get(inst,'since');if(inst._since){inst._since=this._determineTime(inst._since,null)}inst._until=this._determineTime(this._get(inst,'until'),now);inst._show=this._determineShow(inst)},_determineTime:function(setting,defaultTime){var offsetNumeric=function(offset){var time=new Date();time.setTime(time.getTime()+offset*1000);return time};var getDaysInMonth=function(year,month){return 32-new Date(year,month,32).getDate()};var offsetString=function(offset){var time=new Date();var year=time.getFullYear();var month=time.getMonth();var day=time.getDate();var hour=time.getHours();var minute=time.getMinutes();var second=time.getSeconds();var pattern=/([+-]?[0-9]+)\s*(s|S|m|M|h|H|d|D|w|W|o|O|y|Y)?/g;var matches=pattern.exec(offset);while(matches){switch(matches[2]||'s'){case's':case'S':second+=parseInt(matches[1]);break;case'm':case'M':minute+=parseInt(matches[1]);break;case'h':case'H':hour+=parseInt(matches[1]);break;case'd':case'D':day+=parseInt(matches[1]);break;case'w':case'W':day+=parseInt(matches[1])*7;break;case'o':case'O':month+=parseInt(matches[1]);day=Math.min(day,getDaysInMonth(year,month));break;case'y':case'Y':year+=parseInt(matches[1]);day=Math.min(day,getDaysInMonth(year,month));break}matches=pattern.exec(offset)}time=new Date(year,month,day,hour,minute,second,0);return time};var time=(setting==null?defaultTime:(typeof setting=='string'?offsetString(setting):(typeof setting=='number'?offsetNumeric(setting):setting)));if(time)time.setMilliseconds(0);return time},_generateHTML:function(inst){inst._periods=periods=(inst._hold?inst._periods:this._calculatePeriods(inst,inst._show,new Date()));var shownNonZero=false;var showCount=0;for(var period=0;period<inst._show.length;period++){shownNonZero|=(inst._show[period]=='?'&&periods[period]>0);inst._show[period]=(inst._show[period]=='?'&&!shownNonZero?null:inst._show[period]);showCount+=(inst._show[period]?1:0)}var compact=this._get(inst,'compact');var layout=this._get(inst,'layout');var labels=(compact?this._get(inst,'compactLabels'):this._get(inst,'labels'));var labelsSingle=(compact?this._get(inst,'compactLabelsSingle'):this._get(inst,'labelsSingle'))||labels;var timeSeparator=this._get(inst,'timeSeparator');var description=this._get(inst,'description')||'';var twoDigits=function(value){return(value<10?'0':'')+value};var showCompact=function(period){return(inst._show[period]?periods[period]+(periods[period]==1?labelsSingle[period]:labels[period])+' ':'')};var showFull=function(period){return(inst._show[period]?'<div class="countdown_section"><span class="countdown_amount">'+periods[period]+'</span><br/>'+(periods[period]==1?labelsSingle[period]:labels[period])+'</div>':'')};return(layout?this._buildLayout(inst,layout,labels,labelsSingle):((compact?'<div class="countdown_row countdown_amount'+(inst._hold?' countdown_holding':'')+'">'+showCompact(Y)+showCompact(O)+showCompact(W)+showCompact(D)+(inst._show[H]?twoDigits(periods[H]):'')+(inst._show[M]?(inst._show[H]?timeSeparator:'')+twoDigits(periods[M]):'')+(inst._show[S]?(inst._show[H]||inst._show[M]?timeSeparator:'')+twoDigits(periods[S]):''):'<div class="countdown_row countdown_show'+showCount+(inst._hold?' countdown_holding':'')+'">'+showFull(Y)+showFull(O)+showFull(W)+showFull(D)+showFull(H)+showFull(M)+showFull(S))+'</div>'+(description?'<div class="countdown_row countdown_descr">'+description+'</div>':'')))},_buildLayout:function(inst,layout,labels,labelsSingle){var html=layout;var processPeriod=function(period,index){var pattern1=new RegExp('%'+period+'.*%'+period);var pattern2=new RegExp('%'+period+'.*');while(true){var matches=pattern1.exec(html);if(!matches){break}matches[0]=matches[0].substr(0,2)+matches[0].substr(2).replace(pattern2,'%'+period);html=html.replace(matches[0],inst._show[index]?customisePeriod(matches[0],period,index):'')}};var customisePeriod=function(text,period,index){return text.substr(2,text.length-4).replace(/%nn/g,(inst._periods[index]<10?'0':'')+inst._periods[index]).replace(/%n/g,inst._periods[index]).replace(/%l/g,inst._periods[index]==1?labelsSingle[index]:labels[index])};processPeriod('Y',Y);processPeriod('O',O);processPeriod('W',W);processPeriod('D',D);processPeriod('H',H);processPeriod('M',M);processPeriod('S',S);return html},_determineShow:function(inst){var format=this._get(inst,'format');var show=[];show[Y]=(format.match('y')?'?':(format.match('Y')?'!':null));show[O]=(format.match('o')?'?':(format.match('O')?'!':null));show[W]=(format.match('w')?'?':(format.match('W')?'!':null));show[D]=(format.match('d')?'?':(format.match('D')?'!':null));show[H]=(format.match('h')?'?':(format.match('H')?'!':null));show[M]=(format.match('m')?'?':(format.match('M')?'!':null));show[S]=(format.match('s')?'?':(format.match('S')?'!':null));return show},_calculatePeriods:function(inst,show,now){inst._now=now;inst._now.setMilliseconds(0);var until=new Date(inst._now.getTime());if(inst._since&&now.getTime()<inst._since.getTime()){inst._now=now=until}else if(inst._since){now=inst._since}else{until.setTime(inst._until.getTime());if(now.getTime()>inst._until.getTime()){inst._now=now=until}}until.setTime(until.getTime()-inst._offset);var periods=[0,0,0,0,0,0,0];if(show[Y]||show[O]){var months=Math.max(0,(until.getFullYear()-now.getFullYear())*12+until.getMonth()-now.getMonth()+(until.getDate()<now.getDate()?-1:0));periods[Y]=(show[Y]?Math.floor(months/12):0);periods[O]=(show[O]?months-periods[Y]*12:0);if(inst._since){until.setFullYear(until.getFullYear()-periods[Y]);until.setMonth(until.getMonth()-periods[O])}else{now=new Date(now.getTime());now.setFullYear(now.getFullYear()+periods[Y]);now.setMonth(now.getMonth()+periods[O])}}var diff=Math.floor((until.getTime()-now.getTime())/1000);var extractPeriod=function(period,numSecs){periods[period]=(show[period]?Math.floor(diff/numSecs):0);diff-=periods[period]*numSecs};extractPeriod(W,604800);extractPeriod(D,86400);extractPeriod(H,3600);extractPeriod(M,60);extractPeriod(S,1);return periods}});function extendRemove(target,props){$.extend(target,props);for(var name in props){if(props[name]==null){target[name]=null}}return target}$.fn.countdown=function(options){var otherArgs=Array.prototype.slice.call(arguments,1);if(options=='getTimes'){return $.countdown['_'+options+'Countdown'].apply($.countdown,[this[0]].concat(otherArgs))}return this.each(function(){if(typeof options=='string'){$.countdown['_'+options+'Countdown'].apply($.countdown,[this].concat(otherArgs))}else{$.countdown._attachCountdown(this,options)}})};$.countdown=new Countdown()})(jQuery);(function(){var $$;$$=jQuery.fn.flash=function(htmlOptions,pluginOptions,replace,update){var block=replace||$$.replace;pluginOptions=$$.copy($$.pluginOptions,pluginOptions);if(!$$.hasFlash(pluginOptions.version)){if(pluginOptions.expressInstall&&$$.hasFlash(6,0,65)){var expressInstallOptions={flashvars:{MMredirectURL:location,MMplayerType:'PlugIn',MMdoctitle:jQuery('title').text()}}}else if(pluginOptions.update){block=update||$$.update}else{return this}}htmlOptions=$$.copy($$.htmlOptions,expressInstallOptions,htmlOptions);return this.each(function(){block.call(this,$$.copy(htmlOptions))})};$$.copy=function(){var options={},flashvars={};for(var i=0;i<arguments.length;i++){var arg=arguments[i];if(arg==undefined)continue;jQuery.extend(options,arg);if(arg.flashvars==undefined)continue;jQuery.extend(flashvars,arg.flashvars)}options.flashvars=flashvars;return options};$$.hasFlash=function(){if(/hasFlash\=true/.test(location))return true;if(/hasFlash\=false/.test(location))return false;var pv=$$.hasFlash.playerVersion().match(/\d+/g);var rv=String([arguments[0],arguments[1],arguments[2]]).match(/\d+/g)||String($$.pluginOptions.version).match(/\d+/g);for(var i=0;i<3;i++){pv[i]=parseInt(pv[i]||0);rv[i]=parseInt(rv[i]||0);if(pv[i]<rv[i])return false;if(pv[i]>rv[i])return true}return true};$$.hasFlash.playerVersion=function(){try{try{var axo=new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');try{axo.AllowScriptAccess='always'}catch(e){return'6,0,0'}}catch(e){}return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g,',').match(/^,?(.+),?$/)[1]}catch(e){try{if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){return(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}}catch(e){}}return'0,0,0'};$$.htmlOptions={height:240,flashvars:{},pluginspage:'http://www.adobe.com/go/getflashplayer',src:'#',type:'application/x-shockwave-flash',width:320};$$.pluginOptions={expressInstall:false,update:true,version:'6.0.65'};$$.replace=function(htmlOptions){this.innerHTML='<div class="alt">'+this.innerHTML+'</div>';jQuery(this).addClass('flash-replaced').prepend($$.transform(htmlOptions))};$$.update=function(htmlOptions){var url=String(location).split('?');url.splice(1,0,'?hasFlash=true&');url=url.join('');var msg='<p>This content requires the Flash Player. <a href="http://www.adobe.com/go/getflashplayer">Download Flash Player</a>. Already have Flash Player? <a href="'+url+'">Click here.</a></p>';this.innerHTML='<span class="alt">'+this.innerHTML+'</span>';jQuery(this).addClass('flash-update').prepend(msg)};function toAttributeString(){var s='';for(var key in this)if(typeof this[key]!='function')s+=key+'="'+this[key]+'" ';return s};function toFlashvarsString(){var s='';for(var key in this)if(typeof this[key]!='function')s+=key+'='+encodeURIComponent(this[key])+'&';return s.replace(/&$/,'')};$$.transform=function(htmlOptions){htmlOptions.toString=toAttributeString;if(htmlOptions.flashvars)htmlOptions.flashvars.toString=toFlashvarsString;return'<embed '+String(htmlOptions)+'/>'};if(window.attachEvent){window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}})}})();(function($){var currentHash,previousNav,timer,hashTrim=/^.*#/;var msie={iframe:null,getDoc:function(){return msie.iframe.contentWindow.document},getHash:function(){return msie.getDoc().location.hash},setHash:function(hash){var d=msie.getDoc();d.open();d.close();d.location.hash=hash}};var historycheck=function(){var hash=msie.iframe?msie.getHash():location.hash;if(hash!=currentHash){currentHash=hash;if(msie.iframe){location.hash=currentHash}var current=$.history.getCurrent();$.event.trigger('history',[current,previousNav]);previousNav=current}};$.history={add:function(hash){hash='#'+hash.replace(hashTrim,'');previousNav=previousNav.replace(hashTrim,'');if(currentHash!=hash){var previous=$.history.getCurrent();location.hash=currentHash=hash;if(msie.iframe){msie.setHash(currentHash)}$.event.trigger('historyadd',[$.history.getCurrent(),previous]);previousNav=currentHash.replace(hashTrim,'')}if(!timer){timer=setInterval(historycheck,100)}},getCurrent:function(){return currentHash?currentHash.replace(hashTrim,''):''}};$.fn.history=function(fn){$(this).bind('history',fn)};$.fn.historyadd=function(fn){$(this).bind('historyadd',fn)};currentHash=previousNav=location.hash;$(function(){if($.browser.msie){msie.iframe=$('<iframe style="display:none" src="javascript:false;"></iframe>').prependTo('body')[0];msie.setHash(currentHash);currentHash=msie.getHash()}});if(!timer)timer=setInterval(historycheck,100)})(jQuery);var Mapifies;if(!Mapifies)Mapifies={};Mapifies.MapObjects={};Mapifies.MapObjects.Set=function(element,options){var mapName=jQuery(element).attr('id');var thisMap=new GMap2(element);Mapifies.MapObjects[mapName]=thisMap;Mapifies.MapObjects[mapName].Options=options;return Mapifies.MapObjects[mapName]};Mapifies.MapObjects.Append=function(element,description,appending){var mapName=jQuery(element).attr('id');Mapifies.MapObjects[mapName][description]=appending};Mapifies.MapObjects.Get=function(element){return Mapifies.MapObjects[jQuery(element).attr('id')]};Mapifies.Initialise=function(element,options,callback){function defaults(){return{'language':'en','mapType':'map','mapCenter':[55.958858,-3.162302],'mapDimensions':[400,400],'mapZoom':12,'mapControlSize':'small','mapEnableType':false,'mapEnableOverview':false,'mapEnableDragging':true,'mapEnableInfoWindows':true,'mapEnableDoubleClickZoom':false,'mapEnableScrollZoom':false,'mapEnableSmoothZoom':false,'mapEnableGoogleBar':false,'mapEnableScaleControl':false,'mapShowMapifiesIcon':true,'debugMode':false}};options=jQuery.extend(defaults(),options);if(GBrowserIsCompatible()){var thisMap=Mapifies.MapObjects.Set(element,options);var mapType=Mapifies.GetMapType(options.mapType);thisMap.setCenter(new GLatLng(options.mapCenter[0],options.mapCenter[1]),options.mapZoom,mapType);if(options.mapShowMapifiesIcon){Mapifies.AddScreenOverlay(element,{imageUrl:'http://hg.digitalspaghetti.me.uk/jmaps/raw-file/3228fade0b3c/docs/images/jmaps-mapicon.png',screenXY:[70,10],overlayXY:[0,0],size:[42,25]})}switch(options.mapControlSize){case"small":thisMap.addControl(new GSmallMapControl());break;case"large":thisMap.addControl(new GLargeMapControl());break};if(options.mapEnableType)thisMap.addControl(new GMapTypeControl());if(options.mapEnableOverview)thisMap.addControl(new GOverviewMapControl());if(!options.mapEnableDragging)thisMap.disableDragging();if(!options.mapEnableInfoWindows)thisMap.disableInfoWindow();if(options.mapEnableDoubleClickZoom)thisMap.enableDoubleClickZoom();if(options.mapEnableScrollZoom)thisMap.enableScrollWheelZoom();if(options.mapEnableSmoothZoom)thisMap.enableContinuousZoom();if(options.mapEnableGoogleBar)thisMap.enableGoogleBar();if(options.mapEnableScaleControl)thisMap.addControl(new GScaleControl());if(options.debugMode)console.log(Mapifies);if(typeof callback=='function')return callback(element,options)}else{jQuery(element).text('Your browser does not support Google Maps.');return false}return};Mapifies.MoveTo=function(element,options,callback){function defaults(){return{centerMethod:'normal',mapType:null,mapCenter:[],mapZoom:null}};var thisMap=Mapifies.MapObjects.Get(element);options=jQuery.extend(defaults(),options);if(options.mapType)var mapType=Mapifies.GetMapType(options.mapType);var point=new GLatLng(options.mapCenter[0],options.mapCenter[1]);switch(options.centerMethod){case'normal':thisMap.setCenter(point,options.mapZoom,mapType);break;case'pan':thisMap.panTo(point);break}if(typeof callback=='function')return callback(point,options)};Mapifies.SavePosition=function(element,options,callback){var thisMap=Mapifies.MapObjects.Get(element);thisMap.savePosition();if(typeof callback=='function')return callback()};Mapifies.GotoSavedPosition=function(element,options,callback){var thisMap=Mapifies.MapObjects.Get(element);thisMap.returnToSavedPosition();if(typeof callback=='function')return callback()};Mapifies.CreateKeyboardHandler=function(element,options,callback){var thisMap=Mapifies.MapObjects.Get(element);var keyboardHandler=new GKeyboardHandler(thisMap);if(typeof callback=='function')return callback(keyboardHandler)};Mapifies.GetMapType=function(mapType){switch(mapType){case"map":mapType=G_NORMAL_MAP;break;case"sat":mapType=G_SATELLITE_MAP;break;case"hybrid":mapType=G_HYBRID_MAP;break};return mapType};Mapifies.GetTravelMode=function(travelMode){switch(travelMode){case"driving":travelMode=G_TRAVEL_MODE_DRIVING;break;case"walking":travelMode=G_TRAVEL_MODE_WALKING;break};return travelMode};function createIcon(options){function defaults(){return{iconImage:"",iconShadow:"",iconSize:null,iconShadowSize:null,iconAnchor:null,iconInfoWindowAnchor:null,iconPrintImage:"",iconMozPrintImage:"",iconPrintShadow:"",iconTransparent:""}};options=jQuery.extend(defaults(),options);var icon=new GIcon(G_DEFAULT_ICON);if(options.iconImage)icon.image=options.iconImage;if(options.iconShadow)icon.shadow=options.iconShadow;if(options.iconSize)icon.iconSize=options.iconSize;if(options.iconShadowSize)icon.shadowSize=options.iconShadowSize;if(options.iconAnchor)icon.iconAnchor=options.iconAnchor;if(options.iconInfoWindowAnchor)icon.infoWindowAnchor=options.iconInfoWindowAnchor;return icon};function getCenter(element){var thisMap=Mapifies.MapObjects.Get(element);return thisMap.getCenter()};function getBounds(element){var thisMap=Mapifies.MapObjects.Get(element);return thisMap.getBounds()};Mapifies.SearchAddress=function(element,options,callback){function defaults(){return{type:'latlng',address:null,cache:{},countryCode:'uk'}};var thisMap=Mapifies.MapObjects.Get(element);options=jQuery.extend(defaults(),options);if(typeof thisMap.Geocoder=='undefined'){var geocoder=new GClientGeocoder}else{var geocoder=thisMap.Geocoder}switch(options.type){case'latlng':geocoder.getLatLng(options.address,function(point){if(typeof callback=='function')return callback(point,options)});break;case'points':geocoder.getLocations(options.address,function(points){if(typeof callback=='function')return callback(points,options)});break};return};Mapifies.SearchDirections=function(element,options,callback){function defaults(){return{'directions':'','panel':"",'locale':'en_GB','travelMode':'driving','avoidHighways':false,'getPolyline':true,'getSteps':true,'preserveViewport':false}};var thisMap=Mapifies.MapObjects.Get(element);options=jQuery.extend(defaults(),options);var queryOptions={'locale':options.locale,'travelMode':options.travelMode,'avoidHighways':options.avoidHighways,'getPolyline':options.getPolyline,'getSteps':options.getSteps,'preserveViewport':options.preserveViewport};var panel=$(options.panel).get(0);var directions=new GDirections(thisMap,panel);GEvent.addListener(directions,"load",onLoad);GEvent.addListener(directions,"error",onError);directions.load(options.directions,queryOptions);function onLoad(){if(typeof callback=='function')return callback(directions,options)};function onError(){if(typeof callback=='function')return callback(directions,options)};return};function SearchDirectionsCode(code){switch(code){case G_GEO_SUCCESS:return{'code':G_GEO_SUCCESS,'success':true,'message':'Success'};case G_GEO_UNKNOWN_ADDRESS:return{'code':G_GEO_UNKNOWN_ADDRESS,'success':false,'message':'No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect'};break;case G_GEO_SERVER_ERROR:return{'code':G_GEO_UNKNOWN_ADDRESS,'success':false,'message':'A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.'};break;case G_GEO_MISSING_QUERY:return{'code':G_GEO_UNKNOWN_ADDRESS,'success':false,'message':'The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.'};break;case G_GEO_BAD_KEY:return{'code':G_GEO_UNKNOWN_ADDRESS,'success':false,'message':'The given key is either invalid or does not match the domain for which it was given.'};break;case G_GEO_BAD_REQUEST:return{'code':G_GEO_UNKNOWN_ADDRESS,'success':false,'message':'A directions request could not be successfully parsed.'};break;default:return{'code':null,'success':false,'message':'An unknown error occurred.'};break}};Mapifies.CreateAdsManager=function(element,options,callback){function defaults(){return{'publisherId':'','maxAdsOnMap':3,'channel':0,'minZoomLevel':6}};var thisMap=Mapifies.MapObjects.Get(element);options=jQuery.extend(defaults(),options);var adsOptions={'maxAdsOnMap':options.maxAdsOnMap,'channel':options.channel,'minZoomLevel':options.minZoomLevel};var adsManager=new GAdsManager(thisMap,options.publisherId,adsOptions);if(typeof callback=='function')return callback(adsManager,options)};Mapifies.AddFeed=function(element,options,callback){function defaults(){return{feedUrl:"",mapCenter:[]}};var thisMap=Mapifies.MapObjects.Get(element);options=jQuery.extend(defaults(),options);var feed=new GGeoXml(options.feedUrl);thisMap.addOverlay(feed);if(options.mapCenter[0]&&options.mapCenter[1])thisMap.setCenter(new GLatLng(options.mapCenter[0],options.mapCenter[1]));if(typeof callback=='function')return callback(feed,options);return};Mapifies.RemoveFeed=function(element,feed,callback){var thisMap=Mapifies.MapObjects.Get(element);thisMap.removeOverlay(feed);if(typeof callback=='function')return callback(feed,options);return};Mapifies.AddGroundOverlay=function(element,options,callback){function defaults(){return{overlaySouthWestBounds:[],overlayNorthEastBounds:[],overlayImage:""}};var thisMap=Mapifies.MapObjects.Get(element);options=jQuery.extend(defaults(),options);var boundries=new GLatLngBounds(new GLatLng(options.overlaySouthWestBounds[0],options.overlaySouthWestBounds[1]),new GLatLng(options.overlayNorthEastBounds[0],options.overlayNorthEastBounds[1]));groundOverlay=new GGroundOverlay(options.overlayImage,boundries);thisMap.addOverlay(groundOverlay);if(typeof callback=='function')return callback(groundOverlay,options);return};Mapifies.RemoveGroundOverlay=function(element,groundOverlay){var thisMap=Mapifies.MapObjects.Get(element);thisMap.removeOverlay(groundOverlay);return};Mapifies.AddMarker=function(element,options,callback){function defaults(){var values={pointLatLng:[],pointHTML:null,pointOpenHTMLEvent:"click",pointIsDraggable:false,pointIsRemovable:false,pointRemoveEvent:"dblclick",pointMinZoom:4,pointMaxZoom:17,pointIcon:null,pointMaxContent:null,pointMaxTitle:null,centerMap:false};return values};var thisMap=Mapifies.MapObjects.Get(element);options=jQuery.extend({},defaults(),options);var markerOptions={};if(typeof options.pointIcon=='object')jQuery.extend(markerOptions,{'icon':options.pointIcon});if(options.pointIsDraggable)jQuery.extend(markerOptions,{'draggable':options.pointIsDraggable});if(options.centerMap)jQuery.jmap.GMap2.setCenter(new GLatLng(options.pointLatLng[0],options.pointLatLng[1]));var marker=new GMarker(new GLatLng(options.pointLatLng[0],options.pointLatLng[1]),markerOptions);if(options.pointHTML)GEvent.addListener(marker,options.pointOpenHTMLEvent,function(){marker.openInfoWindowHtml(options.pointHTML,{maxContent:options.pointMaxContent,maxTitle:options.pointMaxTitle})});if(options.pointIsRemovable)GEvent.addListener(marker,options.pointRemoveEvent,function(){thisMap.removeOverlay(marker)});if(thisMap.MarkerManager){thisMap.MarkerManager.addMarker(marker,options.pointMinZoom,options.pointMaxZoom)}else{thisMap.addOverlay(marker)}if(typeof callback=='function')return callback(marker,options);return};Mapifies.RemoveMarker=function(element,marker){var thisMap=Mapifies.MapObjects.Get(element);thisMap.removeOverlay(marker);return};Mapifies.CreateMarkerManager=function(element,options,callback){function defaults(){return{borderPadding:100,maxZoom:17,trackMarkers:false}};var thisMap=Mapifies.MapObjects.Get(element);options=jQuery.extend(defaults(),options);var markerManager=new GMarkerManager(thisMap,options);Mapifies.MapObjects.Append(element,'MarkerManager',markerManager);if(typeof callback=='function')return callback(options)};Mapifies.AddPolygon=function(element,options,callback){function defaults(){return{polygonPoints:[],polygonStrokeColor:"#000000",polygonStrokeWeight:5,polygonStrokeOpacity:1,polygonFillColor:"#ff0000",polygonFillOpacity:1,mapCenter:[],polygonClickable:true}};var thisMap=Mapifies.MapObjects.Get(element);options=jQuery.extend(defaults(),options);var polygonOptions={};if(!options.polygonClickable)polygonOptions=jQuery.extend(polygonOptions,{clickable:false});if(options.mapCenter[0]&&options.mapCenter[1])thisMap.setCenter(new GLatLng(options.mapCenter[0],options.mapCenter[1]));var allPoints=[];jQuery.each(options.polygonPoints,function(i,point){allPoints.push(new GLatLng(point[0],point[1]))});var polygon=new GPolygon(allPoints,options.polygonStrokeColor,options.polygonStrokeWeight,options.polygonStrokeOpacity,options.polygonFillColor,options.polygonFillOpacity,polygonOptions);thisMap.addOverlay(polygon);if(typeof callback=='function')return callback(polygon,polygonOptions,options);return};Mapifies.RemovePolygon=function(element,polygon){var thisMap=Mapifies.MapObjects.Get(element);thisMap.removeOverlay(polygon);return};Mapifies.AddPolyline=function(element,options,callback){function defaults(){return{polylinePoints:[],polylineStrokeColor:"#ff0000",polylineStrokeWidth:10,polylineStrokeOpacity:1,mapCenter:[],polylineGeodesic:false,polylineClickable:true}};var thisMap=Mapifies.MapObjects.Get(element);options=jQuery.extend(defaults(),options);var polyLineOptions={};if(options.polylineGeodesic)jQuery.extend(polyLineOptions,{geodesic:true});if(!options.polylineClickable)jQuery.extend(polyLineOptions,{clickable:false});if(options.mapCenter[0]&&options.mapCenter[1])thisMap.setCenter(new GLatLng(options.mapCenter[0],options.mapCenter[1]));var allPoints=[];jQuery.each(options.polylinePoints,function(i,point){allPoints.push(new GLatLng(point[0],point[1]))});var polyline=new GPolyline(allPoints,options.polylineStrokeColor,options.polylineStrokeWidth,options.polylineStrokeOpacity,polyLineOptions);thisMap.addOverlay(polyline);if(typeof callback=='function')return callback(polyline,polyLineOptions,options);return};Mapifies.RemovePolyline=function(element,polyline,callback){var thisMap=Mapifies.MapObjects.Get(element);thisMap.removeOverlay(polyline);return};Mapifies.AddScreenOverlay=function(element,options,callback){function defaults(){return{'imageUrl':'','screenXY':[],'overlayXY':[],'size':[]}};var thisMap=Mapifies.MapObjects.Get(element);options=jQuery.extend(defaults(),options);var overlay=new GScreenOverlay(options.imageUrl,new GScreenPoint(options.screenXY[0],options.screenXY[1]),new GScreenPoint(options.overlayXY[0],options.overlayXY[1]),new GScreenSize(options.size[0],options.size[1]));thisMap.addOverlay(overlay);if(typeof callback=='function')return callback(overlay,options)};Mapifies.RemoveScreenOverlay=function(element,overlay){var thisMap=Mapifies.MapObjects.Get(element);thisMap.removeOverlay(overlay);return};Mapifies.CreateStreetviewPanorama=function(element,options,callback){function defaults(){return{'overideContainer':'','latlng':[40.75271883902363,-73.98262023925781],'pov':[]}};var thisMap=Mapifies.MapObjects.Get(element);options=jQuery.extend(defaults(),options);var container=null;if(options.overideContainer!==''){container=jQuery(options.overideContainer).get(0)}else{container=jQuery(element).get(0)}var viewOptions={};if(options.pov.length>0){jQuery.extend(viewOptions,{'pov':new GPov(options.latlng[0],options.latlng[1],options.latlng[2])})}if(options.latlng.length>0){jQuery.extend(viewOptions,{'latlng':new GLatLng(options.latlng[0],options.latlng[1])})}var overlay=new GStreetviewPanorama(container,viewOptions);if(typeof callback=='function')return callback(overlay,options);return};Mapifies.RemoveStreetviewPanorama=function(element,view,callback){var thisMap=Mapifies.MapObjects.Get(element);view.remove();if(typeof callback=='function')return callback(view);return};Mapifies.AddTrafficInfo=function(element,options,callback){function defaults(){return{mapCenter:[]}};var thisMap=Mapifies.MapObjects.Get(element);options=jQuery.extend(defaults(),options);var trafficOverlay=new GTrafficOverlay;thisMap.addOverlay(trafficOverlay);if(options.mapCenter[0]&&options.mapCenter[1]){thisMap.setCenter(new GLatLng(options.mapCenter[0],options.mapCenter[1]))}if(typeof callback=='function')return callback(trafficOverlay,options)};Mapifies.RemoveTrafficInfo=function(element,trafficOverlay){var thisMap=Mapifies.MapObjects.Get(element);thisMap.removeOverlay(trafficOverlay);return};var Mapifies;if(!Mapifies)Mapifies={};(function($){$.fn.jmap=function(method,options,callback){return this.each(function(){if(method=='init'&&typeof options=='undefined'){new Mapifies.Initialise(this,{},null)}else if(method=='init'&&typeof options=='object'){new Mapifies.Initialise(this,options,callback)}else if(method=='init'&&typeof options=='function'){new Mapifies.Initialise(this,{},options)}else if(typeof method=='object'||method==null){new Mapifies.Initialise(this,method,options)}else{new Mapifies[method](this,options,callback)}})}})(jQuery);(function($){$.extend($.fn,{validate:function(options){if(!this.length){options&&options.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing");return}var validator=$.data(this[0],'validator');if(validator){return validator}validator=new $.validator(options,this[0]);$.data(this[0],'validator',validator);if(validator.settings.onsubmit){this.find("input, button").filter(".cancel").click(function(){validator.cancelSubmit=true});this.submit(function(event){if(validator.settings.debug)event.preventDefault();function handle(){if(validator.settings.submitHandler){validator.settings.submitHandler.call(validator,validator.currentForm);return false}return true}if(validator.cancelSubmit){validator.cancelSubmit=false;return handle()}if(validator.form()){if(validator.pendingRequest){validator.formSubmitted=true;return false}return handle()}else{validator.focusInvalid();return false}})}return validator},valid:function(){if($(this[0]).is('form')){return this.validate().form()}else{var valid=false;var validator=$(this[0].form).validate();this.each(function(){valid|=validator.element(this)});return valid}},removeAttrs:function(attributes){var result={},$element=this;$.each(attributes.split(/\s/),function(){result[this]=$element.attr(this);$element.removeAttr(this)});return result},rules:function(command,argument){var element=this[0];if(command){var staticRules=$.data(element.form,'validator').settings.rules;var existingRules=$.validator.staticRules(element);switch(command){case"add":$.extend(existingRules,$.validator.normalizeRule(argument));staticRules[element.name]=existingRules;break;case"remove":if(!argument){delete staticRules[element.name];return existingRules}var filtered={};$.each(argument.split(/\s/),function(index,method){filtered[method]=existingRules[method];delete existingRules[method]});return filtered}}var data=$.validator.normalizeRules($.extend({},$.validator.metadataRules(element),$.validator.classRules(element),$.validator.attributeRules(element),$.validator.staticRules(element)),element);if(data.required){var param=data.required;delete data.required;data=$.extend({required:param},data)}return data},push:function(t){return this.setArray(this.add(t).get())}});$.extend($.expr[":"],{blank:function(a){return!$.trim(a.value)},filled:function(a){return!!$.trim(a.value)},unchecked:function(a){return!a.checked}});$.format=function(source,params){if(arguments.length==1)return function(){var args=$.makeArray(arguments);args.unshift(source);return $.format.apply(this,args)};if(arguments.length>2&&params.constructor!=Array){params=$.makeArray(arguments).slice(1)}if(params.constructor!=Array){params=[params]}$.each(params,function(i,n){source=source.replace(new RegExp("\\{"+i+"\\}","g"),n)});return source};$.validator=function(options,form){this.settings=$.extend({},$.validator.defaults,options);this.currentForm=form;this.init()};$.extend($.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",errorElement:"label",focusInvalid:true,errorContainer:$([]),errorLabelContainer:$([]),onsubmit:true,ignore:[],onfocusin:function(element){this.lastActive=element;if(this.settings.focusCleanup&&!this.blockFocusCleanup){this.settings.unhighlight&&this.settings.unhighlight.call(this,element,this.settings.errorClass);this.errorsFor(element).hide()}},onfocusout:function(element){if(!this.checkable(element)&&(element.name in this.submitted||!this.optional(element))){this.element(element)}},onkeyup:function(element){if(element.name in this.submitted||element==this.lastElement){this.element(element)}},onclick:function(element){if(element.name in this.submitted)this.element(element)},highlight:function(element,errorClass){$(element).addClass(errorClass)},unhighlight:function(element,errorClass){$(element).removeClass(errorClass)}},setDefaults:function(settings){$.extend($.validator.defaults,settings)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",dateDE:"Bitte geben Sie ein gültiges Datum ein.",number:"Please enter a valid number.",numberDE:"Bitte geben Sie eine Nummer ein.",digits:"Please enter only digits",creditcard:"Please enter a valid credit card.",equalTo:"Please enter the same value again.",accept:"Please enter a value with a valid extension.",maxlength:$.format("Please enter no more than {0} characters."),minlength:$.format("Please enter at least {0} characters."),rangelength:$.format("Please enter a value between {0} and {1} characters long."),range:$.format("Please enter a value between {0} and {1}."),max:$.format("Please enter a value less than or equal to {0}."),min:$.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:false,prototype:{init:function(){this.labelContainer=$(this.settings.errorLabelContainer);this.errorContext=this.labelContainer.length&&this.labelContainer||$(this.currentForm);this.containers=$(this.settings.errorContainer).add(this.settings.errorLabelContainer);this.submitted={};this.valueCache={};this.pendingRequest=0;this.pending={};this.invalid={};this.reset();var groups=(this.groups={});$.each(this.settings.groups,function(key,value){$.each(value.split(/\s/),function(index,name){groups[name]=key})});var rules=this.settings.rules;$.each(rules,function(key,value){rules[key]=$.validator.normalizeRule(value)});function delegate(event){var validator=$.data(this[0].form,"validator");validator.settings["on"+event.type]&&validator.settings["on"+event.type].call(validator,this[0])}$(this.currentForm).delegate("focusin focusout keyup",":text, :password, :file, select, textarea",delegate).delegate("click",":radio, :checkbox",delegate)},form:function(){this.checkForm();$.extend(this.submitted,this.errorMap);this.invalid=$.extend({},this.errorMap);if(!this.valid())$(this.currentForm).triggerHandler("invalid-form.validate",[this]);this.showErrors();return this.valid()},checkForm:function(){this.prepareForm();for(var i=0,elements=(this.currentElements=this.elements());elements[i];i++){this.check(elements[i])}return this.valid()},element:function(element){element=this.clean(element);this.lastElement=element;this.prepareElement(element);this.currentElements=$(element);var result=this.check(element);if(result){delete this.invalid[element.name]}else{this.invalid[element.name]=true}if(!this.numberOfInvalids()){this.toHide.push(this.containers)}this.showErrors();return result},showErrors:function(errors){if(errors){$.extend(this.errorMap,errors);this.errorList=[];for(var name in errors){this.errorList.push({message:errors[name],element:this.findByName(name)[0]})}this.successList=$.grep(this.successList,function(element){return!(element.name in errors)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){if($.fn.resetForm)$(this.currentForm).resetForm();this.submitted={};this.prepareForm();this.hideErrors();this.elements().removeClass(this.settings.errorClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(obj){var count=0;for(var i in obj)count++;return count},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return this.size()==0},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid){try{$(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus()}catch(e){}}},findLastActive:function(){var lastActive=this.lastActive;return lastActive&&$.grep(this.errorList,function(n){return n.element.name==lastActive.name}).length==1&&lastActive},elements:function(){var validator=this,rulesCache={};return $([]).add(this.currentForm.elements).filter(":input").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){!this.name&&validator.settings.debug&&window.console&&console.error("%o has no name assigned",this);if(this.name in rulesCache||!validator.objectLength($(this).rules()))return false;rulesCache[this.name]=true;return true})},clean:function(selector){return $(selector)[0]},errors:function(){return $(this.settings.errorElement+"."+this.settings.errorClass,this.errorContext)},reset:function(){this.successList=[];this.errorList=[];this.errorMap={};this.toShow=$([]);this.toHide=$([]);this.formSubmitted=false;this.currentElements=$([])},prepareForm:function(){this.reset();this.toHide=this.errors().push(this.containers)},prepareElement:function(element){this.reset();this.toHide=this.errorsFor(element)},check:function(element){element=this.clean(element);if(this.checkable(element)){element=this.findByName(element.name)[0]}var rules=$(element).rules();var dependencyMismatch=false;for(method in rules){var rule={method:method,parameters:rules[method]};try{var result=$.validator.methods[method].call(this,$.trim(element.value),element,rule.parameters);if(result=="dependency-mismatch"){dependencyMismatch=true;continue}dependencyMismatch=false;if(result=="pending"){this.toHide=this.toHide.not(this.errorsFor(element));return}if(!result){this.formatAndAdd(element,rule);return false}}catch(e){this.settings.debug&&window.console&&console.log("exception occured when checking element "+element.id+", check the '"+rule.method+"' method");throw e;}}if(dependencyMismatch)return;if(this.objectLength(rules))this.successList.push(element);return true},customMetaMessage:function(element,method){if(!$.metadata)return;var meta=this.settings.meta?$(element).metadata()[this.settings.meta]:$(element).metadata();return meta.messages&&meta.messages[method]},customMessage:function(name,method){var m=this.settings.messages[name];return m&&(m.constructor==String?m:m[method])},findDefined:function(){for(var i=0;i<arguments.length;i++){if(arguments[i]!==undefined)return arguments[i]}return undefined},defaultMessage:function(element,method){return this.findDefined(this.customMessage(element.name,method),this.customMetaMessage(element,method),element.title||undefined,$.validator.messages[method],"<strong>Warning: No message defined for "+element.name+"</strong>")},formatAndAdd:function(element,rule){var message=this.defaultMessage(element,rule.method);if(typeof message=="function")message=message.call(this,rule.parameters,element);this.errorList.push({message:message,element:element});this.errorMap[element.name]=message;this.submitted[element.name]=message},addWrapper:function(toToggle){if(this.settings.wrapper)toToggle.push(toToggle.parents(this.settings.wrapper));return toToggle},defaultShowErrors:function(){for(var i=0;this.errorList[i];i++){var error=this.errorList[i];this.settings.highlight&&this.settings.highlight.call(this,error.element,this.settings.errorClass);this.showLabel(error.element,error.message)}if(this.errorList.length){this.toShow.push(this.containers)}if(this.settings.success){for(var i=0;this.successList[i];i++){this.showLabel(this.successList[i])}}if(this.settings.unhighlight){for(var i=0,elements=this.validElements();elements[i];i++){this.settings.unhighlight.call(this,elements[i],this.settings.errorClass)}}this.toHide=this.toHide.not(this.toShow);this.hideErrors();this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return $(this.errorList).map(function(){return this.element})},showLabel:function(element,message){var label=this.errorsFor(element);if(label.length){label.removeClass().addClass(this.settings.errorClass);label.attr("generated")&&label.html(message)}else{label=$("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(element),generated:true}).addClass(this.settings.errorClass).html(message||"");if(this.settings.wrapper){label=label.hide().show().wrap("<"+this.settings.wrapper+">").parent()}if(!this.labelContainer.append(label).length)this.settings.errorPlacement?this.settings.errorPlacement(label,$(element)):label.insertAfter(element)}if(!message&&this.settings.success){label.text("");typeof this.settings.success=="string"?label.addClass(this.settings.success):this.settings.success(label)}this.toShow.push(label)},errorsFor:function(element){return this.errors().filter("[@for='"+this.idOrName(element)+"']")},idOrName:function(element){return this.groups[element.name]||(this.checkable(element)?element.name:element.id||element.name)},checkable:function(element){return/radio|checkbox/i.test(element.type)},findByName:function(name){var form=this.currentForm;return $(document.getElementsByName(name)).map(function(index,element){return element.form==form&&element.name==name&&element||null})},getLength:function(value,element){switch(element.nodeName.toLowerCase()){case'select':return $("option:selected",element).length;case'input':if(this.checkable(element))return this.findByName(element.name).filter(':checked').length}return value.length},depend:function(param,element){return this.dependTypes[typeof param]?this.dependTypes[typeof param](param,element):true},dependTypes:{"boolean":function(param,element){return param},"string":function(param,element){return!!$(param,element.form).length},"function":function(param,element){return param(element)}},optional:function(element){return!$.validator.methods.required.call(this,$.trim(element.value),element)&&"dependency-mismatch"},startRequest:function(element){if(!this.pending[element.name]){this.pendingRequest++;this.pending[element.name]=true}},stopRequest:function(element,valid){this.pendingRequest--;if(this.pendingRequest<0)this.pendingRequest=0;delete this.pending[element.name];if(valid&&this.pendingRequest==0&&this.formSubmitted&&this.form()){$(this.currentForm).submit()}},previousValue:function(element){return $.data(element,"previousValue")||$.data(element,"previousValue",previous={old:null,valid:true,message:this.defaultMessage(element,"remote")})}},classRuleSettings:{required:{required:true},email:{email:true},url:{url:true},date:{date:true},dateISO:{dateISO:true},dateDE:{dateDE:true},number:{number:true},numberDE:{numberDE:true},digits:{digits:true},creditcard:{creditcard:true}},addClassRules:function(className,rules){className.constructor==String?this.classRuleSettings[className]=rules:$.extend(this.classRuleSettings,className)},classRules:function(element){var rules={};var classes=$(element).attr('class');classes&&$.each(classes.split(' '),function(){if(this in $.validator.classRuleSettings){$.extend(rules,$.validator.classRuleSettings[this])}});return rules},attributeRules:function(element){var rules={};var $element=$(element);for(method in $.validator.methods){var value=$element.attr(method);if(value){rules[method]=value}}if(rules.maxlength&&/-1|2147483647|524288/.test(rules.maxlength)){delete rules.maxlength}return rules},metadataRules:function(element){if(!$.metadata)return{};var meta=$.data(element.form,'validator').settings.meta;return meta?$(element).metadata()[meta]:$(element).metadata()},staticRules:function(element){var rules={};var validator=$.data(element.form,'validator');if(validator.settings.rules){rules=$.validator.normalizeRule(validator.settings.rules[element.name])||{}}return rules},normalizeRules:function(rules,element){$.each(rules,function(prop,val){if(val===false){delete rules[prop];return}if(val.param||val.depends){var keepRule=true;switch(typeof val.depends){case"string":keepRule=!!$(val.depends,element.form).length;break;case"function":keepRule=val.depends.call(element,element);break}if(keepRule){rules[prop]=val.param!==undefined?val.param:true}else{delete rules[prop]}}});$.each(rules,function(rule,parameter){rules[rule]=$.isFunction(parameter)?parameter(element):parameter});$.each(['minlength','maxlength','min','max'],function(){if(rules[this]){rules[this]=Number(rules[this])}});$.each(['rangelength','range'],function(){if(rules[this]){rules[this]=[Number(rules[this][0]),Number(rules[this][1])]}});if($.validator.autoCreateRanges){if(rules.min&&rules.max){rules.range=[rules.min,rules.max];delete rules.min;delete rules.max}if(rules.minlength&&rules.maxlength){rules.rangelength=[rules.minlength,rules.maxlength];delete rules.minlength;delete rules.maxlength}}if(rules.messages){delete rules.messages}return rules},normalizeRule:function(data){if(typeof data=="string"){var transformed={};$.each(data.split(/\s/),function(){transformed[this]=true});data=transformed}return data},addMethod:function(name,method,message){$.validator.methods[name]=method;$.validator.messages[name]=message;if(method.length<3){$.validator.addClassRules(name,$.validator.normalizeRule(name))}},methods:{required:function(value,element,param){if(!this.depend(param,element))return"dependency-mismatch";switch(element.nodeName.toLowerCase()){case'select':var options=$("option:selected",element);return options.length>0&&(element.type=="select-multiple"||($.browser.msie&&!(options[0].attributes['value'].specified)?options[0].text:options[0].value).length>0);case'input':if(this.checkable(element))return this.getLength(value,element)>0;default:return value.length>0}},remote:function(value,element,param){if(this.optional(element))return"dependency-mismatch";var previous=this.previousValue(element);if(!this.settings.messages[element.name])this.settings.messages[element.name]={};this.settings.messages[element.name].remote=typeof previous.message=="function"?previous.message(value):previous.message;if(previous.old!==value){previous.old=value;var validator=this;this.startRequest(element);var data={};data[element.name]=value;$.ajax({url:param,mode:"abort",port:"validate"+element.name,dataType:"json",data:data,success:function(response){if(!response){var errors={};errors[element.name]=response||validator.defaultMessage(element,"remote");validator.showErrors(errors)}else{var submitted=validator.formSubmitted;validator.prepareElement(element);validator.formSubmitted=submitted;validator.successList.push(element);validator.showErrors()}previous.valid=response;validator.stopRequest(element,response)}});return"pending"}else if(this.pending[element.name]){return"pending"}return previous.valid},minlength:function(value,element,param){return this.optional(element)||this.getLength(value,element)>=param},maxlength:function(value,element,param){return this.optional(element)||this.getLength(value,element)<=param},rangelength:function(value,element,param){var length=this.getLength(value,element);return this.optional(element)||(length>=param[0]&&length<=param[1])},min:function(value,element,param){return this.optional(element)||value>=param},max:function(value,element,param){return this.optional(element)||value<=param},range:function(value,element,param){return this.optional(element)||(value>=param[0]&&value<=param[1])},email:function(value,element){return this.optional(element)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(element.value)},url:function(value,element){return this.optional(element)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(element.value)},date:function(value,element){return this.optional(element)||!/Invalid|NaN/.test(new Date(value))},dateISO:function(value,element){return this.optional(element)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value)},dateDE:function(value,element){return this.optional(element)||/^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value)},number:function(value,element){return this.optional(element)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value)},numberDE:function(value,element){return this.optional(element)||/^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value)},digits:function(value,element){return this.optional(element)||/^\d+$/.test(value)},creditcard:function(value,element){if(this.optional(element))return"dependency-mismatch";if(/[^0-9-]+/.test(value))return false;var nCheck=0,nDigit=0,bEven=false;value=value.replace(/\D/g,"");for(n=value.length-1;n>=0;n--){var cDigit=value.charAt(n);var nDigit=parseInt(cDigit,10);if(bEven){if((nDigit*=2)>9)nDigit-=9}nCheck+=nDigit;bEven=!bEven}return(nCheck%10)==0},accept:function(value,element,param){param=typeof param=="string"?param:"png|jpe?g|gif";return this.optional(element)||value.match(new RegExp(".("+param+")$","i"))},equalTo:function(value,element,param){return value==$(param).val()}}})})(jQuery);(function($){var ajax=$.ajax;var pendingRequests={};$.ajax=function(settings){settings=$.extend(settings,$.extend({},$.ajaxSettings,settings));var port=settings.port;if(settings.mode=="abort"){if(pendingRequests[port]){pendingRequests[port].abort()}return(pendingRequests[port]=ajax.apply(this,arguments))}return ajax.apply(this,arguments)}})(jQuery);(function($){$.each({focus:'focusin',blur:'focusout'},function(original,fix){$.event.special[fix]={setup:function(){if($.browser.msie)return false;this.addEventListener(original,$.event.special[fix].handler,true)},teardown:function(){if($.browser.msie)return false;this.removeEventListener(original,$.event.special[fix].handler,true)},handler:function(e){arguments[0]=$.event.fix(e);arguments[0].type=fix;return $.event.handle.apply(this,arguments)}}});$.extend($.fn,{delegate:function(type,delegate,handler){return this.bind(type,function(event){var target=$(event.target);if(target.is(delegate)){return handler.apply(target,arguments)}})},triggerEvent:function(type,target){return this.triggerHandler(type,[$.event.fix({type:type,target:target})])}})})(jQuery);