(function($){$.fn.jqm=function(o){var p={overlay:50,overlayClass:'jqmOverlay',closeClass:'jqmClose',trigger:'.jqModal',ajax:F,ajaxText:'',target:F,modal:F,toTop:F,onShow:F,onHide:F,onLoad:F};return this.each(function(){if(this._jqm)return H[this._jqm].c=$.extend({},H[this._jqm].c,o);s++;this._jqm=s;H[s]={c:$.extend(p,$.jqm.params,o),a:F,w:$(this).addClass('jqmID'+s),s:s};if(p.trigger)$(this).jqmAddTrigger(p.trigger)})};$.fn.jqmAddClose=function(e){return hs(this,e,'jqmHide')};$.fn.jqmAddTrigger=function(e){return hs(this,e,'jqmShow')};$.fn.jqmShow=function(t){return this.each(function(){$.jqm.open(this._jqm,t)})};$.fn.jqmHide=function(t){return this.each(function(){$.jqm.close(this._jqm,t)})};$.jqm={hash:{},open:function(s,t){var h=H[s],c=h.c,cc='.'+c.closeClass,z=(parseInt(h.w.css('z-index'))),z=(z>0)?z:3000,o=$('<div></div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});if(h.a)return F;h.t=t;h.a=true;h.w.css('z-index',z);if(c.modal){if(!A[0])L('bind');A.push(s)}else if(c.overlay>0){h.w.jqmAddClose(o)}else o=F;h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):F;if(ie6){$('html,body').css({height:'100%',width:'100%'});if(o){o=o.css({position:'absolute'})[0];for(var y in {Top:1,Left:1})o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'")}};if(c.ajax){var r=c.target||h.w,u=c.ajax,r=(typeof r=='string')?$(r,h.w):$(r),u=(u.substr(0,1)=='@')?$(t).attr(u.substring(1)):u;r.html(c.ajaxText).load(u,function(){if(c.onLoad)c.onLoad.call(this,h);if(cc)h.w.jqmAddClose($(cc,h.w));e(h)})}else if(cc)h.w.jqmAddClose($(cc,h.w));if(c.toTop&&h.o)h.w.before('<span id="jqmP'+h.w[0]._jqm+'"></span>').insertAfter(h.o);(c.onShow)?c.onShow(h):h.w.show();e(h);return F},close:function(s){var h=H[s];if(!h.a)return F;h.a=F;if(A[0]){A.pop();if(!A[0])L('unbind')};if(h.c.toTop&&h.o)$('#jqmP'+h.w[0]._jqm).after(h.w).remove();if(h.c.onHide){h.c.onHide(h)}else{h.w.hide();if(h.o)h.o.remove()};return F},params:{}};var s=0,H=$.jqm.hash,A=[],ie6=$.browser.msie&&($.browser.version=="6.0"),F=false,i=$('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({opacity:0}),e=function(h){if(ie6)if(h.o){h.o.html('<p style="width:100%;height:100%"/>').prepend(i)}else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i);f(h)},f=function(h){if(typeof $(':input:visible',h.w)[0]!="undefined")try{$(':input:visible',h.w)[0].focus()}catch(_){}},L=function(t){$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m)},m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r)f(h);return !r},hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function(){if(!this[c]){this[c]=[];$(this).click(function(){for(var i in {jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return F})};this[c].push(s)})})}})(jQuery);(function($){$.fn.ajaxSubmit=function(options){if(!this.length){log('ajaxSubmit: skipping submit process - no element selected');return this};if(typeof options=='function')options={success:options};options=$.extend({url:this.attr('action')||window.location.toString(),type:this.attr('method')||'GET'},options||{});var veto={};this.trigger('form-pre-serialize',[this,options,veto]);if(veto.veto){log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');return this};var a=this.formToArray(options.semantic);if(options.data){options.extraData=options.data;for(var n in options.data)a.push({name:n,value:options.data[n]})};if(options.beforeSubmit&&options.beforeSubmit(a,this,options)===false){log('ajaxSubmit: submit aborted via beforeSubmit callback');return this};this.trigger('form-submit-validate',[a,this,options,veto]);if(veto.veto){log('ajaxSubmit: submit vetoed via form-submit-validate trigger');return this};var q=$.param(a);if(options.type.toUpperCase()=='GET'){options.url+=(options.url.indexOf('?')>=0?'&':'?')+q;options.data=null}else options.data=q;var $form=this,callbacks=[];if(options.resetForm)callbacks.push(function(){$form.resetForm()});if(options.clearForm)callbacks.push(function(){$form.clearForm()});if(!options.dataType&&options.target){var oldSuccess=options.success||function(){};callbacks.push(function(data){$(options.target).html(data).each(oldSuccess,arguments)})}else if(options.success)callbacks.push(options.success);options.success=function(data,status){for(var i=0,max=callbacks.length;i<max;i++)callbacks[i](data,status,$form)};var files=$('input:file',this).fieldValue(),found=false;for(var j=0;j<files.length;j++)if(files[j])found=true;if(options.iframe||found){if($.browser.safari&&options.closeKeepAlive){$.get(options.closeKeepAlive,fileUpload)}else fileUpload()}else $.ajax(options);this.trigger('form-submit-notify',[this,options]);return this
function fileUpload(){var form=$form[0];if($(':input[@name=submit]',form).length){alert('Error: Form elements must not be named "submit".');return};var opts=$.extend({},$.ajaxSettings,options),id='jqFormIO'+(new Date().getTime()),$io=$('<iframe id="'+id+'" name="'+id+'" />'),io=$io[0];if($.browser.msie||$.browser.opera)io.src='javascript:false;document.write("");';$io.css({position:'absolute',top:'-1000px',left:'-1000px'});var xhr={responseText:null,responseXML:null,status:0,statusText:'n/a',getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){}},g=opts.global;if(g&&!$.active++)$.event.trigger("ajaxStart");if(g)$.event.trigger("ajaxSend",[xhr,opts]);var cbInvoked=0,timedOut=0,sub=form.clk;if(sub){var n=sub.name;if(n&&!sub.disabled){options.extraData=options.extraData||{};options.extraData[n]=sub.value;if(sub.type=="image"){options.extraData[name+'.x']=form.clk_x;options.extraData[name+'.y']=form.clk_y}}};setTimeout(function(){var t=$form.attr('target'),a=$form.attr('action');$form.attr({target:id,encoding:'multipart/form-data',enctype:'multipart/form-data',method:'POST',action:opts.url});if(opts.timeout)setTimeout(function(){timedOut=true;cb()},opts.timeout);var extraInputs=[];try{if(options.extraData)for(var n in options.extraData)extraInputs.push($('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />').appendTo(form)[0]);$io.appendTo('body');io.attachEvent?io.attachEvent('onload',cb):io.addEventListener('load',cb,false);form.submit()}finally{$form.attr('action',a);t?$form.attr('target',t):$form.removeAttr('target');$(extraInputs).remove()}},10)
function cb(){if(cbInvoked++)return;io.detachEvent?io.detachEvent('onload',cb):io.removeEventListener('load',cb,false);var operaHack=0,ok=true;try{if(timedOut)throw 'timeout';var data,doc;doc=io.contentWindow?io.contentWindow.document:io.contentDocument?io.contentDocument:io.document;if(doc.body==null&&!operaHack&&$.browser.opera){operaHack=1;cbInvoked--;setTimeout(cb,100);return};xhr.responseText=doc.body?doc.body.innerHTML:null;xhr.responseXML=doc.XMLDocument?doc.XMLDocument:doc;xhr.getResponseHeader=function(header){var headers={'content-type':opts.dataType};return headers[header]};if(opts.dataType=='json'||opts.dataType=='script'){var ta=doc.getElementsByTagName('textarea')[0];xhr.responseText=ta?ta.value:xhr.responseText}else if(opts.dataType=='xml'&&!xhr.responseXML&&xhr.responseText!=null)xhr.responseXML=toXml(xhr.responseText);data=$.httpData(xhr,opts.dataType)}catch(e){ok=false;$.handleError(opts,xhr,'error',e)};if(ok){opts.success(data,'success');if(g)$.event.trigger("ajaxSuccess",[xhr,opts])};if(g)$.event.trigger("ajaxComplete",[xhr,opts]);if(g&&!--$.active)$.event.trigger("ajaxStop");if(opts.complete)opts.complete(xhr,ok?'success':'error');setTimeout(function(){$io.remove();xhr.responseXML=null},100)}
function toXml(s,doc){if(window.ActiveXObject){doc=new ActiveXObject('Microsoft.XMLDOM');doc.async='false';doc.loadXML(s)}else doc=(new DOMParser()).parseFromString(s,'text/xml');return(doc&&doc.documentElement&&doc.documentElement.tagName!='parsererror')?doc:null}}};$.fn.ajaxForm=function(options){return this.ajaxFormUnbind().bind('submit.form-plugin',function(){$(this).ajaxSubmit(options);return false}).each(function(){$(":submit,input:image",this).bind('click.form-plugin',function(e){var $form=this.form;$form.clk=this;if(this.type=='image')if(e.offsetX!=undefined){$form.clk_x=e.offsetX;$form.clk_y=e.offsetY}else if(typeof $.fn.offset=='function'){var offset=$(this).offset();$form.clk_x=e.pageX-offset.left;$form.clk_y=e.pageY-offset.top}else{$form.clk_x=e.pageX-this.offsetLeft;$form.clk_y=e.pageY-this.offsetTop};setTimeout(function(){$form.clk=$form.clk_x=$form.clk_y=null},10)})})};$.fn.ajaxFormUnbind=function(){this.unbind('submit.form-plugin');return this.each(function(){$(":submit,input:image",this).unbind('click.form-plugin')})};$.fn.formToArray=function(semantic){var a=[];if(this.length==0)return a;var form=this[0],els=semantic?form.getElementsByTagName('*'):form.elements;if(!els)return a;for(var i=0,max=els.length;i<max;i++){var el=els[i],n=el.name;if(!n)continue;if(semantic&&form.clk&&el.type=="image"){if(!el.disabled&&form.clk==el)a.push({name:n+'.x',value:form.clk_x},{name:n+'.y',value:form.clk_y});continue};var v=$.fieldValue(el,true);if(v&&v.constructor==Array){for(var j=0,jmax=v.length;j<jmax;j++)a.push({name:n,value:v[j]})}else if(v!==null&&typeof v!='undefined')a.push({name:n,value:v})};if(!semantic&&form.clk){var inputs=form.getElementsByTagName("input");for(var i=0,max=inputs.length;i<max;i++){var input=inputs[i],n=input.name;if(n&&!input.disabled&&input.type=="image"&&form.clk==input)a.push({name:n+'.x',value:form.clk_x},{name:n+'.y',value:form.clk_y})}};return a};$.fn.formSerialize=function(semantic){return $.param(this.formToArray(semantic))};$.fn.fieldSerialize=function(successful){var a=[];this.each(function(){var n=this.name;if(!n)return;var v=$.fieldValue(this,successful);if(v&&v.constructor==Array){for(var i=0,max=v.length;i<max;i++)a.push({name:n,value:v[i]})}else if(v!==null&&typeof v!='undefined')a.push({name:this.name,value:v})});return $.param(a)};$.fn.fieldValue=function(successful){for(var val=[],i=0,max=this.length;i<max;i++){var el=this[i],v=$.fieldValue(el,successful);if(v===null||typeof v=='undefined'||(v.constructor==Array&&!v.length))continue;v.constructor==Array?$.merge(val,v):val.push(v)};return val};$.fieldValue=function(el,successful){var n=el.name,t=el.type,tag=el.tagName.toLowerCase();if(typeof successful=='undefined')successful=true;if(successful&&(!n||el.disabled||t=='reset'||t=='button'||(t=='checkbox'||t=='radio')&&!el.checked||(t=='submit'||t=='image')&&el.form&&el.form.clk!=el||tag=='select'&&el.selectedIndex==-1))return null;if(tag=='select'){var index=el.selectedIndex;if(index<0)return null;var a=[],ops=el.options,one=(t=='select-one'),max=(one?index+1:ops.length);for(var i=(one?index:0);i<max;i++){var op=ops[i];if(op.selected){var v=$.browser.msie&&!(op.attributes['value'].specified)?op.text:op.value;if(one)return v;a.push(v)}};return a};return el.value};$.fn.clearForm=function(){return this.each(function(){$('input,select,textarea',this).clearFields()})};$.fn.clearFields=$.fn.clearInputs=function(){return this.each(function(){var t=this.type,tag=this.tagName.toLowerCase();if(t=='text'||t=='password'||tag=='textarea'){this.value=''}else if(t=='checkbox'||t=='radio'){this.checked=false}else if(tag=='select')this.selectedIndex=-1})};$.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=='function'||(typeof this.reset=='object'&&!this.reset.nodeType))this.reset()})};$.fn.enable=function(b){if(b==undefined)b=true;return this.each(function(){this.disabled=!b})};$.fn.select=function(select){if(select==undefined)select=true;return this.each(function(){var t=this.type;if(t=='checkbox'||t=='radio'){this.checked=select}else if(this.tagName.toLowerCase()=='option'){var $sel=$(this).parent('select');if(select&&$sel[0]&&$sel[0].type=='select-one')$sel.find('option').select(false);this.selected=select}})}
function log(){if($.fn.ajaxSubmit.debug&&window.console&&window.console.log)window.console.log('[jquery.form] '+Array.prototype.join.call(arguments,''))}})(jQuery);(function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie&&/6.0/.test(navigator.userAgent)){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n},html='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"style="display:block;position:absolute;z-index:-1;'+(s.opacity!==false?'filter:Alpha(Opacity=\'0\');':'')+'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';"/>';return this.each(function(){if($('> iframe.bgiframe',this).length==0)this.insertBefore(document.createElement(html),this.firstChild)})};return this}})(jQuery);(function($){var helper={},current,title,tID,IE=$.browser.msie&&/MSIE\s(5\.5|6\.)/.test(navigator.userAgent),track=false;$.tooltip={blocked:false,defaults:{delay:200,fade:false,showURL:true,extraClass:"",top:15,left:15,id:"tooltip"},block:function(){$.tooltip.blocked=!$.tooltip.blocked}};$.fn.extend({tooltip:function(settings){settings=$.extend({},$.tooltip.defaults,settings);createHelper(settings);return this.each(function(){$.data(this,"tooltip",settings);this.tOpacity=helper.parent.css("opacity");this.tooltipText=this.title;$(this).removeAttr("title");this.alt=""}).bind("mouseenter",save).bind("mouseleave",hide).click(hide)},fixPNG:IE?function(){return this.each(function(){var image=$(this).css('backgroundImage');if(image.match(/^url\(["']?(.*\.png)["']?\)$/i)){image=RegExp.$1;$(this).css({backgroundImage:'none',filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='"+image+"')"}).each(function(){var position=$(this).css('position');if(position!='absolute'&&position!='relative')$(this).css('position','relative')})}})}:function(){return this},unfixPNG:IE?function(){return this.each(function(){$(this).css({filter:'',backgroundImage:''})})}:function(){return this},hideWhenEmpty:function(){return this.each(function(){$(this)[$(this).html()?"show":"hide"]()})},url:function(){return this.attr('href')||this.attr('src')}})
function createHelper(settings){if(helper.parent)return;helper.parent=$('<div id="'+settings.id+'"><h3></h3><div class="body"></div><div class="url"></div></div>').appendTo(document.body).hide();if($.fn.bgiframe)helper.parent.bgiframe();helper.title=$('h3',helper.parent);helper.body=$('div.body',helper.parent);helper.url=$('div.url',helper.parent)}
function settings(element){return $.data(element,"tooltip")}
function handle(event){if(settings(this).delay){tID=setTimeout(show,settings(this).delay)}else show();track=!!settings(this).track;$(document.body).bind('mousemove',update);update(event)}
function save(){if($.tooltip.blocked||this==current||(!this.tooltipText&&!settings(this).bodyHandler))return;current=this;title=this.tooltipText;if(settings(this).bodyHandler){helper.title.hide();var bodyContent=settings(this).bodyHandler.call(this);if(bodyContent.nodeType||bodyContent.jquery){helper.body.empty().append(bodyContent)}else helper.body.html(bodyContent);helper.body.show()}else if(settings(this).showBody){var parts=title.split(settings(this).showBody);helper.title.html(parts.shift()).show();helper.body.empty();for(var i=0,part;(part=parts[i]);i++){if(i>0)helper.body.append("<br/>");helper.body.append(part)};helper.body.hideWhenEmpty()}else{helper.title.html(title).show();helper.body.hide()};if(settings(this).showURL&&$(this).url()){helper.url.html($(this).url().replace('http://','')).show()}else helper.url.hide();helper.parent.addClass(settings(this).extraClass);if(settings(this).fixPNG)helper.parent.fixPNG();handle.apply(this,arguments)}
function show(){tID=null;if((!IE||!$.fn.bgiframe)&&settings(current).fade){if(helper.parent.is(":animated")){helper.parent.stop().show().fadeTo(settings(current).fade,current.tOpacity)}else helper.parent.is(':visible')?helper.parent.fadeTo(settings(current).fade,current.tOpacity):helper.parent.fadeIn(settings(current).fade)}else helper.parent.show();update()}
function update(event){if($.tooltip.blocked)return;if(event&&event.target.tagName=="OPTION")return;if(!track&&helper.parent.is(":visible"))$(document.body).unbind('mousemove',update);if(current==null){$(document.body).unbind('mousemove',update);return};helper.parent.removeClass("viewport-right").removeClass("viewport-bottom");var left=helper.parent[0].offsetLeft,top=helper.parent[0].offsetTop;if(event){left=event.pageX+settings(current).left;top=event.pageY+settings(current).top;var right='auto';if(settings(current).positionLeft){right=$(window).width()-left;left='auto'};helper.parent.css({left:left,right:right,top:top})};var v=viewport(),h=helper.parent[0];if(v.x+v.cx<h.offsetLeft+h.offsetWidth){left-=h.offsetWidth+20+settings(current).left;helper.parent.css({left:left+'px'}).addClass("viewport-right")};if(v.y+v.cy<h.offsetTop+h.offsetHeight){top-=h.offsetHeight+20+settings(current).top;helper.parent.css({top:top+'px'}).addClass("viewport-bottom")}}
function viewport(){return{x:$(window).scrollLeft(),y:$(window).scrollTop(),cx:$(window).width(),cy:$(window).height()}}
function hide(event){if($.tooltip.blocked)return;if(tID)clearTimeout(tID);current=null;var tsettings=settings(this)
function complete(){helper.parent.removeClass(tsettings.extraClass).hide().css("opacity","")};if((!IE||!$.fn.bgiframe)&&tsettings.fade){if(helper.parent.is(':animated')){helper.parent.stop().fadeTo(tsettings.fade,0,complete)}else helper.parent.stop().fadeOut(tsettings.fade,complete)}else complete();if(settings(this).fixPNG)helper.parent.unfixPNG()}})(jQuery);try{console}catch(e){console={log:function(){}}};var HIGHLIGHT_COLOR="#FC3";jQuery.preloadImages=function(){for(var i=0;i<arguments.length;i++)jQuery("<img>").attr("src",arguments[i])};$(function(){jQuery.preloadImages('/img/busy_big.gif','/img/busy.gif');if($.browser.msie&&parseInt($.browser.version.substr(0,1))<=6)$("#leftCol ul").prepend('<li style="position:relative; left:-10000px; height:1px; width:1px; overflow:hidden;"><a href="/alerts/" tabindex="0" style=""><span class="itemcount"></span></a></li>')});var uniqId=(function(){var id=0;return function(){return id++}})()
function in_array(needle,haystack,strict){var found=false,key;strict=!!strict;for(key in haystack)if((strict&&haystack[key]===needle)||(!strict&&haystack[key]==needle)){found=true;break};return found}
function number_format(number,decimals,dec_point,thousands_sep){var n=number,c=isNaN(decimals=Math.abs(decimals))?2:decimals,d=dec_point==undefined?".":dec_point,t=thousands_sep==undefined?",":thousands_sep,s=n<0?"-":"",i=parseInt(n=Math.abs(+n||0).toFixed(c))+"",j=(j=i.length)>3?j%3:0;return s+(j?i.substr(0,j)+t:"")+i.substr(j).replace(/(\d{3})(?=\d)/g,"$1"+t)+(c?d+Math.abs(n-i).toFixed(c).slice(2):"")}
function date(format,timestamp){var a,jsdate=((timestamp)?new Date(timestamp*1000):new Date()),pad=function(n,c){if((n=n+"").length<c){return new Array(++c-n.length).join("0")+n}else return n},txt_weekdays=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],txt_ordin={1:"st",2:"nd",3:"rd",21:"st",22:"nd",23:"rd",31:"st"},txt_months=["","January","February","March","April","May","June","July","August","September","October","November","December"],f={d:function(){return pad(f.j(),2)},D:function(){t=f.l();return t.substr(0,3)},j:function(){return jsdate.getDate()},l:function(){return txt_weekdays[f.w()]},N:function(){return f.w()+1},S:function(){return txt_ordin[f.j()]?txt_ordin[f.j()]:'th'},w:function(){return jsdate.getDay()},z:function(){return(jsdate-new Date(jsdate.getFullYear()+"/1/1"))/864e5>>0},W:function(){var a=f.z(),b=364+f.L()-a,nd2,nd=(new Date(jsdate.getFullYear()+"/1/1").getDay()||7)-1;if(b<=2&&((jsdate.getDay()||7)-1)<=2-b){return 1}else if(a<=2&&nd>=4&&a>=(6-nd)){nd2=new Date(jsdate.getFullYear()-1+"/12/31");return date("W",Math.round(nd2.getTime()/1000))}else return(1+(nd<=3?((a+nd)/7):(a-(7-nd))/7)>>0)},F:function(){return txt_months[f.n()]},m:function(){return pad(f.n(),2)},M:function(){t=f.F();return t.substr(0,3)},n:function(){return jsdate.getMonth()+1},t:function(){var n;if((n=jsdate.getMonth()+1)==2){return 28+f.L()}else if(n&1&&n<8||!(n&1)&&n>7){return 31}else return 30},L:function(){var y=f.Y();return(!(y&3)&&(y%1e2||!(y%4e2)))?1:0},Y:function(){return jsdate.getFullYear()},y:function(){return(jsdate.getFullYear()+"").slice(2)},a:function(){return jsdate.getHours()>11?"pm":"am"},A:function(){return f.a().toUpperCase()},B:function(){var off=(jsdate.getTimezoneOffset()+60)*60,theSeconds=(jsdate.getHours()*3600)+(jsdate.getMinutes()*60)+jsdate.getSeconds()+off,beat=Math.floor(theSeconds/86.4);if(beat>1000)beat-=1000;if(beat<0)beat+=1000;if((String(beat)).length==1)beat="00"+beat;if((String(beat)).length==2)beat="0"+beat;return beat},g:function(){return jsdate.getHours()%12||12},G:function(){return jsdate.getHours()},h:function(){return pad(f.g(),2)},H:function(){return pad(jsdate.getHours(),2)},i:function(){return pad(jsdate.getMinutes(),2)},s:function(){return pad(jsdate.getSeconds(),2)},O:function(){var t=pad(Math.abs(jsdate.getTimezoneOffset()/60*100),4);if(jsdate.getTimezoneOffset()>0){t="-"+t}else t="+"+t;return t},P:function(){var O=f.O();return(O.substr(0,3)+":"+O.substr(3,2))},c:function(){return f.Y()+"-"+f.m()+"-"+f.d()+"T"+f.h()+":"+f.i()+":"+f.s()+f.P()},U:function(){return Math.round(jsdate.getTime()/1000)}};return format.replace(/[\\]?([a-zA-Z])/g,function(t,s){if(t!=s){ret=s}else if(f[s]){ret=f[s]()}else ret=s;return ret})}
function consoleLog(){console.log(arguments)}
function positionDialog(dlg,bAdjustHoriz){var w=$(window),dlgSize={h:dlg.outerHeight(),w:dlg.outerWidth()},vwSize={h:w.height(),w:w.width()},pos={x:Math.round((vwSize.w-dlgSize.w)/2)+w.scrollLeft(),y:Math.round((vwSize.h-dlgSize.h)/4)+w.scrollTop()};dlg.css({top:pos.y});if(bAdjustHoriz)dlg.css({left:pos.x})};(function($){$.fn.multiAttr=function(name,options){var a=[];this.each(function(){a.push(this.getAttribute(name))});return a}})(jQuery);(function($){$.fn.toggleFocusBlur=function(options){var defaults={prompt:'',promptColor:'#CCC',foreground:'#000',background:'#FFF',overwriteExisting:false},opts=$.extend(defaults,options);return this.each(function(){$this=$(this);$this.unbind('focus').focus(function(){if($this.val()==opts.prompt)$this.val("");$this.css("color",opts.foreground);$this.css("backgroundColor",opts.background)}).unbind('blur').blur(function(){$this.css("backgroundColor","");if($this.val()===""||$this.val()==opts.prompt){$this.css("color",opts.promptColor);$this.val(opts.prompt)}else $this.css("color",opts.foreground)});if(opts.overwriteExisting||$this.val()=="")$this.val(opts.prompt).css("color",opts.promptColor)})}})(jQuery);$(function(){$(document).keydown(function(e){if(e.which==27)$("div.jqmWindow").jqmHide()});$("#mainTabs li").bind("mouseenter",function(evt){var $this=$(this);if(!$this.hasClass("selected"))$this.addClass("selected2")}).bind("mouseleave",function(evt){$(this).removeClass("selected2")});$("#lnkHeaderFeedback").click(sendFeedback);$("#lnkInviteEmail").click(inviteEmail);$("#lnkShareFeed1").click(showMegaTracklet);$("#lnkShowAutoInviteLink").click(showAutoInviteLink);$("#lnkReferralInfo").click(referralinfo)});$(function(){$('#recentActivity').each(function(){var $this=$(this),totalHeight=$this.height(),currentHeadline=0,oldHeadline=0,hiddenPosition=totalHeight+10;$('div.streamItem:eq('+currentHeadline+')').css('top','2px');var headlineCount=$('div.streamItem').length,headlineTimeout,rotateInProgress=false,headlineRotate=function(){if(!rotateInProgress){rotateInProgress=true;headlineTimeout=false;currentHeadline=(oldHeadline+1)%headlineCount;$('div.streamItem:eq('+oldHeadline+')').animate({top:-hiddenPosition},'slow',function(){$(this).css('top',hiddenPosition)});$('div.streamItem:eq('+currentHeadline+')').animate({top:'2px'},'slow',function(){rotateInProgress=false;if(!headlineTimeout)headlineTimeout=setTimeout(headlineRotate,5000)});oldHeadline=currentHeadline}};headlineTimeout=setTimeout(headlineRotate,5000);$('#recentActivity').hover(function(){clearTimeout(headlineTimeout);headlineTimeout=false},function(){if(!headlineTimeout)headlineTimeout=setTimeout(headlineRotate,250)})})});$(function(){$("#lnkFeedback").click(sendFeedback);$("#lnkHeaderFeedback").click(sendFeedback)})
function sendFeedback(evt){var dlg=$('<div id="dlgFeedback" class="jqmWindow"><img src="/img/busy_big.gif" alt="Loading..."></div>');dlg.jqm({overlay:50,toTop:true,ajax:"/about/feedback/",onLoad:function(o){var dlg=o.w;dlg.find("div.hd a.btnCancel").click(function(){dlg.jqmHide();return false});dlg.draggable({handle:dlg.find("div.hd"),containment:'document'});dlg.find("form").ajaxForm({dataType:"json",success:function(ajaxResponse){if(ajaxResponse.success){$("#dlgFeedback").html("<p style='padding:1em'>Thanks for your feedback!</p>");setTimeout(function(){$("#dlgFeedback").fadeOut().jqmHide()},3000)}}})},onShow:function(o){o.w.show();positionDialog(o.w)},onHide:function(o){o.w.remove();o.o.fadeOut('500',function(){if(o.o)o.o.remove()})}}).jqmShow();return false}
function inviteEmail(evt){var dlg=$('<div id="dlgInviteEmail" class="jqmWindow"><img src="/img/busy_big.gif" alt="Loading..."></div>');dlg.jqm({overlay:50,toTop:true,ajax:"/invite/friends",onLoad:function(o){var dlg=o.w;dlg.find("div.hd a.btnCancel").click(function(){dlg.jqmHide();return false});dlg.draggable({handle:dlg.find("div.hd"),containment:'document'})},onShow:function(o){o.w.show();positionDialog(o.w)},onHide:function(o){o.w.remove();o.o.fadeOut('500',function(){if(o.o)o.o.remove()})}}).jqmShow();return false}
function showAutoInviteLink(evt){var dlg=$('<div id="dlgShowAutoInviteLink" class="jqmWindow"><img src="/img/busy_big.gif" alt="Loading..."></div>');dlg.jqm({overlay:50,toTop:true,ajax:"/invite/geturl",onLoad:function(o){var dlg=o.w;dlg.find("div.hd a.btnCancel").click(function(){dlg.jqmHide();return false});dlg.draggable({handle:dlg.find("div.hd"),containment:'document'})},onShow:function(o){o.w.show();positionDialog(o.w)},onHide:function(o){o.w.remove();o.o.fadeOut('500',function(){if(o.o)o.o.remove()})}}).jqmShow();return false}
function showMegaTracklet(evt){var dlg=$('<div id="dlgNewsLetter" class="jqmWindow" style="margin-left:-470px;margin-top:-130px;width:950px;"></div>');dlg.jqm({overlay:60,toTop:true,ajax:"/subscription/news-letter",ajaxText:'<img src="/img/busy_big.gif" alt="Loading...">',onLoad:function(o){var dlg=o.w;dlg.find("div.hd a.btnCancel").click(function(){dlg.jqmHide();return false});dlg.draggable({handle:dlg.find("div.hd"),containment:'document'})},onShow:function(o){o.w.show();positionDialog(o.w)},onHide:function(o){o.w.remove();o.o.fadeOut('500',function(){if(o.o)o.o.remove()})}}).jqmShow();return false}
function referralinfo(evt){var dlg=$('<div id="dlgReferralInfo" class="jqmWindow"><img src="/img/busy_big.gif" alt="Loading..."></div>');dlg.jqm({overlay:80,toTop:true,ajax:"/about/referralinfo/",onLoad:function(o){var dlg=o.w;dlg.find("div.hd a.btnCancel").click(function(){dlg.jqmHide();return false});dlg.draggable({handle:dlg.find("div.hd"),containment:'document'})},onShow:function(o){o.w.show();positionDialog(o.w)},onHide:function(o){o.w.remove();o.o.fadeOut('500',function(){if(o.o)o.o.remove()})}}).jqmShow();return false};var SharingDialog={};SharingDialog.show=function(url,id,channel){var dlg=$('<div id="dlgShare" class="jqmWindow"><img src="/img/busy_big.gif" alt="Loading..."></div>');$("body").append(dlg);var url=url+"?id="+id;if(channel)url+="&c="+channel;dlg.jqm({overlay:50,toTop:true,ajax:url,onLoad:function(o){var dlg=o.w;dlg.find("div.hd a.btnCancel").click(function(evt){dlg.jqmHide();evt.preventDefault()});dlg.draggable({handle:dlg.find("div.hd"),containment:'document'});dlg.find("form").ajaxForm({dataType:"json",beforeSubmit:function(data,form,options){$("#dlgShare").find("div.error").hide()},success:function(ajaxResponse){if(ajaxResponse.success){$("#dlgShare").html("<p style='padding:1em'>Your message has been sent!</p>");setTimeout(function(){$("#dlgShare").fadeOut().jqmHide()},3000)}else{if(ajaxResponse.errors['invalidId']){$("#dlgShare").jqmHide();return};for(err in ajaxResponse.errors)$("#"+err).next("div.error").text(ajaxResponse.errors[err]).show()}},error:function(e){}});$("#shareId").val(id)},onShow:function(o){o.w.show();positionDialog(o.w)},onHide:function(o){o.w.remove();o.o.fadeOut('500',function(){if(o.o)o.o.remove()})}}).jqmShow()};if(typeof YAHOO=="undefined"||!YAHOO)var YAHOO={};YAHOO.namespace=function(){var a=arguments,o=null,i,j,d;for(i=0;i<a.length;i=i+1){d=a[i].split(".");o=YAHOO;for(j=(d[0]=="YAHOO")?1:0;j<d.length;j=j+1){o[d[j]]=o[d[j]]||{};o=o[d[j]]}};return o};YAHOO.log=function(msg,cat,src){var l=YAHOO.widget.Logger;if(l&&l.log){return l.log(msg,cat,src)}else return false};YAHOO.register=function(name,mainClass,data){var mods=YAHOO.env.modules;if(!mods[name])mods[name]={versions:[],builds:[]};var m=mods[name],v=data.version,b=data.build,ls=YAHOO.env.listeners;m.name=name;m.version=v;m.build=b;m.versions.push(v);m.builds.push(b);m.mainClass=mainClass;for(var i=0;i<ls.length;i=i+1)ls[i](m);if(mainClass){mainClass.VERSION=v;mainClass.BUILD=b}else YAHOO.log("mainClass is undefined for module "+name,"warn")};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(name){return YAHOO.env.modules[name]||null};YAHOO.env.ua=function(){var o={ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0},ua=navigator.userAgent,m;if((/KHTML/).test(ua))o.webkit=1;m=ua.match(/AppleWebKit\/([^\s]*)/);if(m&&m[1]){o.webkit=parseFloat(m[1]);if(/ Mobile\//.test(ua)){o.mobile="Apple"}else{m=ua.match(/NokiaN[^\/]*/);if(m)o.mobile=m[0]};m=ua.match(/AdobeAIR\/([^\s]*)/);if(m)o.air=m[0]};if(!o.webkit){m=ua.match(/Opera[\s\/]([^\s]*)/);if(m&&m[1]){o.opera=parseFloat(m[1]);m=ua.match(/Opera Mini[^;]*/);if(m)o.mobile=m[0]}else{m=ua.match(/MSIE\s([^;]*)/);if(m&&m[1]){o.ie=parseFloat(m[1])}else{m=ua.match(/Gecko\/([^\s]*)/);if(m){o.gecko=1;m=ua.match(/rv:([^\s\)]*)/);if(m&&m[1])o.gecko=parseFloat(m[1])}}}};return o}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var l=YAHOO_config.listener,ls=YAHOO.env.listeners,unique=true,i;if(l){for(i=0;i<ls.length;i=i+1)if(ls[i]==l){unique=false;break};if(unique)ls.push(l)}}})();YAHOO.lang=YAHOO.lang||{};(function(){var L=YAHOO.lang,ADD=["toString","valueOf"],OB={isArray:function(o){if(o)return L.isNumber(o.length)&&L.isFunction(o.splice);return false},isBoolean:function(o){return typeof o==='boolean'},isFunction:function(o){return typeof o==='function'},isNull:function(o){return o===null},isNumber:function(o){return typeof o==='number'&&isFinite(o)},isObject:function(o){return(o&&(typeof o==='object'||L.isFunction(o)))||false},isString:function(o){return typeof o==='string'},isUndefined:function(o){return typeof o==='undefined'},_IEEnumFix:(YAHOO.env.ua.ie)?function(r,s){for(var i=0;i<ADD.length;i=i+1){var fname=ADD[i],f=s[fname];if(L.isFunction(f)&&f!=Object.prototype[fname])r[fname]=f}}:function(){},extend:function(subc,superc,overrides){if(!superc||!subc)throw new Error("extend failed, please check that all dependencies are included.");var F=function(){};F.prototype=superc.prototype;subc.prototype=new F();subc.prototype.constructor=subc;subc.superclass=superc.prototype;if(superc.prototype.constructor==Object.prototype.constructor)superc.prototype.constructor=superc;if(overrides){for(var i in overrides)if(L.hasOwnProperty(overrides,i))subc.prototype[i]=overrides[i];L._IEEnumFix(subc.prototype,overrides)}},augmentObject:function(r,s){if(!s||!r)throw new Error("Absorb failed, verify dependencies.");var a=arguments,i,p,override=a[2];if(override&&override!==true){for(i=2;i<a.length;i=i+1)r[a[i]]=s[a[i]]}else{for(p in s)if(override||!(p in r))r[p]=s[p];L._IEEnumFix(r,s)}},augmentProto:function(r,s){if(!s||!r)throw new Error("Augment failed, verify dependencies.");var a=[r.prototype,s.prototype];for(var i=2;i<arguments.length;i=i+1)a.push(arguments[i]);L.augmentObject.apply(this,a)},dump:function(o,d){var i,len,s=[],OBJ="{...}",FUN="f(){...}",COMMA=', ',ARROW=' => ';if(!L.isObject(o)){return o+""}else if(o instanceof Date||("nodeType" in o&&"tagName" in o)){return o}else if(L.isFunction(o))return FUN;d=(L.isNumber(d))?d:3;if(L.isArray(o)){s.push("[");for(i=0,len=o.length;i<len;i=i+1){if(L.isObject(o[i])){s.push((d>0)?L.dump(o[i],d-1):OBJ)}else s.push(o[i]);s.push(COMMA)};if(s.length>1)s.pop();s.push("]")}else{s.push("{");for(i in o)if(L.hasOwnProperty(o,i)){s.push(i+ARROW);if(L.isObject(o[i])){s.push((d>0)?L.dump(o[i],d-1):OBJ)}else s.push(o[i]);s.push(COMMA)};if(s.length>1)s.pop();s.push("}")};return s.join("")},substitute:function(s,o,f){var i,j,k,key,v,meta,saved=[],token,DUMP='dump',SPACE=' ',LBRACE='{',RBRACE='}';for(;;){i=s.lastIndexOf(LBRACE);if(i<0)break;j=s.indexOf(RBRACE,i);if(i+1>=j)break;token=s.substring(i+1,j);key=token;meta=null;k=key.indexOf(SPACE);if(k>-1){meta=key.substring(k+1);key=key.substring(0,k)};v=o[key];if(f)v=f(key,v,meta);if(L.isObject(v)){if(L.isArray(v)){v=L.dump(v,parseInt(meta,10))}else{meta=meta||"";var dump=meta.indexOf(DUMP);if(dump>-1)meta=meta.substring(4);if(v.toString===Object.prototype.toString||dump>-1){v=L.dump(v,parseInt(meta,10))}else v=v.toString()}}else if(!L.isString(v)&&!L.isNumber(v)){v="~-"+saved.length+"-~";saved[saved.length]=token};s=s.substring(0,i)+v+s.substring(j+1)};for(i=saved.length-1;i>=0;i=i-1)s=s.replace(new RegExp("~-"+i+"-~"),"{"+saved[i]+"}","g");return s},trim:function(s){try{return s.replace(/^\s+|\s+$/g,"")}catch(e){return s}},merge:function(){var o={},a=arguments;for(var i=0,l=a.length;i<l;i=i+1)L.augmentObject(o,a[i],true);return o},later:function(when,o,fn,data,periodic){when=when||0;o=o||{};var m=fn,d=data,f,r;if(L.isString(fn))m=o[fn];if(!m)throw new TypeError("method undefined");if(!L.isArray(d))d=[data];f=function(){m.apply(o,d)};r=(periodic)?setInterval(f,when):setTimeout(f,when);return{interval:periodic,cancel:function(){if(this.interval){clearInterval(r)}else clearTimeout(r)}}},isValue:function(o){return(L.isObject(o)||L.isString(o)||L.isNumber(o)||L.isBoolean(o))}};L.hasOwnProperty=(Object.prototype.hasOwnProperty)?function(o,prop){return o&&o.hasOwnProperty(prop)}:function(o,prop){return !L.isUndefined(o[prop])&&o.constructor.prototype[prop]!==o[prop]};OB.augmentObject(L,OB,true);YAHOO.util.Lang=L;L.augment=L.augmentProto;YAHOO.augment=L.augmentProto;YAHOO.extend=L.extend})();YAHOO.register("yahoo",YAHOO,{version:"2.5.2",build:"1076"});(function(){var Y=YAHOO.util,getStyle,setStyle,propertyCache={},reClassNameCache={},document=window.document;YAHOO.env._id_counter=YAHOO.env._id_counter||0;var isOpera=YAHOO.env.ua.opera,isSafari=YAHOO.env.ua.webkit,isGecko=YAHOO.env.ua.gecko,isIE=YAHOO.env.ua.ie,patterns={HYPHEN:/(-[a-z])/i,ROOT_TAG:/^body|html$/i,OP_SCROLL:/^(?:inline|table-row)$/i},toCamel=function(property){if(!patterns.HYPHEN.test(property))return property;if(propertyCache[property])return propertyCache[property];var converted=property;while(patterns.HYPHEN.exec(converted))converted=converted.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());propertyCache[property]=converted;return converted},getClassRegEx=function(className){var re=reClassNameCache[className];if(!re){re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)');reClassNameCache[className]=re};return re};if(document.defaultView&&document.defaultView.getComputedStyle){getStyle=function(el,property){var value=null;if(property=='float')property='cssFloat';var computed=el.ownerDocument.defaultView.getComputedStyle(el,'');if(computed)value=computed[toCamel(property)];return el.style[property]||value}}else if(document.documentElement.currentStyle&&isIE){getStyle=function(el,property){switch(toCamel(property)){case'opacity':var val=100;try{val=el.filters['DXImageTransform.Microsoft.Alpha'].opacity}catch(e){try{val=el.filters('alpha').opacity}catch(e){}};return val/100;case'float':property='styleFloat';default:var value=el.currentStyle?el.currentStyle[property]:null;return(el.style[property]||value)}}}else getStyle=function(el,property){return el.style[property]};if(isIE){setStyle=function(el,property,val){switch(property){case'opacity':if(YAHOO.lang.isString(el.style.filter)){el.style.filter='alpha(opacity='+val*100+')';if(!el.currentStyle||!el.currentStyle.hasLayout)el.style.zoom=1};break;case'float':property='styleFloat';default:el.style[property]=val}}}else setStyle=function(el,property,val){if(property=='float')property='cssFloat';el.style[property]=val};var testElement=function(node,method){return node&&node.nodeType==1&&(!method||method(node))};YAHOO.util.Dom={get:function(el){if(el&&(el.nodeType||el.item))return el;if(YAHOO.lang.isString(el)||!el)return document.getElementById(el);if(el.length!==undefined){var c=[];for(var i=0,len=el.length;i<len;++i)c[c.length]=Y.Dom.get(el[i]);return c};return el},getStyle:function(el,property){property=toCamel(property);var f=function(element){return getStyle(element,property)};return Y.Dom.batch(el,f,Y.Dom,true)},setStyle:function(el,property,val){property=toCamel(property);var f=function(element){setStyle(element,property,val)};Y.Dom.batch(el,f,Y.Dom,true)},getXY:function(el){var f=function(el){if((el.parentNode===null||el.offsetParent===null||this.getStyle(el,'display')=='none')&&el!=el.ownerDocument.body)return false;return getXY(el)};return Y.Dom.batch(el,f,Y.Dom,true)},getX:function(el){var f=function(el){return Y.Dom.getXY(el)[0]};return Y.Dom.batch(el,f,Y.Dom,true)},getY:function(el){var f=function(el){return Y.Dom.getXY(el)[1]};return Y.Dom.batch(el,f,Y.Dom,true)},setXY:function(el,pos,noRetry){var f=function(el){var style_pos=this.getStyle(el,'position');if(style_pos=='static'){this.setStyle(el,'position','relative');style_pos='relative'};var pageXY=this.getXY(el);if(pageXY===false)return false;var delta=[parseInt(this.getStyle(el,'left'),10),parseInt(this.getStyle(el,'top'),10)];if(isNaN(delta[0]))delta[0]=(style_pos=='relative')?0:el.offsetLeft;if(isNaN(delta[1]))delta[1]=(style_pos=='relative')?0:el.offsetTop;if(pos[0]!==null)el.style.left=pos[0]-pageXY[0]+delta[0]+'px';if(pos[1]!==null)el.style.top=pos[1]-pageXY[1]+delta[1]+'px';if(!noRetry){var newXY=this.getXY(el);if((pos[0]!==null&&newXY[0]!=pos[0])||(pos[1]!==null&&newXY[1]!=pos[1]))this.setXY(el,pos,true)}};Y.Dom.batch(el,f,Y.Dom,true)},setX:function(el,x){Y.Dom.setXY(el,[x,null])},setY:function(el,y){Y.Dom.setXY(el,[null,y])},getRegion:function(el){var f=function(el){if((el.parentNode===null||el.offsetParent===null||this.getStyle(el,'display')=='none')&&el!=el.ownerDocument.body)return false;var region=Y.Region.getRegion(el);return region};return Y.Dom.batch(el,f,Y.Dom,true)},getClientWidth:function(){return Y.Dom.getViewportWidth()},getClientHeight:function(){return Y.Dom.getViewportHeight()},getElementsByClassName:function(className,tag,root,apply){tag=tag||'*';root=(root)?Y.Dom.get(root):null||document;if(!root)return[];var nodes=[],elements=root.getElementsByTagName(tag),re=getClassRegEx(className);for(var i=0,len=elements.length;i<len;++i)if(re.test(elements[i].className)){nodes[nodes.length]=elements[i];if(apply)apply.call(elements[i],elements[i])};return nodes},hasClass:function(el,className){var re=getClassRegEx(className),f=function(el){return re.test(el.className)};return Y.Dom.batch(el,f,Y.Dom,true)},addClass:function(el,className){var f=function(el){if(this.hasClass(el,className))return false;el.className=YAHOO.lang.trim([el.className,className].join(' '));return true};return Y.Dom.batch(el,f,Y.Dom,true)},removeClass:function(el,className){var re=getClassRegEx(className),f=function(el){if(!className||!this.hasClass(el,className))return false;var c=el.className;el.className=c.replace(re,' ');if(this.hasClass(el,className))this.removeClass(el,className);el.className=YAHOO.lang.trim(el.className);return true};return Y.Dom.batch(el,f,Y.Dom,true)},replaceClass:function(el,oldClassName,newClassName){if(!newClassName||oldClassName===newClassName)return false;var re=getClassRegEx(oldClassName),f=function(el){if(!this.hasClass(el,oldClassName)){this.addClass(el,newClassName);return true};el.className=el.className.replace(re,' '+newClassName+' ');if(this.hasClass(el,oldClassName))this.replaceClass(el,oldClassName,newClassName);el.className=YAHOO.lang.trim(el.className);return true};return Y.Dom.batch(el,f,Y.Dom,true)},generateId:function(el,prefix){prefix=prefix||'yui-gen';var f=function(el){if(el&&el.id)return el.id;var id=prefix+ YAHOO.env._id_counter++;if(el)el.id=id;return id};return Y.Dom.batch(el,f,Y.Dom,true)||f.apply(Y.Dom,arguments)},isAncestor:function(haystack,needle){haystack=Y.Dom.get(haystack);needle=Y.Dom.get(needle);if(!haystack||!needle)return false;if(haystack.contains&&needle.nodeType&&!isSafari){return haystack.contains(needle)}else if(haystack.compareDocumentPosition&&needle.nodeType){return !!(haystack.compareDocumentPosition(needle)&16)}else if(needle.nodeType)return !!this.getAncestorBy(needle,function(el){return el==haystack});return false},inDocument:function(el){return this.isAncestor(document.documentElement,el)},getElementsBy:function(method,tag,root,apply){tag=tag||'*';root=(root)?Y.Dom.get(root):null||document;if(!root)return[];var nodes=[],elements=root.getElementsByTagName(tag);for(var i=0,len=elements.length;i<len;++i)if(method(elements[i])){nodes[nodes.length]=elements[i];if(apply)apply(elements[i])};return nodes},batch:function(el,method,o,override){el=(el&&(el.tagName||el.item))?el:Y.Dom.get(el);if(!el||!method)return false;var scope=(override)?o:window;if(el.tagName||el.length===undefined)return method.call(scope,el,o);var collection=[];for(var i=0,len=el.length;i<len;++i)collection[collection.length]=method.call(scope,el[i],o);return collection},getDocumentHeight:function(){var scrollHeight=(document.compatMode!='CSS1Compat')?document.body.scrollHeight:document.documentElement.scrollHeight,h=Math.max(scrollHeight,Y.Dom.getViewportHeight());return h},getDocumentWidth:function(){var scrollWidth=(document.compatMode!='CSS1Compat')?document.body.scrollWidth:document.documentElement.scrollWidth,w=Math.max(scrollWidth,Y.Dom.getViewportWidth());return w},getViewportHeight:function(){var height=self.innerHeight,mode=document.compatMode;if((mode||isIE)&&!isOpera)height=(mode=='CSS1Compat')?document.documentElement.clientHeight:document.body.clientHeight;return height},getViewportWidth:function(){var width=self.innerWidth,mode=document.compatMode;if(mode||isIE)width=(mode=='CSS1Compat')?document.documentElement.clientWidth:document.body.clientWidth;return width},getAncestorBy:function(node,method){while(node=node.parentNode)if(testElement(node,method))return node;return null},getAncestorByClassName:function(node,className){node=Y.Dom.get(node);if(!node)return null;var method=function(el){return Y.Dom.hasClass(el,className)};return Y.Dom.getAncestorBy(node,method)},getAncestorByTagName:function(node,tagName){node=Y.Dom.get(node);if(!node)return null;var method=function(el){return el.tagName&&el.tagName.toUpperCase()==tagName.toUpperCase()};return Y.Dom.getAncestorBy(node,method)},getPreviousSiblingBy:function(node,method){while(node){node=node.previousSibling;if(testElement(node,method))return node};return null},getPreviousSibling:function(node){node=Y.Dom.get(node);if(!node)return null;return Y.Dom.getPreviousSiblingBy(node)},getNextSiblingBy:function(node,method){while(node){node=node.nextSibling;if(testElement(node,method))return node};return null},getNextSibling:function(node){node=Y.Dom.get(node);if(!node)return null;return Y.Dom.getNextSiblingBy(node)},getFirstChildBy:function(node,method){var child=(testElement(node.firstChild,method))?node.firstChild:null;return child||Y.Dom.getNextSiblingBy(node.firstChild,method)},getFirstChild:function(node,method){node=Y.Dom.get(node);if(!node)return null;return Y.Dom.getFirstChildBy(node)},getLastChildBy:function(node,method){if(!node)return null;var child=(testElement(node.lastChild,method))?node.lastChild:null;return child||Y.Dom.getPreviousSiblingBy(node.lastChild,method)},getLastChild:function(node){node=Y.Dom.get(node);return Y.Dom.getLastChildBy(node)},getChildrenBy:function(node,method){var child=Y.Dom.getFirstChildBy(node,method),children=child?[child]:[];Y.Dom.getNextSiblingBy(child,function(node){if(!method||method(node))children[children.length]=node;return false});return children},getChildren:function(node){node=Y.Dom.get(node);if(!node);return Y.Dom.getChildrenBy(node)},getDocumentScrollLeft:function(doc){doc=doc||document;return Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft)},getDocumentScrollTop:function(doc){doc=doc||document;return Math.max(doc.documentElement.scrollTop,doc.body.scrollTop)},insertBefore:function(newNode,referenceNode){newNode=Y.Dom.get(newNode);referenceNode=Y.Dom.get(referenceNode);if(!newNode||!referenceNode||!referenceNode.parentNode)return null;return referenceNode.parentNode.insertBefore(newNode,referenceNode)},insertAfter:function(newNode,referenceNode){newNode=Y.Dom.get(newNode);referenceNode=Y.Dom.get(referenceNode);if(!newNode||!referenceNode||!referenceNode.parentNode)return null;if(referenceNode.nextSibling){return referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}else return referenceNode.parentNode.appendChild(newNode)},getClientRegion:function(){var t=Y.Dom.getDocumentScrollTop(),l=Y.Dom.getDocumentScrollLeft(),r=Y.Dom.getViewportWidth()+l,b=Y.Dom.getViewportHeight()+t;return new Y.Region(t,r,b,l)}};var getXY=function(){if(document.documentElement.getBoundingClientRect){return function(el){var box=el.getBoundingClientRect(),rootNode=el.ownerDocument;return[box.left+Y.Dom.getDocumentScrollLeft(rootNode),box.top+Y.Dom.getDocumentScrollTop(rootNode)]}}else return function(el){var pos=[el.offsetLeft,el.offsetTop],parentNode=el.offsetParent,accountForBody=(isSafari&&Y.Dom.getStyle(el,'position')=='absolute'&&el.offsetParent==el.ownerDocument.body);if(parentNode!=el)while(parentNode){pos[0]+=parentNode.offsetLeft;pos[1]+=parentNode.offsetTop;if(!accountForBody&&isSafari&&Y.Dom.getStyle(parentNode,'position')=='absolute')accountForBody=true;parentNode=parentNode.offsetParent};if(accountForBody){pos[0]-=el.ownerDocument.body.offsetLeft;pos[1]-=el.ownerDocument.body.offsetTop};parentNode=el.parentNode;while(parentNode.tagName&&!patterns.ROOT_TAG.test(parentNode.tagName)){if(parentNode.scrollTop||parentNode.scrollLeft)if(!patterns.OP_SCROLL.test(Y.Dom.getStyle(parentNode,'display')))if(!isOpera||Y.Dom.getStyle(parentNode,'overflow')!=='visible'){pos[0]-=parentNode.scrollLeft;pos[1]-=parentNode.scrollTop};parentNode=parentNode.parentNode};return pos}}()})();YAHOO.util.Region=function(t,r,b,l){this.top=t;this[1]=t;this.right=r;this.bottom=b;this.left=l;this[0]=l};YAHOO.util.Region.prototype.contains=function(region){return(region.left>=this.left&&region.right<=this.right&&region.top>=this.top&&region.bottom<=this.bottom)};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left))};YAHOO.util.Region.prototype.intersect=function(region){var t=Math.max(this.top,region.top),r=Math.min(this.right,region.right),b=Math.min(this.bottom,region.bottom),l=Math.max(this.left,region.left);if(b>=t&&r>=l){return new YAHOO.util.Region(t,r,b,l)}else return null};YAHOO.util.Region.prototype.union=function(region){var t=Math.min(this.top,region.top),r=Math.max(this.right,region.right),b=Math.max(this.bottom,region.bottom),l=Math.min(this.left,region.left);return new YAHOO.util.Region(t,r,b,l)};YAHOO.util.Region.prototype.toString=function(){return("Region {top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+"}")};YAHOO.util.Region.getRegion=function(el){var p=YAHOO.util.Dom.getXY(el),t=p[1],r=p[0]+el.offsetWidth,b=p[1]+el.offsetHeight,l=p[0];return new YAHOO.util.Region(t,r,b,l)};YAHOO.util.Point=function(x,y){if(YAHOO.lang.isArray(x)){y=x[1];x=x[0]};this.x=this.right=this.left=this[0]=x;this.y=this.top=this.bottom=this[1]=y};YAHOO.util.Point.prototype=new YAHOO.util.Region();YAHOO.register("dom",YAHOO.util.Dom,{version:"2.5.2",build:"1076"});YAHOO.util.CustomEvent=function(type,oScope,silent,signature){this.type=type;this.scope=oScope||window;this.silent=silent;this.signature=signature||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent);var onsubscribeType="_YUICEOnSubscribe";if(type!==onsubscribeType)this.subscribeEvent=new YAHOO.util.CustomEvent(onsubscribeType,this,true);this.lastError=null};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(fn,obj,override){if(!fn)throw new Error("Invalid callback for subscriber to '"+this.type+"'");if(this.subscribeEvent)this.subscribeEvent.fire(fn,obj,override);this.subscribers.push(new YAHOO.util.Subscriber(fn,obj,override))},unsubscribe:function(fn,obj){if(!fn)return this.unsubscribeAll();var found=false;for(var i=0,len=this.subscribers.length;i<len;++i){var s=this.subscribers[i];if(s&&s.contains(fn,obj)){this._delete(i);found=true}};return found},fire:function(){this.lastError=null;var errors=[],len=this.subscribers.length;if(!len&&this.silent)return true;var args=[].slice.call(arguments,0),ret=true,i,rebuild=false;if(!this.silent);var subs=this.subscribers.slice(),throwErrors=YAHOO.util.Event.throwErrors;for(i=0;i<len;++i){var s=subs[i];if(!s){rebuild=true}else{if(!this.silent);var scope=s.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT){var param=null;if(args.length>0)param=args[0];try{ret=s.fn.call(scope,param,s.obj)}catch(e){this.lastError=e;if(throwErrors)throw e}}else try{ret=s.fn.call(scope,this.type,args,s.obj)}catch(ex){this.lastError=ex;if(throwErrors)throw ex};if(false===ret){if(!this.silent);break}}};return(ret!==false)},unsubscribeAll:function(){for(var i=this.subscribers.length-1;i>-1;i--)this._delete(i);this.subscribers=[];return i},_delete:function(index){var s=this.subscribers[index];if(s){delete s.fn;delete s.obj};this.subscribers.splice(index,1)},toString:function(){return"CustomEvent: '"+this.type+"', scope: "+this.scope}};YAHOO.util.Subscriber=function(fn,obj,override){this.fn=fn;this.obj=YAHOO.lang.isUndefined(obj)?null:obj;this.override=override};YAHOO.util.Subscriber.prototype.getScope=function(defaultScope){if(this.override)if(this.override===true){return this.obj}else return this.override;return defaultScope};YAHOO.util.Subscriber.prototype.contains=function(fn,obj){if(obj){return(this.fn==fn&&this.obj==obj)}else return(this.fn==fn)};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+", override: "+(this.override||"no")+" }"};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var loadComplete=false,listeners=[],unloadListeners=[],legacyEvents=[],legacyHandlers=[],retryCount=0,onAvailStack=[],legacyMap=[],counter=0,webkitKeymap={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9};return{POLL_RETRYS:2000,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:YAHOO.env.ua.ie,_interval:null,_dri:null,DOMReady:false,throwErrors:false,startInterval:function(){if(!this._interval){var self=this,callback=function(){self._tryPreloadAttach()};this._interval=setInterval(callback,this.POLL_INTERVAL)}},onAvailable:function(p_id,p_fn,p_obj,p_override,checkContent){var a=(YAHOO.lang.isString(p_id))?[p_id]:p_id;for(var i=0;i<a.length;i=i+1)onAvailStack.push({id:a[i],fn:p_fn,obj:p_obj,override:p_override,checkReady:checkContent});retryCount=this.POLL_RETRYS;this.startInterval()},onContentReady:function(p_id,p_fn,p_obj,p_override){this.onAvailable(p_id,p_fn,p_obj,p_override,true)},onDOMReady:function(p_fn,p_obj,p_override){if(this.DOMReady){setTimeout(function(){var s=window;if(p_override)if(p_override===true){s=p_obj}else s=p_override;p_fn.call(s,"DOMReady",[],p_obj)},0)}else this.DOMReadyEvent.subscribe(p_fn,p_obj,p_override)},addListener:function(el,sType,fn,obj,override){if(!fn||!fn.call)return false;if(this._isValidCollection(el)){var ok=true;for(var i=0,len=el.length;i<len;++i)ok=this.on(el[i],sType,fn,obj,override)&&ok;return ok}else if(YAHOO.lang.isString(el)){var oEl=this.getEl(el);if(oEl){el=oEl}else{this.onAvailable(el,function(){YAHOO.util.Event.on(el,sType,fn,obj,override)});return true}};if(!el)return false;if("unload"==sType&&obj!==this){unloadListeners[unloadListeners.length]=[el,sType,fn,obj,override];return true};var scope=el;if(override)if(override===true){scope=obj}else scope=override;var wrappedFn=function(e){return fn.call(scope,YAHOO.util.Event.getEvent(e,el),obj)},li=[el,sType,fn,wrappedFn,scope,obj,override],index=listeners.length;listeners[index]=li;if(this.useLegacyEvent(el,sType)){var legacyIndex=this.getLegacyIndex(el,sType);if(legacyIndex==-1||el!=legacyEvents[legacyIndex][0]){legacyIndex=legacyEvents.length;legacyMap[el.id+sType]=legacyIndex;legacyEvents[legacyIndex]=[el,sType,el["on"+sType]];legacyHandlers[legacyIndex]=[];el["on"+sType]=function(e){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(e),legacyIndex)}};legacyHandlers[legacyIndex].push(li)}else try{this._simpleAdd(el,sType,wrappedFn,false)}catch(ex){this.lastError=ex;this.removeListener(el,sType,fn);return false};return true},fireLegacyEvent:function(e,legacyIndex){var ok=true,le,lh,li,scope,ret;lh=legacyHandlers[legacyIndex].slice();for(var i=0,len=lh.length;i<len;++i){li=lh[i];if(li&&li[this.WFN]){scope=li[this.ADJ_SCOPE];ret=li[this.WFN].call(scope,e);ok=(ok&&ret)}};le=legacyEvents[legacyIndex];if(le&&le[2])le[2](e);return ok},getLegacyIndex:function(el,sType){var key=this.generateId(el)+sType;if(typeof legacyMap[key]=="undefined"){return -1}else return legacyMap[key]},useLegacyEvent:function(el,sType){if(this.webkit&&("click"==sType||"dblclick"==sType)){var v=parseInt(this.webkit,10);if(!isNaN(v)&&v<418)return true};return false},removeListener:function(el,sType,fn){var i,len,li;if(typeof el=="string"){el=this.getEl(el)}else if(this._isValidCollection(el)){var ok=true;for(i=el.length-1;i>-1;i--)ok=(this.removeListener(el[i],sType,fn)&&ok);return ok};if(!fn||!fn.call)return this.purgeElement(el,false,sType);if("unload"==sType){for(i=unloadListeners.length-1;i>-1;i--){li=unloadListeners[i];if(li&&li[0]==el&&li[1]==sType&&li[2]==fn){unloadListeners.splice(i,1);return true}};return false};var cacheItem=null,index=arguments[3];if("undefined"===typeof index)index=this._getCacheIndex(el,sType,fn);if(index>=0)cacheItem=listeners[index];if(!el||!cacheItem)return false;if(this.useLegacyEvent(el,sType)){var legacyIndex=this.getLegacyIndex(el,sType),llist=legacyHandlers[legacyIndex];if(llist)for(i=0,len=llist.length;i<len;++i){li=llist[i];if(li&&li[this.EL]==el&&li[this.TYPE]==sType&&li[this.FN]==fn){llist.splice(i,1);break}}}else try{this._simpleRemove(el,sType,cacheItem[this.WFN],false)}catch(ex){this.lastError=ex;return false};delete listeners[index][this.WFN];delete listeners[index][this.FN];listeners.splice(index,1);return true},getTarget:function(ev,resolveTextNode){var t=ev.target||ev.srcElement;return this.resolveTextNode(t)},resolveTextNode:function(n){try{if(n&&3==n.nodeType)return n.parentNode}catch(e){};return n},getPageX:function(ev){var x=ev.pageX;if(!x&&0!==x){x=ev.clientX||0;if(this.isIE)x+=this._getScrollLeft()};return x},getPageY:function(ev){var y=ev.pageY;if(!y&&0!==y){y=ev.clientY||0;if(this.isIE)y+=this._getScrollTop()};return y},getXY:function(ev){return[this.getPageX(ev),this.getPageY(ev)]},getRelatedTarget:function(ev){var t=ev.relatedTarget;if(!t)if(ev.type=="mouseout"){t=ev.toElement}else if(ev.type=="mouseover")t=ev.fromElement;return this.resolveTextNode(t)},getTime:function(ev){if(!ev.time){var t=new Date().getTime();try{ev.time=t}catch(ex){this.lastError=ex;return t}};return ev.time},stopEvent:function(ev){this.stopPropagation(ev);this.preventDefault(ev)},stopPropagation:function(ev){if(ev.stopPropagation){ev.stopPropagation()}else ev.cancelBubble=true},preventDefault:function(ev){if(ev.preventDefault){ev.preventDefault()}else ev.returnValue=false},getEvent:function(e,boundEl){var ev=e||window.event;if(!ev){var c=this.getEvent.caller;while(c){ev=c.arguments[0];if(ev&&Event==ev.constructor)break;c=c.caller}};return ev},getCharCode:function(ev){var code=ev.keyCode||ev.charCode||0;if(YAHOO.env.ua.webkit&&(code in webkitKeymap))code=webkitKeymap[code];return code},_getCacheIndex:function(el,sType,fn){for(var i=0,l=listeners.length;i<l;i=i+1){var li=listeners[i];if(li&&li[this.FN]==fn&&li[this.EL]==el&&li[this.TYPE]==sType)return i};return -1},generateId:function(el){var id=el.id;if(!id){id="yuievtautoid-"+counter;++counter;el.id=id};return id},_isValidCollection:function(o){try{return(o&&typeof o!=="string"&&o.length&&!o.tagName&&!o.alert&&typeof o[0]!=="undefined")}catch(ex){return false}},elCache:{},getEl:function(id){return(typeof id==="string")?document.getElementById(id):id},clearCache:function(){},DOMReadyEvent:new YAHOO.util.CustomEvent("DOMReady",this),_load:function(e){if(!loadComplete){loadComplete=true;var EU=YAHOO.util.Event;EU._ready();EU._tryPreloadAttach()}},_ready:function(e){var EU=YAHOO.util.Event;if(!EU.DOMReady){EU.DOMReady=true;EU.DOMReadyEvent.fire();EU._simpleRemove(document,"DOMContentLoaded",EU._ready)}},_tryPreloadAttach:function(){if(onAvailStack.length===0){retryCount=0;clearInterval(this._interval);this._interval=null;return};if(this.locked)return;if(this.isIE)if(!this.DOMReady){this.startInterval();return};this.locked=true;var tryAgain=!loadComplete;if(!tryAgain)tryAgain=(retryCount>0&&onAvailStack.length>0);var notAvail=[],executeItem=function(el,item){var scope=el;if(item.override)if(item.override===true){scope=item.obj}else scope=item.override;item.fn.call(scope,item.obj)},i,len,item,el,ready=[];for(i=0,len=onAvailStack.length;i<len;i=i+1){item=onAvailStack[i];if(item){el=this.getEl(item.id);if(el){if(item.checkReady){if(loadComplete||el.nextSibling||!tryAgain){ready.push(item);onAvailStack[i]=null}}else{executeItem(el,item);onAvailStack[i]=null}}else notAvail.push(item)}};for(i=0,len=ready.length;i<len;i=i+1){item=ready[i];executeItem(this.getEl(item.id),item)};retryCount--;if(tryAgain){for(i=onAvailStack.length-1;i>-1;i--){item=onAvailStack[i];if(!item||!item.id)onAvailStack.splice(i,1)};this.startInterval()}else{clearInterval(this._interval);this._interval=null};this.locked=false},purgeElement:function(el,recurse,sType){var oEl=(YAHOO.lang.isString(el))?this.getEl(el):el,elListeners=this.getListeners(oEl,sType),i,len;if(elListeners)for(i=elListeners.length-1;i>-1;i--){var l=elListeners[i];this.removeListener(oEl,l.type,l.fn)};if(recurse&&oEl&&oEl.childNodes)for(i=0,len=oEl.childNodes.length;i<len;++i)this.purgeElement(oEl.childNodes[i],recurse,sType)},getListeners:function(el,sType){var results=[],searchLists;if(!sType){searchLists=[listeners,unloadListeners]}else if(sType==="unload"){searchLists=[unloadListeners]}else searchLists=[listeners];var oEl=(YAHOO.lang.isString(el))?this.getEl(el):el;for(var j=0;j<searchLists.length;j=j+1){var searchList=searchLists[j];if(searchList)for(var i=0,len=searchList.length;i<len;++i){var l=searchList[i];if(l&&l[this.EL]===oEl&&(!sType||sType===l[this.TYPE]))results.push({type:l[this.TYPE],fn:l[this.FN],obj:l[this.OBJ],adjust:l[this.OVERRIDE],scope:l[this.ADJ_SCOPE],index:i})}};return(results.length)?results:null},_unload:function(e){var EU=YAHOO.util.Event,i,j,l,len,index,ul=unloadListeners.slice();for(i=0,len=unloadListeners.length;i<len;++i){l=ul[i];if(l){var scope=window;if(l[EU.ADJ_SCOPE])if(l[EU.ADJ_SCOPE]===true){scope=l[EU.UNLOAD_OBJ]}else scope=l[EU.ADJ_SCOPE];l[EU.FN].call(scope,EU.getEvent(e,l[EU.EL]),l[EU.UNLOAD_OBJ]);ul[i]=null;l=null;scope=null}};unloadListeners=null;if(listeners){for(j=listeners.length-1;j>-1;j--){l=listeners[j];if(l)EU.removeListener(l[EU.EL],l[EU.TYPE],l[EU.FN],j)};l=null};legacyEvents=null;EU._simpleRemove(window,"unload",EU._unload)},_getScrollLeft:function(){return this._getScroll()[1]},_getScrollTop:function(){return this._getScroll()[0]},_getScroll:function(){var dd=document.documentElement,db=document.body;if(dd&&(dd.scrollTop||dd.scrollLeft)){return[dd.scrollTop,dd.scrollLeft]}else if(db){return[db.scrollTop,db.scrollLeft]}else return[0,0]},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(el,sType,fn,capture){el.addEventListener(sType,fn,(capture))}}else if(window.attachEvent){return function(el,sType,fn,capture){el.attachEvent("on"+sType,fn)}}else return function(){}}(),_simpleRemove:function(){if(window.removeEventListener){return function(el,sType,fn,capture){el.removeEventListener(sType,fn,(capture))}}else if(window.detachEvent){return function(el,sType,fn){el.detachEvent("on"+sType,fn)}}else return function(){}}()}}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;if(EU.isIE){YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var n=document.createElement('p');EU._dri=setInterval(function(){try{n.doScroll('left');clearInterval(EU._dri);EU._dri=null;EU._ready();n=null}catch(ex){}},EU.POLL_INTERVAL)}else if(EU.webkit&&EU.webkit<525){EU._dri=setInterval(function(){var rs=document.readyState;if("loaded"==rs||"complete"==rs){clearInterval(EU._dri);EU._dri=null;EU._ready()}},EU.POLL_INTERVAL)}else EU._simpleAdd(document,"DOMContentLoaded",EU._ready);EU._simpleAdd(window,"load",EU._load);EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach()})()};YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(p_type,p_fn,p_obj,p_override){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[p_type];if(ce){ce.subscribe(p_fn,p_obj,p_override)}else{this.__yui_subscribers=this.__yui_subscribers||{};var subs=this.__yui_subscribers;if(!subs[p_type])subs[p_type]=[];subs[p_type].push({fn:p_fn,obj:p_obj,override:p_override})}},unsubscribe:function(p_type,p_fn,p_obj){this.__yui_events=this.__yui_events||{};var evts=this.__yui_events;if(p_type){var ce=evts[p_type];if(ce)return ce.unsubscribe(p_fn,p_obj)}else{var ret=true;for(var i in evts)if(YAHOO.lang.hasOwnProperty(evts,i))ret=ret&&evts[i].unsubscribe(p_fn,p_obj);return ret};return false},unsubscribeAll:function(p_type){return this.unsubscribe(p_type)},createEvent:function(p_type,p_config){this.__yui_events=this.__yui_events||{};var opts=p_config||{},events=this.__yui_events;if(events[p_type]);else{var scope=opts.scope||this,silent=(opts.silent),ce=new YAHOO.util.CustomEvent(p_type,scope,silent,YAHOO.util.CustomEvent.FLAT);events[p_type]=ce;if(opts.onSubscribeCallback)ce.subscribeEvent.subscribe(opts.onSubscribeCallback);this.__yui_subscribers=this.__yui_subscribers||{};var qs=this.__yui_subscribers[p_type];if(qs)for(var i=0;i<qs.length;++i)ce.subscribe(qs[i].fn,qs[i].obj,qs[i].override)};return events[p_type]},fireEvent:function(p_type,arg1,arg2,etc){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[p_type];if(!ce)return null;var args=[];for(var i=1;i<arguments.length;++i)args.push(arguments[i]);return ce.fire.apply(ce,args)},hasEvent:function(type){if(this.__yui_events)if(this.__yui_events[type])return true;return false}};YAHOO.util.KeyListener=function(attachTo,keyData,handler,event){if(!attachTo);else if(!keyData);else if(!handler);if(!event)event=YAHOO.util.KeyListener.KEYDOWN;var keyEvent=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(typeof attachTo=='string')attachTo=document.getElementById(attachTo);if(typeof handler=='function'){keyEvent.subscribe(handler)}else keyEvent.subscribe(handler.fn,handler.scope,handler.correctScope)
function handleKeyPress(e,obj){if(!keyData.shift)keyData.shift=false;if(!keyData.alt)keyData.alt=false;if(!keyData.ctrl)keyData.ctrl=false;if(e.shiftKey==keyData.shift&&e.altKey==keyData.alt&&e.ctrlKey==keyData.ctrl){var dataItem;if(keyData.keys instanceof Array){for(var i=0;i<keyData.keys.length;i++){dataItem=keyData.keys[i];if(dataItem==e.charCode){keyEvent.fire(e.charCode,e);break}else if(dataItem==e.keyCode){keyEvent.fire(e.keyCode,e);break}}}else{dataItem=keyData.keys;if(dataItem==e.charCode){keyEvent.fire(e.charCode,e)}else if(dataItem==e.keyCode)keyEvent.fire(e.keyCode,e)}}};this.enable=function(){if(!this.enabled){YAHOO.util.Event.addListener(attachTo,event,handleKeyPress);this.enabledEvent.fire(keyData)};this.enabled=true};this.disable=function(){if(this.enabled){YAHOO.util.Event.removeListener(attachTo,event,handleKeyPress);this.disabledEvent.fire(keyData)};this.enabled=false};this.toString=function(){return"KeyListener ["+keyData.keys+"] "+attachTo.tagName+(attachTo.id?"["+attachTo.id+"]":"")}};YAHOO.util.KeyListener.KEYDOWN="keydown";YAHOO.util.KeyListener.KEYUP="keyup";YAHOO.util.KeyListener.KEY={ALT:18,BACK_SPACE:8,CAPS_LOCK:20,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,META:224,NUM_LOCK:144,PAGE_DOWN:34,PAGE_UP:33,PAUSE:19,PRINTSCREEN:44,RIGHT:39,SCROLL_LOCK:145,SHIFT:16,SPACE:32,TAB:9,UP:38};YAHOO.register("event",YAHOO.util.Event,{version:"2.5.2",build:"1076"});YAHOO.namespace('lang');YAHOO.lang.JSON={_ESCAPES:/\\["\\\/bfnrtu]/g,_VALUES:/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,_BRACKETS:/(?:^|:|,)(?:\s*\[)+/g,_INVALID:/^[\],:{}\s]*$/,_SPECIAL_CHARS:/["\\\x00-\x1f\x7f-\x9f]/g,_PARSE_DATE:/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/,_CHARS:{'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},_applyFilter:function(data,filter){var walk=function(k,v){var i,n;if(v&&typeof v==='object')for(i in v)if(YAHOO.lang.hasOwnProperty(v,i)){n=walk(i,v[i]);if(n===undefined){delete v[i]}else v[i]=n};return filter(k,v)};if(YAHOO.lang.isFunction(filter))walk('',data);return data},isValid:function(str){if(!YAHOO.lang.isString(str))return false;return this._INVALID.test(str.replace(this._ESCAPES,'@').replace(this._VALUES,']').replace(this._BRACKETS,''))},dateToString:function(d){function _zeroPad(v){return v<10?'0'+v:v};return'"'+d.getUTCFullYear()+'-'+_zeroPad(d.getUTCMonth()+1)+'-'+_zeroPad(d.getUTCDate())+'T'+_zeroPad(d.getUTCHours())+':'+_zeroPad(d.getUTCMinutes())+':'+_zeroPad(d.getUTCSeconds())+'Z"'},stringToDate:function(str){if(this._PARSE_DATE.test(str)){var d=new Date();d.setUTCFullYear(RegExp.$1,(RegExp.$2|0)-1,RegExp.$3);d.setUTCHours(RegExp.$4,RegExp.$5,RegExp.$6);return d}},parse:function(s,filter){if(this.isValid(s))return this._applyFilter(eval('('+s+')'),filter);throw new SyntaxError('parseJSON')},stringify:function(o,w,d){var l=YAHOO.lang,J=l.JSON,m=J._CHARS,str_re=this._SPECIAL_CHARS,pstack=[],_char=function(c){if(!m[c]){var a=c.charCodeAt();m[c]='\\u00'+Math.floor(a/16).toString(16)+(a%16).toString(16)};return m[c]},_string=function(s){return'"'+s.replace(str_re,_char)+'"'},_date=J.dateToString,_stringify=function(o,w,d){var t=typeof o,i,len,j,k,v,vt,a;if(t==='string')return _string(o);if(t==='boolean'||o instanceof Boolean)return String(o);if(t==='number'||o instanceof Number)return isFinite(o)?String(o):'null';if(o instanceof Date)return _date(o);if(l.isArray(o)){for(i=pstack.length-1;i>=0;--i)if(pstack[i]===o)return'null';pstack[pstack.length]=o;a=[];if(d>0)for(i=o.length-1;i>=0;--i)a[i]=_stringify(o[i],w,d-1)||'null';pstack.pop();return'['+a.join(',')+']'};if(t==='object'){if(!o)return'null';for(i=pstack.length-1;i>=0;--i)if(pstack[i]===o)return'null';pstack[pstack.length]=o;a=[];if(d>0)if(w){for(i=0,j=0,len=w.length;i<len;++i)if(typeof w[i]==='string'){v=_stringify(o[w[i]],w,d-1);if(v)a[j++]=_string(w[i])+':'+v}}else{j=0;for(k in o)if(typeof k==='string'&&l.hasOwnProperty(o,k)){v=_stringify(o[k],w,d-1);if(v)a[j++]=_string(k)+':'+v}};pstack.pop();return'{'+a.join(',')+'}'};return undefined};d=d>=0?d:1/0;return _stringify(o,w,d)}};YAHOO.register("json",YAHOO.lang.JSON,{version:"2.5.2",build:"1076"});(function($){$.fn.extend({autocomplete:function(urlOrData,options){var isUrl=typeof urlOrData=="string";options=$.extend({},$.Autocompleter.defaults,{url:isUrl?urlOrData:null,data:isUrl?null:urlOrData,delay:isUrl?$.Autocompleter.defaults.delay:10,max:options&&!options.scroll?10:150},options);options.highlight=options.highlight||function(value){return value};options.formatMatch=options.formatMatch||options.formatItem;return this.each(function(){new $.Autocompleter(this,options)})},result:function(handler){return this.bind("result",handler)},search:function(handler){return this.trigger("search",[handler])},flushCache:function(){return this.trigger("flushCache")},setOptions:function(options){return this.trigger("setOptions",[options])},unautocomplete:function(){return this.trigger("unautocomplete")}});$.Autocompleter=function(input,options){var KEY={UP:38,DOWN:40,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188,PAGEUP:33,PAGEDOWN:34,BACKSPACE:8},$input=$(input).attr("autocomplete","off").addClass(options.inputClass),timeout,previousValue="",cache=$.Autocompleter.Cache(options),hasFocus=0,lastKeyPressCode,config={mouseDownOnSelect:false},select=$.Autocompleter.Select(options,input,selectCurrent,config),blockSubmit;$.browser.opera&&$(input.form).bind("submit.autocomplete",function(){if(blockSubmit){blockSubmit=false;return false}});$input.bind("keypress.autocomplete",function(event){lastKeyPressCode=event.keyCode;switch(event.keyCode){case KEY.UP:event.preventDefault();if(select.visible()){select.prev()}else onChange(0,true);break;case KEY.DOWN:event.preventDefault();if(select.visible()){select.next()}else onChange(0,true);break;case KEY.PAGEUP:event.preventDefault();if(select.visible()){select.pageUp()}else onChange(0,true);break;case KEY.PAGEDOWN:event.preventDefault();if(select.visible()){select.pageDown()}else onChange(0,true);break;case options.multiple&&$.trim(options.multipleSeparator)==","&&KEY.COMMA:case KEY.TAB:case KEY.RETURN:if(selectCurrent()){event.preventDefault();blockSubmit=true;return false};break;case KEY.ESC:select.hide();break;default:clearTimeout(timeout);timeout=setTimeout(onChange,options.delay);break}}).focus(function(){hasFocus++}).blur(function(){hasFocus=0;if(!config.mouseDownOnSelect)hideResults()}).click(function(){if(hasFocus++>1&&!select.visible())onChange(0,true)}).bind("search",function(){var fn=(arguments.length>1)?arguments[1]:null
function findValueCallback(q,data){var result;if(data&&data.length)for(var i=0;i<data.length;i++)if(data[i].result.toLowerCase()==q.toLowerCase()){result=data[i];break};if(typeof fn=="function"){fn(result)}else $input.trigger("result",result&&[result.data,result.value])};$.each(trimWords($input.val()),function(i,value){request(value,findValueCallback,findValueCallback)})}).bind("flushCache",function(){cache.flush()}).bind("setOptions",function(){$.extend(options,arguments[1]);if("data" in arguments[1])cache.populate()}).bind("unautocomplete",function(){select.unbind();$input.unbind();$(input.form).unbind(".autocomplete")})
function selectCurrent(){var selected=select.selected();if(!selected)return false;var v=selected.result;previousValue=v;if(options.multiple){var words=trimWords($input.val());if(words.length>1)v=words.slice(0,words.length-1).join(options.multipleSeparator)+options.multipleSeparator+v;v+=options.multipleSeparator};$input.val(v);hideResultsNow();$input.trigger("result",[selected.data,selected.value]);return true}
function onChange(crap,skipPrevCheck){if(lastKeyPressCode==KEY.DEL){select.hide();return};var currentValue=$input.val();if(!skipPrevCheck&&currentValue==previousValue)return;previousValue=currentValue;currentValue=lastWord(currentValue);if(currentValue.length>=options.minChars){$input.addClass(options.loadingClass);if(!options.matchCase)currentValue=currentValue.toLowerCase();request(currentValue,receiveData,hideResultsNow)}else{stopLoading();select.hide()}}
function trimWords(value){if(!value)return[""];var words=value.split(options.multipleSeparator),result=[];$.each(words,function(i,value){if($.trim(value))result[i]=$.trim(value)});return result}
function lastWord(value){if(!options.multiple)return value;var words=trimWords(value);return words[words.length-1]}
function autoFill(q,sValue){if(options.autoFill&&(lastWord($input.val()).toLowerCase()==q.toLowerCase())&&lastKeyPressCode!=KEY.BACKSPACE){$input.val($input.val()+sValue.substring(lastWord(previousValue).length));$.Autocompleter.Selection(input,previousValue.length,previousValue.length+sValue.length)}}
function hideResults(){clearTimeout(timeout);timeout=setTimeout(hideResultsNow,200)}
function hideResultsNow(){var wasVisible=select.visible();select.hide();clearTimeout(timeout);stopLoading();if(options.mustMatch)$input.search(function(result){if(!result)if(options.multiple){var words=trimWords($input.val()).slice(0,-1);$input.val(words.join(options.multipleSeparator)+(words.length?options.multipleSeparator:""))}else $input.val("")});if(wasVisible)$.Autocompleter.Selection(input,input.value.length,input.value.length)}
function receiveData(q,data){if(data&&data.length&&hasFocus){stopLoading();select.display(data,q);autoFill(q,data[0].value);select.show()}else hideResultsNow()}
function request(term,success,failure){if(!options.matchCase)term=term.toLowerCase();var data=cache.load(term);if(data&&data.length){success(term,data)}else if((typeof options.url=="string")&&(options.url.length>0)){var extraParams={timestamp:+new Date()};$.each(options.extraParams,function(key,param){extraParams[key]=typeof param=="function"?param():param});$.ajax({mode:"abort",port:"autocomplete"+input.name,dataType:options.dataType,url:options.url,data:$.extend({q:lastWord(term),limit:options.max},extraParams),success:function(data){var parsed=options.parse&&options.parse(data)||parse(data);cache.add(term,parsed);success(term,parsed)}})}else{select.emptyList();failure(term)}}
function parse(data){var parsed=[],rows=data.split("\n");for(var i=0;i<rows.length;i++){var row=$.trim(rows[i]);if(row){row=row.split("|");parsed[parsed.length]={data:row,value:row[0],result:options.formatResult&&options.formatResult(row,row[0])||row[0]}}};return parsed}
function stopLoading(){$input.removeClass(options.loadingClass)}};$.Autocompleter.defaults={inputClass:"ac_input",resultsClass:"ac_results",loadingClass:"ac_loading",minChars:1,delay:400,matchCase:false,matchSubset:true,matchContains:false,cacheLength:10,max:100,mustMatch:false,extraParams:{},selectFirst:true,formatItem:function(row){return row[0]},formatMatch:null,autoFill:false,width:0,multiple:false,multipleSeparator:", ",highlight:function(value,term){return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)("+term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")+")(?![^<>]*>)(?![^&;]+;)","gi"),"<strong>$1</strong>")},scroll:true,scrollHeight:180};$.Autocompleter.Cache=function(options){var data={},length=0
function matchSubset(s,sub){if(!options.matchCase)s=s.toLowerCase();var i=s.indexOf(sub);if(options.matchContains){var regex="\\b"+sub.toLowerCase(),i=s.toLowerCase().search(regex)};if(i==-1)return false;return i==0||options.matchContains}
function add(q,value){if(length>options.cacheLength)flush();if(!data[q])length++;data[q]=value}
function populate(){if(!options.data)return false;var stMatchSets={},nullData=0;if(!options.url)options.cacheLength=1;stMatchSets[""]=[];for(var i=0,ol=options.data.length;i<ol;i++){var rawValue=options.data[i];rawValue=(typeof rawValue=="string")?[rawValue]:rawValue;var value=options.formatMatch(rawValue,i+1,options.data.length);if(value===false)continue;var firstChar=value.charAt(0).toLowerCase();if(!stMatchSets[firstChar])stMatchSets[firstChar]=[];var row={value:value,data:rawValue,result:options.formatResult&&options.formatResult(rawValue)||value};stMatchSets[firstChar].push(row);if(nullData++<options.max)stMatchSets[""].push(row)};$.each(stMatchSets,function(i,value){options.cacheLength++;add(i,value)})};setTimeout(populate,25)
function flush(){data={};length=0};return{flush:flush,add:add,populate:populate,load:function(q){if(!options.cacheLength||!length)return null;if(!options.url&&options.matchContains){var csub=[];for(var k in data)if(k.length>0){var c=data[k];$.each(c,function(i,x){if(matchSubset(x.value,q))csub.push(x)})};return csub}else if(data[q]){return data[q]}else if(options.matchSubset)for(var i=q.length-1;i>=options.minChars;i--){var c=data[q.substr(0,i)];if(c){var csub=[];$.each(c,function(i,x){if(matchSubset(x.value,q))csub[csub.length]=x});return csub}};return null}}};$.Autocompleter.Select=function(options,input,select,config){var CLASSES={ACTIVE:"ac_over"},listItems,active=-1,data,term="",needsInit=true,element,list
function init(){if(!needsInit)return;element=$("<div/>").hide().addClass(options.resultsClass).css("position","absolute").appendTo(document.body);list=$("<ul/>").appendTo(element).mouseover(function(event){if(target(event).nodeName&&target(event).nodeName.toUpperCase()=='LI'){active=$("li",list).removeClass(CLASSES.ACTIVE).index(target(event));$(target(event)).addClass(CLASSES.ACTIVE)}}).click(function(event){$(target(event)).addClass(CLASSES.ACTIVE);select();input.focus();return false}).mousedown(function(){config.mouseDownOnSelect=true}).mouseup(function(){config.mouseDownOnSelect=false});if(options.width>0)element.css("width",options.width);needsInit=false}
function target(event){var element=event.target;while(element&&element.tagName!="LI")element=element.parentNode;if(!element)return[];return element}
function moveSelect(step){listItems.slice(active,active+1).removeClass(CLASSES.ACTIVE);movePosition(step);var activeItem=listItems.slice(active,active+1).addClass(CLASSES.ACTIVE);if(options.scroll){var offset=0;listItems.slice(0,active).each(function(){offset+=this.offsetHeight});if((offset+activeItem[0].offsetHeight-list.scrollTop())>list[0].clientHeight){list.scrollTop(offset+activeItem[0].offsetHeight-list.innerHeight())}else if(offset<list.scrollTop())list.scrollTop(offset)}}
function movePosition(step){active+=step;if(active<0){active=listItems.size()-1}else if(active>=listItems.size())active=0}
function limitNumberOfItems(available){return options.max&&options.max<available?options.max:available}
function fillList(){list.empty();var max=limitNumberOfItems(data.length);for(var i=0;i<max;i++){if(!data[i])continue;var formatted=options.formatItem(data[i].data,i+1,max,data[i].value,term);if(formatted===false)continue;var li=$("<li/>").html(options.highlight(formatted,term)).addClass(i%2==0?"ac_even":"ac_odd").appendTo(list)[0];$.data(li,"ac_data",data[i])};listItems=list.find("li");if(options.selectFirst){listItems.slice(0,1).addClass(CLASSES.ACTIVE);active=0};if($.fn.bgiframe)list.bgiframe()};return{display:function(d,q){init();data=d;term=q;fillList()},next:function(){moveSelect(1)},prev:function(){moveSelect(-1)},pageUp:function(){if(active!=0&&active-8<0){moveSelect(-active)}else moveSelect(-8)},pageDown:function(){if(active!=listItems.size()-1&&active+8>listItems.size()){moveSelect(listItems.size()-1-active)}else moveSelect(8)},hide:function(){element&&element.hide();listItems&&listItems.removeClass(CLASSES.ACTIVE);active=-1},visible:function(){return element&&element.is(":visible")},current:function(){return this.visible()&&(listItems.filter("."+CLASSES.ACTIVE)[0]||options.selectFirst&&listItems[0])},show:function(){var offset=$(input).offset();element.css({width:typeof options.width=="string"||options.width>0?options.width:$(input).width(),top:offset.top+input.offsetHeight,left:offset.left}).show();if(options.scroll){list.scrollTop(0);list.css({maxHeight:options.scrollHeight,overflow:'auto'});if($.browser.msie&&typeof document.body.style.maxHeight==="undefined"){var listHeight=0;listItems.each(function(){listHeight+=this.offsetHeight});var scrollbarsVisible=listHeight>options.scrollHeight;list.css('height',scrollbarsVisible?options.scrollHeight:listHeight);if(!scrollbarsVisible)listItems.width(list.width()-parseInt(listItems.css("padding-left"))-parseInt(listItems.css("padding-right")))}}},selected:function(){var selected=listItems&&listItems.filter("."+CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE);return selected&&selected.length&&$.data(selected[0],"ac_data")},emptyList:function(){list&&list.empty()},unbind:function(){element&&element.remove()}}};$.Autocompleter.Selection=function(field,start,end){try{if(field.createTextRange){var selRange=field.createTextRange();selRange.collapse(true);selRange.moveStart("character",start);selRange.moveEnd("character",end);selRange.select()}else if(field.setSelectionRange){field.setSelectionRange(start,end)}else if(field.selectionStart){field.selectionStart=start;field.selectionEnd=end};field.focus()}catch(e){}}})(jQuery);if(typeof YAHOO=="undefined"||!YAHOO)var YAHOO={};YAHOO.namespace=function(){var a=arguments,o=null,i,j,d;for(i=0;i<a.length;i=i+1){d=a[i].split(".");o=YAHOO;for(j=(d[0]=="YAHOO")?1:0;j<d.length;j=j+1){o[d[j]]=o[d[j]]||{};o=o[d[j]]}};return o};YAHOO.log=function(msg,cat,src){var l=YAHOO.widget.Logger;if(l&&l.log){return l.log(msg,cat,src)}else return false};YAHOO.register=function(name,mainClass,data){var mods=YAHOO.env.modules;if(!mods[name])mods[name]={versions:[],builds:[]};var m=mods[name],v=data.version,b=data.build,ls=YAHOO.env.listeners;m.name=name;m.version=v;m.build=b;m.versions.push(v);m.builds.push(b);m.mainClass=mainClass;for(var i=0;i<ls.length;i=i+1)ls[i](m);if(mainClass){mainClass.VERSION=v;mainClass.BUILD=b}else YAHOO.log("mainClass is undefined for module "+name,"warn")};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(name){return YAHOO.env.modules[name]||null};YAHOO.env.ua=function(){var o={ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0},ua='firefox';if((/KHTML/).test(ua))o.webkit=1;m=ua.match(/AppleWebKit\/([^\s]*)/);if(m&&m[1]){o.webkit=parseFloat(m[1]);if(/ Mobile\//.test(ua)){o.mobile="Apple"}else{m=ua.match(/NokiaN[^\/]*/);if(m)o.mobile=m[0]};m=ua.match(/AdobeAIR\/([^\s]*)/);if(m)o.air=m[0]};if(!o.webkit){m=ua.match(/Opera[\s\/]([^\s]*)/);if(m&&m[1]){o.opera=parseFloat(m[1]);m=ua.match(/Opera Mini[^;]*/);if(m)o.mobile=m[0]}else{m=ua.match(/MSIE\s([^;]*)/);if(m&&m[1]){o.ie=parseFloat(m[1])}else{m=ua.match(/Gecko\/([^\s]*)/);if(m){o.gecko=1;m=ua.match(/rv:([^\s\)]*)/);if(m&&m[1])o.gecko=parseFloat(m[1])}}}};return o}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var l=YAHOO_config.listener,ls=YAHOO.env.listeners,unique=true,i;if(l){for(i=0;i<ls.length;i=i+1)if(ls[i]==l){unique=false;break};if(unique)ls.push(l)}}})();YAHOO.lang=YAHOO.lang||{};(function(){var L=YAHOO.lang,ADD=["toString","valueOf"],OB={isArray:function(o){if(o)return L.isNumber(o.length)&&L.isFunction(o.splice);return false},isBoolean:function(o){return typeof o==='boolean'},isFunction:function(o){return typeof o==='function'},isNull:function(o){return o===null},isNumber:function(o){return typeof o==='number'&&isFinite(o)},isObject:function(o){return(o&&(typeof o==='object'||L.isFunction(o)))||false},isString:function(o){return typeof o==='string'},isUndefined:function(o){return typeof o==='undefined'},_IEEnumFix:(YAHOO.env.ua.ie)?function(r,s){for(var i=0;i<ADD.length;i=i+1){var fname=ADD[i],f=s[fname];if(L.isFunction(f)&&f!=Object.prototype[fname])r[fname]=f}}:function(){},extend:function(subc,superc,overrides){if(!superc||!subc)throw new Error("extend failed, please check that all dependencies are included.");var F=function(){};F.prototype=superc.prototype;subc.prototype=new F();subc.prototype.constructor=subc;subc.superclass=superc.prototype;if(superc.prototype.constructor==Object.prototype.constructor)superc.prototype.constructor=superc;if(overrides){for(var i in overrides)if(L.hasOwnProperty(overrides,i))subc.prototype[i]=overrides[i];L._IEEnumFix(subc.prototype,overrides)}},augmentObject:function(r,s){if(!s||!r)throw new Error("Absorb failed, verify dependencies.");var a=arguments,i,p,override=a[2];if(override&&override!==true){for(i=2;i<a.length;i=i+1)r[a[i]]=s[a[i]]}else{for(p in s)if(override||!(p in r))r[p]=s[p];L._IEEnumFix(r,s)}},augmentProto:function(r,s){if(!s||!r)throw new Error("Augment failed, verify dependencies.");var a=[r.prototype,s.prototype];for(var i=2;i<arguments.length;i=i+1)a.push(arguments[i]);L.augmentObject.apply(this,a)},dump:function(o,d){var i,len,s=[],OBJ="{...}",FUN="f(){...}",COMMA=', ',ARROW=' => ';if(!L.isObject(o)){return o+""}else if(o instanceof Date||("nodeType" in o&&"tagName" in o)){return o}else if(L.isFunction(o))return FUN;d=(L.isNumber(d))?d:3;if(L.isArray(o)){s.push("[");for(i=0,len=o.length;i<len;i=i+1){if(L.isObject(o[i])){s.push((d>0)?L.dump(o[i],d-1):OBJ)}else s.push(o[i]);s.push(COMMA)};if(s.length>1)s.pop();s.push("]")}else{s.push("{");for(i in o)if(L.hasOwnProperty(o,i)){s.push(i+ARROW);if(L.isObject(o[i])){s.push((d>0)?L.dump(o[i],d-1):OBJ)}else s.push(o[i]);s.push(COMMA)};if(s.length>1)s.pop();s.push("}")};return s.join("")},substitute:function(s,o,f){var i,j,k,key,v,meta,saved=[],token,DUMP='dump',SPACE=' ',LBRACE='{',RBRACE='}';for(;;){i=s.lastIndexOf(LBRACE);if(i<0)break;j=s.indexOf(RBRACE,i);if(i+1>=j)break;token=s.substring(i+1,j);key=token;meta=null;k=key.indexOf(SPACE);if(k>-1){meta=key.substring(k+1);key=key.substring(0,k)};v=o[key];if(f)v=f(key,v,meta);if(L.isObject(v)){if(L.isArray(v)){v=L.dump(v,parseInt(meta,10))}else{meta=meta||"";var dump=meta.indexOf(DUMP);if(dump>-1)meta=meta.substring(4);if(v.toString===Object.prototype.toString||dump>-1){v=L.dump(v,parseInt(meta,10))}else v=v.toString()}}else if(!L.isString(v)&&!L.isNumber(v)){v="~-"+saved.length+"-~";saved[saved.length]=token};s=s.substring(0,i)+v+s.substring(j+1)};for(i=saved.length-1;i>=0;i=i-1)s=s.replace(new RegExp("~-"+i+"-~"),"{"+saved[i]+"}","g");return s},trim:function(s){try{return s.replace(/^\s+|\s+$/g,"")}catch(e){return s}},merge:function(){var o={},a=arguments;for(var i=0,l=a.length;i<l;i=i+1)L.augmentObject(o,a[i],true);return o},later:function(when,o,fn,data,periodic){when=when||0;o=o||{};var m=fn,d=data,f,r;if(L.isString(fn))m=o[fn];if(!m)throw new TypeError("method undefined");if(!L.isArray(d))d=[data];f=function(){m.apply(o,d)};r=(periodic)?setInterval(f,when):setTimeout(f,when);return{interval:periodic,cancel:function(){if(this.interval){clearInterval(r)}else clearTimeout(r)}}},isValue:function(o){return(L.isObject(o)||L.isString(o)||L.isNumber(o)||L.isBoolean(o))}};L.hasOwnProperty=(Object.prototype.hasOwnProperty)?function(o,prop){return o&&o.hasOwnProperty(prop)}:function(o,prop){return !L.isUndefined(o[prop])&&o.constructor.prototype[prop]!==o[prop]};OB.augmentObject(L,OB,true);YAHOO.util.Lang=L;L.augment=L.augmentProto;YAHOO.augment=L.augmentProto;YAHOO.extend=L.extend})();YAHOO.register("yahoo",YAHOO,{version:"2.5.2",build:"1076"});YAHOO.namespace('lang');YAHOO.lang.JSON={_ESCAPES:/\\["\\\/bfnrtu]/g,_VALUES:/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,_BRACKETS:/(?:^|:|,)(?:\s*\[)+/g,_INVALID:/^[\],:{}\s]*$/,_SPECIAL_CHARS:/["\\\x00-\x1f\x7f-\x9f]/g,_PARSE_DATE:/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/,_CHARS:{'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},_applyFilter:function(data,filter){var walk=function(k,v){var i,n;if(v&&typeof v==='object')for(i in v)if(YAHOO.lang.hasOwnProperty(v,i)){n=walk(i,v[i]);if(n===undefined){delete v[i]}else v[i]=n};return filter(k,v)};if(YAHOO.lang.isFunction(filter))walk('',data);return data},isValid:function(str){if(!YAHOO.lang.isString(str))return false;return this._INVALID.test(str.replace(this._ESCAPES,'@').replace(this._VALUES,']').replace(this._BRACKETS,''))},dateToString:function(d){function _zeroPad(v){return v<10?'0'+v:v};return'"'+d.getUTCFullYear()+'-'+_zeroPad(d.getUTCMonth()+1)+'-'+_zeroPad(d.getUTCDate())+'T'+_zeroPad(d.getUTCHours())+':'+_zeroPad(d.getUTCMinutes())+':'+_zeroPad(d.getUTCSeconds())+'Z"'},stringToDate:function(str){if(this._PARSE_DATE.test(str)){var d=new Date();d.setUTCFullYear(RegExp.$1,(RegExp.$2|0)-1,RegExp.$3);d.setUTCHours(RegExp.$4,RegExp.$5,RegExp.$6);return d}},parse:function(s,filter){if(this.isValid(s))return this._applyFilter(eval('('+s+')'),filter);throw new SyntaxError('parseJSON')},stringify:function(o,w,d){var l=YAHOO.lang,J=l.JSON,m=J._CHARS,str_re=this._SPECIAL_CHARS,pstack=[],_char=function(c){if(!m[c]){var a=c.charCodeAt();m[c]='\\u00'+Math.floor(a/16).toString(16)+(a%16).toString(16)};return m[c]},_string=function(s){return'"'+s.replace(str_re,_char)+'"'},_date=J.dateToString,_stringify=function(o,w,d){var t=typeof o,i,len,j,k,v,vt,a;if(t==='string')return _string(o);if(t==='boolean'||o instanceof Boolean)return String(o);if(t==='number'||o instanceof Number)return isFinite(o)?String(o):'null';if(o instanceof Date)return _date(o);if(l.isArray(o)){for(i=pstack.length-1;i>=0;--i)if(pstack[i]===o)return'null';pstack[pstack.length]=o;a=[];if(d>0)for(i=o.length-1;i>=0;--i)a[i]=_stringify(o[i],w,d-1)||'null';pstack.pop();return'['+a.join(',')+']'};if(t==='object'){if(!o)return'null';for(i=pstack.length-1;i>=0;--i)if(pstack[i]===o)return'null';pstack[pstack.length]=o;a=[];if(d>0)if(w){for(i=0,j=0,len=w.length;i<len;++i)if(typeof w[i]==='string'){v=_stringify(o[w[i]],w,d-1);if(v)a[j++]=_string(w[i])+':'+v}}else{j=0;for(k in o)if(typeof k==='string'&&l.hasOwnProperty(o,k)){v=_stringify(o[k],w,d-1);if(v)a[j++]=_string(k)+':'+v}};pstack.pop();return'{'+a.join(',')+'}'};return undefined};d=d>=0?d:1/0;return _stringify(o,w,d)}};var jawa={namespace:function(){var root=arguments[0];for(var i=1;i<arguments.length;i++){var field=arguments[i];if(root[field]==undefined||root[field]==null)root[field]={};root=root[field]}},version:0,getVersion:function(){return jawa.version++},newClass:function(defs){var cls=function(){this.init.apply(this,arguments)};cls.prototype.init=function(){};cls.prototype.clear=function(){};cls.prototype.getClass=function(){return cls};cls.hasInstance=function(o){return YAHOO.lang.isObject(o)&&YAHOO.lang.isFunction(o.getClass)&&o.getClass()==cls};defs=jawa.util.or(defs,{pre:[],template:jawa.util.nop,post:[]});var pre=jawa.util.dig(defs,'pre',[]),template=jawa.util.dig(defs,'template',jawa.util.nop),post=jawa.util.dig(defs,'post',[]);jawa.util.arrayMap(pre,function(t){t(cls)});cls.Template=template;template(cls);jawa.util.arrayMap(post,function(t){t(cls)});staticDef(cls,'extendClass',function(extension){staticOverride(cls,'Template',function(orig,cls){this[orig](cls);extension(cls)});extension(cls)});return cls},def:function(cls,funName,funDef,skipIfExist){skipIfExist=jawa.util.or(skipIfExist,false);if(jawa.util.isNull(cls.prototype[funName])||!skipIfExist)cls.prototype[funName]=funDef},defs:function(cls,defs){for(var k in defs)jawa.def(cls,k,defs[k])},advise:function(cls,funName,funDef){var superFunName=funName+jawa.getVersion();cls.prototype[superFunName]=cls.prototype[funName];cls.prototype[funName]=function(){var args=jawa.util.toArray(arguments);args.unshift(superFunName);return funDef.apply(this,args)}},before:function(cls,funName,funDef){jawa.advise(cls,funName,function(oldName){var args=jawa.util.toArray(arguments);args.shift();funDef.apply(this,args);return this[oldName].apply(this,args)})},after:function(cls,funName,funDef){jawa.advise(cls,funName,function(oldName){var args=jawa.util.toArray(arguments);args.shift();var res=this[oldName].apply(this,args);args.unshift(res);funDef.apply(this,args);return res})},Static:{def:function(cls,funName,funDef){cls[funName]=function(){return funDef.apply(cls,arguments)}},defs:function(cls,defs){for(var k in defs)jawa.Static.def(cls,k,defs[k])},advise:function(cls,funName,funDef){var superFunName=funName+jawa.getVersion();cls[superFunName]=cls[funName];cls[funName]=function(){var args=jawa.util.toArray(arguments);args.unshift(superFunName);return funDef.apply(cls,args)}},before:function(cls,funName,funDef){jawa.Static.advise(cls,funName,function(oldName){var args=jawa.util.toArray(arguments);args.shift();funDef.apply(cls,args);return cls[oldName].apply(cls,args)})},after:function(cls,funName,funDef){jawa.Static.advise(cls,funName,function(oldName){var args=jawa.util.toArray(arguments);args.shift();var res=cls[oldName].apply(cls,args);args.unshift(res);funDef.apply(cls,args);return res})}}},newClass=jawa.newClass,def=jawa.def,before=jawa.before,after=jawa.after,advise=jawa.advise,override=advise,staticDef=jawa.Static.def,staticBefore=jawa.Static.before,staticAfter=jawa.Static.after,staticAdvise=jawa.Static.advise,staticOverride=staticAdvise;jawa.Object=jawa.Static;var objectDef=jawa.Object.def,objectBefore=jawa.Object.before,objectAfter=jawa.Object.after,objectAdvise=jawa.Object.advise,objectOverride=objectAdvise;jawa.util={autoKey:0,genSym:function(){var res=''+jawa.util.autoKey;jawa.util.autoKey++;return res},clone:function(o,deep){deep=jawa.util.or(deep,false);if(YAHOO.lang.isString(o)||YAHOO.lang.isNumber(o)||YAHOO.lang.isBoolean(o)||YAHOO.lang.isFunction(o)||YAHOO.lang.isNull(o))return o;if(YAHOO.lang.isArray(o)){var res=new Array();for(var i=0;i<o.length;i++){var c=o[i];if(deep)c=jawa.util.clone(o[i],true);res.push(c)};return res};if(YAHOO.lang.isObject(o)){var res={};for(var k in o){var c=o[k];if(deep)c=jawa.util.clone(o[k],true);res[k]=c};return res};throw 'unsupported format in clone.'},isNull:function(v){return v==undefined||v==null},isEmptyObj:function(o){for(var k in o)return false;return true},empty:function(v){return jawa.util.isNull(v)||(YAHOO.lang.isString(v)&&v=='')||(YAHOO.lang.isArray(v)&&v.length==0)||(YAHOO.lang.isObject(v)&&jawa.util.isEmptyObj(v))},later:function(fn,delay){delay=jawa.util.or(delay,0);setTimeout(fn,delay)},dig:function(o,i,defaultVal){if(jawa.util.isNull(o))return defaultVal;var v=o[i];if(v==undefined||v==null)return defaultVal;return v},digOut:function(o,i,defaultVal){var res=jawa.util.dig(o,i,defaultVal);o[i]=undefined;return res},or:function(v,defaultVal){if(v==undefined||v==null)return defaultVal;return v},nop:function(){},id:function(x){return x},toArray:function(arr){var res=new Array();for(var i=0;i<arr.length;i++)res.push(arr[i]);return res},partialApply:function(ifn,arg){var ofn=function(){var args=jawa.util.toArray(arguments);args.unshift(arg);return ifn.apply(this,args)};return ofn},arrayZip:function(a1,a2){if(a1.length!=a2.length)throw 'Zip error: the length of the two arrays do not match.';var res=[];for(var i=0;i<a1.length;i++)res.push([a1[i],a2[i]]);return res},arrayEach:function(arr,fn){for(var i=0;i<arr.length;i++)fn(arr[i])},arrayMap:function(arr,fn){var res=new Array();for(var i=0;i<arr.length;i++)res.push(fn(arr[i]));return res},arraySlice:function(arr,b,l){var res=new Array();for(var i=0;i<l&&b+i<arr.length;i++)res.push(arr[b+i]);return res},arraySplit:function(arr,p){var left=new Array();for(var i=0;i<p;i++)left.push(arr.shift());return[left,arr]},arrayFilter:function(arr,cond){var res=new Array();for(var i=0;i<arr.length;i++)if(cond(arr[i]))res.push(arr[i]);return res},arrayFoldr:function(arr,cons,bot){if(arr.length==0){return bot}else{var te=arr.pop();return jawa.util.arrayFoldr(arr,cons,cons(te,bot))}},arrayLookupAll:function(arr,key,value){return jawa.util.arrayFilter(arr,function(e){return e[key]==value})},arrayLookupOne:function(arr,key,value){var res=jawa.util.arrayLookupAll(arr,key,value);return res[0]},arrayInclude:function(arr,elem){for(var i=0;i<arr.length;i++)if(arr[i]==elem)return true;return false},arrayDiff:function(arr1,arr2){var res=new Array();for(var i=0;i<arr1.length;i++)if(!jawa.util.arrayInclude(arr2,arr1[i]))res.push(arr1[i]);return res},arrayIntersect:function(a1,a2){var res=new Array();for(var i=0;i<a1.length;i++)if(jawa.util.arrayInclude(a2,a1[i]))res.push(a1[i]);return res},arrayUnion:function(a1,a2){var a3=jawa.util.arrayDiff(a2,a1);return a1.concat(a3)},arrayDup:function(a){var res=new Array();for(var i=0;i<a.length;i++)res.push(a[i]);return res},arrayJoin:function(ls){var res=[];for(var i=0;i<ls.length;i++)res=res.concat(ls[i]);return res},snd:function(a,b){return b},hideEl:function(el){if(el)YAHOO.util.Dom.setStyle(el,'display','none')},showEl:function(el){if(el)YAHOO.util.Dom.setStyle(el,'display','')},clearEl:function(el){if(el){YAHOO.util.Event.purgeElement(el,true);el.innerHTML=''}},removeEl:function(el){el=YAHOO.util.Dom.get(el);if(el){YAHOO.util.Event.purgeElement(el,true);var parent=el.parentNode;if(!jawa.util.isNull(parent))parent.removeChild(el)}},elX:function(el){return YAHOO.util.Dom.getX(el)},elY:function(el){return YAHOO.util.Dom.getY(el)},elWidth:function(el){var width=parseInt(YAHOO.util.Dom.getStyle(el,'width'),10);if(isNaN(width))width=$(el).clientWidth;return width},elHeight:function(el){var height=parseInt(YAHOO.util.Dom.getStyle(el,'height'),10);if(isNaN(height))height=$(el).clientHeight;return height},showEither:function(b,el1,el2){if(b){jawa.util.showEl(el1);jawa.util.hideEl(el2)}else{jawa.util.showEl(el2);jawa.util.hideEl(el1)}},ceiling:function(n){var x=Math.floor(n);if(x==n)return x;return x+1},tablize:function(arr,col){var t=[],row=[];for(var i=0;i<arr.length;i++){if(i%col==0){t.push(row);row=[]};row.push(arr[i])};t.push(row);t.shift();return t},ripPx:function(str){var res=str.substring(0,str.length-2);return parseInt(res)},getQuarter:function(x,y){var w=YAHOO.util.Dom.getViewportWidth(),h=YAHOO.util.Dom.getViewportHeight(),res={};if(x<=w/2){res.w='left'}else res.w='right';if(y<=h/2){res.h='up'}else res.h='down';return res},onWinEdge:function(direction,x,y,edgeWidth){switch(direction){case'up':return y-edgeWidth<0;case'down':return y+edgeWidth>YAHOO.util.Dom.getViewportHeight();case'left':return x-edgeWidth<0;case'right':return x+edgeWidth>YAHOO.util.Dom.getViewportWidth();default:return false}},keys:function(o){var res=[];for(var k in o)res.push(k);return res},validateEmailFormat:function(s){var reg=/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;return reg.test(s)},validateURLFormat:function(s){var reg=/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i;return reg.test(s)},centerEl:function(el){el=YAHOO.util.Dom.get(el);if(jawa.util.isNull(el))return;var region=YAHOO.util.Dom.getClientRegion(),centerX=(region.left+region.right)/2,centerY=(region.top+region.bottom)/2,w=el.clientWidth,h=el.clientHeight,x=centerX-w/2,y=centerY-h/2;YAHOO.util.Dom.setXY(el,[x,y])},centerElX:function(el){el=YAHOO.util.Dom.get(el);if(jawa.util.isNull(el))return;var region=YAHOO.util.Dom.getClientRegion(),centerX=(region.left+region.right)/2,w=el.clientWidth,x=centerX-w/2;YAHOO.util.Dom.setX(el,x)},setYInClientRegion:function(el,h){var region=YAHOO.util.Dom.getClientRegion();YAHOO.util.Dom.setY(el,region.top+h)},removeFromArray:function(arr,e){for(var i=0;i<arr.length;i++)if(arr[i]==e)arr.splice(i,1)},isIE:function(){return navigator.appName=="Microsoft Internet Explorer"},boundingBox:function(points){if(points.length<2)return null;var p0=points.shift(),xMin=p0[0],xMax=xMin,yMin=p0[1],yMax=yMin;jawa.util.arrayEach(points,function(p){xMin=Math.min(xMin,p[0]);xMax=Math.max(xMax,p[0]);yMin=Math.min(yMin,p[1]);yMax=Math.max(yMax,p[1])});return[[xMin,yMin],[xMax,yMax]]},inRegion:function(el,pos){el=YAHOO.util.Dom.get(el);var x=YAHOO.util.Dom.getX(el),y=YAHOO.util.Dom.getY(el),w=el.clientWidth,h=el.clientHeight;return pos[0]>=x&&pos[0]<=x+w&&pos[1]>=y&&pos[1]<=y+h},numbers:function(start,end){var res=[];for(var i=start;i<=end;i++)res.push(i);return res},isNumber:function(o){if(YAHOO.lang.isNumber(o))return true;if(!YAHOO.lang.isString(o))return false;while(o.charAt(0)=='0'){if(o.length==1)break;o=o.substring(1)};var n=parseFloat(o);return !isNaN(n)},toNumber:function(o){if(YAHOO.lang.isNumber(o))return o;if(!YAHOO.lang.isString(o))return NaN;return parseFloat(o)},toString:function(o){if(YAHOO.lang.isNumber(o)){return o+''}else if(YAHOO.lang.isString(o)){return o}else throw 'jawa.util.toString fails converting: '+jawa.json.encode(o)},extendObj:function(o1,o2,overwrite){overwrite=jawa.util.or(overwrite,true);for(var k in o2)if(overwrite||jawa.util.isNull(o1[k]))o1[k]=o2[k];return o1},sliceObj:function(){var args=jawa.util.toArray(arguments),o=args.shift(),res={};for(var i=0;i<args.length;i++){var key=args[i];if(!jawa.util.isNull(o[key]))res[key]=o[key]};return res},toUrlParams:function(o){var paramList=new Array();for(var k in o)paramList.push(k+'='+encodeURIComponent(o[k]));return paramList.join('&')},async:function(fn){try{return setTimeout(fn,0)}catch(e){return fn()}},i2s:function(n,b){var s=n+'';if(jawa.util.isNull(b))return s;if(s.length<b){var prefix='';for(var i=0;i<b-s.length;i++)prefix+='0';return prefix+s}else return(s.substring(s.length-b))},getContainer:function(el,tag){el=$(el);while(!jawa.util.isNull(el)&&el.tagName.toLowerCase()!=tag.toLowerCase())el=el.parentNode;return el},waitUntil:function(b,delay){delay=delay||100;return bind(jawa.timer.sleep(delay),function(){if(b()){return unit()}else return jawa.util.waitUntil(b,delay)})},stackLock:function(fn){var lock=0;return function(){if(lock!=0)return;lock=1;var res=fn.apply(this,arguments);lock=0;return res}},cpsLock:function(fn){var lock=0;return function(){if(lock==0){lock=1;return jawa.cps.bind(fn.apply(this,arguments),function(a){lock=0;return jawa.cps.unit(a)})}else return jawa.cps.unit()}},windowOpenWithPost:function(url,values,target){target=jawa.util.or(target,'_blank');values=jawa.util.or(values,{});var r=new jawa.render({tag:'form',properties:{method:'post',action:url,target:target}});for(var k in values)r.addChild(new jawa.render({tag:'input',properties:{type:'hidden',name:k,value:values[k]}}));var el=r.toEl();document.body.appendChild(el);el.submit();document.body.removeChild(el)},revealMeInY:function(el){var parent=el.parentNode,oldScrollTop=parent.scrollTop,y=jawa.dom.getY(el)-jawa.dom.getY(parent)+oldScrollTop,minScrollTop=y-parent.clientHeight+el.clientHeight,maxScrollTop=y;parent.scrollTop=Math.min(Math.max(oldScrollTop,minScrollTop),maxScrollTop)},bs:function(arr,key,comp){comp=jawa.util.or(comp,function(a,b){return a<b?-1:(a>b?1:0)});var head=0,tail=arr.length-1,mid;while(head<=tail){mid=Math.floor((head+tail)/2);switch(comp(arr[mid],key)){case 0:return mid;case 1:tail=mid-1;break;case -1:head=mid+1;break;default:throw 'invalid return from comp function in bs'}};tail=Math.max(tail,0);head=Math.min(head,arr.length-1);if(comp(arr[tail],key)==1)return tail-1;if(comp(arr[head],key)==-1)return head;return tail},sortedInsert:function(arr,e,comp){var index=jawa.util.bs(arr,e,comp);arr.splice(index+1,0,e);return arr},nextChar:function(c,offset){offset=jawa.util.or(offset,1);return String.fromCharCode(c.charCodeAt(0)+offset)},nextString:function(s){var lastChar=jawa.util.nextChar(s.charAt(s.length-1));return s.slice(0,s.length-1)+lastChar},merge:function(a1,a2,comp){comp=jawa.util.or(comp,function(a,b){return a<b?-1:(a>b?1:0)});var i=0,j=0,a3=new Array();while(i<a1.length&&j<a2.length)if(comp(a1[i],a2[j])==-1){a3.push(a1[i++])}else a3.push(a2[j++]);while(i<a1.length)a3.push(a1[i++]);while(j<a2.length)a3.push(a2[j++]);return a3},getPos:function(a,val){for(var i=0;i<a.length;i++)if(a[i]==val)return i;return -1},quickSort:function(a,comp){a=jawa.util.clone(a);comp=jawa.util.or(comp,function(a,b){return a<b?-1:(a>b?1:0)});if(a.length==0)return[];var split=function(a,pivot){var left=new Array(),right=new Array();for(var i=0;i<a.length;i++)if(comp(a[i],pivot)==1){right.push(a[i])}else left.push(a[i]);return[left,right]},pivot=a.shift(),pair=split(a,pivot),left=jawa.util.quickSort(pair[0],comp),right=jawa.util.quickSort(pair[1],comp);return left.concat([pivot]).concat(right)},objEq:function(o1,o2){if(o1==null)return o2==null;if(o2==null)return o1==null;for(var k in o1)if(o1[k]!=o2[k])return false;for(var k in o2)if(o2[k]!=o1[k])return false;return true}};jawa.json=newClass({template:function(cls){staticDef(cls,'encode',function(o){return YAHOO.lang.JSON.stringify(o)});staticDef(cls,'decode',function(s){return YAHOO.lang.JSON.parse(s)})}});jawa.php=newClass({template:function(cls){staticDef(cls,'utf8Encode',function(string){string=string.replace(/\r\n/g,"\n");var utftext="",start,end;start=end=0;for(var n=0;n<string.length;n++){var c=string.charCodeAt(n),enc=null;if(c<128){end++}else if((c>127)&&(c<2048)){enc=String.fromCharCode((c>>6)|192)+String.fromCharCode((c&63)|128)}else enc=String.fromCharCode((c>>12)|224)+String.fromCharCode(((c>>6)&63)|128)+String.fromCharCode((c&63)|128);if(enc!=null){if(end>start)utftext+=string.substring(start,end);utftext+=enc;start=end=n+1}};if(end>start)utftext+=string.substring(start,string.length);return utftext});staticDef(cls,'utf8Decode',function(str_data){var tmp_arr=[],i=0,ac=0,c1=0,c2=0,c3=0;str_data+='';while(i<str_data.length){c1=str_data.charCodeAt(i);if(c1<128){tmp_arr[ac++]=String.fromCharCode(c1);i++}else if((c1>191)&&(c1<224)){c2=str_data.charCodeAt(i+1);tmp_arr[ac++]=String.fromCharCode(((c1&31)<<6)|(c2&63));i+=2}else{c2=str_data.charCodeAt(i+1);c3=str_data.charCodeAt(i+2);tmp_arr[ac++]=String.fromCharCode(((c1&15)<<12)|((c2&63)<<6)|(c3&63));i+=3}};return tmp_arr.join('')});staticDef(cls,'md5',function(str){var RotateLeft=function(lValue,iShiftBits){return(lValue<<iShiftBits)|(lValue>>>(32-iShiftBits))},AddUnsigned=function(lX,lY){var lX4,lY4,lX8,lY8,lResult;lX8=(lX&0x80000000);lY8=(lY&0x80000000);lX4=(lX&0x40000000);lY4=(lY&0x40000000);lResult=(lX&0x3FFFFFFF)+(lY&0x3FFFFFFF);if(lX4&lY4)return(lResult^0x80000000^lX8^lY8);if(lX4|lY4){if(lResult&0x40000000){return(lResult^0xC0000000^lX8^lY8)}else return(lResult^0x40000000^lX8^lY8)}else return(lResult^lX8^lY8)},F=function(x,y,z){return(x&y)|((~x)&z)},G=function(x,y,z){return(x&z)|(y&(~z))},H=function(x,y,z){return(x^y^z)},I=function(x,y,z){return(y^(x|(~z)))},FF=function(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(F(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b)},GG=function(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(G(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b)},HH=function(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(H(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b)},II=function(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(I(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b)},ConvertToWordArray=function(str){var lWordCount,lMessageLength=str.length,lNumberOfWords_temp1=lMessageLength+8,lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1%64))/64,lNumberOfWords=(lNumberOfWords_temp2+1)*16,lWordArray=Array(lNumberOfWords-1),lBytePosition=0,lByteCount=0;while(lByteCount<lMessageLength){lWordCount=(lByteCount-(lByteCount%4))/4;lBytePosition=(lByteCount%4)*8;lWordArray[lWordCount]=(lWordArray[lWordCount]|(str.charCodeAt(lByteCount)<<lBytePosition));lByteCount++};lWordCount=(lByteCount-(lByteCount%4))/4;lBytePosition=(lByteCount%4)*8;lWordArray[lWordCount]=lWordArray[lWordCount]|(0x80<<lBytePosition);lWordArray[lNumberOfWords-2]=lMessageLength<<3;lWordArray[lNumberOfWords-1]=lMessageLength>>>29;return lWordArray},WordToHex=function(lValue){var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;for(lCount=0;lCount<=3;lCount++){lByte=(lValue>>>(lCount*8))&255;WordToHexValue_temp="0"+lByte.toString(16);WordToHexValue=WordToHexValue+WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2)};return WordToHexValue},x=Array(),k,AA,BB,CC,DD,a,b,c,d,S11=7,S12=12,S13=17,S14=22,S21=5,S22=9,S23=14,S24=20,S31=4,S32=11,S33=16,S34=23,S41=6,S42=10,S43=15,S44=21;str=this.utf8Encode(str);x=ConvertToWordArray(str);a=0x67452301;b=0xEFCDAB89;c=0x98BADCFE;d=0x10325476;for(k=0;k<x.length;k+=16){AA=a;BB=b;CC=c;DD=d;a=FF(a,b,c,d,x[k+0],S11,0xD76AA478);d=FF(d,a,b,c,x[k+1],S12,0xE8C7B756);c=FF(c,d,a,b,x[k+2],S13,0x242070DB);b=FF(b,c,d,a,x[k+3],S14,0xC1BDCEEE);a=FF(a,b,c,d,x[k+4],S11,0xF57C0FAF);d=FF(d,a,b,c,x[k+5],S12,0x4787C62A);c=FF(c,d,a,b,x[k+6],S13,0xA8304613);b=FF(b,c,d,a,x[k+7],S14,0xFD469501);a=FF(a,b,c,d,x[k+8],S11,0x698098D8);d=FF(d,a,b,c,x[k+9],S12,0x8B44F7AF);c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);a=FF(a,b,c,d,x[k+12],S11,0x6B901122);d=FF(d,a,b,c,x[k+13],S12,0xFD987193);c=FF(c,d,a,b,x[k+14],S13,0xA679438E);b=FF(b,c,d,a,x[k+15],S14,0x49B40821);a=GG(a,b,c,d,x[k+1],S21,0xF61E2562);d=GG(d,a,b,c,x[k+6],S22,0xC040B340);c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);b=GG(b,c,d,a,x[k+0],S24,0xE9B6C7AA);a=GG(a,b,c,d,x[k+5],S21,0xD62F105D);d=GG(d,a,b,c,x[k+10],S22,0x2441453);c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);b=GG(b,c,d,a,x[k+4],S24,0xE7D3FBC8);a=GG(a,b,c,d,x[k+9],S21,0x21E1CDE6);d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);c=GG(c,d,a,b,x[k+3],S23,0xF4D50D87);b=GG(b,c,d,a,x[k+8],S24,0x455A14ED);a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);d=GG(d,a,b,c,x[k+2],S22,0xFCEFA3F8);c=GG(c,d,a,b,x[k+7],S23,0x676F02D9);b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);a=HH(a,b,c,d,x[k+5],S31,0xFFFA3942);d=HH(d,a,b,c,x[k+8],S32,0x8771F681);c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);a=HH(a,b,c,d,x[k+1],S31,0xA4BEEA44);d=HH(d,a,b,c,x[k+4],S32,0x4BDECFA9);c=HH(c,d,a,b,x[k+7],S33,0xF6BB4B60);b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);d=HH(d,a,b,c,x[k+0],S32,0xEAA127FA);c=HH(c,d,a,b,x[k+3],S33,0xD4EF3085);b=HH(b,c,d,a,x[k+6],S34,0x4881D05);a=HH(a,b,c,d,x[k+9],S31,0xD9D4D039);d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);b=HH(b,c,d,a,x[k+2],S34,0xC4AC5665);a=II(a,b,c,d,x[k+0],S41,0xF4292244);d=II(d,a,b,c,x[k+7],S42,0x432AFF97);c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);b=II(b,c,d,a,x[k+5],S44,0xFC93A039);a=II(a,b,c,d,x[k+12],S41,0x655B59C3);d=II(d,a,b,c,x[k+3],S42,0x8F0CCC92);c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);b=II(b,c,d,a,x[k+1],S44,0x85845DD1);a=II(a,b,c,d,x[k+8],S41,0x6FA87E4F);d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);c=II(c,d,a,b,x[k+6],S43,0xA3014314);b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);a=II(a,b,c,d,x[k+4],S41,0xF7537E82);d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);c=II(c,d,a,b,x[k+2],S43,0x2AD7D2BB);b=II(b,c,d,a,x[k+9],S44,0xEB86D391);a=AddUnsigned(a,AA);b=AddUnsigned(b,BB);c=AddUnsigned(c,CC);d=AddUnsigned(d,DD)};var temp=WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);return temp.toLowerCase()});var get_html_translation_table=function(table,quote_style){var entities={},histogram={},decimal=0,symbol='',constMappingTable={},constMappingQuoteStyle={},useTable={},useQuoteStyle={};useTable=(table?table.toUpperCase():'HTML_SPECIALCHARS');useQuoteStyle=(quote_style?quote_style.toUpperCase():'ENT_COMPAT');constMappingTable[0]='HTML_SPECIALCHARS';constMappingTable[1]='HTML_ENTITIES';constMappingQuoteStyle[0]='ENT_NOQUOTES';constMappingQuoteStyle[2]='ENT_COMPAT';constMappingQuoteStyle[3]='ENT_QUOTES';if(!isNaN(useTable))useTable=constMappingTable[useTable];if(!isNaN(useQuoteStyle))useQuoteStyle=constMappingQuoteStyle[useQuoteStyle];if(useTable=='HTML_SPECIALCHARS'){entities['38']='&amp;';entities['60']='&lt;';entities['62']='&gt;'}else if(useTable=='HTML_ENTITIES'){entities['38']='&amp;';entities['60']='&lt;';entities['62']='&gt;';entities['160']='&nbsp;';entities['161']='&iexcl;';entities['162']='&cent;';entities['163']='&pound;';entities['164']='&curren;';entities['165']='&yen;';entities['166']='&brvbar;';entities['167']='&sect;';entities['168']='&uml;';entities['169']='&copy;';entities['170']='&ordf;';entities['171']='&laquo;';entities['172']='&not;';entities['173']='&shy;';entities['174']='&reg;';entities['175']='&macr;';entities['176']='&deg;';entities['177']='&plusmn;';entities['178']='&sup2;';entities['179']='&sup3;';entities['180']='&acute;';entities['181']='&micro;';entities['182']='&para;';entities['183']='&middot;';entities['184']='&cedil;';entities['185']='&sup1;';entities['186']='&ordm;';entities['187']='&raquo;';entities['188']='&frac14;';entities['189']='&frac12;';entities['190']='&frac34;';entities['191']='&iquest;';entities['192']='&Agrave;';entities['193']='&Aacute;';entities['194']='&Acirc;';entities['195']='&Atilde;';entities['196']='&Auml;';entities['197']='&Aring;';entities['198']='&AElig;';entities['199']='&Ccedil;';entities['200']='&Egrave;';entities['201']='&Eacute;';entities['202']='&Ecirc;';entities['203']='&Euml;';entities['204']='&Igrave;';entities['205']='&Iacute;';entities['206']='&Icirc;';entities['207']='&Iuml;';entities['208']='&ETH;';entities['209']='&Ntilde;';entities['210']='&Ograve;';entities['211']='&Oacute;';entities['212']='&Ocirc;';entities['213']='&Otilde;';entities['214']='&Ouml;';entities['215']='&times;';entities['216']='&Oslash;';entities['217']='&Ugrave;';entities['218']='&Uacute;';entities['219']='&Ucirc;';entities['220']='&Uuml;';entities['221']='&Yacute;';entities['222']='&THORN;';entities['223']='&szlig;';entities['224']='&agrave;';entities['225']='&aacute;';entities['226']='&acirc;';entities['227']='&atilde;';entities['228']='&auml;';entities['229']='&aring;';entities['230']='&aelig;';entities['231']='&ccedil;';entities['232']='&egrave;';entities['233']='&eacute;';entities['234']='&ecirc;';entities['235']='&euml;';entities['236']='&igrave;';entities['237']='&iacute;';entities['238']='&icirc;';entities['239']='&iuml;';entities['240']='&eth;';entities['241']='&ntilde;';entities['242']='&ograve;';entities['243']='&oacute;';entities['244']='&ocirc;';entities['245']='&otilde;';entities['246']='&ouml;';entities['247']='&divide;';entities['248']='&oslash;';entities['249']='&ugrave;';entities['250']='&uacute;';entities['251']='&ucirc;';entities['252']='&uuml;';entities['253']='&yacute;';entities['254']='&thorn;';entities['255']='&yuml;'}else{throw Error("Table: "+useTable+' not supported');return false};if(useQuoteStyle!='ENT_NOQUOTES')entities['34']='&quot;';if(useQuoteStyle=='ENT_QUOTES')entities['39']='&#039;';for(decimal in entities){symbol=String.fromCharCode(decimal);histogram[symbol]=entities[decimal]};return histogram};staticDef(cls,'htmlentities',function(string,quote_style){var histogram={},symbol='',tmp_str='',i=0;tmp_str=string.toString();if(false===(histogram=get_html_translation_table('HTML_ENTITIES',quote_style)))return false;for(symbol in histogram){entity=histogram[symbol];tmp_str=tmp_str.split(symbol).join(entity)};return tmp_str});staticDef(cls,'base64Encode',function(data){var b64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o1,o2,o3,h1,h2,h3,h4,bits,i=0,ac=0,enc="",tmp_arr=[];if(!data)return data;data=this.utf8Encode(data+'');do{o1=data.charCodeAt(i++);o2=data.charCodeAt(i++);o3=data.charCodeAt(i++);bits=o1<<16|o2<<8|o3;h1=bits>>18&0x3f;h2=bits>>12&0x3f;h3=bits>>6&0x3f;h4=bits&0x3f;tmp_arr[ac++]=b64.charAt(h1)+b64.charAt(h2)+b64.charAt(h3)+b64.charAt(h4)}while(i<data.length);enc=tmp_arr.join('');switch(data.length%3){case 1:enc=enc.slice(0,-2)+'==';break;case 2:enc=enc.slice(0,-1)+'=';break};return enc});staticDef(cls,'base64Decode',function(data){var b64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o1,o2,o3,h1,h2,h3,h4,bits,i=0,ac=0,dec="",tmp_arr=[];if(!data)return data;data+='';do{h1=b64.indexOf(data.charAt(i++));h2=b64.indexOf(data.charAt(i++));h3=b64.indexOf(data.charAt(i++));h4=b64.indexOf(data.charAt(i++));bits=h1<<18|h2<<12|h3<<6|h4;o1=bits>>16&0xff;o2=bits>>8&0xff;o3=bits&0xff;if(h3==64){tmp_arr[ac++]=String.fromCharCode(o1)}else if(h4==64){tmp_arr[ac++]=String.fromCharCode(o1,o2)}else tmp_arr[ac++]=String.fromCharCode(o1,o2,o3)}while(i<data.length);dec=tmp_arr.join('');dec=this.utf8Decode(dec);return dec});staticDef(cls,'date',function(format,timestamp){var a,tal=[],jsdate=((typeof (timestamp)=='undefined')?new Date():(typeof (timestamp)=='number')?new Date(timestamp*1000):new Date(timestamp)),pad=function(n,c){if((n=n+"").length<c){return new Array(++c-n.length).join("0")+n}else return n},ret='',txt_weekdays=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],txt_ordin={1:"st",2:"nd",3:"rd",21:"st",22:"nd",23:"rd",31:"st"},txt_months=["","January","February","March","April","May","June","July","August","September","October","November","December"],f={d:function(){return pad(f.j(),2)},D:function(){var t=f.l();return t.substr(0,3)},j:function(){return jsdate.getDate()},l:function(){return txt_weekdays[f.w()]},N:function(){return f.w()+1},S:function(){return txt_ordin[f.j()]?txt_ordin[f.j()]:'th'},w:function(){return jsdate.getDay()},z:function(){return(jsdate-new Date(jsdate.getFullYear()+"/1/1"))/864e5>>0},W:function(){var a=f.z(),b=364+f.L()-a,nd2,nd=(new Date(jsdate.getFullYear()+"/1/1").getDay()||7)-1;if(b<=2&&((jsdate.getDay()||7)-1)<=2-b){return 1}else if(a<=2&&nd>=4&&a>=(6-nd)){nd2=new Date(jsdate.getFullYear()-1+"/12/31");return date("W",Math.round(nd2.getTime()/1000))}else return(1+(nd<=3?((a+nd)/7):(a-(7-nd))/7)>>0)},F:function(){return txt_months[f.n()]},m:function(){return pad(f.n(),2)},M:function(){var t;t=f.F();return t.substr(0,3)},n:function(){return jsdate.getMonth()+1},t:function(){var n;if((n=jsdate.getMonth()+1)==2){return 28+f.L()}else if(n&1&&n<8||!(n&1)&&n>7){return 31}else return 30},L:function(){var y=f.Y();return(!(y&3)&&(y%1e2||!(y%4e2)))?1:0},o:function(){if(f.n()===12&&f.W()===1)return jsdate.getFullYear()+1;if(f.n()===1&&f.W()>=52)return jsdate.getFullYear()-1;return jsdate.getFullYear()},Y:function(){return jsdate.getFullYear()},y:function(){return(jsdate.getFullYear()+"").slice(2)},a:function(){return jsdate.getHours()>11?"pm":"am"},A:function(){return f.a().toUpperCase()},B:function(){var off=(jsdate.getTimezoneOffset()+60)*60,theSeconds=(jsdate.getHours()*3600)+(jsdate.getMinutes()*60)+jsdate.getSeconds()+off,beat=Math.floor(theSeconds/86.4);if(beat>1000)beat-=1000;if(beat<0)beat+=1000;if((String(beat)).length==1)beat="00"+beat;if((String(beat)).length==2)beat="0"+beat;return beat},g:function(){return jsdate.getHours()%12||12},G:function(){return jsdate.getHours()},h:function(){return pad(f.g(),2)},H:function(){return pad(jsdate.getHours(),2)},i:function(){return pad(jsdate.getMinutes(),2)},s:function(){return pad(jsdate.getSeconds(),2)},u:function(){return pad(jsdate.getMilliseconds()*1000,6)},e:function(){return'UTC'},I:function(){var DST=(new Date(jsdate.getFullYear(),6,1,0,0,0));DST=DST.getHours()-DST.getUTCHours();var ref=jsdate.getHours()-jsdate.getUTCHours();return ref!=DST?1:0},O:function(){var t=pad(Math.abs(jsdate.getTimezoneOffset()/60*100),4);if(jsdate.getTimezoneOffset()>0){t="-"+t}else t="+"+t;return t},P:function(){var O=f.O();return(O.substr(0,3)+":"+O.substr(3,2))},T:function(){return'UTC'},Z:function(){var t=-jsdate.getTimezoneOffset()*60;return t},c:function(){return f.Y()+"-"+f.m()+"-"+f.d()+"T"+f.h()+":"+f.i()+":"+f.s()+f.P()},r:function(){return f.D()+', '+f.d()+' '+f.M()+' '+f.Y()+' '+f.H()+':'+f.i()+':'+f.s()+' '+f.O()},U:function(){return Math.round(jsdate.getTime()/1000)}};return format.replace(/[\\]?([a-zA-Z])/g,function(t,s){if(t!=s){ret=s}else if(f[s]){ret=f[s]()}else ret=s;return ret})});staticDef(cls,'base64ArrayEncode',function(inp,uc,safe){var encString='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',encStringS='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';if(arguments.length<1)return null;var readBuf=new Array();if(arguments.length>=3&&safe!=true&&safe!=false)return null;var enc=(arguments.length>=3&&safe)?encStringS:encString,b=(typeof inp=="string");if(!b&&(typeof inp!="object")&&!(inp instanceof Array))return null;if(arguments.length<2)uc=true;if(uc!=true&&uc!=false)return null;var n=(!b||!uc)?1:2,out='',c=0,j=1,l=0,s=0;for(var i=0;i<inp.length;i++){c=(b)?inp.charCodeAt(i):inp[i];for(var k=n-1;k>=0;k--){readBuf[k]=c&0xff;c>>=8};for(var m=0;m<n;m++){l=((l<<8)&0xff00)|readBuf[m];s=(0x3f<<(2*j))&l;l-=s;out+=enc.charAt(s>>(2*j));j++;if(j==4){out+=enc.charAt(l&0x3f);j=1}}};switch(j){case 2:s=0x3f&(16*l);out+=enc.charAt(s);out+='==';break;case 3:s=0x3f&(4*l);out+=enc.charAt(s);out+='=';break;default:break};return out});staticDef(cls,'hmacSha256',function(str,key,doBase64){var SHA256_hexchars,SHA256_H,SHA256_buf,SHA256_len,HMAC_SHA256_key,SHA256_K
function string_to_array(str){var len=str.length,res=new Array(len);for(var i=0;i<len;i++)res[i]=str.charCodeAt(i);return res}
function array_to_hex_string(ary){var res="";for(var i=0;i<ary.length;i++)res+=SHA256_hexchars[ary[i]>>4]+SHA256_hexchars[ary[i]&0x0f];return res}
function SHA256_init(){SHA256_H=new Array(0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19);SHA256_buf=new Array();SHA256_len=0}
function SHA256_write(msg){if(typeof (msg)=="string"){SHA256_buf=SHA256_buf.concat(string_to_array(msg))}else SHA256_buf=SHA256_buf.concat(msg);for(var i=0;i+64<=SHA256_buf.length;i+=64)SHA256_Hash_Byte_Block(SHA256_H,SHA256_buf.slice(i,i+64));SHA256_buf=SHA256_buf.slice(i);SHA256_len+=msg.length}
function SHA256_finalize(){SHA256_buf[SHA256_buf.length]=0x80;if(SHA256_buf.length>64-8){for(var i=SHA256_buf.length;i<64;i++)SHA256_buf[i]=0;SHA256_Hash_Byte_Block(SHA256_H,SHA256_buf);SHA256_buf.length=0};for(var i=SHA256_buf.length;i<64-5;i++)SHA256_buf[i]=0;SHA256_buf[59]=(SHA256_len>>>29)&0xff;SHA256_buf[60]=(SHA256_len>>>21)&0xff;SHA256_buf[61]=(SHA256_len>>>13)&0xff;SHA256_buf[62]=(SHA256_len>>>5)&0xff;SHA256_buf[63]=(SHA256_len<<3)&0xff;SHA256_Hash_Byte_Block(SHA256_H,SHA256_buf);var res=new Array(32);for(var i=0;i<8;i++){res[4*i+0]=SHA256_H[i]>>>24;res[4*i+1]=(SHA256_H[i]>>16)&0xff;res[4*i+2]=(SHA256_H[i]>>8)&0xff;res[4*i+3]=SHA256_H[i]&0xff};delete SHA256_H;delete SHA256_buf;delete SHA256_len;return res}
function SHA256_hash(msg){var res;SHA256_init();SHA256_write(msg);res=SHA256_finalize();return array_to_hex_string(res)}
function HMAC_SHA256_init(key){if(typeof (key)=="string"){HMAC_SHA256_key=string_to_array(key)}else HMAC_SHA256_key=new Array().concat(key);if(HMAC_SHA256_key.length>64){SHA256_init();SHA256_write(HMAC_SHA256_key);HMAC_SHA256_key=SHA256_finalize()};for(var i=HMAC_SHA256_key.length;i<64;i++)HMAC_SHA256_key[i]=0;for(var i=0;i<64;i++)HMAC_SHA256_key[i]^=0x36;SHA256_init();SHA256_write(HMAC_SHA256_key)}
function HMAC_SHA256_write(msg){SHA256_write(msg)}
function HMAC_SHA256_finalize(){var md=SHA256_finalize();for(var i=0;i<64;i++)HMAC_SHA256_key[i]^=0x36^0x5c;SHA256_init();SHA256_write(HMAC_SHA256_key);SHA256_write(md);for(var i=0;i<64;i++)HMAC_SHA256_key[i]=0;delete HMAC_SHA256_key;return SHA256_finalize()}
function HMAC_SHA256_MAC(key,msg){var res;HMAC_SHA256_init(key);HMAC_SHA256_write(msg);res=HMAC_SHA256_finalize();return array_to_hex_string(res)};SHA256_hexchars=new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');SHA256_K=new Array(0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2)
function SHA256_sigma0(x){return((x>>>7)|(x<<25))^((x>>>18)|(x<<14))^(x>>>3)}
function SHA256_sigma1(x){return((x>>>17)|(x<<15))^((x>>>19)|(x<<13))^(x>>>10)}
function SHA256_Sigma0(x){return((x>>>2)|(x<<30))^((x>>>13)|(x<<19))^((x>>>22)|(x<<10))}
function SHA256_Sigma1(x){return((x>>>6)|(x<<26))^((x>>>11)|(x<<21))^((x>>>25)|(x<<7))}
function SHA256_Ch(x,y,z){return z^(x&(y^z))}
function SHA256_Maj(x,y,z){return(x&y)^(z&(x^y))}
function SHA256_Hash_Word_Block(H,W){for(var i=16;i<64;i++)W[i]=(SHA256_sigma1(W[i-2])+W[i-7]+SHA256_sigma0(W[i-15])+W[i-16])&0xffffffff;var state=new Array().concat(H);for(var i=0;i<64;i++){var T1=state[7]+SHA256_Sigma1(state[4])+SHA256_Ch(state[4],state[5],state[6])+SHA256_K[i]+W[i],T2=SHA256_Sigma0(state[0])+SHA256_Maj(state[0],state[1],state[2]);state.pop();state.unshift((T1+T2)&0xffffffff);state[4]=(state[4]+T1)&0xffffffff};for(var i=0;i<8;i++)H[i]=(H[i]+state[i])&0xffffffff}
function SHA256_Hash_Byte_Block(H,w){var W=new Array(16);for(var i=0;i<16;i++)W[i]=w[4*i+0]<<24|w[4*i+1]<<16|w[4*i+2]<<8|w[4*i+3];SHA256_Hash_Word_Block(H,W)};if(doBase64)key=this.base64Decode(key);HMAC_SHA256_init(key);HMAC_SHA256_write(str);var mac=HMAC_SHA256_finalize();mac=this.base64ArrayEncode(mac);return mac});staticDef(cls,'encodeURIComponentUpperCase',function(clearString){var output='',x=0;clearString=clearString.toString();var regex=/(^[a-zA-Z0-9\-_.!~*'\(\)]*)/;while(x<clearString.length){var match=regex.exec(clearString.substr(x));if(match!=null&&match.length>1&&match[1]!=''){output+=match[1];x+=match[1].length}else{var charCode=clearString.charCodeAt(x),hexVal=charCode.toString(16);output+='%'+(hexVal.length<2?'0':'')+hexVal.toUpperCase();x++}};return output});staticDef(cls,'sortEncodeParameters',function(str,isFull){if(isFull){var parts=str.split("?");if(parts.length==1)return str}else var parts=["",str];var params=parts[1].split("&"),newParams=[],len=params.length;for(var i=0;i<len;i++){var param=params[i].split("=");if(param.length==1){newParams.push(params[i])}else{if(param.length>2){var t=param.slice(1);param[1]=t.join("=")};newParams.push(param[0]+"="+this.encodeURIComponentUpperCase(param[1]))}};newParams.sort(function(a,b){if(a===b){return 0}else if(a<b){return -1}else return 1});var retval=(isFull?parts[0]+"?":"")+newParams.join("&");return retval});staticDef(cls,'hmacSha256Amazon',function(str,key,doBase64){var str1=this.sortEncodeParameters(str,false),str2="GET\nwebservices.amazon.com\n/onca/xml\n"+str1;return this.hmacSha256(str2,key,doBase64)})}});jawa.namespace(jawa,'monad');jawa.monad.common=function(monad){monad.map=function(f,m){monad.bind(m,function(a){return monad.unit(f(a))})};monad.join=function(mm){monad.bind(mm,function(a){return a})};monad.sequence=function(ms){var _sequence=function(i,ms){if(ms.length<=i)return monad.unit([]);var m0=ms[i];return monad.bind(m0,function(v){return monad.bind(_sequence(i+1,ms),function(vs){vs.unshift(v);return monad.unit(vs)})})};return _sequence(0,ms)};monad.sequence_=function(ms){var _sequence=function(i,ms){if(ms.length<=i)return monad.unit();var m0=ms[i];return monad.bind(m0,function(){return _sequence(i+1,ms)})};return _sequence(0,ms)}};jawa.monad.liftSideEffects=function(tm,lift,m){};jawa.monad.compose=function(){jawa.monad.liftSideEffects=function(tm,lift,m){};var ts=jawa.util.toArray(arguments),m=ts.pop(),_compose=function(ts,m){if(ts.length==0)return m();var t=ts.shift();return t(_compose(ts,m))},monad=_compose(ts,m);return monad};jawa.monad.List=function(){var monad={};monad.unit=function(v){return[v]};monad.bind=function(m,k){var res=[];for(var i=0;i<m.length;i++)res=res.concat(k(m[i]));return res};jawa.monad.common(monad);monad.fork=function(v){return v};var orig=jawa.monad.liftSideEffects;jawa.monad.liftSideEffects=function(tm,lift,m){orig(tm,lift,m);tm.fork=function(v){return lift(m.fork(v))}};return monad};jawa.monad.ErrT=function(base){var monad={};monad.unit=function(a){return base.unit(["just",a])};monad.bind=function(m,k){return base.bind(m,function(a){switch(a[0]){case'just':return k(a[1]);case'nothing':return base.unit(['nothing',a[1]]);default:}})};jawa.monad.common(monad);monad.fail=function(msg){return base.unit(["nothing",msg])};var lift=function(m){return base.bind(m,function(a){return base.unit(["just",a])})};jawa.monad.liftSideEffects(monad,lift,base);var orig=jawa.monad.liftSideEffects;jawa.monad.liftSideEffects=function(tm,lift,m){orig(tm,lift,m);tm.fail=function(msg){return lift(m.fail(msg))}};return monad};jawa.monad.StateT=function(base){var monad={};monad.unit=function(v){return function(s){return base.unit([v,s])}};monad.bind=function(m,k){return function(s){return base.bind(m(s),function(t){return k(t[0])(t[1])})}};jawa.monad.common(monad);monad.readVar=function(name){return function(s){return base.unit([s[name],s])}};monad.dumpState=function(){return function(s){return base.unit([s,s])}};monad.writeVar=function(name,value){return function(s){var _s={};for(var k in s)_s[k]=s[k];_s[name]=value;return base.unit([null,_s])}};var lift=function(m){return function(s){return base.bind(m,function(a){return base.unit([a,s])})}};jawa.monad.liftSideEffects(monad,lift,base);var orig=jawa.monad.liftSideEffects;jawa.monad.liftSideEffects=function(tm,lift,m){orig(tm,lift,m);tm.readVar=function(name){return lift(m.readVar(name))};tm.dumpState=function(){return lift(m.dumpState())};tm.writeVar=function(name,value){return lift(m.writeVar(name,value))}};return monad};jawa.monad.ContT=function(base){var monad={};monad.unit=function(a){return function(k){return k(a)}};monad.bind=function(m,f){return function(k){return m(function(a){return f(a)(k)})}};jawa.monad.common(monad);monad.callcc=function(f){return function(k){return f(function(a){return function(foo){return k(a)}})(k)}};var lift=function(m){return function(k){return base.bind(m,k)}};jawa.monad.liftSideEffects(monad,lift,base);var orig=jawa.monad.liftSideEffects;jawa.monad.liftSideEffects=function(tm,lift,m){orig(tm,lift,m);tm.callcc=m.callcc};return monad};jawa.monad.liftSideEffects=function(tm,lift,m){};jawa.monad.listErrStateCont=function(){var monad=jawa.monad.compose(jawa.monad.ErrT,jawa.monad.ContT,jawa.monad.StateT,jawa.monad.List),purifyState=function(s){var res={};for(var k in s)if(k.charAt(0)=='.')res[k]=s[k];return res},asyncCount=0,asyncPeriod=20,async=function(fn){asyncCount++;if(asyncCount>asyncPeriod){asyncCount=0;return jawa.util.async(fn)}else return fn()},baseBind=monad.bind;monad.bind=function(m,f){return baseBind(m,function(a){return function(k){return function(s){return async(function(){return f(a)(k)(s)})}}})};monad.run=function(m,cont,abort,state){cont=jawa.util.or(cont,jawa.util.id);abort=jawa.util.or(abort,function(e){throw (e)});state=jawa.util.or(state,{});var k=function(a){return function(s){switch(a[0]){case'just':cont([a,s]);return[purifyState(s)];case'nothing':abort(a[1]);return a[1];default:}}};return m(k)(state)};monad.runVal=function(m,cont,abort,state){cont=jawa.util.or(cont,jawa.util.id);abort=jawa.util.or(abort,function(e){throw (e)});state=jawa.util.or(state,{});var k=function(a){return function(s){switch(a[0]){case'just':cont(a[1]);return[a[1]];case'nothing':abort(a[1]);return a[1];default:}}};return m(k)(state)};monad.mor=function(m1,m2){return function(k){return function(s){return m1(function(a){return function(s){switch(a[0]){case'just':return k(a)(s);case'nothing':return m2(k)(s);default:}}})(s)}}};monad.morList=function(ms){if(ms.length==0)return monad.fail('All cases failed.');if(ms.length==1)return ms[0];var m=ms.shift();return monad.mor(m,monad.morList(ms))};monad.checkPoint=function(f){return function(k){return function(s0){return f(function(a){return function(foo){return function(s){k(a)(s0)}}})(k)(s0)}}};return monad}();jawa.jp=function(root,jpath){if(!YAHOO.lang.isObject(root)&&!YAHOO.lang.isArray(root))throw 'Can only do jpath on object or array.';var monad=jawa.monad.List(),_jpath=function(root,i,jpath){if(jpath.length<=i)return monad.unit(root);var field=jpath[i];if(field=='*'){if(YAHOO.lang.isArray(root)){return monad.bind(monad.fork(root),function(a){return _jpath(a,i+1,jpath)})}else if(YAHOO.lang.isObject(root)){var arr=[];for(var k in root)arr.push(root[k]);return monad.bind(monad.fork(arr),function(a){return _jpath(a,i+1,jpath)})}else throw 'bad *'}else if(!isNaN(parseInt(field))){if(YAHOO.lang.isArray(root)){return monad.bind(monad.unit(root[parseInt(field)]),function(a){return _jpath(a,i+1,jpath)})}else throw 'bad number'}else if(root[field]!=undefined&&root[field]!=null){return monad.bind(monad.unit(root[field]),function(a){return _jpath(a,i+1,jpath)})}else throw 'bad field name '+field};return _jpath(root,0,jpath)};var jptest=function(){return jawa.jp({a:1,b:{c:1,d:2,e:3},c:{f:[{a:'1',b:'2'},{a:'3',b:'4'},{a:'5',b:'6'},{a:'7',b:'8'}]}},['c','f','*','a'])};jawa.regex=function(){var matchAll=function(str,ptn){var res=[];while(true){var match=ptn.exec(str);if(match==null)break;if(match[0].length==0)break;res.push(match);str=RegExp.rightContext};return res},match=function(str,ptn){return ptn.exec(str)};return{matchAll:matchAll,match:match}}();jawa.cps=function(){var unit=function(){var args=jawa.util.toArray(arguments);return function(cont,abort){return cont.apply(this,args)}},bind=function(m,k){return function(cont,abort){return m(function(){var args=jawa.util.toArray(arguments);jawa.util.async(function(){(k.apply(this,args))(cont,abort)})},abort)}},star=function(m,a){return bind(m(a),function(a){return star(m,a)})},or=function(m1,m2){return function(cont,abort){var _abort=function(e){m2(cont,abort)};m1(cont,_abort)}},por=function(m1,m2){return function(cont,abort){var state='start',_cont=function(a){switch(state){case'start':state='finish1';return cont(a);case'finish1':break;case'abort1':return cont(a);default:throw 'program error in jawa.cps.por::_cont'}},_abort=function(e){switch(state){case'state':state='abort1';break;case'finish1':break;case'abort1':return abort(e);default:throw 'program error in jawa.cps.por::_abort'}};m1(_cont,_abort);if(state=='start'||state=='abort1')m2(_cont,_abort)}},pandList=function(ms){var _pandList=function(i,ms){if(ms.length==0)return unit([]);if(i==ms.length-1)return bind(ms[i],function(a){return unit([a])});var m=pand(ms[i],_pandList(i+1,ms));return bind(m,function(a){a[1].unshift(a[0]);return unit(a[1])})};return _pandList(0,ms)},pand=function(m1,m2){return function(cont,abort){var state='start',res1,_cont1=function(a){switch(state){case'start':state='finish1';res1=a;break;case'finish1':return cont([a,res1]);case'abort1':break;default:throw 'program error in jawa.cps.pand::_cont'}},_cont2=function(a){switch(state){case'start':state='finish1';res1=a;break;case'finish1':return cont([res1,a]);case'abort1':break;default:throw 'program error in jawa.cps.pand::_cont'}},_abort=function(e){switch(state){case'start':state='abort1';return abort(e);case'finish1':return abort(e);case'abort1':break;default:throw 'program error in jawa.cps.pand::_abort'}};m1(_cont1,_abort);if(state=='start'||state=='finish1')m2(_cont2,_abort)}},run=function(m,cont,abort){cont=jawa.util.or(cont,jawa.util.id);abort=jawa.util.or(abort,jawa.util.nop);return m(cont,abort)},fail=function(e){return function(cont,abort){abort(e)}},cps={unit:unit,bind:bind,star:star,run:run,por:por,pand:pand,pandList:pandList,fail:fail};jawa.monad.common(cps);return cps}();jawa.Date=newClass({template:function(cls){var normRules=[{pattern:'(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(|\\.\\d{3})-(\\d{2}):(\\d{2})',handler:function(l){return l[1]+'/'+l[2]+'/'+l[3]+' '+l[4]+':'+l[5]+':'+l[6]+' -'+l[8]+l[9]}},{pattern:'(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(|\\.\\d{3})(|Z)',handler:function(l){return l[1]+'/'+l[2]+'/'+l[3]+' '+l[4]+':'+l[5]+':'+l[6]+" GMT"}},{pattern:'(\\d{4})-(\\d{2})-(\\d{2})T',handler:function(l){return l[1]+'/'+l[2]+'/'+l[3]}},{pattern:'(\\d*)-(\\d*)-(\\d*)( (\\d*):(\\d*)(:(\\d*)|)|)',handler:function(l){var res=l[1]+'/'+l[2]+'/'+l[3];if(!jawa.util.isNull(l[5])&&!jawa.util.isNull(l[6])){res+=' '+l[5]+':'+l[6];if(!jawa.util.isNull(l[8]))res+=':'+l[8]};return res}},{pattern:'\\d{4}',handler:function(l){return l[0]+'/01/01'}},{pattern:'(\\d{4})-(\\d{2})',handler:function(l){return l[1]+'/'+l[2]+'/01'}},{pattern:'(.*)Etc/(.*)',handler:function(l){return l[1]+l[2]}}],applyNorm=function(normObj,str){var ptn=new RegExp('^'+normObj.pattern+'$'),l=jawa.regex.match(str,ptn);if(jawa.util.isNull(l))return null;return normObj.handler(l)},normalize=function(str){for(var i=0;i<normRules.length;i++){var res=applyNorm(normRules[i],str);if(!jawa.util.isNull(res))return res};return str};staticDef(cls,'parse',function(str){if(jawa.util.isNull(str))return new Date();return new Date(normalize(str))});staticDef(cls,'parse2Number',function(str){var d=this.parse(str);return Date.parse(d)});staticDef(cls,'toNumber',function(date){return Date.parse(date)});staticDef(cls,'toNumberGMT',function(date){var d=Date.parse(date),now=new Date();return d+now.getTimezoneOffset()*60000});staticDef(cls,'nowGMT',function(){var now=new Date();return now.getTime()+now.getTimezoneOffset()*60000});staticDef(cls,'toString',function(date){return date.toString()});staticDef(cls,'toStringGMT',function(date){if(!date){date=new Date(this.nowGMT())}else if(typeof (date)=="string"){date=new Date(this.toNumberGMT(date))}else if(typeof (date)=="number"){date=new Date(date)}else if((typeof (date)!=="object")||(date.constructor!=Date))date=new Date(this.nowGMT());if(date.getFullYear){var y=date.getFullYear()}else{var y=date.getYear();if(y<1900)y+=1900};var m=date.getMonth()+1;if(m<10)m="0"+m;var d=date.getDate();if(d<10)d="0"+d;var h=date.getHours();if(h<10)h="0"+h;var min=date.getMinutes();if(min<10)min="0"+min;var s=date.getSeconds();if(s<10)s="0"+s;var str=y+"-"+m+"-"+d+"T"+h+":"+min+":"+s+"Z";return str});staticDef(cls,'number2string',function(n){n=jawa.util.toNumber(n);var d=new Date(n);return d.toString().substring(0,24)});staticDef(cls,'clone',function(date){return this.parse(this.toString(date))});cls.units=['Year','Month','Date','Hours','Minutes','Seconds'];jawa.util.arrayEach(['Year','Month','Date','Hours','Minutes','Seconds'],function(term){var funName='future'+term,setter='set'+term,getter='get'+(term=='Year'?'FullYear':term);staticDef(cls,funName,function(date,n){var res=this.clone(date);res[setter](res[getter]()+n);return res})});staticDef(cls,'tomorrow',function(date){return this.futureDate(date,1)});staticDef(cls,'yesterday',function(date){return this.futureDate(date,-1)})}});Soruka={};Soruka.extractVariables=function(str){var regexp=/{\$[^}]*}/g,res=str.match(regexp);if(jawa.util.isNull(res))return[];return jawa.util.arrayMap(str.match(regexp),function(v){return v.substring(2,v.length-1)})};jawa.namespace(Soruka,'DSL');Soruka.DSL.Parser=function(){var exception=newClass({template:function(cls){def(cls,'init',function(msg){this.msg='Soruka DSL parsing error: '+msg})}}),getToken=function(str,ptn){var regexp=new RegExp('^\\s*('+ptn+')'),match=jawa.regex.match(str,regexp);if(match==null)throw new exception('Syntax error in: '+str+' ~ '+ptn);return match},parseSearchString=function(str){try{var match=getToken(str,'"(([^"\\\\]|\\\\"|\\\\\\\\)*)"'),t=parseSearchString(RegExp.rightContext);t.unshift(match[2]);return t}catch(e){try{var match=getToken(str,'[^\\s"]+'),t=parseSearchString(RegExp.rightContext);t.unshift(match[1]);return t}catch(e){try{var match=getToken(str,'');return[]}catch(e){throw (e)}}}},parseIdentifier=function(str){var match=getToken(str,'[_A-Za-z][_A-Za-z0-9]*');return match[1]},parseLVar=function(str){var match=getToken(str,'[\\.|_]'),prefix=match[1],match=parseIdentifier(RegExp.rightContext);return prefix+match},parseNumber=function(str){var match=getToken(str,'[0-9]+(\\.[0-9]+|)');return['const',parseFloat(match[1])]},parseString=function(str){var match=getToken(str,'"(([^"\\\\]|\\\\"|\\\\\\\\)*)"');return['const',match[2]]},parseVar=function(str){var match=parseLVar(str);return['lvar',match]},parseUIParam=function(str){var match=getToken(str,'\\$'),match=parseIdentifier(RegExp.rightContext);return['ui_param',match]},parseFeedbackParam=function(str){var match=getToken(str,'@'),fieldName=parseIdentifier(RegExp.rightContext);return['feedback_param',fieldName]},parseWriteFeedback=function(str){var res=parseFeedbackParam(str),fbp=res[1],match=getToken(RegExp.rightContext,':='),expr=parseTerm1(RegExp.rightContext);return['write_history',fbp,expr]},parseArgs=function(str){try{var arg0=parseExpr(str),match=getToken(RegExp.rightContext,','),args=parseArgs(RegExp.rightContext);args.unshift(arg0);return args}catch(e){try{var arg0=parseExpr(str),match=getToken(RegExp.rightContext,'\\)');return[arg0]}catch(e){try{var match=getToken(str,'\\)');return[]}catch(e){throw (e)}}}},parseFunApp=function(str){var funName=parseIdentifier(str),match=getToken(RegExp.rightContext,'\\('),args=parseArgs(RegExp.rightContext);return['fun_app',funName,args]},parseParen=function(str){var match=getToken(str,'\\('),expr=parseExpr(RegExp.rightContext),match=getToken(RegExp.rightContext,'\\)');return expr},parseBinApp=function(str){var match=getToken(str,'\\('),expr1=parseExpr(RegExp.rightContext),operator=parseBinOperator(RegExp.rightContext),expr2=parseExpr(RegExp.rightContext),match=getToken(RegExp.rightContext,'\\)');return['fun_app',operator,[expr1,expr2]]},binOperators=['||','&&','==','!=','>=','<=','+','-','*','/','~','#','=','<','>'],parseBinOperator=function(str){var match=getToken(str,'(\\|\\||&&|==|!=|>=|<=|[\\+\\-\\*\\/~\\#=<>])');return match[2]},parseRoot=function(str){var match=getToken(str,'root');return['root']},parseCode=function(str){var match=getToken(str,'`\\('),expr=parseExpr(RegExp.rightContext),match=getToken(RegExp.rightContext,'\\)');return['code',expr]},parseSwitch=function(str){var match=getToken(str,'switch {'),cases=parseCases(RegExp.rightContext),match=getToken(RegExp.rightContext,'}');return['switch',cases]},parseCase=function(str){var cond=parseExpr(str),match=getToken(RegExp.rightContext,'=>'),expr=parseExpr(RegExp.rightContext);return[cond,expr]},parseCases=function(str){var head=parseCase(str),rest=RegExp.rightContext;try{var match=getToken(rest,'\\|'),tail=parseCases(RegExp.rightContext);tail.unshift(head);return tail}catch(e){try{var match=getToken(rest,'');return[head]}catch(e){throw (e)}}},parseTerm0=function(str){try{return parseNumber(str)}catch(e){try{return parseString(str)}catch(e){try{return parseVar(str)}catch(e){try{return parseUIParam(str)}catch(e){try{return parseFeedbackParam(str)}catch(e){try{return parseFunApp(str)}catch(e){try{return parseParen(str)}catch(e){try{return parseBinApp(str)}catch(e){try{return parseRoot(str)}catch(e){try{return parseCode(str)}catch(e){try{return parseSwitch(str)}catch(e){throw (e)}}}}}}}}}}}},parseJPath=function(str){var match=getToken(str,'\\\\'),rest=RegExp.rightContext;try{var field=parseJPathField(rest),fields=parseJPath(RegExp.rightContext);fields.unshift(field);return fields}catch(e){try{return[parseJPathField(rest)]}catch(e){throw (e)}}},parseJPathField=function(str){try{var prefix=parseIdentifier(str),match=getToken(RegExp.rightContext,':'),tag=parseIdentifier(RegExp.rightContext);return prefix+':'+tag}catch(e){try{return parseIdentifier(str)}catch(e){try{var n=parseNumber(str);return n[1]}catch(e){try{var match=getToken(str,'\\*');return'*'}catch(e){try{var match=getToken(str,'\\$');return'$'}catch(e){try{var match=getToken(str,'[\\#\\.@]'),id=parseIdentifier(RegExp.rightContext);return match[1]+id}catch(e){throw (e)}}}}}}},parseProj=function(str){try{var jpath=parseJPath(str);return['jpath',['root'],jpath]}catch(e){try{var subroot=parseTerm0(str),rest=RegExp.rightContext;try{var jpath=parseJPath(rest);return['jpath',subroot,jpath]}catch(e){try{var match=getToken(rest,'');return subroot}catch(e){throw (e)}}}catch(e){throw (e)}}},parseAsgnOperator=function(str){var match=getToken(str,'(:=|:<|:>)');return match[1]},parseAsgn=function(str){var lvar=parseLVar(str),operator=parseAsgnOperator(RegExp.rightContext),expr=parseTerm1(RegExp.rightContext);return['assign',lvar,operator,expr]},parseTerm1=function(str){try{return parseAsgn(str)}catch(e){try{return parseWriteFeedback(str)}catch(e){try{return parseProj(str)}catch(e){throw (e)}}}},parseExpr=function(str){var _parseExpr=function(str){var t=parseAlt(str),rest=RegExp.rightContext;try{var match=getToken(rest,';'),ts=_parseExpr(RegExp.rightContext);ts.unshift(t);return ts}catch(e){try{var match=getToken(rest,'');return[t]}catch(e){throw (e)}}},expr=_parseExpr(str);if(expr.length==1){return expr[0]}else return['seq',expr]},parseAlt=function(str){var _parseAlt=function(str){var expr0=parseTerm1(str),rest=RegExp.rightContext;try{var match=getToken(rest,'\\|\\|\\|'),exprs=_parseAlt(RegExp.rightContext);exprs.unshift(expr0);return exprs}catch(e){try{var match=getToken(rest,'');return[expr0]}catch(e){throw (e)}}},alt=_parseAlt(str);if(alt.length==1){return alt[0]}else return['or',alt]},parseProg=function(str){var expr=parseExpr(str),match=getToken(RegExp.rightContext,';');return expr},contract=function(str){var regexp=new RegExp('[\\s\\n]*','g');return str.replace(regexp,'')},wrapAll=function(p){return function(str){var expr=p(str),match=getToken(RegExp.rightContext,'$');return expr}};return{parseLVar:parseLVar,parseExpr:wrapAll(parseExpr),parseProg:wrapAll(parseProg),parseJPath:wrapAll(parseJPath),parseUIParam:wrapAll(parseUIParam),parseSearchString:wrapAll(parseSearchString),contract:contract,exception:exception,binOperators:binOperators}}();jawa.namespace(Soruka,'DSL');Soruka.DSL.primitives=newClass({template:function(primitives){var funDef=function(fn,signature){return function(){var args=jawa.util.toArray(arguments);if(args.length!=signature.types.length)throw 'Soruka Error: Wrong number of arguments for '+signature.funName+'.  '+signature.types.length+' expected, '+args.length+' given.';for(var i=0;i<args.length;i++)if(!typeCheck(args[i],signature.types[i]))throw 'Soruka Error: The argument '+i+' argument of '+signature.funName+' must be of the type '+signature.types[i]+'. arg: '+jawa.json.encode(args[i]);return fn.apply(this,args)}},funDefBinNumString=function(fn,funName){var _fn=function(a,b){if(jawa.util.isNumber(a))a=parseFloat(a);if(jawa.util.isNumber(b))b=parseFloat(b);return fn(a,b)},signature={funName:funName,types:['numberOrString','numberOrString']};return funDef(_fn,signature)},funDefBinNum=function(fn,funName){var _fn=function(a,b){return fn(parseFloat(a),parseFloat(b))},signature={funName:funName,types:['number','number']};return funDef(_fn,signature)},unCode=function(e){if(e[0]!='code')throw 'Cannot unCode a non-code: '+jawa.json.encode(e);return e[1]},toCPS=function(f){return function(){var args=jawa.util.toArray(arguments),abort=args.pop(),cont=args.pop();return function(k){return function(s){try{var a=f.apply(this,args)}catch(e){return abort(e)(k)(s)};return cont(['just',a])(k)(s)}}}},typeCheck=function(v,t){switch(t){case'numberOrString':return jawa.util.isNumber(v)||YAHOO.lang.isString(v);case'number':return jawa.util.isNumber(v);case'string':return YAHOO.lang.isString(v);case'object':return YAHOO.lang.isObject(v);case'array':return YAHOO.lang.isArray(v);case'boolean':return YAHOO.lang.isBoolean(v);case'function':return YAHOO.lang.isFunction(v);case'null':return YAHOO.lang.isNull(v);default:throw 'unsupported type.'}},daysInWeek=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],fullDaysInWeek=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],monthNames=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],fullMonthNames=['January','Feburary','March','April','May','June','July','August','September','October','November','December'],simplePrimitives={'+':funDefBinNumString(function(a,b){return a+b},'+'),'-':funDefBinNum(function(a,b){return a-b},'-'),'*':funDefBinNum(function(a,b){return a*b},'*'),'/':funDefBinNum(function(a,b){if(b==0)throw 'Divided by zero.';return a/b},'/'),'#':function(a,i){if(!YAHOO.lang.isObject(a))throw 'The first argument for # must be an object.';if(!YAHOO.lang.isNumber(i)&&!YAHOO.lang.isString(i))throw 'The second argument for # must be a number or a string.';var res=a[i];if(jawa.util.isNull(res)){throw 'no index "'+i+'" can be found in: '+jawa.json.encode(a)}else return res},'~':function(a,b){try{a=jawa.util.toString(a)}catch(e){throw 'The first argument for replace must be a string.'};try{b=jawa.util.toString(b)}catch(e){throw 'The third argument for replace must be a string.'};var ptn=new RegExp(b),res=jawa.regex.matchAll(a,ptn);if(res.length==0)throw 'Regex matching failure: '+a+'~'+b;return res},replace:function(a,ptn,b){try{a=jawa.util.toString(a)}catch(e){throw 'The first argument for replace must be a string.'};try{ptn=jawa.util.toString(ptn)}catch(e){throw 'The second argument for replace must be a string.'};try{b=jawa.util.toString(b)}catch(e){throw 'The third argument for replace must be a string.'};var ptn=new RegExp(ptn,'g');return a.replace(ptn,b)},replaceFirst:function(a,ptn,b){try{a=jawa.util.toString(a)}catch(e){throw 'The first argument for replace must be a string.'};try{ptn=jawa.util.toString(ptn)}catch(e){throw 'The second argument for replace must be a string.'};try{b=jawa.util.toString(b)}catch(e){throw 'The third argument for replace must be a string.'};var ptn=new RegExp(ptn);return a.replace(ptn,b)},toUpperCase:function(s){return s.toUpperCase()},toLowerCase:function(s){return s.toLowerCase()},explode:function(s){return Soruka.DSL.Parser.parseSearchString(s)},contains:funDef(function(a,b){var l=Soruka.DSL.Parser.parseSearchString(b);for(var i=0;i<l.length;i++){var ptn=new RegExp(l[i],'i'),res=jawa.regex.matchAll(a,ptn);if(res.length==0)return false};return true},{funName:'contains',types:['string','string']}),parseSearchString:function(s){if(!typeCheck(s,'string'))throw 'The first argument of parseSearchString must be a string.';return Soruka.DSL.Parser.parseSearchString(s)},count:function(a){if(!YAHOO.lang.isArray(a)&&!YAHOO.lang.isString(a))throw 'Soruka Error: count must take an array or string as argument.';return a.length},assert:function(b){if(!b)throw 'Soruka Error: assert failure.'},assertFalse:function(b){if(b)throw 'Soruka Error: assert false failure.'},cat:function(){var args=jawa.util.toArray(arguments),res='';for(var i=0;i<args.length;i++)res+=args[i];return res},zip:function(){var ll=jawa.util.toArray(arguments),len=jawa.util.arrayFoldr(jawa.util.clone(ll),function(a,b){return Math.min(a.length,b)},ll[0].length),res=new Array();for(var i=0;i<len;i++){var e=jawa.util.arrayMap(ll,function(l){return l[i]});res.push(e)};return res},merge:function(arr1,arr2){return arr1.concat(arr2)},abs:function(a){return Math.abs(parseFloat(a))},not:function(b){if(b)return false;return true},memberOf:function(a,o){return jawa.util.arrayInclude(a,o)},push:function(a,o,length){a.unshift(o);if(!jawa.util.empty(length))while(a.length>length)a.pop();return a},append:function(a,o){a.push(o);return a},date:function(str){return jawa.Date.parse2Number(str)},date2string:function(d){d=jawa.util.toNumber(d);var date=jawa.Date.parse(d);return date.toString()},today:function(){return jawa.Date.parse2Number()},now:function(){return jawa.Date.parse2Number()},nowGMT:function(){return jawa.Date.nowGMT()},toStringGMT:function(date){return jawa.Date.toStringGMT(date)},today0:function(){var d=new Date();d.setHours(0);d.setMinutes(0);d.setSeconds(0);return jawa.Date.parse2Number(d)},futureDate:function(d,n){var date=jawa.Date.parse(d);if(isNaN(date))throw 'The first argument of futureDate must be a date';var num=jawa.util.toNumber(n);if(isNaN(num))throw 'The second argument of futureDate must be a number';return Date.parse(jawa.Date.futureDate(date,num))},futureHours:function(d,n){var date=jawa.Date.parse(d);if(isNaN(date))throw 'The first argument of futureDate must be a date';var num=jawa.util.toNumber(n);if(isNaN(num))throw 'The second argument of futureDate must be a number';return Date.parse(jawa.Date.futureHours(date,num))},future:function(d,n,unit){var date=jawa.Date.parse(d);if(isNaN(date))throw 'The first argument of future must be a date';var num=jawa.util.toNumber(n);if(isNaN(num))throw 'The second argument of future must be a number';if(!jawa.util.arrayInclude(jawa.Date.units,unit))throw 'The third argument of future is not a valid time unit: '+jawa.json.encode(unit);var method='future'+unit;return Date.parse(jawa.Date[method](date,num))},curl:function(url,option){return Soruka.DSL.javaCurl(url,option)},log:function(s){Soruka.DSL.java.log(s)},urlEncode:function(str){return encodeURIComponent(str)},urlDecode:function(str){return decodeURIComponent(str)},list:function(){return jawa.util.toArray(arguments)},toList:function(o){if(YAHOO.lang.isArray(o))return o;return[o]},apply:function(a,code){var res=Soruka.DSL.monad.runVal(Soruka.DSL.interpreter(a,{},{},Soruka.DSL.primitives).interpExpr(unCode(code)));return res},map:function(a,code){var res=[];jawa.util.arrayEach(a,function(e){var t=Soruka.DSL.monad.runVal(Soruka.DSL.interpreter(e,{},{},Soruka.DSL.primitives).interpExpr(unCode(code)));res=res.concat(t)});return res},filter:function(a,code){var res=[];jawa.util.arrayEach(a,function(e){var b=Soruka.DSL.monad.runVal(Soruka.DSL.interpreter(e,{},{},Soruka.DSL.primitives).interpExpr(unCode(code)));if(b[0])res.push(e)});return res},foldr:function(l,n,code){var res=n;jawa.util.arrayEach(l,function(e){res=Soruka.DSL.monad.runVal(Soruka.DSL.interpreter([e,res],{},{},Soruka.DSL.primitives).interpExpr(unCode(code)));res=res[0]});return res},join:function(l,s){return l.join(s)},joinList:function(ll){var res=new Array();jawa.util.arrayEach(ll,function(l){res=res.concat(l)});return res},'&&':function(a,b){return a&&b},'||':function(a,b){return a||b},'throw':function(s){throw s},'new':function(){return{}},set:function(o,field,value){o[field]=value;return o},serialize:function(o){return YAHOO.lang.JSON.stringify(o)},deserialize:function(s){return YAHOO.lang.JSON.parse(s)},'eval':function(s){return eval('('+s+')')},subString:function(s,start,length){var stop=start+length;return s.substring(start,stop)},daylightSaving:function(d){var date=jawa.Date.parse(d),firstOfJan=new Date();firstOfJan.setMonth(0);return date.getTimezoneOffset()!=firstOfJan.getTimezoneOffset()},getHours:function(d,format){var n=jawa.Date.parse(d).getHours(),to12=function(n){var res=n%12;if(res==0)res=12;return res};switch(format){case'12':return to12(n);case'justified12':return jawa.util.i2s(to12(n),2);case'justified24':return jawa.util.i2s(n,2);default:return n}},getAmPm:function(d,format){var n=jawa.Date.parse(d).getHours();switch(format){case'upper':return(n<12?'AM':'PM');default:return(n<12?'am':'pm')}},getMinutes:function(d){return jawa.util.i2s(jawa.Date.parse(d).getMinutes(),2)},getSeconds:function(d){return jawa.util.i2s(jawa.Date.parse(d).getSeconds(),2)},getDate:function(d,format){var n=jawa.Date.parse(d).getDate();switch(format){case'justified':return jawa.util.i2s(n,2);default:return n+''}},getDay:function(d,format){var n=jawa.Date.parse(d).getDay();switch(format){case'short':return daysInWeek[n];case'full':return fullDaysInWeek[n];default:return n}},getMonth:function(d,format){var n=jawa.Date.parse(d).getMonth();switch(format){case'short':return monthNames[n];case'full':return fullMonthNames[n];case'justified':return jawa.util.i2s(n+1,2);default:return(n+1)+''}},monthName:function(m){if(m<1||m>12)throw 'bad input for monthName: "'+m+'"';m=parseInt(m);return monthNames[m-1]},getYear:function(d,format){var n=jawa.Date.parse(d).getFullYear();switch(format){case'short':return jawa.util.i2s(n,2);default:return n+''}},getTimeZone:function(d){var s=jawa.Date.parse(d).toString();return s.substring(s.length-4,s.length-1)},setHours:function(d,v){return jawa.Date.parse(d).setHours(v)},setMinutes:function(d,v){return jawa.Date.parse(d).setMinutes(v)},setSeconds:function(d,v){return jawa.Date.parse(d).setSeconds(v)},setYear:function(d,v){return jawa.Date.parse(d).setFullYear(v)},setMonth:function(d,v){return jawa.Date.parse(d).setMonth(v-1)},setDate:function(d,v){return jawa.Date.parse(d).setDate(v)},take:function(n,l){if(n>=l.length)return l;var res=new Array();for(var i=0;i<n;i++)res.push(l[i]);return res},toNumber:function(o){var res=jawa.util.toNumber(o);if(isNaN(res)){throw 'object is not a number: "'+o+'"'}else return res},toArray:function(o){if(YAHOO.lang.isArray(o)){return o}else return[o]},nat:function(n){var res=new Array();for(var i=0;i<n;i++)res.push(i);return res},removeFractional:function(n){var _n=jawa.util.toNumber(n);if(isNaN(_n))throw 'removeFractional expects number in position 1, but gets: '+jawa.json.encoding(n);return parseInt(n)},floor:function(n){var _n=jawa.util.toNumber(n);if(isNaN(_n))throw 'floor expects number in position 1, but gets: '+jawa.json.encoding(n);return Math.floor(n)},ceiling:function(n){var _n=jawa.util.toNumber(n);if(isNaN(_n))throw 'ceiling expects number in position 1, but gets: '+jawa.json.encoding(n);return jawa.util.ceiling(n)},truncateDecimal:function(n,b){if(!typeCheck(n,'number'))throw 'truncateDecimal expects a number at position 0 but get: '+jawa.json.encode(n);if(!typeCheck(b,'number'))throw 'truncateDecimal expects a number at position 1 but get: '+jawa.json.encode(b);var d=1;for(var i=0;i<b;i++){n*=10;d*=10};return parseInt(n)/d},'=':function(a,b){return a==b},'==':function(a,b){return a==b},'!=':function(a,b){return a!=b},split:function(s,d){var ptn=new RegExp(d);return s.split(ptn)},htmlentities:function(s){return jawa.php.htmlentities(s)},md5:function(s){return jawa.php.md5(s)},hmacSha256:function(str,key){return jawa.php.hmacSha256(str,key,false)},hmacSha256Amazon:function(str,key){return jawa.php.hmacSha256Amazon(str,key,false)},sortEncodeParameters:function(str){return jawa.php.sortEncodeParameters(str,false)},sortEncodeUrl:function(str){return jawa.php.sortEncodeParameters(str,true)},empty:function(o){return jawa.util.empty(o)},code:function(e){return['code',e]},unCode:unCode,lift:function(v){return['code',['lift',v]]},getMath:function(e){return Math},appJSFun:function(){var args=jawa.util.toArray(arguments),fn=args.shift();return fn.apply(this,args)},domSignature:function(dom){return Soruka.DSL.Dom.signature(dom)},domDiff:function(dom1,dom2,includes,excludes){return Soruka.DSL.Dom.diff(dom1,dom2,includes,excludes)},domDiffSummary:function(changes){var numberOfAdd=0,numberOfDel=0,numberOfMod=0;for(var i=0;i<changes.length;i++){var change=changes[i];switch(change.status){case'a':numberOfAdd++;break;case'd':numberOfDel++;break;case'm':numberOfMod++;break;default:throw 'unrecognized page change status: '+change.status}};return(numberOfAdd+" addition(s); "+numberOfDel+" deletion(s); "+numberOfMod+" updated(s). ")},timeOut:jawa.util.nop,'<':funDefBinNumString(function(a,b){return a<b},'<'),'>':funDefBinNumString(function(a,b){return a>b},'>'),'<=':funDefBinNumString(function(a,b){return a<=b},'<='),'>=':funDefBinNumString(function(a,b){return a>=b},'>=')};for(var k in simplePrimitives)simplePrimitives[k]=toCPS(simplePrimitives[k]);jawa.util.extendObj(primitives,simplePrimitives);primitives.apply=function(a,code,cont,abort){return function(k){return function(s){var res;try{res=Soruka.DSL.monad.runVal(Soruka.DSL.interpreter(a,{},{},Soruka.DSL.primitives).interpExpr(unCode(code)),null,null,jawa.util.clone(s))}catch(e){return abort(e)(k)(s)};return cont(['just',res[0]])(k)(s)}}};primitives.map=function(a,code,cont,abort){return function(k){return function(s){var res=[];try{jawa.util.arrayEach(a,function(e){var t=Soruka.DSL.monad.runVal(Soruka.DSL.interpreter(e,{},{},Soruka.DSL.primitives).interpExpr(unCode(code)),null,null,jawa.util.clone(s));res=res.concat(t)})}catch(e){return abort(e)(k)(s)};return cont(['just',res])(k)(s)}}};primitives.filter=function(l,code,cont,abort){return function(k){return function(s){var res=[];try{jawa.util.arrayEach(l,function(e){var b=Soruka.DSL.monad.runVal(Soruka.DSL.interpreter(e,{},{},Soruka.DSL.primitives).interpExpr(unCode(code)),null,null,jawa.util.clone(s));if(b[0])res.push(e)})}catch(e){return abort(e)(k)(s)};return cont(['just',res])(k)(s)}}};primitives.foldr=function(l,n,code,cont,abort){return function(k){return function(s){var res=n;try{jawa.util.arrayEach(l,function(e){res=Soruka.DSL.monad.runVal(Soruka.DSL.interpreter([e,res],{},{},Soruka.DSL.primitives).interpExpr(unCode(code)),null,null,jawa.util.clone(s));res=res[0]})}catch(e){return abort(e)(k)(s)};return cont(['just',res])(k)(s)}}}}});jawa.namespace(Soruka,'DSL');Soruka.DSL.primitives.extendClass(function(me){var monad=Soruka.DSL.monad,unCode=function(e){if(e[0]!='code')throw 'Cannot unCode a non-code: '+jawa.json.encode(e);return e[1]};me.log=function(a,cont,abort){console.log(a);return cont(['just',null])};me['~']=function(a,b,cont,abort){if(!YAHOO.lang.isString(a))return abort('The first argument for ~ must be a string.');if(!YAHOO.lang.isString(b))return abort('The second argument for ~ must be a string.');var ptn=new RegExp(b),res=jawa.regex.matchAll(a,ptn);if(res.length>0){return cont(['just',res])}else return abort('Regex matching failure: '+a+'~'+b)};me.curl=function(){var args=jawa.util.toArray(arguments),abort=args.pop(),cont=args.pop(),url=args.shift(),toJson=args.length>0?args[0]:'',action='/subscription/curl?format=json',data=jawa.util.toUrlParams({url:url,toJson:toJson});return function(k){return function(s){$.ajax({type:"post",dataType:"json",url:action,data:data,success:function(o){var res=o.data;if(toJson)try{res=YAHOO.lang.JSON.parse(res)}catch(e){return abort(e)(k)(s)};console.log('curl res begin');console.log(res);console.log('curl res end');return cont(['just',res])(k)(s)},error:function(e){return abort(e)(k)(s)}})}}};me.licurl=function(){var args=jawa.util.toArray(arguments),abort=args.pop(),cont=args.pop(),url=args.shift(),action='/subscription/licurl?format=json&url='+encodeURIComponent(url);return function(k){return function(s){$.ajax({type:"get",datatype:"json",url:action,success:function(o){console.log('result of '+actionName+': ');console.log(o);var data=YAHOO.lang.JSON.parse(o);console.log(data);data=data.res;switch(data.code){case'ok':var res=data.value;return cont(['just',res])(k)(s);case'error':var e='no results for action: '+actionName+' with args: '+argsStr;return abort(e)(k)(s);default:var e='unrecogonized return code for action '+actionName;return abort(e)(k)(s)}},error:function(e){return abort(e)(k)(s)}})}}};me.cb=function(actionName,args,cont,abort){var argsStr=jawa.util.toUrlParams(args),action='/subscription/'+actionName+'?format=json&'+argsStr;return function(k){return function(s){$.ajax({type:"get",datatype:"json",url:action,success:function(o){console.log('result of '+actionName+': ');console.log(o);var data=YAHOO.lang.JSON.parse(o);console.log(data);data=data.res;switch(data.code){case'ok':var res=data.value;return cont(['just',res])(k)(s);case'error':var e='no results for action: '+actionName+' with args: '+argsStr;return abort(e)(k)(s);default:var e='unrecogonized return code for action '+actionName;return abort(e)(k)(s)}},error:function(e){return abort(e)(k)(s)}})}}};me.zipToCityState=function(zipCode,cont,abort){return me.cb('zip-to-city-state',{zipcode:zipCode},cont,abort)};me.zipToCounty=function(zipCode,cont,abort){return me.cb('zip-to-county',{zipcode:zipCode},cont,abort)};me.zipToNoaa=function(zipCode,cont,abort){return me.cb('zip-to-noaa',{zipcode:zipCode},cont,abort)};me.cityStateToZip=function(city,state,cont,abort){return me.cb('city-state-to-zip',{city:city,state:state},cont,abort)};me.cityStateToCounty=function(city,state,cont,abort){return me.cb('city-state-to-county',{city:city,state:state},cont,abort)};me.cityStateToNoaa=function(city,state,cont,abort){return me.cb('city-state-to-noaa',{city:city,state:state},cont,abort)};me.isValidAirportCode=function(s,cont,abort){return me.cb('is-valid-airport-code',{s:s},cont,abort)};me.getSubscriptions=function(){var args=jawa.util.toArray(arguments),abort=args.pop(),cont=args.pop(),n=jawa.util.dig(args,'n',20),aqId=SubscriptionDialog.getAbstractQueryId();return me.cb('get-subscriptions',{id:aqId,n:n},cont,abort)};me.dialog=function(){var args=jawa.util.toArray(arguments),abort=args.pop(),cont=args.pop(),data=args.shift(),fcs=args.shift(),force=false;if(args.length>0)force=args[0]!=0;var parseDialogData=function(data,fcs){var mapping={};jawa.util.arrayEach(fcs.split(','),function(s){var l=s.split(':');mapping[l[0]]=l[1]});return jawa.util.arrayMap(data,function(d){var res={};for(var k in mapping)res[k]=d[mapping[k]];return res})};data=parseDialogData(data,fcs);if(data.length==1&&!force)return cont(['just',data[0].value]);console.log(data);return function(k){return function(s){var uiParams={type:{name:"chooser",display:"table",values:data},name:'foo',label:'bar',selection:'single'};SubscriptionDialog.showDialog({},[uiParams],function(a){cont(['just',a.value])(k)(s)})}}};me.dialogX=function(uiPresentation,uiParams,cont,abort){console.log(uiPresentation);console.log(uiParams);var list2obj=function(l){var o={__label__:{}};jawa.util.arrayEach(l,function(e){o[e.name]=e.value;o.__label__[e.name]=e.label});return o};return function(k){return function(s){var okClick=function(a){console.log('return of dialogX: ');console.log(a);cont(['just',list2obj(a)])(k)(s)},okButton={click:okClick};if(!jawa.util.empty(uiPresentation.okButtonName))okButton.label=uiPresentation.okButtonName;uiPresentation.buttons={btnOK:okButton};SubscriptionDialog.showDialog(uiPresentation,uiParams)}}};me.dialogPreview=function(uiPresentation,uiParams,cont,abort){console.log('show preview dialog from dsl');console.log(uiPresentation);console.log(uiParams);return function(k){return function(s){SubscriptionDialog.showPreview(uiPresentation,uiParams)}}};me.apply=function(a,code,cont,abort){return function(k){return function(s){return jawa.util.async(function(){return Soruka.DSL.monad.runVal(Soruka.DSL.interpreter(a,{},{},Soruka.DSL.primitives).interpExpr(unCode(code)),function(a){return cont(['just',a])(k)(s)},function(e){return abort(e)(k)(s)},jawa.util.clone(s))})}}};me.map=function(a,code,cont,abort){return function(k){return function(s){var ms=jawa.util.arrayMap(a,function(e){return function(_cont,_abort){return Soruka.DSL.monad.runVal(Soruka.DSL.interpreter(e,{},{},Soruka.DSL.primitives).interpExpr(unCode(code)),_cont,_abort,jawa.util.clone(s))}});jawa.util.async(function(){return jawa.cps.sequence(ms)(function(a){cont(['just',a])(k)(s)},function(e){abort(e)(k)(s)})})}}};me.filter=function(l,code,cont,abort){var _filter=function(l,code,cont,abort){var cps=jawa.cps;if(l.length==0)return cont(['just',[]]);var e=l.shift();return _filter(l,code,function(rest){return function(k){return function(s){jawa.util.async(function(){if(rest[0]=='nothing')return abort(rest[1])(k)(s);return Soruka.DSL.monad.runVal(Soruka.DSL.interpreter(e,{},{},Soruka.DSL.primitives).interpExpr(unCode(code)),function(a){if(a)rest[1].unshift(e);return cont(['just',rest[1]])(k)(s)},function(e){return abort(e)(k)(s)},jawa.util.clone(s))})}}},abort)};return _filter(jawa.util.clone(l),code,cont,abort)};me.foldr=function(l,n,code,cont,abort){var _foldr=function(l,code,cont,abort){var cps=jawa.cps;if(l.length==0)return cont(['just',n]);var e=l.shift();return _foldr(l,code,function(rest){return function(k){return function(s){jawa.util.async(function(){if(rest[0]=='nothing')return abort(rest[1])(k)(s);return Soruka.DSL.monad.runVal(Soruka.DSL.interpreter([e,rest[1]],{},{},Soruka.DSL.primitives).interpExpr(unCode(code)),function(a){return cont(['just',a])(k)(s)},function(e){return abort(e)(k)(s)},jawa.util.clone(s))})}}},abort)};return _foldr(jawa.util.clone(l),code,cont,abort)};me.createConcreteQuery=function(params,cont,abort){return function(k){return function(s){var _cont=function(a){cont(['just',a.id])(k)(s)},_abort=function(e){abort(e)(k)(s)},aqId=SubscriptionDialog.getAbstractQueryId(),kind=SubscriptionDialog.getAbstractQueryKind();Soruka.Subscription.createConcreteQuery(aqId,kind,params)(_cont,_abort)}}};me.getConcreteQueryHistory=function(cqId,numberOfEntries,dateBack,cont,abort){return me.cb('get-concrete-query-history',{cqId:cqId,numberOfEntries:numberOfEntries,dateBack:dateBack},cont,abort)};me.getLuceneHistory=function(cqId,terms,nterms,numberOfEntries,cont,abort){var _abort=function(e){return cont('just',[])};return me.cb('get-lucene-history',{cqId:cqId,numberOfEntries:numberOfEntries,terms:jawa.json.encode(terms),nterms:jawa.json.encode(nterms)},cont,_abort)};var user=null;me.user=function(cont,abort){if(jawa.util.empty(user)){var _cont=function(res){user=res[1];return cont(res)};return me.cb('get-user-info',{},_cont,abort)}else return cont(['just',user])};me.timeOut=function(cont,abort){return function(k){return function(s){setTimeout(function(){cont(['just',1])(k)(s)},0)}}}});jawa.namespace(Soruka,'DSL');Soruka.DSL.monad=jawa.monad.listErrStateCont;jawa.monad.listErrState=Soruka.DSL.monad;Soruka.DSL.interpreter=function(item,uiParams,feedbackParams,fns){var monad=Soruka.DSL.monad,interpProgram=function(program){var ms=new Array();for(var i=0;i<program.length;i++)ms.push(interpStatement(program[i]));return monad.sequence_(ms)},interpStatement=function(statement){return monad.bind(interpExpr(statement.expr),function(a){return monad.writeVar(statement.lvar,a)})},interpExpr=function(expr){switch(expr[0]){case'lvar':return interpLVar(expr[1]);case'jpath':return interpJPath(expr[1],expr[2]);case'or':return interpOr(expr[1]);case'seq':return interpSeq(expr[1]);case'regex':return interpRegex(expr[1],expr[2]);case'ui_param':return interpUIParam(expr[1]);case'feedback_param':return interpFeedbackParam(expr[1]);case'fun_app':return interpFunApp(expr[1],expr[2]);case'fork':return interpFork(expr[1]);case'const':return interpConst(expr[1]);case'root':return interpRoot();case'history':return interpHistory();case'write_history':return interpWriteHistory(expr[1],expr[2]);case'assign':return interpAsgn(expr[1],expr[2],expr[3]);case'return':return interpReturn();case'code':return interpCode(expr[1]);case'switch':return interpSwitch(expr[1]);case'while':return interpWhile(expr[1],expr[2]);case'foreach':return interpForeach(expr[1],expr[2],expr[3]);case'obj':return interpObj(expr[1]);case'lift':return interpLift(expr[1]);default:throw 'unrecognized statement in interpExpr: '+jawa.json.encode(expr)}},interpOr=function(cases){var ms=[];for(var i=0;i<cases.length;i++)ms.push(interpExpr(cases[i]));return monad.morList(ms)},interpSeq=function(items){var ms=[];for(var i=0;i<items.length;i++)ms.push(interpExpr(items[i]));return monad.bind(monad.sequence(ms),function(vs){if(vs.length==0)return monad.fail('seq expression cannot be empty.');return monad.unit(vs[vs.length-1])})},interpAsgn=function(lvar,operator,expr){var m=monad.bind(interpExpr(expr),function(a){if(YAHOO.lang.isArray(a)){switch(operator){case':>':if(a.length==1){return monad.unit(a[0])}else return monad.fail(':= can only be used on a singleton list.');case':<':if(!YAHOO.lang.isArray(a))return monad.fail('Must :< on an array.');return monad.fork(a);case':=':return monad.unit(a);default:}}else return monad.unit(a)});return monad.bind(m,function(a){return monad.bind(monad.writeVar(lvar,a),function(foo){return monad.unit(a)})})},interpJPath=function(root,jpath){return monad.bind(interpExpr(root),function(a){try{return monad.fork(jawa.jp(a,jpath))}catch(e){var aJson=YAHOO.lang.JSON.stringify(a);return monad.fail('Path: "'+jpath.join(',')+'" does not exist in '+aJson)}})},interpRoot=function(){return monad.unit(item)},interpHistory=function(){return monad.unit(feedbackParams)},interpWriteHistory=function(name,expr){return monad.bind(interpExpr(expr),function(a){feedbackParams[name]=a;return monad.unit(a)})},interpRegex=function(expr,regexp){return monad.bind(interpExpr(expr),function(a){if(!YAHOO.lang.isString(a))return monad.fail('Must do a regex match on a string.');return monad.unit(a.match(regexp))})},interpFork=function(expr){return monad.bind(interpExpr(expr),function(a){if(!YAHOO.lang.isArray(a))return monad.fail('Must fork on an array.');return monad.fork(a)})},interpUIParam=function(name){return monad.unit(uiParams[name])},interpFeedbackParam=function(name){return monad.bind(monad.unit(null),function(foo){var a=feedbackParams[name];if(jawa.util.isNull(a)){return monad.fail('no feedback named '+name)}else return monad.unit(a)})},interpLVar=function(name){return monad.bind(monad.readVar(name),function(a){if(jawa.util.isNull(a)){return monad.fail('no left variable: '+name+' is defined.')}else return monad.unit(a)})},interpFunApp=function(funName,args){var ms=[];for(var i=0;i<args.length;i++)ms.push(interpExpr(args[i]));return monad.bind(monad.sequence(ms),function(vs){try{if(fns[funName]==undefined||fns[funName]==null)throw 'The function "'+funName+'" does not exist.';var fn=fns[funName];return monad.callcc(function(cont){return fn.apply(this,vs.concat(cont,monad.fail))})}catch(e){var msg='Error happens in function '+funName+': '+e;return monad.fail(msg)}})},interpConst=function(expr){if(YAHOO.lang.isString(expr)){expr=expr.replace(/\\\\/g,'\\');expr=expr.replace(/\\"/g,'"')};return monad.unit(expr)},interpReturn=function(){return monad.bind(monad.dumpState(),function(a){var res={};for(var k in a)if(k.charAt(0)=='.')res[k.substr(1)]=a[k];return monad.unit(res)})},interpCode=function(expr){var pushDown=function(expr,level){if(level==0)return interpExpr(expr);switch(expr[0]){case'code':return monad.bind(pushDown(expr[1],level+1),function(a){return monad.unit(['code',a])});case'escape':if(level>=2){return monad.bind(pushDown(expr[1],level-1),function(c){return monad.unit(['escape',c])})}else return monad.bind(pushDown(expr[1],level-1),function(c){if(c[0]!='code')return monad.fail('Code escape is applied on non-code: \n'+jawa.json.encode(c));return monad.unit(c[1])});case'jpath':return monad.bind(pushDown(expr[1],level),function(a){return monad.unit(['jpath',a,expr[2]])});case'or':var ms=monad.sequence(jawa.util.arrayMap(expr[1],function(e){return pushDown(e,level)}));return monad.bind(ms,function(es){return monad.unit(['or',es])});case'seq':var ms=monad.sequence(jawa.util.arrayMap(expr[1],function(e){return pushDown(e,level)}));return monad.bind(ms,function(es){return monad.unit(['seq',es])});case'fun_app':var ms=monad.sequence(jawa.util.arrayMap(expr[2],function(e){return pushDown(e,level)}));return monad.bind(ms,function(es){return monad.unit(['fun_app',expr[1],es])});case'fork':return monad.bind(pushDown(expr[1],level),function(a){return monad.unit(['fork',a])});case'write_history':return monad.bind(pushDown(expr[2],level),function(a){return monad.unit(['write_history',expr[1],a])});case'assign':return monad.bind(pushDown(expr[3],level),function(a){return monad.unit(['assign',expr[1],expr[2],a])});case'switch':var ms=monad.sequence(jawa.util.arrayMap(expr[1],function(c){return monad.bind(pushDown(c[0],level),function(a){return monad.bind(pushDown(c[1],level),function(b){return monad.unit([a,b])})})}));return monad.bind(ms,function(cs){return monad.unit(['switch',cs])});case'while':return monad.bind(pushDown(expr[1],level),function(a){return monad.bind(pushDown(expr[2],level),function(b){return monad.unit(['while',a,b])})});case'foreach':return monad.bind(pushDown(expr[1],level),function(a){return monad.bind(pushDown(expr[3],level),function(b){return monad.unit(['foreach',a,expr[2],b])})});case'obj':var ms=monad.sequence(jawa.util.arrayMap(expr[1],function(c){return monad.bind(pushDown(c[0],level),function(a){return monad.bind(pushDown(c[1],level),function(b){return monad.unit([a,b])})})}));return monad.bind(ms,function(cs){return monad.unit(['obj',cs])});case'lift':return monad.bind(pushDown(expr[1],level),function(a){return monad.unit(['lift',a])});break;case'lvar':case'ui_param':case'const':case'root':case'feedback_param':case'history':case'return':return monad.unit(expr);default:throw 'unrecognized statement: '+expr[0]+' in interpCode.'}};return monad.bind(pushDown(expr,1),function(a){return monad.unit(['code',a])})},interpSwitch=function(cases){var _interpSwitch=function(cases){if(cases.length==0)throw 'all cases in switch fail';var case0=cases.shift();return monad.bind(interpExpr(case0[0]),function(a){if(a)return interpExpr(case0[1]);return interpSwitch(cases)})};return _interpSwitch(jawa.util.clone(cases))},interpWhile=function(b,e){return monad.bind(interpExpr(b),function(vb){if(vb){return monad.bind(interpExpr(e),function(){return interpWhile(b,e)})}else return monad.unit()})},interpForeach=function(l,name,e){return monad.bind(interpExpr(l),function(vl){var ms=jawa.util.arrayMap(vl,function(v){return monad.bind(monad.writeVar(name,v),function(){return interpExpr(e)})});return monad.sequence_(ms)})},interpObj=function(mappings){var _interpObj=function(mappings){if(mappings.length==0)return monad.unit({});var mapping=mappings.pop();return monad.bind(interpExpr(mapping[0]),function(key){return monad.bind(interpExpr(mapping[1]),function(val){return monad.bind(interpObj(mappings),function(o){o[key]=val;return monad.unit(o)})})})};return _interpObj(jawa.util.clone(mappings))},interpLift=function(v){return monad.unit(v)};return{interpProgram:interpProgram,interpExpr:interpExpr,monad:monad}};jawa.namespace(Soruka,'DSL');Soruka.DSL.Tweak=newClass({template:function(cls){var insertTimeOut=function(list,period){period=jawa.util.or(period,10);var res=new Array();for(var i=0;i<list.length;i++){if(i%period==0)res.push(["fun_app","timeOut",[]]);res.push(simTailRecursion(list[i]))};return res},simTailRecursion=function(expr){switch(expr[0]){case'lvar':case'ui_param':case'const':case'root':case'history':case'feedback_param':case'return':break;case'jpath':simTailRecursion(expr[1]);break;case'or':jawa.util.arrayEach(expr[1],function(e){simTailRecursion(e)});break;case'seq':expr[1]=insertTimeOut(expr[1]);break;case'regex':simTailRecursion(expr[1]);simTailRecursion(expr[2]);break;case'fun_app':jawa.util.arrayEach(expr[2],function(e){simTailRecursion(e)});break;case'write_history':simTailRecursion(expr[2]);break;case'assign':simTailRecursion(expr[3]);break;case'code':simTailRecursion(expr[1]);break;case'switch':jawa.util.arrayEach(expr[1],function(e){simTailRecursion(e[0]);simTailRecursion(e[1])});break;case'while':simTailRecursion(expr[1]);simTailRecursion(expr[2]);break;case'foreach':simTailRecursion(expr[1]);simTailRecursion(expr[3]);break;case'obj':jawa.util.arrayEach(expr[1],function(e){simTailRecursion(e[0]);simTailRecursion(e[1])});break;case'escape':simTailRecursion(expr[1]);break;case'lift':break;default:throw 'unrecognized statement: '+expr[0]+' in dsl tweak.'};return expr};cls.simTailRecursion=simTailRecursion}});jawa.View=newClass({template:function(cls){def(cls,'init',function(value){this.value=value;this.changeEvent=new YAHOO.util.CustomEvent('ViewChangeEvent');this.stackLock=0;this.unsubList=new Array()});def(cls,'setValue',function(v,force){force=jawa.util.or(force,true);if(this.value==v&&!force)return;if(this.stackLock==0){this.stackLock=1}else return;this.value=v;this.changeEvent.fire(v);this.stackLock=0});def(cls,'syncWith',function(v0,marshall){var me=this;if(marshall==null)marshall={toMe:jawa.util.snd,fromMe:jawa.util.snd};this.changeEvent.subscribe(function(e,args){var v=args[0];v0.setValue(marshall.fromMe(v0.value,v),true)});var fn=function(e,args){var v=args[0];me.setValue(marshall.toMe(me.value,v),true)};v0.changeEvent.subscribe(fn);this.unsubList.push(function(){return v0.changeEvent.unsubscribe(fn)})});def(cls,'command',function(v0,fromMe){var me=this;if(fromMe==null)fromMe=jawa.util.snd;this.changeEvent.subscribe(function(e,args){var v=args[0];v0.setValue(fromMe(v0.value,v),true)})});def(cls,'follow',function(v0,toMe){var me=this;if(toMe==null)toMe=jawa.util.snd;var fn=function(e,args){var v=args[0];me.setValue(toMe(me.value,v),true)};v0.changeEvent.subscribe(fn);this.unsubList.push(function(){return v0.changeEvent.unsubscribe(fn)})});def(cls,'clear',function(){this.changeEvent.unsubscribeAll();jawa.util.arrayEach(this.unsubList,function(fn){fn()})});staticDef(cls,'init',function(cls){def(cls,'initView',function(){},true);after(cls,'init',function(){this.initView()});def(cls,'clearView',function(){},true);before(cls,'clear',function(){this.clearView()})});var viewCls=cls;staticDef(cls,'add',function(name,fn){return function(cls){fn=jawa.util.or(fn,jawa.util.nop);var viewName=name+'View';after(cls,'initView',function(){var me=this;this[viewName]=new viewCls(this[name]);this[viewName].changeEvent.subscribe(function(e,args){var oldVal=me[name];me[name]=args[0];fn.call(me,oldVal)})});before(cls,'clearView',function(){this[viewName].clear()})}});staticDef(cls,'addToObject',function(name,fn){return function(object){fn=jawa.util.or(fn,jawa.util.nop);var viewName=name+'View';(function(){var me=this;this[viewName]=new viewCls(this[name]);this[viewName].changeEvent.subscribe(function(e,args){var oldVal=me[name];me[name]=args[0];fn.call(me,oldVal)})}).apply(object);objectBefore(object,'clearView',function(){this[viewName].clear()})}});staticDef(cls,'addClose',function(cls){this.add('close',function(){var me=this;jawa.util.later(function(){me.destroy()})})(cls)});staticDef(cls,'addX',function(fn){var me=this;return function(cls){fn=jawa.util.or(fn,jawa.util.nop);me.add('x',function(oldVal){YAHOO.util.Dom.setX(this.id,this.x);fn.call(this,oldVal)})(cls)}});staticDef(cls,'addY',function(fn){var me=this;return function(cls){fn=jawa.util.or(fn,jawa.util.nop);me.add('y',function(oldVal){YAHOO.util.Dom.setY(this.id,this.y);fn.call(this,oldVal)})(cls)}});staticDef(cls,'addLeft',function(fn){var me=this;return function(cls){fn=jawa.util.or(fn,jawa.util.nop);me.add('left',function(oldVal){YAHOO.util.Dom.setStyle(this.id,'left',this.left);fn.call(this,oldVal)})(cls)}});staticDef(cls,'addTop',function(fn){var me=this;return function(cls){fn=jawa.util.or(fn,jawa.util.nop);me.add('top',function(oldVal){YAHOO.util.Dom.setStyle(this.id,'top',this.top);fn.call(this,oldVal)})(cls)}});staticDef(cls,'addWidth',function(fn){var me=this;return function(cls){fn=jawa.util.or(fn,jawa.util.nop);me.add('width',function(oldVal){YAHOO.util.Dom.setStyle(this.id,'width',this.width+'px');fn.call(this,oldVal)})(cls)}});staticDef(cls,'addHeight',function(fn){var me=this;return function(cls){fn=jawa.util.or(fn,jawa.util.nop);me.add('height',function(oldVal){YAHOO.util.Dom.setStyle(this.id,'height',this.height+'px');fn.call(this,oldVal)})(cls)}})}});Soruka.InputNormalization=newClass({template:function(cls){staticDef(cls,'typeCheckParams',function(params,values){for(var i=0;i<params.length;i++){var param=params[i],value=values[param.name];if(!jawa.util.empty(param.ui)&&!param.ui.hidden&&!param.optional&&jawa.util.empty(this.normalize(param.type,value)))throw (param.label+' is holding an invalid value: '+value)}});staticDef(cls,'normalize',function(_type,_value){switch(_type.name){case'number':return this.normalizeNumber(_value);case'string':return this.normalizeString(_value);case'postcode':return this.normalizePostCode(_value);case'price':return this.normalizePrice(_value);case'percentage':return this.normalizePercent(_value);case'date':return this.normalizeDate(_value);case'enum':return this.normalizeEnum(_type,_value);case'label':return 1;case'html':return 1;default:return _value}});staticDef(cls,'normalizeEnum',function(t,v){var vs=jawa.util.arrayMap(t.values,function(v){return v.value});console.log(vs);console.log(v);if(YAHOO.lang.isArray(v)){if(jawa.util.arrayDiff(v,vs).length>0){return null}else return v}else if(jawa.util.arrayInclude(vs,v)){return v}else return null});staticDef(cls,'normalizeNumber',function(n){if(jawa.util.isNumber(n))return parseFloat(n);return null});staticDef(cls,'normalizeString',function(s){return s});staticDef(cls,'normalizePostCode',function(z){var p=/^(\s)*(\d{5})(|-\d{4})(\s)*$/,res=jawa.regex.match(z,p);if(jawa.util.isNull(res))return null;return res[2]});staticDef(cls,'normalizePrice',function(pr){var p=/^(\s)*(|\$)(((\d|(\s)*,(\s)*)*)(|\.\d{2}))(\s)*$/,res=jawa.regex.match(pr,p);if(jawa.util.isNull(res))return null;var norm=res[3];return parseFloat(norm.replace(/(\s)*,(\s)*/g,''))});staticDef(cls,'normalizePercent',function(input){var p=/^(\s)*((\d*)(|\.\d*))(|(\s)*%)(\s)*$/,res=jawa.regex.match(input,p);if(jawa.util.isNull(res))return null;var norm=res[2];return parseFloat(norm)});staticDef(cls,'normalizeDate',function(input){var p=/\s*(\d{2}|\d{1})(-|\/)(\d{2}|\d{1})(-|\/)(\d{4})\s*/,res=jawa.regex.match(input,p);if(jawa.util.isNull(res))return null;var justify=function(s){if(s.length==1){return'0'+s}else return s};return[res[5],'-',justify(res[1]),'-',justify(res[3])].join('')})}});jawa.CommonPre=function(cls){jawa.View.init(cls);jawa.View.add('hidden',function(){this.hidden?this.hide():this.show()})(cls);jawa.View.add('close',function(){var me=this;jawa.util.async(function(){me.destroy()})})(cls);def(cls,'el',function(){return YAHOO.util.Dom.get(this.id)});def(cls,'clear',function(purge){purge=jawa.util.or(purge,true);var el=this.el();if(jawa.util.isNull(el))return;if(purge)YAHOO.util.Event.purgeElement(el,true);try{el.innerHTML=''}catch(e){}});def(cls,'destroy',jawa.util.stackLock(function(purge){this.closeView.setValue();this.clear(purge);jawa.util.removeEl(this.id)}));def(cls,'replacedBy',function(otherEl){var el=$(this.id);el.parentNode.replaceChild(otherEl,el);this.destroy()});def(cls,'hide',jawa.util.stackLock(function(){jawa.util.hideEl(this.id);this.hiddenView.setValue(true)}));def(cls,'show',jawa.util.stackLock(function(){jawa.util.showEl(this.id);this.hiddenView.setValue(false)}));def(cls,'toggleShowHide',function(){this.hiddenView.setValue(!this.hidden)});def(cls,'behavior',function(){});def(cls,'renderObj',function(tag,id){tag=jawa.util.or(tag,'div');id=jawa.util.or(id,this.id);var r=new jawa.render({tag:tag,properties:{id:id}});if(this.hidden)r.addStyle('display','none');return r});def(cls,'_render',function(){return this.renderObj()});def(cls,'render',function(){return this._render().toString()});def(cls,'createEl',function(){var el=document.createElement('div');el.innerHTML=this.render();return el.childNodes[0]});override(cls,'createEl',function(orig){if(this.isTR){var el=document.createElement('div');el.innerHTML='<table>'+this.render()+'</table>';return el.childNodes[0].childNodes[0].childNodes[0]}else return this[orig]()});staticDef(cls,'factory',function(){var argList=[];for(var i=0;i<arguments.length;i++)argList.push('arguments['+i+']');var args=argList.join(','),code='new this('+args+')';return eval(code)});staticDef(cls,'add',function(){var me=this,args=jawa.util.toArray(arguments),name=args.shift();return function(cls){after(cls,'init',function(){this[name]=me.factory.apply(me,args)});before(cls,'clear',function(){this[name].clear()})}});staticDef(cls,'addToObject',function(){var me=this,args=jawa.util.toArray(arguments),name=args.shift();return function(obj){var component=me.factory.apply(me,args);component.container=obj;if(!jawa.util.empty(name))obj[name]=component;obj.closeView.command(component.closeView);return component}});def(cls,'addComponent',function(){var args=jawa.util.toArray(arguments),componentCls=args[0];args[0]=null;return componentCls.addToObject.apply(componentCls,args)(this)});def(cls,'domExists',function(){return !(jawa.util.empty($(this.id)))})};jawa.CommonPost=function(cls){before(cls,'init',function(){this.id='obj_'+jawa.util.genSym();this.hidden=false});after(cls,'render',function(){if(!jawa.util.isNull(this.behavior))this.behavior()})};jawa.newComponent=function(template){return newClass({pre:[jawa.CommonPre],post:[jawa.CommonPost],template:template})};var newComponent=jawa.newComponent;jawa.Modal=newComponent(function(cls){def(cls,'init',function(zIndex){this.zIndex=zIndex});jawa.View.init(cls);def(cls,'render',function(){var t=['<div id="',this.id,'" style="','position: absolute; ','opacity: 0.5; ','background-color: black; ','z-index: ',this.zIndex,'; ','">','</div>'];return t.join('')});def(cls,'coverScr',function(){YAHOO.util.Dom.setStyle(this.id,'position','absolute');YAHOO.util.Dom.setXY(this.id,[0,0]);var width=jawa.dom.getDocumentWidth(),height=jawa.dom.getDocumentHeight();YAHOO.util.Dom.setStyle(this.id,'width',width+'px');YAHOO.util.Dom.setStyle(this.id,'height',height+'px')});def(cls,'on',function(){if(jawa.util.isNull(this.el())){var el=this.createEl();YAHOO.util.Dom.setStyle(el,'opacity','0.5');document.body.appendChild(el)};this.show();this.coverScr()});def(cls,'off',function(){this.hide()})});jawa.modal=new jawa.Modal(1000);jawa.dom=YAHOO.util.Dom;jawa.Dragging=newClass({template:function(cls){def(cls,'init',function(hold){this.hold=false;this.behavior()});jawa.View.init(cls);jawa.View.add('x')(cls);jawa.View.add('y')(cls);def(cls,'adjustPos',function(e){this.xView.setValue(e.clientX);this.yView.setValue(e.clientY)});def(cls,'behavior',function(){var me=this;YAHOO.util.Event.on(document.body,'mousemove',function(e){if(me.hold)me.adjustPos(e)});YAHOO.util.Event.on(document.body,'mouseup',function(e){me.hold=false})})}});jawa.GlobalMouse=newClass({template:function(cls){def(cls,'init',function(){this.active=false});jawa.View.init(cls);jawa.View.add('dx')(cls);jawa.View.add('dy')(cls);after(cls,'init',function(){var me=this;YAHOO.util.Event.on(document.body,'mousemove',function(e){if(me.active){me.dxView.setValue(e.clientX-me.x0);me.dyView.setValue(e.clientY-me.y0)}});jawa.event.on(document.body,'mousedown',function(e){me.x0=e.clientX;me.y0=e.clientY;me.active=true});jawa.event.on(document.body,'mouseup',function(e){me.active=false;me.unbindAll()})});def(cls,'unbindAll',function(){this.dxView.clear();this.dyView.clear()});var globalMouse=null;staticDef(cls,'singleton',function(){if(jawa.util.isNull(globalMouse))globalMouse=new this();return globalMouse});staticDef(cls,'bindMoving',function(el){var x0,y0;return function(){x0=jawa.dom.getX(el.id);y0=jawa.dom.getY(el.id);jawa.GlobalMouse.singleton().dxView.changeEvent.subscribe(function(e,args){var dx=args[0];jawa.dom.setX(el.id,x0+dx)});jawa.GlobalMouse.singleton().dyView.changeEvent.subscribe(function(e,args){var dy=args[0];jawa.dom.setY(el.id,y0+dy)})}})}});jawa.event=YAHOO.util.Event;objectOverride(jawa.event,'on',function(orig,el,sType,fn,obj,override){var res=this[orig].call(this,el,sType,fn,obj,override);if(res){var unbind=function(){return jawa.event.removeListener(el,sType,fn)};return unbind}else return false});objectOverride(jawa.event,'on',function(orig,el,sType,fn,obj,override){var cb=function(){var res=fn.apply(this,arguments);try{jawa.onThreadExitJobs.doAll()}catch(e){console.log(e)};return res};return this[orig].call(this,el,sType,cb,obj,override)});staticDef(jawa.event,'custom',function(){var e=new YAHOO.util.CustomEvent('event_'+jawa.getVersion());return e});staticDef(jawa.event,'passRight',function(e1,e2,fn){e1.subscribe(function(e,args){if(fn)args=fn(args);e2.fire.apply(e2,args)})});staticDef(jawa.event,'addEvent',function(name){var me=this;return function(cls){var eventName=name+'Event';after(cls,'init',function(){this[eventName]=me.custom()});before(cls,'clear',function(){this[eventName].unsubscribeAll()})}});jawa.Jobs=newClass({template:function(cls){def(cls,'init',function(){this.jobs=new Array()});def(cls,'addUnique',function(job){for(var i=0;i<this.jobs.length;i++)if(this.jobs[i]==job)return;this.jobs.push(job)});def(cls,'doAll',function(){jawa.util.arrayEach(this.jobs,function(job){job()});this.jobs=new Array()})}});jawa.onThreadExitJobs=new jawa.Jobs();jawa.AllowDisable=function(cls){jawa.View.add('disabled',function(){this.disabled?this.disable():this.enable()})(cls);def(cls,'disable',function(){$(this.id).disabled=true});def(cls,'enable',function(){$(this.id).disabled=false})};jawa.Button=newComponent(function(cls){def(cls,'init',function(label,fn){this.label=label;this.listener=jawa.util.or(fn,jawa.util.nop)});jawa.View.init(cls);after(cls,'behavior',function(){var me=this;YAHOO.util.Event.on(this.id,'click',function(e){me.listener.call(this,e)})});def(cls,'_render',function(){var r=jawa.render.getRender(this,'button');r.addChild(this.label);return r})});jawa.Iframe=newComponent(function(cls){def(cls,'init',function(conf){conf=conf||{};this.src=conf.src;this.hidden=conf.hidden||false;this.onLoad=conf.onLoad||jawa.util.nop;this.width=conf.width||'100%';this.height=conf.height||'100%';this.method=jawa.util.dig(conf,'method','get');this.params=jawa.util.dig(conf,'params',{})});jawa.View.init(cls);jawa.View.addWidth()(cls);jawa.View.addHeight()(cls);after(cls,'behavior',function(){var me=this;if(this.method=='post')jawa.event.onAvailable(this.id,function(){jawa.util.windowOpenWithPost(me.src,me.params,me.id)});jawa.event.on(this.id,'load',function(e){me.onLoad(e)})});def(cls,'_render',function(){var r=jawa.render.getRender(this,'iframe');if(this.method=='get')r.addProperty('src',this.src);r.addProperty('name',this.id);r.addProperty('frameborder','0');r.addProperty('width',this.width);r.addProperty('height',this.height);r.addStyle('width',this.width);r.addStyle('height',this.height);r.addStyle('border','0');return r})});jawa.Input=newComponent(function(cls){def(cls,'init',function(value,disabled,hidden){this.value=jawa.util.or(value,'');this.disabled=jawa.util.or(disabled,false);this.hidden=jawa.util.or(hidden,false);this.inputId=this.id;this.resizable=false});jawa.View.init(cls);jawa.View.add('disabled',function(){this.disabled?this.disable():this.enable()})(cls);jawa.View.add('hidden',function(){this.hidden?this.hide():this.show()})(cls);jawa.View.addWidth()(cls);jawa.View.addHeight()(cls);jawa.View.add('value',function(){this.setValue(this.value)})(cls);after(cls,'behavior',function(){var me=this;jawa.event.on(this.inputId,'change',function(e){me.valueView.setValue(me.getValue())})});after(cls,'init',function(){if(this.resizable)jawa.Resize.Frame.attachTo(this)});def(cls,'onKeyDownDo',function(keyCode,fn){var me=this;YAHOO.util.Event.on(this.inputId,'keydown',function(e){if(e.keyCode==keyCode)fn(e)})});def(cls,'onEnterDo',function(fn){return this.onKeyDownDo(13,fn)});def(cls,'renderInputObj',function(){var r=this.renderObj('input',this.inputId);if(this.disabled)r.addProperty('disabled','true');r.addProperty('value',this.value);r.addStyle('width',350);return r});def(cls,'render',function(){return this.renderInputObj().toString()});def(cls,'disable',function(){$(this.inputId).disabled=true});def(cls,'enable',function(){$(this.inputId).disabled=false});def(cls,'getValue',function(){return $(this.inputId).value});def(cls,'getData',function(){return $(this.inputId).value});def(cls,'setValue',function(value){$(this.inputId).value=value});def(cls,'setData',function(value){$(this.inputId).value=value});def(cls,'clearContent',function(){$(this.inputId).value=''})});jawa.LabelledInput=newComponent(function(cls){jawa.Input.Template(cls);override(cls,'init',function(orig,conf){var value=jawa.util.dig(conf,'value',''),disabled=jawa.util.dig(conf,'disabled',false),hidden=jawa.util.dig(conf,'hidden',false);this[orig](value,disabled,hidden);this.label=jawa.util.dig(conf,'label','');this.inputId='input_'+this.id});override(cls,'render',function(orig,conf){var r=this.renderObj(),cr=this.renderInputObj();cr.addStyle('display','');r.addChild(this.label,cr);return r.toString()})});jawa.Text=newComponent(function(cls){def(cls,'init',function(conf){this.width=jawa.util.dig(conf,'width',400);this.height=jawa.util.dig(conf,'height',200);this.resizable=jawa.util.dig(conf,'resizable',true);this.disabled=jawa.util.dig(conf,'disabled',false);this.text=jawa.util.dig(conf,'text','')});jawa.View.init(cls);jawa.View.addWidth()(cls);jawa.View.addHeight()(cls);jawa.AllowDisable(cls);after(cls,'init',function(){if(this.resizable)jawa.Resize.Frame.attachTo(this)});def(cls,'getValue',function(){return $(this.id).value});def(cls,'setData',function(data){$(this.id).value=data;return this});def(cls,'getData',function(){return $(this.id).value});def(cls,'_render',function(){var r=jawa.render.getRender(this,'textarea');r.addStyles({width:this.width+'px',height:this.height+'px'});r.addChild(this.text);return r})});jawa.render=newClass({template:function(cls){def(cls,'init',function(conf){this.tag=jawa.util.dig(conf,'tag');this.properties=jawa.util.dig(conf,'properties');this.styles=jawa.util.dig(conf,'styles');this.classes=jawa.util.dig(conf,'classes',[]);this.children=jawa.util.dig(conf,'children',[])});def(cls,'toString',function(){var t=[];t.push('<',this.tag);if(!jawa.util.isNull(this.properties))for(var k in this.properties){var v=this.properties[k];t.push(' ',k,'="',v,'"')};if(!jawa.util.empty(this.classes)){t.push(' class="');var first=true;for(var i=0;i<this.classes.length;i++){if(first){first=false}else t.push(' ');t.push(this.classes[i])};t.push('"')};if(!jawa.util.isNull(this.styles)){t.push(' style="');for(var k in this.styles){var v=this.styles[k];t.push(k,':',v,';')};t.push('"')};t.push('>');jawa.util.arrayEach(this.children,function(child){if(cls.hasInstance(child)){t.push(child.toString())}else t.push(child)});t.push('</',this.tag,'>');return t.join('')});var convertPropertyName=function(name){switch(name){case'class':return'className';case'for':return'htmlFor';default:return name}};def(cls,'toEl',function(){if(this.tag.toLowerCase()=='tr'){var r=new cls({tag:'table',children:[this]});return r.toEl().childNodes[0].childNodes[0]}else{var el=document.createElement('div');el.innerHTML=this.toString();return el.childNodes[0]}});def(cls,'addChild',function(){var me=this,args=jawa.util.toArray(arguments);this.children=this.children.concat(args);return this});def(cls,'addProperty',function(name,value){if(jawa.util.isNull(this.properties))this.properties={};this.properties[name]=value;return this});def(cls,'addProperties',function(ps){for(var k in ps)this.addProperty(k,ps[k]);return this});def(cls,'addClass',function(){var args=jawa.util.toArray(arguments);this.classes=this.classes.concat(args);return this});def(cls,'addStyle',function(name,value){if(jawa.util.isNull(this.styles))this.styles={};this.styles[name]=value;return this});def(cls,'addStyles',function(ss){for(var k in ss)this.addStyle(k,ss[k]);return this});staticDef(cls,'getRender',function(o,tag){tag=jawa.util.or(tag,'div');var r=new jawa.render({tag:tag,properties:{id:o.id}});if(!jawa.util.isNull(o.hidden)&&o.hidden)r.addStyle('display','none');if(!jawa.util.isNull(o.disabled)&&o.disabled){console.log('here');r.addProperty('disabled','true')};return r});staticDef(cls,'renderTable',function(content){var r=new this({tag:'table'});r.addProperties({cellspacing:0,cellpadding:0,border:0});jawa.util.arrayEach(content,function(row){var rowR=new jawa.render({tag:'tr'});jawa.util.arrayEach(row,function(col){var colR=new jawa.render({tag:'td',properties:{valign:'top'},children:[col]});rowR.addChild(colR)});r.addChild(rowR)});return r})}});jawa.namespace(jawa,'Resize');jawa.Resize.Frame=newComponent(function(cls){var borderWidth=3;jawa.View.init(cls);jawa.View.addWidth()(cls);jawa.View.addHeight()(cls);after(cls,'init',function(){var me=this;this.renderContent=function(){return''};this.se=new (cls.Corner(true))();this.se.dragging.xView.command(this.widthView,function(other,self){return Math.max(self-jawa.util.elX(me.id)+borderWidth/2,2*borderWidth)});this.se.dragging.yView.command(this.heightView,function(other,self){return Math.max(self-jawa.util.elY(me.id)+borderWidth/2,2*borderWidth)});this.e=new (cls.VBar(true))();this.e.dragging.xView.command(this.widthView,function(other,self){return Math.max(self-jawa.util.elX(me.id)+borderWidth/2,2*borderWidth)});this.s=new (cls.HBar(true))();this.s.dragging.yView.command(this.heightView,function(other,self){return Math.max(self-jawa.util.elY(me.id)+borderWidth/2,2*borderWidth)});this.nw=new (cls.Corner(false))();this.n=new (cls.HBar(false))();this.ne=new (cls.Corner(false))();this.w=new (cls.VBar(false))();this.sw=new (cls.Corner(false))()});def(cls,'setContent',function(content){var me=this;this.content=content;this.content.widthView.follow(this.widthView,function(self,other){return other-borderWidth*2});this.content.heightView.follow(this.heightView,function(self,other){return other-borderWidth*2});this.content.hiddenView.syncWith(this.hiddenView);this.content.closeView.syncWith(this.closeView);var fn=this.content.render;this.renderContent=function(){return fn.apply(me.content)};this.content.render=function(){return me.render()};objectBefore(this,'clear',function(){content.clear()})});def(cls,'_render',function(){var r=jawa.render.getRender(this,'table');r.addProperties({cellpadding:0,cellspacing:0,border:0});r.addChild(new jawa.render({tag:'tr',children:[this.nw.render(),this.n.render(),this.ne.render()]}),new jawa.render({tag:'tr',children:[this.w.render(),new jawa.render({tag:'td',children:[this.renderContent()]}),this.e.render()]}),new jawa.render({tag:'tr',children:[this.sw.render(),this.s.render(),this.se.render()]}));return r});var draggable=function(cls){after(cls,'init',function(){var me=this;this.dragging=new jawa.Dragging()});after(cls,'behavior',function(){var me=this;jawa.event.on(this.id,'mousedown',function(){me.dragging.hold=true})})};cls.Corner=function(isDraggable){return newComponent(function(cls){if(isDraggable)draggable(cls);def(cls,'_render',function(){var r=this.renderObj('td');r.addProperties({width:borderWidth,height:borderWidth});r.addStyle('background-color','gray');r.addStyle('-moz-user-select','none');if(isDraggable)r.addStyle('cursor','se-resize');return r})})};cls.VBar=function(isDraggable){return newComponent(function(cls){if(isDraggable)draggable(cls);def(cls,'_render',function(){var r=this.renderObj('td');r.addProperties({width:borderWidth});r.addStyle('background-color','gray');r.addStyle('-moz-user-select','none');if(isDraggable)r.addStyle('cursor','e-resize');return r})})};cls.HBar=function(isDraggable){return newComponent(function(cls){if(isDraggable)draggable(cls);def(cls,'_render',function(){var r=this.renderObj('td');r.addProperties({height:borderWidth});r.addStyle('background-color','gray');r.addStyle('-moz-user-select','none');if(isDraggable)r.addStyle('cursor','s-resize');return r})})};staticDef(cls,'attachTo',function(o){var resizeFrame=new jawa.Resize.Frame();resizeFrame.setContent(o);return resizeFrame})});Soruka.Subscription=newClass({template:function(cls){var bind=jawa.cps.bind,unit=jawa.cps.unit,createdSubscription=null,errors=null,creatingWidgetSubscription=false,premiumInfo=null,list2obj=function(l){if(jawa.util.empty(l))return{};var o={__label__:{}};jawa.util.arrayEach(l,function(e){o[e.name]=e.value;o.__label__[e.name]=e.label});return o},ajaxReturnHandler=function(o,name,cont,abort){switch(o.res.code){case'ok':console.log(name+' returns success');cont(o.res.value);break;case'error':abort(o.res.message);break;default:abort('unrecognized ajax call return code in create-subscription: "'+o.res.code+'"')}},validUser=function(cq,subParams){return function(cont,abort){var httpCont=jawa.json.encode([{action:'subscribeToConcreteQuery',args:{cqId:cq.id,params:subParams,premiumInfo:premiumInfo}}]);if(cq.validUser){return cont()}else return SubscriptionDialog.unknownUser(httpCont,cont)}},handlePremiumSubscription=function(conf,userResponse){return function(cont,abort){if(conf.premiumType&&jawa.util.empty(conf.subscriptionId)){var url='/subscription/can-create-premium-subscription?format=json&id='+conf.abstractQueryId+'&premiumType='+conf.premiumType+'&premiumCredits='+conf.premiumCredits+'&maxTrialSubscriptions='+conf.maxTrialSubscriptions;$.ajax({type:"get",dataType:"json",url:url,success:function(o){if(o.canCreate){cont(true)}else if(conf.validUser){abort(o.messages)}else{var siDialog=SubscriptionDialog.getSigninDialog();if(siDialog){siDialog.showErrors(o)}else alert(o.messages[0])}},error:abort})}else cont(true)}},createPrimitiveConcreteQuery=function(aqId,params){return function(cont,abort){var url='/subscription/subscribe?format=json',data={aqId:aqId,params:params};data='data='+encodeURIComponent(jawa.json.encode(data));$.ajax({type:"post",dataType:"json",url:url,data:data,success:cont,error:function(){}})}},loadCompositeTree=function(aqId){return function(cont,abort){var url='/subscription/subscribe-composite1?format=json',data=jawa.util.toUrlParams({i:aqId});$.ajax({type:"post",dataType:"json",url:url,data:data,success:function(o){console.log(o.tree);cont(o.tree)},error:abort})}},createCompositeConcreteQuery=function(aqId,params,components){return function(cont,abort){var url='/subscription/subscribe-composite2?format=json',data={componentAbstractQueryId:aqId,components:components,params:params};data='data='+encodeURIComponent(jawa.json.encode(data));console.log(data);$.ajax({type:'post',dataType:'json',url:url,data:data,success:function(o){console.log('composite success');console.log(o);return cont(o)},error:abort})}},createConcreteQuery=function(aqId,kind,params){switch(kind){case'P':return createPrimitiveConcreteQuery(aqId,params);case'C':return bind(loadCompositeTree(aqId),function(tree){return bind(cls.propagates(tree,params),function(){return createCompositeConcreteQuery(aqId,params,tree)})});default:throw 'no such abstract query kind: '+kind}},createSubscription=function(cqId,params){return function(cont,abort){var url='/subscription/create-subscription?format=json';if(creatingWidgetSubscription)params.title="";jawa.util.extendObj(params,{i:cqId});var data=jawa.util.toUrlParams({data:jawa.json.encode(params)});$.ajax({type:"post",dataType:"json",url:url,data:data,success:function(o){if(o.res&&o.res.code&&(o.res.code==='ok'))createdSubscription=o.res.value.id;ajaxReturnHandler(o,'create-subscription',cont,abort)},error:abort})}},editSubscription=function(sId,cqId,params){return function(cont,abort){var url='/subscription/edit-subscription?format=json';jawa.util.extendObj(params,{sId:sId,cqId:cqId});var data=jawa.util.toUrlParams({data:jawa.json.encode(params)});$.ajax({type:"post",dataType:"json",url:url,data:data,success:function(o){ajaxReturnHandler(o,'edit-subscription',cont,abort)},error:abort})}},createWidgetHTML=function createWidgetHTML(abstractQueryId,subParams){return function(cont,abort){var creatorEmail=subParams.creatorEmail,creatorURL=subParams.creatorURL,url='/widget/create-recent-alert-widget?format=json&email='+encodeURIComponent(creatorEmail)+'&url='+encodeURIComponent(creatorURL)+'&id='+encodeURIComponent(createdSubscription);if(subParams.height)url+='&height='+subParams.height;var data=jawa.util.toUrlParams({data:{id:abstractQueryId,email:creatorEmail,url:creatorURL}});$.ajax({type:"get",dataType:"json",url:url,success:function(o){var obj={clickHandler:"",lib:"",type:'widget',html:o.html,title:o.title,id:o.id};cont(obj)},error:function(req,text,excep){abort("Error attempting to contact server")}})}},dialog0=function(uiPresentation,uiParams,subParams,action){return function(cont,abort){console.log(uiPresentation);jawa.util.extendObj(uiPresentation,{buttons:{btnOK:{label:!jawa.util.empty(uiPresentation.okButtonName)&&action!='export'?uiPresentation.okButtonName:null,click:function(params,subParams){cont('ok',params,subParams)}}}});if(uiPresentation.showPreviewOnStart&&action!='export')uiPresentation.buttons.btnPreview={label:jawa.util.empty(uiPresentation.previewButtonName)?null:uiPresentation.previewButtonName,click:function(params){cont('preview',params)}};if(action=='export')uiPresentation.buttons.btnGetWidget={label:null,display:false,click:function(params,subParams){cont('getwidget',params,subParams)}};SubscriptionDialog.showDialog0(uiPresentation,uiParams,subParams)}},okHandler=function(params,transformation){return function(cont,abort){if(jawa.util.isNull(transformation))return cont(params);Soruka.DSL.monad.run(Soruka.DSL.interpreter(params,{},{},Soruka.DSL.primitives).interpExpr(transformation),function(res){var dictionary=res[0][1];return cont(dictionary)},abort)}},previewHandler=function(params,preview){return function(cont,abort){Soruka.DSL.monad.run(Soruka.DSL.interpreter(params,{},{},Soruka.DSL.primitives).interpExpr(preview),cont,abort)}},resolveDefaultValues=function(params,paramValues){var ms=jawa.util.arrayMap(params,function(param){if(!jawa.util.empty(paramValues[param.name])){param.value=paramValues[param.name];return unit()}else if(jawa.util.empty(param.defaultValue)||!jawa.util.empty(param.value)){return unit()}else{var evalDefaultValue=function(cont,abort){Soruka.DSL.monad.runVal(Soruka.DSL.interpreter({},{},{},Soruka.DSL.primitives).interpExpr(param.defaultValue),cont,abort)};return bind(evalDefaultValue,function(defaultValue){param.value=defaultValue;return unit()})}});return jawa.cps.sequence_(ms)},genWidgetTemplate=function(aqId,params,subParams){var buttonLabel=jawa.util.dig(subParams,'buttonLabel','track it'),s=jawa.php.base64Encode(jawa.json.encode([aqId,params,subParams.title,{width:subParams.width,height:subParams.height,widgetCreatorEmail:subParams.widgetCreatorEmail,widgetCreatorURL:subParams.widgetCreatorURL}])),clickHandler=['soruka_subscription_dialog_20090205.show.apply( ','soruka_subscription_dialog_20090205, ',"soruka_subscription_dialog_20090205.decodeParams('",s,"')",'); return false;'].join(''),lib=['<script type="text/javascript">','if (typeof Soruka == "undefined" || typeof Soruka.Widget == "undefined") {','document.write(\'<script type="text/javascript" src="http://',location.host,'/js/bin/widget_js.js"><\\/script>\');','}','</script>'].join('');return{clickHandler:clickHandler,lib:lib,type:'button'}},genRecentAlertTemplate=function genRecentAlertTemplate(transformation,abstractQueryId,kind,params,subParams){var html="";creatingWidgetSubscription=true;return bind(okHandler(params,transformation),function(params){return bind(createConcreteQuery(abstractQueryId,kind,params),function(cq){return bind(validUser(cq,subParams),function(){return bind(createSubscription(cq.id,subParams),function(){return createWidgetHTML(abstractQueryId,subParams)})})})})},ChensFunction=function(conf,paramValues,action){paramValues=jawa.util.or(paramValues,{});var uiPresentation={};if(!jawa.util.isNull(conf.uiOptions))uiPresentation=jawa.json.decode(conf.uiOptions);uiPresentation.title=conf.title;uiPresentation.includeNotificationOptions=true;var uiParams=jawa.util.arrayFilter(jawa.json.decode(conf.uiParameters),function(p){return !p.hidden}),transformation=jawa.util.dig(conf,'transformation');if(!jawa.util.empty(transformation)){transformation=jawa.json.decode(transformation);transformation=['seq',[transformation,['return']]]};var preview=jawa.util.dig(conf,'previewHandler');if(!jawa.util.empty(preview))preview=jawa.json.decode(preview);if(conf.premiumType){var premiumType=conf.premiumType;if(premiumType)premiumInfo={premiumType:premiumType,premiumCredits:conf.premiumCredits,maxTrialSubscriptions:conf.maxTrialSubscriptions,premiumUserType:conf.premiumUserType,premiumUserCredits:conf.premiumUserCredits,premiumUserCreditsUsed:conf.premiumUserCreditsUsed}};var subParams=jawa.util.dig(conf,'subParams');return bind(resolveDefaultValues(uiParams,paramValues),function(){return bind(dialog0(uiPresentation,uiParams,subParams,action),function(code,params,subParams){params=list2obj(params);if((action=='export')&&(code=="getwidget")){return genRecentAlertTemplate(transformation,conf.abstractQueryId,conf.kind,params,subParams)}else if(action=='export'){return unit(genWidgetTemplate(conf.abstractQueryId,params,subParams))}else{console.log('output of dialog0:');console.log(params);console.log(subParams);switch(code){case'ok':creatingWidgetSubscription=false;return bind(okHandler(params,transformation),function(params){return bind(createConcreteQuery(conf.abstractQueryId,conf.kind,params),function(cq){return bind(validUser(cq,subParams),function(userResponse){return bind(handlePremiumSubscription(conf,userResponse),function(okContinue){if(okContinue&&jawa.util.empty(conf.subscriptionId)){return createSubscription(cq.id,subParams)}else if(okContinue){return editSubscription(conf.subscriptionId,cq.id,subParams)}else cont()})})})});case'preview':return previewHandler(params,preview);default:throw 'bad return code from dialog0: '+code}}})})};staticDef(cls,'propagates',function(composites,params){var res=new Array();for(var i=0;i<composites.length;i++)res.push(cls.propagate(composites[i],params));return jawa.cps.sequence_(res)});staticDef(cls,'propagate',function(composite,params){var monad=jawa.monad.listErrStateCont,d=function(cont,abort){jawa.util.nop();var expr=eval('('+composite.disambiguition+')'),m=Soruka.DSL.interpreter(params,{},{},Soruka.DSL.primitives).interpExpr(expr),_cont=function(a){cont(a[0][1]==1)};return monad.run(m,_cont,abort)},t=function(a){return function(cont,abort){if(a){var expr=eval('('+composite.mapping+')');expr=['seq',[expr,['return']]];var m=Soruka.DSL.interpreter(params,{},{},Soruka.DSL.primitives).interpExpr(expr),_cont=function(a){console.log(a);var tParams=a[0][1];composite.params=tParams;cls.propagates(composite.components,tParams)(cont,abort)};return monad.run(m,_cont,abort)};composite.params=null;return cont()}};return jawa.cps.bind(d,t)});cls.ChensFunction=ChensFunction;cls.createConcreteQuery=createConcreteQuery;cls.createCompositeConcreteQuery=createCompositeConcreteQuery;cls.createSubscription=createSubscription;cls.dialog0=dialog0;cls.resolveDefaultValues=resolveDefaultValues}});var PremiumDialog=function(){var premiumDlg,premiumId,premiumUserType,premiumType,premiumCredits,maxTrialSubs,trialDays,action="new",isIdConcrete=false
function showDialog(id,premiumType,credits,maxSubs,days,needAjax,actionParam,isConcreteId,itemId,fields,queryType){premiumId=id;premiumType=premiumType;premiumCredits=credits;maxTrialSubs=maxSubs;trialDays=days;if(actionParam)action=actionParam;if(isConcreteId)isIdConcrete=true;premiumDlg=$('<div id="dlgShowPremiumLink" class="jqmWindow" style="height:270px;"><img src="/img/busy_big.gif" alt="Loading..."></div>');var options={overlay:50,toTop:true,onLoad:function(o){},onShow:function(o){var dlg=o.w;dlg.draggable({handle:dlg.find("div.hd"),containment:'document'});dlg.show();positionDialog(dlg)},onHide:function(o){o.w.remove();o.o.fadeOut('500',function(){if(o.o)o.o.remove()})}};if(needAjax){var url="/subscription/premium-tracklet/?id="+id;if(premiumType)url+="&type="+premiumType;if(credits)url+="&credits="+credits;if(maxTrialSubs)url+="&maxSubs="+maxTrialSubs;if(trialDays)url+="&trialDays="+trialDays;if(isIdConcrete)url+="&idType=c";if(queryType)url+="&idType="+queryType;if(itemId)url+="&itemId="+itemId;if(fields)url+="&fields="+fields;options.ajax=url};premiumDlg.jqm(options).jqmShow()}
function handleButtonType(type,validUser,premiumUserType,allowSave,queryType,paramValues,options){$("#premiumTrackletDlgDiv *").css('cursor','wait');$("#premiumTrackletDlgDiv").fadeTo("slow",0.3);var el=document.getElementById("unknownUserForm");if(type=="continue"){if(queryType==null){SubscriptionDialog.showPremium(id,action,validUser,premiumUserType,allowSave)}else if(queryType=='a'){SubscriptionDialog.newFromAbstract(premiumId,paramValues,options,validUser,premiumUserType,allowSave)}else SubscriptionDialog.newFromConcrete(premiumId,paramValues,options,validUser,premiumUserType,allowSave)}else if(type==="cancel");premiumDlg.jqmHide();return false};return{show:function show(id,premiumType,credits,maxSubs,days,needAjax,actionParam,isConcreteId,itemId,fields,queryType){showDialog(id,premiumType,credits,maxSubs,days,needAjax,actionParam,isConcreteId,itemId,fields,queryType)},handleButton:function handleButton(type,validUser,userType,allowSave,queryType,params,options){return handleButtonType(type,validUser,userType,allowSave,queryType,params,options)}}}();jawa.namespace(Soruka,'Search');Soruka.Search.Dialog=function(){var showSearch=function(acId,type,aqTitle,fields,isPremium,itemId){var mythis=this,fieldsJsonStr;if(typeof fields=="undefined"){fieldsJsonStr='{}'}else if(typeof fields==="string"){fieldsJsonStr=fields}else fieldsJsonStr=jawa.json.encode(fields);var fieldsStr=jawa.php.base64Encode(fieldsJsonStr);if(isPremium){PremiumDialog.show(acId,null,null,null,null,true,null,null,itemId,fieldsStr,type)}else{var isPremium=false,options={type:"POST",url:"/subscription/is-premium/",data:{acId:acId,queryType:type,format:"json"},dataType:"json",success:function(o){processIsPremium(o)},error:function(){alert("An unexpected error has occurred ")}};$.ajax(options)};var processIsPremium=function processIsPremium(o){isPremium=o.isPremium;if(isPremium){PremiumDialog.show(acId,null,null,null,null,true,null,null,itemId,fieldsStr,type)}else{var options={type:"POST",url:"/subscription/render-search/",data:{acId:acId,queryType:type,fields:fieldsStr,itemId:itemId,format:"json"},dataType:"json",success:function(o){processSuccess(o)},error:function(){alert("An unexpected error has occurred ")}};$.ajax(options)}},processSuccess=function processSuccess(o){var options=jawa.json.decode(o.options),paramValues=jawa.json.decode(o.paramValues);if(type=='a'){SubscriptionDialog.newFromAbstract(acId,paramValues,options)}else SubscriptionDialog.newFromConcrete(acId,paramValues,options)}};return{showSearch:function(acId,type,aqTitle,fields,isPremium,itemId){showSearch(acId,type,aqTitle,fields,isPremium,itemId)}}}();jawa.namespace(Soruka,'EmptySearch');Soruka.EmptySearch.Dialog=function(){var showEmptySearch=function(search){var dlg=$('<div id="dlgEmptySearch" class="jqmWindow" style="height:300px;"></div>');$("body").append(dlg);dlg.jqm({overlay:80,toTop:true,ajax:'/subscription/empty-search?search="'+encodeURIComponent(search)+'"',ajaxText:'<img src="/img/busy_big.gif" alt="Loading...">',onLoad:function(o){var dlg=o.w;dlg.find("div.hd a.btnCancel").click(function(){dlg.jqmHide();return false});dlg.draggable({handle:dlg.find("div.hd"),containment:'document'})},onShow:function(o){o.w.show();positionDialog(o.w)},onHide:function(o){o.w.remove();o.o.fadeOut('500',function(){if(o.o)o.o.remove()})}}).jqmShow();return false};return{showEmptySearch:function(search){showEmptySearch(search)}}}();jawa.namespace(Soruka,'ShareFeed');Soruka.ShareFeed.Dialog=function(){var showShareFeed=function(){var dlg=$('<div id="dlgShareFeed" class="jqmWindow" style="margin-left:-325px;margin-top:-40px;width:650px;"></div>');$("body").append(dlg);dlg.jqm({overlay:60,toTop:true,ajax:"/subscription/share-feed",ajaxText:'<img src="/img/busy_big.gif" alt="Loading...">',onLoad:function(o){var dlg=o.w;dlg.find("div.hd a.btnCancel").click(function(){dlg.jqmHide();return false});dlg.draggable({handle:dlg.find("div.hd"),containment:'document'})},onShow:function(o){o.w.show();positionDialog(o.w)},onHide:function(o){o.w.remove();o.o.fadeOut('500',function(){if(o.o)o.o.remove()})}}).jqmShow();return false};return{showShareFeed:function(){showShareFeed()}}}();jawa.namespace(Soruka,'NewsLetter');Soruka.NewsLetter.Dialog=function(){var showNewsLetter=function(){var dlg=$('<div id="dlgNewsLetter" class="jqmWindow" style="margin-left:-470px;margin-top:-130px;width:950px;"></div>');$("body").append(dlg);dlg.jqm({overlay:80,toTop:true,ajax:"/subscription/news-letter",ajaxText:'<img src="/img/busy_big.gif" alt="Loading...">',onLoad:function(o){var dlg=o.w;dlg.find("div.hd a.btnCancel").click(function(){dlg.jqmHide();return false});dlg.draggable({handle:dlg.find("div.hd"),containment:'document'})},onShow:function(o){o.w.show();positionDialog(o.w)},onHide:function(o){o.w.remove();o.o.fadeOut('500',function(){if(o.o)o.o.remove()})}}).jqmShow();return false};return{showNewsLetter:function(){showNewsLetter()}}}();var SigninDialog=function(){var _bRenderInline=false,_dialogBody,_dialogFooter,_container,_msg,_prompt,_onSuccess=null,_options={},_newUser=false,_needPremium=false,_ajaxFormOptions={dataType:"json",beforeSubmit:hideErrors,success:handleAjaxResponse,error:function(e){}}
function showSigninDialog(msg){if(_container)_container.remove();_msg=msg;_container=$('<div id="dlgSignin" class="jqmWindow" style="margin-left:-250px;width:400px;"><img src="/img/busy_big.gif" alt="Loading..."></div>');$("body").append(_container);_container.jqm({overlay:50,toTop:true,ajax:false,onShow:function(o){o.w.show();positionDialog(o.w);init(msg)},onHide:function(o){o.w.remove();o.o.fadeOut('500',function(){if(o.o)o.o.remove()})}}).jqmShow()}
function renderSigninInline(container,options){_options=options||_options;_bRenderInline=true;_container=container;_onSuccess=_options.fnContinue;if(_options.msg)_msg=_options.msg;if(_options.prompt)_prompt=_options.prompt;if(_options.needPremium)_needPremium=_options.needPremium;init()}
function init(){var domain="";_container.html('<img src="/img/busy_big.gif" alt="Loading...">');var url=domain+'/account/dlg-signin/?ex='+(_options.externalSite?1:0);if(_needPremium)url+="&needPremium=true";var options={type:"POST",dataType:"json",url:url,data:{format:"json",tag:_options.serializedContinueInfo},success:createDialog,error:function(e){console.log(e)}};$.ajax(options)}
function createDialog(ajaxResponse){_container.empty();a=[];if(_options.showTitleBar){a.push('<div class="dialog">');a.push('<div class="hd">');a.push('<a href="#close" class="btnCancel" style="float:right;"><img src="/img/dlg_close.png" alt="Close"></a>');a.push('<h1>');a.push('Welcome!</h1>');a.push('</div>')};a.push('<div class="bd"/>');a.push('<div class="ft"/>');_container.html(a.join(""));var dlgBody=_container.find("div.bd");dlgBody.html(ajaxResponse.html);$("#dlgSigninEmail").get(0).focus();if(_msg)dlgBody.find("div.messagePanel:eq(0)").empty().html(_msg).show();if(_prompt)dlgBody.find("div.prompt:eq(0)").empty().html(_prompt).show();_container.find("div.hd a.btnCancel").click(function(){_container.jqmHide();return false});if(_options.onSignUpClick)dlgBody.find("#lnkSignUp").click(_options.onSignUpClick);if(!_bRenderInline){_container.css({width:400,marginLeft:-200}).draggable({handle:_container.find("div.hd"),containment:'document'});positionDialog(_container)};if(ajaxResponse.externalSite){var form=_container.find("#frmSignIn"),act=form[0].action;if(act.indexOf("ex=1")<0)form[0].action=act+"&ex=1"};_container.find("#frmSignIn").ajaxForm(_ajaxFormOptions);return}
function handleAjaxResponse(ajaxResponse){var o={};if(ajaxResponse.finished){_newUser=ajaxResponse.newUser;if(_onSuccess){o.showAlerts=ajaxResponse.isActivated;_onSuccess(o)}else{_container.html("<p style='padding:3em 1em'>Please wait...</p>");self.location.reload()}}else if(ajaxResponse.promptPassword){if(ajaxResponse.html){_container.find("div.bd").html(ajaxResponse.html);_container.find("#frmSignIn").ajaxForm(_ajaxFormOptions)};showErrors(ajaxResponse);$("#dlgSigninPassword").get(0).focus()}else{showErrors(ajaxResponse);$("#dlgSigninEmail").get(0).focus()}}
function showErrors(ajaxResponse){if(ajaxResponse.messages.length>0)_container.find("div.messagePanel:eq(0)").empty().html(ajaxResponse.messages[0]).show();for(err in ajaxResponse.errors)switch(err){case'email':case'emailUnique':$("#dlgSignUpEmail").next("div.error").text(ajaxResponse.errors[err]).show();break;case'password':$("#dlgSignUpPassword").next("div.error").text(ajaxResponse.errors[err]).show();break}}
function hideErrors(){_container.find("div.error").hide();_container.find("div.messagePanel:eq(0)").hide()};return{show:function(msg){showSigninDialog(msg)},renderInline:function(container,options){renderSigninInline(container,options)},isNewUser:function(){return _newUser},showErrors:function(resp){showErrors(resp)}}},SubscriptionDialog=function(){var _bRenderInline=false,_abstractQueryId,_abstractQueryKind,_action,_gettingWidget=true,_panels,_currentPanel,_dialogBody,_dialogFooter,_dialogHeader,_bSmsEnabled=false,_bIMEnabled=false,_userReceivesDigest=false,_primitiveTypes=['number','postcode','price','percentage','date','string','hidden','chooser','enum','label','html','checkbox'],_fetchedValues,_authenticated=false,_wasUnknownUser=false,_validUser=false,_quickInstall=false,_siDialog=null,_btnSignInClick=null,_email="",_url="",_premiumUser=true,_allowSave=true,_widgetButtonTitle="Trackle it...",_dialogHeight=250
function init(id,action,paramValues,abConOptions){if(typeof action=="undefined"){_action='new'}else{if((action==='newFromConcrete')&&(typeof paramValues=="undefined"))action="newFromConcreteLoad";_action=action};var options={type:"GET",dataType:"json",error:function(){alert('ajax failure')}};switch(_action){case"new":_abstractQueryId=id;options.url='/subscription/?format=json&i='+id;if(paramValues){options.type='POST';options.data={prefilled:jawa.json.encode(paramValues)}};options.success=function(o){_abstractQueryKind=o.kind;_bSmsEnabled=o.bUseSMS;_bIMEnabled=o.bUseIM;_userReceivesDigest=o.bEmailDigest;Soruka.Subscription.ChensFunction(o,paramValues,_action)(onSubscribeComplete,onSubscribeError)};$.ajax(options);break;case"newFromConcreteLoad":options.url='/subscription/load-concrete-query?format=json&i='+id;options.success=function(o){_abstractQueryId=o.abstractQueryId;_abstractQueryKind=o.kind;_bSmsEnabled=o.bUseSMS;_bIMEnabled=o.bUseIM;_userReceivesDigest=o.bEmailDigest;Soruka.Subscription.ChensFunction(o,paramValues,_action)(onSubscribeComplete,onSubscribeError)};$.ajax(options);break;case"export":_abstractQueryId=id;options.url='/subscription/?format=json&i='+id;options.success=function(o){_abstractQueryKind=o.kind;Soruka.Subscription.ChensFunction(o,paramValues,_action)(onExportComplete,onSubscribeError)};$.ajax(options);break;case"exportSub":_action="export";options.url='/subscription/load-subscription?format=json&needEmail=true&i='+id;options.success=function(o){_abstractQueryId=o.abstractQueryId;_abstractQueryKind=o.kind;if(o.userEmail&&o.uiOptions){var opts=jawa.json.decode(o.uiOptions);opts.userEmail=o.userEmail;opts.validUser=true;o.uiOptions=jawa.json.encode(opts)};Soruka.Subscription.ChensFunction(o,paramValues,_action)(onExportComplete,onSubscribeError)};$.ajax(options);break;case"edit":options.url='/subscription/load-subscription?format=json&i='+id;options.success=function(o){_abstractQueryId=o.abstractQueryId;_abstractQueryKind=o.kind;o.subParams.title='';_bSmsEnabled=o.bUseSMS;_bIMEnabled=o.bUseIM;_userReceivesDigest=o.bEmailDigest;Soruka.Subscription.ChensFunction(o,paramValues,_action)(onSubscribeComplete,onSubscribeError)};$.ajax(options);break;case"copy":options.url='/subscription/load-subscription?format=json&i='+id;options.success=function(o){_subscriptionId=id;_abstractQueryId=o.abstractQueryId;_abstractQueryKind=o.kind;o.subscriptionId=null;o.subParams.title='';o.subParams.useEmail=0;o.subParams.useSMS=0;o.subParams.useIM=0;_bSmsEnabled=o.bUseSMS;_bIMEnabled=o.bUseIM;_userReceivesDigest=o.bEmailDigest;Soruka.Subscription.ChensFunction(o,paramValues,_action)(onSubscribeComplete,onSubscribeError)};$.ajax(options);break;case"newFromConcrete":case"editFromConcrete":case"newFromAbstract":_abstractQueryId=abConOptions.abstractQueryId;_abstractQueryKind=abConOptions.kind;_bSmsEnabled=abConOptions.bUseSMS;_bIMEnabled=abConOptions.bUseIM;_userReceivesDigest=abConOptions.bEmailDigest;Soruka.Subscription.ChensFunction(abConOptions,paramValues,_action)(onSubscribeComplete,onSubscribeError);break;case"copyFromShared":options.url='/subscription/load-subscription?format=json&i='+id;options.success=function(o){_abstractQueryId=o.abstractQueryId;_abstractQueryKind=o.kind;o.subParams.title='';o.subParams.useEmail=0;o.subParams.useSMS=0;o.subParams.useIM=0;_bSmsEnabled=o.bUseSMS;_bIMEnabled=o.bUseIM;_userReceivesDigest=o.bEmailDigest;Soruka.Subscription.ChensFunction(o,paramValues,_action)(onSubscribeComplete,onSubscribeError)};$.ajax(options);break}}
function showSubscriptionDialog(id,action,validUser,fromQuick,premiumUserType,allowSave,paramValues,options){if(validUser){_validUser=true}else _validUser=false;if(fromQuick){_quickInstall=true}else _quickInstall=false;if(typeof premiumUserType==="undefined"){_premiumUser=true}else _premiumUser=premiumUserType!=='U';if(typeof allowSave==="boolean"){_allowSave=allowSave}else _allowSave=true;$('#dlgSubscription').remove();var dlg=$('<div id="dlgSubscription" class="jqmWindow" style="margin-left:-325px;width:650px;"><img src="/img/busy_big.gif" alt="Loading..."></div>');$("body").append(dlg);dlg.jqm({overlay:50,toTop:true,ajax:false,onShow:function(o){o.w.show();positionDialog(o.w);init(id,action,paramValues,options)},onHide:function(o){$("div.ac_results").remove();o.w.remove();o.o.fadeOut('500',function(){if(o.o)o.o.remove()})}}).jqmShow()}
function renderSubscriptionInline(id,action,paramValues,options,validUser,premiumUserType,allowSave){if(options&&options.btnSignInClick){_btnSignInClick=options.btnSignInClick}else _btnSignInClick=null;_bRenderInline=true;if(typeof validUser==="boolean")_validUser=validUser;if((typeof premiumUserType!=="undefined")&&(premiumUserType==='U')){_premiumUser=false}else _premiumUser=true;if(typeof allowSave==="boolean"){_allowSave=allowSave}else _allowSave=true;init(id,action,paramValues,options)}
function createDialog(uiOptions,uiParams,subParams){var n,nLen,panel;_panels=[];_currentPanel=0;if(!subParams)subParams={};var dlgContainer=$("#dlgSubscription"),dlg=renderDialog(uiOptions);uiOptions.includeSubParams=true;if(_action=="export"){uiOptions.includeSubParams=false;uiOptions.includeExportParams=true};panel=renderPanelUiParams(uiParams,subParams,uiOptions);_widgetButtonTitle=uiOptions.title;_dialogBody=dlg.find(".bd:eq(0)");_dialogBody.append(panel.$docFragment);_panels.push({id:"#"+panel.id,uiParams:panel.uiParams,uiParamsIndexByName:panel.uiParamsIndexByName,uiOptions:uiOptions});_dialogHeader=_dialogBody.prev();_dialogFooter=_dialogBody.next();_dialogFooter.empty().append(renderButtons(uiOptions));$("#frmDialog").submit(function(){return false});dlgContainer.empty().append(dlg);$(_panels[0].id).show();if(!_bRenderInline){dlg.find("div.hd a.btnCancel").click(function(){dlgContainer.jqmHide();return false});dlgContainer.draggable({handle:dlg.find("div.hd"),containment:'document',start:function(){$("div.ac_results").hide()}});positionDialog(dlgContainer);if(_action=="export")setExportDialogHeight()}}
function setExportDialogHeight(evt){if(_action=="export"){var currentHeight=_dialogBody.innerHeight()+_dialogFooter.innerHeight();if(currentHeight>_dialogHeight)_dialogHeight=currentHeight}}
function renderDialog(uiOptions){var a=[];a.push('<div class="dialog">');a.push('<form id="frmDialog" action="" method="post">');if(!_bRenderInline){a.push('<div class="hd">');a.push('<a href="#close" class="btnCancel" style="float:right;"><img src="/img/dlg_close.png" alt="Close"></a>');a.push(renderTitle(uiOptions));a.push('</div>')};a.push('<div class="bd"></div>');a.push('<div class="ft"></div>');a.push('</form>');a.push('</div>');return $(a.join("\n"))}
function showNewPanel(uiOptions,uiParams,renderFunction){var newPanel;if(uiParams){newPanel=renderPanelUiParams(uiParams,uiOptions)}else if(typeof renderFunction=="function"){newPanel=renderFunction(uiOptions)}else throw new Error("Invalid arguments in showNewPanel");if(newPanel){_dialogBody.append(newPanel.$docFragment);if(!uiOptions.title)uiOptions.title=_panels[0].uiOptions.title;if(!uiOptions.logo)uiOptions.logo=_panels[0].uiOptions.logo;_panels.push({id:"#"+newPanel.id,uiParams:newPanel.uiParams,uiParamsIndexByName:newPanel.uiParamsIndexByName,uiOptions:uiOptions});hidePreviewPanel();$(_panels[_currentPanel].id).hide();$("#"+newPanel.id).show("slide",{direction:"right"},200);_currentPanel++;_dialogHeader.find("h1").remove();_dialogHeader.append(renderTitle(uiOptions));_dialogFooter.empty().append(renderButtons(uiOptions))}}
function showPreviousPanel(){hidePreviewPanel();if(_currentPanel>0){_currentPanel--;_dialogBody.children("div:gt("+_currentPanel+")").remove();$(_panels[_currentPanel].id).show("slide",{direction:"left"},200);_panels.length--;_dialogHeader.find("h1").remove();_dialogHeader.append(renderTitle(_panels[_currentPanel].uiOptions));_dialogFooter.empty().append(renderButtons(_panels[_currentPanel].uiOptions))}}
function onPreviewClick(evt){var buttons=evt.data,data=getUiParamValues(_panels[_currentPanel].uiParams);_dialogBody.find("div.error").remove();showPreviewPanel();buttons.btnPreview.click(data)}
function onOKClick(evt){var buttons=evt.data,data=getUiParamValues(_panels[_currentPanel].uiParams),validation=validateUiParams(_panels[_currentPanel].uiParams);_dialogBody.find("div.error").remove();_dialogFooter.empty().append($('<div class="pleaseWait">Please wait...</div>'));if(validation!==true){onSubscribeError(validation)}else{var anyErrors=false,emailElem=$("#widgetCreatorEmail");if(emailElem.length>0){var val=emailElem.val();if(val.length==0);else{var ok=true;if(ok){_email=val}else{anyErrors=true;emailElem.after('<div class="error">Invalid email address</div>')}}};var urlElem=$("#widgetCreatorURL");if(urlElem.length>0){var val=urlElem.val();if(val.length==0){_url=""}else _url=val};if(anyErrors){hidePreviewPanel();var panel=_panels[_currentPanel];_dialogFooter.empty().append(renderButtons(panel.uiOptions))}else if(_currentPanel>0){buttons.btnOK.click(data)}else{subParams=getSubscriptionParamValues();if(_gettingWidget&&(_action=='export')){subParams.creatorEmail=_email;subParams.creatorURL=_url;buttons.btnGetWidget.click(data,subParams)}else buttons.btnOK.click(data,subParams);var i=1}}}
function renderTitle(uiOptions){if(!uiOptions.title)uiOptions.title="";var a=[];a.push('<h1>');if(uiOptions.logo)a.push('<img src="'+uiOptions.logo+'" alt="" style="margin-right:6px; height:16px">');a.push(uiOptions.title+'</h1>');return a.join("")}
function renderButtons(uiOptions){var buttons=uiOptions.buttons,btnOK,btnPreview,btnBack,btnSignIn,okLabel,previewLabel,div=$('<div/>');if(_bRenderInline)div.append('<a href="http://www.trackle.com/" target="_blank"><img src="/img/poweredby.png" style="float:left;position:relative;left:-6px;" alt="Powered by Trackle"></a>');if(_currentPanel==0){if(_btnSignInClick){var btn=$('<a href="#" style="display:block;float:left;line-height:20px;font-size:85%;">Already a user? Sign In</a>');btn.click(_btnSignInClick);div.append(btn)};if(_action!="export"){okLabel="Add Tracklet|Save Changes"}else okLabel="Get Trackle Widget!";if(buttons.btnOK.label)okLabel=buttons.btnOK.label;var a=okLabel.split("|");if(_action=="edit"&&a.length>1){okLabel=a[1]}else if((_action=="editFromConcrete")&&(a.length>1)){okLabel=a[1]}else okLabel=a[0];if(buttons.btnGetWidget&&buttons.btnGetWidget.display){if(_validUser&&!_quickInstall){var txt="Click 'Get Trackle Widget' to get your widget code. Click 'Get Trackle button' to get just button."}else if(!_quickInstall){var txt="Click 'Get Trackle button' to get button."}else var txt="Click 'Get Trackle Widget' to get your widget code.";var span=$("<span style='float:left;padding-bottom:4px;'>"+txt+"</span>");div.append(span);div.append($("<br>"))};var disabled=_allowSave||(okLabel.toUpperCase().indexOf("ADD")<0)?"":" disabled ;";btnOK=$('<input id="okButtonId" type="button" class="btnOK" value="'+okLabel+'"'+disabled+'>');btnOK.bind('click',buttons,onOKClick);div.append(btnOK);if(buttons.btnGetWidget&&buttons.btnGetWidget.display){var disabled=_validUser?"":" disabled",btnWidget=$('<input id="widgetButtonId" type="button" class="btnTrackleWidget" value="Get Trackle Widget!"'+disabled+'>');btnWidget.bind('click',buttons,onOKClick);div.append(btnWidget)}}else{btnBack=$('<input type="button" class="btnBack" value="< Back" style="float:left">');btnBack.click(showPreviousPanel);div.append(btnBack);if(buttons.btnOK){okLabel="Continue >";if(buttons.btnOK.label)okLabel=buttons.btnOK.label;var a=okLabel.split("|");if(_action=="edit"&&a.length>1){okLabel=a[1]}else okLabel=a[0];var disabled=_allowSave||(okLabel.toUpperCase().indexOf("ADD")<0)?"":" disabled ;";btnOK=$('<input type="button" class="btnOK" value="'+okLabel+'"'+disabled+'>');btnOK.bind('click',buttons,onOKClick);div.append(btnOK)}};previewLabel="Preview";if(buttons.btnPreview){if(buttons.btnPreview.label)previewLabel=buttons.btnPreview.label;btnPreview=$('<input type="button" class="btnPreview" value="'+previewLabel+'">');btnPreview.bind('click',buttons,onPreviewClick);div.append(btnPreview)};return div}
function showPreviewPanel(){hidePreviewPanel();var previewPanel=$('<div class="preview"><img src="/img/busy_big.gif" alt="Loading..."></div>');_dialogBody.parent().append(previewPanel)}
function hidePreviewPanel(){_dialogBody.parent().children("div:gt(2)").remove()}
function showPreviewResults(uiOptions,uiParams){uiOptions=uiOptions||{};if(typeof uiParams=="undefined"){uiOptions.integratedResults=false;uiOptions.description="No preview available.";uiParams={}};if(typeof uiOptions.integratedResults=="undefined")uiOptions.integratedResults=true;var previewOptions={containerStyle:"border:1px solid #CCC;background:url(/img/bg_form.jpg) 0 0 repeat;"};$.extend(uiOptions,previewOptions);if(!uiOptions.integratedResults){uiOptions.containerStyle="padding:12px;height:200px;overflow:auto;"+uiOptions.containerStyle}else uiOptions.containerStyle=""+uiOptions.containerStyle;var panel=renderPanelUiParams(uiParams,uiOptions);if(uiOptions.integratedResults){panel.$docFragment.find("p:eq(0)").css({padding:"6px",borderBottom:"1px solid #999"});var resultsWidget=panel.$docFragment.find("div.uiParam:eq(0)");resultsWidget.children("div:eq(0)").css({border:"0"});if(resultsWidget.hasClass("uiParamHtml"))resultsWidget.css({height:"200px",overflow:"auto"}).parent().css({marginLeft:"0"})};_dialogFooter.next().empty().append(panel.$docFragment);panel.$docFragment.slideDown(200)}
function renderPanelUiParams(uiParams,subParams,options){var n,nLen,i,iLen,param,dlgPanel,dl=$("<dl/>"),pageId="dlgPanel"+uniqId(),elmId,uiParamByName={},uiParamsIndexByName={},paramParents,parentParts,parent,parentId,dependencyInfo,childDependencies,triggerValues,leftPanel,rightPanel;options=options||{};if(options.containerStyle){dlgPanel=$('<div id="'+pageId+'" style="display:none;'+options.containerStyle+'"/>')}else dlgPanel=$('<div id="'+pageId+'" style="display:none;"/>');$("body").append(dlgPanel);if(options.includeSubParams){dlgPanel.append('<table cellspacing="0" width="100%"><tbody><tr><td id="dlgLeftPanel"/><td id="dlgRightPanel"></tr></tbody></table>');leftPanel=dlgPanel.find("#dlgLeftPanel");rightPanel=dlgPanel.find("#dlgRightPanel")}else leftPanel=dlgPanel;if(_action=="export"){var bottomDel=4,thisStyle1='style="margin-top: 0;margin-bottom:',thisStyle2='px;width:100%"',str='<p '+thisStyle1+bottomDel+thisStyle2+'><b>Widget:</b> Customize results for user by providing values for desired fields.</p>';leftPanel.append(str)};if(options.description)leftPanel.append('<p>'+options.description+'</p>');for(n=0,nLen=uiParams.length;n<nLen;n++){param=uiParams[n];param.id=elmId="elm"+uniqId();if(param.value==null)param.value="";uiParamByName[param.name]=param;uiParamsIndexByName[param.name]=n;if(param.dependsOn&&param.dependsOn.length>0){param.isDependent=true;dependencyInfo={id:elmId,type:param.type.name,parents:[]};if(!in_array(dependencyInfo.type,_primitiveTypes)){dependencyInfo.smartType=dependencyInfo.type;dependencyInfo.type='smart'};paramParents=param.dependsOn.split("|");for(var i=0;i<paramParents.length;i++){parentParts=paramParents[i].split(":");if(!uiParamByName[parentParts[0]]){alert("Unknown UI parameter '"+parentParts[0]+"' listed as a dependency.");continue};parent={id:uiParams[uiParamsIndexByName[parentParts[0]]].id,value:uiParams[uiParamsIndexByName[parentParts[0]]].value};if(parentParts.length>1)parent.triggerValues=parentParts[1].split(",");dependencyInfo.parents.push(parent);if(!param.parentValue&&parent.value){var triggerValues=parent.triggerValues;if(typeof triggerValues=="undefined")triggerValues=[];if(isTriggerValue(parent.value,triggerValues))param.parentValue=parent.value}};param.dependencyInfo=dependencyInfo};switch(param.type.name){case'string':param=new StringParam(param);break;case'number':param=new NumberParam(param);break;case'checkbox':param=new CheckboxParam(param);break;case'postcode':param=new PostcodeParam(param);break;case'price':param=new PriceParam(param);break;case'percentage':param=new PercentParam(param);break;case'date':param=new DateParam(param);break;case'hidden':param=new HiddenParam(param);break;case'chooser':param=new ChooserParam(param);break;case'label':if((_action=="export")&&(nLen==1)){var val=param.value,pos=val.indexOf("Just click the");if(pos>0){var val=val.substr(0,pos-1);param.value=val}};param=new LabelParam(param);break;case'html':param=new HtmlParam(param);break;case'enum':default:param=new EnumParam(param);break};param.setDefaultValue();var o=param.create(dl);dl.append(o);uiParams[n]=param};if(options.includeSubParams&&!_quickInstall)rightPanel.append(renderOptionsSidebar(uiParams,subParams,options));if(_action=="export"){var userEmail=options.validUser?options.userEmail:"";dl.append('<hr>');dl.append('<dt style="display:none;">Your email (required)</dt>');dl.append('<dd style="display:none;"><input type="text" id="widgetCreatorEmail" size="30" value="'+userEmail+'"></dd>');dl.append('<dt style="margin-left:0px;">URL of page on which the widget will be deployed</dt>');dl.append('<dd style="margin-left:0px;"><input type="text" id="widgetCreatorURL" size="30" value=""></dd>');dl.append('<dt style="display:none;margin-left:-3px;"></dt>');dl.append('<dd style="margin-left:-3px;"><input type="checkbox" id="chkGenerateWidget" name="chkGenerateWidget"  checked> <label for="chkGenerateWidget">Display content on Widget</label></dd>');dl.find("#chkGenerateWidget").click(function(e){_gettingWidget=this.checked})};leftPanel.append(dl);leftPanel.find('dt:eq(0)').addClass("first-of-type");return{id:pageId,uiParams:uiParams,uiParamsIndexByName:uiParamsIndexByName,$docFragment:dlgPanel}}
function renderOptionsSidebar(uiParams,subParams,options){var sidebar=$('<div style="width:130px;"/>'),a=[];a.push('<strong>Notification options</strong>');a.push('<div tip="Your alerts are delivered to your trackle.com Inbox. You can also choose to receive alerts by:<ul><li>Daily email digest<li>Instant email<li>Instant SMS</ul>">');a.push('<input type="checkbox" id="chkWeb" name="chkWeb" checked> <label for="chkSMS" class="disabled">Trackle.com Inbox</label>');a.push('</div>');a.push('<div tip="To enable/disable the daily email digest for your day&#8217;s alerts, go to Your Account page.">');a.push('<input type="checkbox" id="chkDigest" name="chkDigest"  '+(_userReceivesDigest?' checked':'')+'> <label for="chkDigest" class="disabled">Daily email digest</label>');a.push('</div>');if(_premiumUser){a.push('<div><input type="checkbox" id="chkEmail" name="chkEmail"'+(subParams.useEmail?' checked':'')+'> <label for="chkEmail">Instant email</label></div>')}else a.push('<div><input type="checkbox" id="chkEmail" name="chkEmail"'+(subParams.useEmail?' checked':'')+'> <label for="chkEmail" class="disabled">Instant email</label></div>');a.push('<div tip="To enable SMS notifications, go to Your Account and enter your mobile number in notification preferences.">');if(_bSmsEnabled&&_premiumUser){a.push('<input type="checkbox" id="chkSMS" name="chkSMS"'+(subParams.useSMS?' checked':'')+'> <label for="chkSMS">Instant SMS</label>')}else a.push('<input type="checkbox" id="chkSMS" name="chkSMS" > <label for="chkSMS" class="disabled">Instant SMS</label>');a.push("</div>");a.push('<br><strong>Privacy</strong><br>');a.push('<div style="font-size:85%">Specify if you want to prevent other users from seeing this tracklet.</div>');var setPrivate=false;if((typeof subParams.isPrivate)!=="undefined")setPrivate=subParams.isPrivate;if(options.isPrivate)setPrivate=true;a.push('<input type="checkbox" id="chkPrivate" name="chkPrivate"'+(setPrivate?' checked':'')+'> <label for="chkPrivate">Make private</label><br>');sidebar.append($(a.join("")));$("#chkWeb",sidebar).click(function(){this.checked=true;this.blur()}).parent().tooltip({delay:500,bodyHandler:function(){return $(this).attr("tip")}});$("#chkDigest",sidebar).click(function(){this.checked=_userReceivesDigest;this.blur()}).parent().tooltip({delay:500,bodyHandler:function(){return $(this).attr("tip")}});$("#chkEmail",sidebar).click(function(){this.checked=_premiumUser?this.checked:false;this.blur()}).parent().tooltip({delay:500,bodyHandler:function(){return $(this).attr("tip")}});if(!_bSmsEnabled||!_premiumUser)$("#chkSMS",sidebar).click(function(){this.checked=false;this.blur()}).parent().tooltip({delay:500,bodyHandler:function(){return $(this).attr("tip")}});return sidebar}
function fetchValues(onSuccess,smartType,parentValue,childId){var url='/subscription/get-smart-type-values?format=json&type='+encodeURIComponent(smartType);if(parentValue)url+='&pval='+encodeURIComponent(parentValue);if(childId)url+='&cid='+encodeURIComponent(childId);$.ajax({type:"GET",dataType:"json",url:url,async:false,success:onSuccess,error:function(){}})}
function typeOf(value){var s=typeof value;if(s==='object')if(value){if(typeof value.length==='number'&&!(value.propertyIsEnumerable('length'))&&typeof value.splice==='function')s='array'}else s='null';return s}
function isTriggerValue(valueToTest,triggerValues){var isTrigger=false,isValueToTestArray=(typeOf(valueToTest)=="array"),isValueToTestScalar=(!isValueToTestArray&&(typeof valueToTest=="string"||typeof valueToTest=="number"||typeof valueToTest=="boolean"));if(isValueToTestScalar){if(triggerValues.length===0&&valueToTest){isTrigger=true}else isTrigger=in_array(valueToTest,triggerValues)}else if(isValueToTestArray)if(triggerValues.length===0&&valueToTest.length>0){isTrigger=true}else for(var n=0;n<valueToTest.length;n++)if(in_array(valueToTest[n],triggerValues)){isTrigger=true;break};return isTrigger}
function updateChildParams(evt,parent,bHiding){var c,cLen,p,pLen,bRecursing=true;if(!parent){parent=$(this);bRecursing=false;p=parent.parents('div.uiParam:eq(0)');if(p.length>0)parent=p};var childDependencies=parent.data("childDependencies");if(typeof childDependencies=="undefined")return;var parentId=parent.attr("id"),parentParam=parent.data("uiParam"),parentValue=parentParam.getValue(),triggerValues,dependencyInfo,child,childId,childParam,numParents,bOtherParentInControl=false,otherParent,otherParentValue,paramContainer;for(c=0,cLen=childDependencies.length;c<cLen;c++){dependencyInfo=childDependencies[c];childId=dependencyInfo.id;child=$("#"+childId);childParam=child.data("uiParam");triggerValues=parent.data("triggerValues");if(typeof triggerValues!="undefined"){triggerValues=triggerValues[childId]}else triggerValues=[];if(!bHiding&&isTriggerValue(parentValue,triggerValues)){if(!dependencyInfo.smartType){updateChildParams(null,child);childParam.show()}else{if(childParam.type.display!="auto complete"){var handleFetchResponse=function(fetchResponse){var values=[],childId,childParam,n,nLen,startIndex=0;if(fetchResponse){if(fetchResponse.data)values=fetchResponse.data;if(fetchResponse.childId){childId=fetchResponse.childId}else throw "Invalid childId."}else throw "Invalid server response.";childParam=$("#"+childId).data("uiParam");childParam.update(values,childParam.value?childParam.value:childParam.elm.val());updateChildParams(null,child)};if(dependencyInfo.type=='smart')fetchValues(handleFetchResponse,dependencyInfo.smartType,parentValue,childId)}else child.setOptions({extraParams:{pval:parentValue}}).flushCache();childParam.show()}}else{numParents=dependencyInfo.parents.length;bOtherParentInControl=false;if(numParents>1)for(p=0,pLen=numParents;p<pLen;p++){otherParent=dependencyInfo.parents[p];if(otherParent.id!=parentId){otherParentValue=$("#"+otherParent.id).data("uiParam").getValue();triggerValues=otherParent.triggerValues;if(typeof triggerValues=="undefined")triggerValues=[];if(isTriggerValue(otherParentValue,triggerValues)){bOtherParentInControl=true;$("#"+dependencyInfo.parents[p].id).trigger('change');break}}};if(!bOtherParentInControl){updateChildParams(null,child,true);childParam.hide();continue}}}}
function getUiParamValues(uiParams){var p,n,nLen,results=[];for(n=0,nLen=uiParams.length;n<nLen;n++){p=uiParams[n];if(!in_array(p.type.name,["label","html"]))results.push({name:p.name,label:(typeof p.getValueLabel=="function")?p.getValueLabel():p.label,value:p.getNormalizedValue()})};return results}
function validateUiParams(uiParams){var p,pVal,n,nLen,validation=[],values={},bCheckForValue,bCheckForType,bEmptyValue,paramParents,i,iLen,parentParts,triggerValues,bParentHasTrigger;for(n=0,nLen=uiParams.length;n<nLen;n++){p=uiParams[n];values[p.name]=pVal=p.getValue();bEmptyValue=(pVal===null||pVal===""||(typeOf(pVal)=="array"&&pVal.length==0));bCheckForType=((_action!="export")||!bEmptyValue||_gettingWidget);bCheckForValue=(_action!="export")||_gettingWidget;bCheckForValue=bCheckForValue&&!in_array(p.type.name,["label","html"]);bCheckForValue=bCheckForValue&&(typeof p.optional!="undefined")&&(p.optional!=1);if(bCheckForValue&&p.dependsOn&&p.dependsOn.length>0){paramParents=p.dependsOn.split("|");bParentWithTrigger=false;for(i=0,iLen=paramParents.length;i<iLen;i++){triggerValues=[];parentParts=paramParents[i].split(":");if(parentParts.length>1)triggerValues=parentParts[1].split(",");if(isTriggerValue(values[parentParts[0]],triggerValues)){bParentWithTrigger=true;break}};bCheckForValue=bParentWithTrigger};if(bCheckForValue&&bEmptyValue){validation.push({name:p.name,error:"required"});continue};if(bCheckForType&&!p.typeCheck())validation.push({name:p.name,error:'typecheck'})};if(validation.length==0)validation=true;return validation}
function getSubscriptionParamValues(){var page0=$(_panels[0].id),subParams;if(_action!="export"){subParams={useEmail:$("#chkEmail",page0).get(0).checked,useSMS:$("#chkSMS",page0).get(0).checked,isPrivate:$("#chkPrivate",page0).get(0).checked,title:$("#txtTitle",page0).val(),widgetCreatorEmail:$("#widgetCreatorEmail").val(),widgetCreatorURL:$("#widgetCreatorURL").val()};subParams.start="";subParams.end="";if($.browser.msie){var elms=[];elms.push();elms.push($("#chkSMS",page0));elms.push($("#chkPrivate",page0));var elm=$("#chkEmail",page0);subParams.useEmail?elm.attr("defaultChecked","defaultChecked"):elm.removeAttr("defaultChecked");var elm=$("#chkSMS",page0);subParams.useSMS?elm.attr("defaultChecked","defaultChecked"):elm.removeAttr("defaultChecked");var elm=$("#chkPrivate",page0);subParams.isPrivate?elm.attr("defaultChecked","defaultChecked"):elm.removeAttr("defaultChecked")}}else{subParams={title:_widgetButtonTitle,height:_dialogHeight,width:650,widgetCreatorEmail:$("#widgetCreatorEmail",page0).val(),widgetCreatorURL:$("#widgetCreatorURL",page0).val()};if(isNaN(subParams.height))subParams.height=250;if(isNaN(subParams.width))subParams.width=650;subParams.height+=35;subParams.width+=5;subParams.height=Math.max(subParams.height,285)};return subParams}
function onUnknownUser(serializedContinueInfo,fnContinue,needPremium){_wasUnknownUser=true;_siDialog=new SigninDialog();var options={prompt:"Please enter the email address where you would like to receive your email alerts."};if(!_bRenderInline){options.externalSite=false;options.showTitleBar=true;options.serializedContinueInfo=serializedContinueInfo}else{options.externalSite=true;options.showTitleBar=false};options.fnContinue=fnContinue;if(typeof needPremium==='boolean'){options.needPremium=needPremium}else options.needPremium=false;_siDialog.renderInline($('#dlgSubscription'),options)}
function onSubscribeComplete(newSub){var message;if(!_bRenderInline){if(_action=="edit"){message="<p style='padding:3em 1em'>Your changes have been saved.</p>"}else if(newSub.alreadyExists){message="<p style='padding:3em 1em'>You cannot subscribe to a tracklet with the same settings more than once.</p>"}else{message="<p style='padding:3em 1em'><strong>"+newSub.title+"</strong> has been added to Your tracklets.</p>";if(_siDialog&&_siDialog.isNewUser())message+="<p style='padding:0 1em 1em'>We have sent you a welcome email with instructions on activating your account.</p>"};$("#dlgSubscription").html(message).css({width:500,marginLeft:-250});setTimeout(function(){$("#dlgSubscription").fadeOut().jqmHide();if(_wasUnknownUser)self.location.reload()},3000);if(typeof Subscriptions!="undefined")if(_action=="edit"){updateSubscriptionRow(newSub)}else if(!newSub.alreadyExists)addSubscriptionRow(newSub)}else if(_siDialog&&_siDialog.isNewUser()){var yourTracklets;message="<p style='padding:3em 1em 1em'><strong>"+newSub.title+"</strong> has been added to Your tracklets. Go to trackle.com to view your latest alerts.</p>";message+="<p style='padding:0 1em 1em'>We have sent you a welcome email (from trackle.com) with instructions on activating your trackle.com account.</p>";message+="<p style='padding:0 1em 1em'>You can now close this dialog.</p>";$("#dlgSubscription").html(message)}else{if(_action=='editFromConcrete'){message="<p style='padding:3em 1em'>Your changes have been saved.</p>"}else message="<p style='padding:3em 1em 1em'><strong>"+newSub.title+"</strong> has been added to Your tracklets.</p>";message+="<p style='padding:0 1em 1em'>You can now close this dialog.</p>";$("#dlgSubscription").html(message)}}
function onSubscribeError(errors){var n,nLen,panel=_panels[_currentPanel],param,msg;_dialogBody.find("div.error").remove();hidePreviewPanel();_dialogFooter.empty().append(renderButtons(panel.uiOptions));if((typeof errors)==="undefined")errors="An unknown error occurred.";if(typeof errors==="string"){msg=errors;$(panel.id).prepend('<div class="error">'+msg+'</div>')}else if(errors.length){for(n=0,nLen=errors.length;n<nLen;n++){param=panel.uiParams[panel.uiParamsIndexByName[errors[n].name]];var lbl=param.label.toLowerCase();switch(errors[n].error){case'required':msg='A valid '+lbl+' is required.';break;case'typecheck':var ptn=param.type.name;if((ptn!='postcode')&&(ptn!='enum'))lbl=ptn;msg='Not of type '+lbl;break;default:msg='A valid '+lbl+' is required.';break};param.elm.after('<div class="error">'+msg+'</div>')}}else{alert("onSubscriptionError received invalid argument. Check console for more information.");consoleLog("onSubscriptionError argument:");consoleLog(errors)}};var htmlEntitiesForJSCode=function(js){return js}
function renderWidgetCodePanel(uiOptions){var pageId="dlgPanel"+uniqId(),server='http://'+location.host,a=[];if(uiOptions.type=='button'){var btnTitle=uiOptions.widgetButtonTitle;if($.trim(btnTitle).length==0)btnTitle="Trackle it...";var button1='<input type="button" value="'+btnTitle+'" onclick="{clickHandler}">',button2='<a href="#" onclick="{clickHandler}" title="'+btnTitle+'"><img src="'+server+'/widget/btn2.001.gif" alt="'+btnTitle+'" height="20" width="80" border="0"></a>',button3='<a href="#" onclick="{clickHandler}" title="'+btnTitle+'"><img src="'+server+'/widget/btn3.001.gif" alt="'+btnTitle+'" height="13" width="60" border="0"></a>';a.push('<div id="'+pageId+'" style="display:none;">');a.push('<table cellspacing="2" id="widgetCode"><tbody>');a.push('<tr class="topText"><th colspan="2">Choose the style of button you like (HTML vs. image button), and copy and paste the code into your page where you want the button to appear.</td></tr>');a.push('<tr><th class="sample"><input type="button" value="'+btnTitle+'" id="button1">');a.push('</th>');a.push('<td><textarea class="txtInput" id="widgetTemplate1">'+button1.replace("{clickHandler}",htmlEntitiesForJSCode(uiOptions.widgetClickHandler))+uiOptions.widgetLib+'</textarea></td></tr>');a.push('<tr><th class="sample"><img src="/widget/btn2.001.gif" alt="'+btnTitle+'" height="20" width="80" id="button2">');a.push('<div>You can use your own image if you prefer.</div></th>');a.push('<td><textarea class="txtInput" id="widgetTemplate2">'+button2.replace("{clickHandler}",htmlEntitiesForJSCode(uiOptions.widgetClickHandler))+uiOptions.widgetLib+'</textarea></td></tr>');a.push('<tr class="bottomText"><th colspan="2">You can click the above buttons to preview how the button will work for your users. When finished, you can close this window. Happy trackling!</th></tr>');a.push('</tbody></table></div>')}else{a.push('<div class="bd">');a.push('<p>Display recent alerts from any of your subscriptions on your website. Just copy and paste the code into your page where you want the widget to appear.</p>');a.push('<textarea style="height:120px; width:450px">'+uiOptions.html+'</textarea>');a.push('<p style="margin-top:1em;">Click here to <a href="/widget/preview-recent-alert-widget/?id='+uiOptions.id+'&height='+_dialogHeight+'" target="_blank">preview the result</a>. When finished, you can close this window or go back. Happy trackling!</p>');a.push('</div>')};var dlgPanel=$(a.join(""));$("body").append(dlgPanel);dlgPanel.find("#button1").click(popupWidgetTestWindow("#widgetTemplate1"));dlgPanel.find("#button2").css("cursor","pointer").click(popupWidgetTestWindow("#widgetTemplate2"));return{id:pageId,uiParams:null,uiParamsIndexByName:null,$docFragment:dlgPanel}}
function onExportComplete(o){var uiOptions={widgetButtonTitle:_widgetButtonTitle,title:"How to apply your Trackle "+o.type,buttons:[{btnBack:{}}],widgetClickHandler:o.clickHandler,widgetLib:o.lib,type:o.type,html:o.html,id:o.id};if(o.type=='button'){var options={type:"GET",dataType:"json",url:'/widget/create-download-details/?format=json&id='+_abstractQueryId+'&email='+encodeURIComponent(_email)+'&url='+encodeURIComponent(_url),success:function(o){showNewPanel(uiOptions,null,renderWidgetCodePanel)},error:function(){showNewPanel(uiOptions,null,renderWidgetCodePanel)}};$.ajax(options)}else showNewPanel(uiOptions,null,renderWidgetCodePanel)};var popupWidgetTestWindow=function(txtId){return function(){var widgetTemplate=$(txtId).val(),url='/widget/preview';jawa.util.windowOpenWithPost(url,{content:jawa.php.base64Encode(widgetTemplate)})}}
function convertStyleToString(oStyle){var a=[],prop,styleName;for(prop in oStyle){styleName=prop;switch(prop){case'marginTop':case'marginRight':case'marginBottom':case'marginLeft':styleName='margin-'+prop.charAt(6).toLowerCase()+prop.substring(7);break};a.push(styleName+":"+oStyle[prop])};return a.join(";")}
function extend(subClass,superClass){var F=function(){};F.prototype=superClass.prototype;subClass.prototype=new F();subClass.prototype.constructor=subClass;subClass.superclass=superClass.prototype;if(superClass.prototype.constructor==Object.prototype.constructor)superClass.prototype.constructor=superClass}
function UiParameter(uiParam){$.extend(this,uiParam)};UiParameter.prototype.setDefaultValue=function(){var me=this;if(jawa.util.empty(this.defaultValue)||!jawa.util.empty(this.value))return;Soruka.DSL.monad.runVal(Soruka.DSL.interpreter({},{},{},Soruka.DSL.primitives).interpExpr(this.defaultValue),function(res){if(!jawa.util.empty(me.elm)){me.setValue(res);updateChildParams(null,me.elm)}else me.value=res})};UiParameter.prototype.getRenderStyles=function(dtStyleIn,ddStyleIn){var p,style={dt:{},dd:{}},dtStyle=[],ddStyle=[];if(this.isDependent&&!this.parentValue){style.dt.display="none";style.dd.display="none"}else if(!this.label){style.dt.display="none";style.dd.marginTop="6px"};if(this.noIndent){style.dd.marginLeft="0"}else if(this.marginLeft){style.dt.marginLeft=this.marginLeft;style.dd.marginLeft=this.marginLeft};if(this.getCustomRenderStyles)style=this.getCustomRenderStyles(style);style.dt=convertStyleToString(style.dt);style.dd=convertStyleToString(style.dd);if(style.dt.length>0){style.dt=" style=\""+style.dt+(dtStyleIn?";"+dtStyle:"")+"\""}else if(dtStyleIn)style.dt=" style=\""+dtStyleIn+"\"";if(style.dd.length>0){style.dd=" style=\""+style.dd+(ddStyleIn?";"+ddStyle:"")+"\""}else if(ddStyleIn)style.dd=" style=\""+ddStyleIn+"\"";return style};UiParameter.prototype.create=function(context){var domFragment=this.render();this.elm=domFragment.find("#"+this.id);this.elm.data("uiParam",this);this.init(context);if(this.dependencyInfo)UiParameter.prepareParents(context,this.dependencyInfo);return domFragment};UiParameter.prototype.init=function(context){if(typeof this.value!="undefined"&&this.value!==null)this.setValue(this.value)};UiParameter.prototype.update=function(value){this.setValue(value)};UiParameter.prototype.getValue=function(){return this.elm.val()};UiParameter.prototype.getNormalizedValue=function(){var v=this.getValue();if(this.optional&&typeof v!=='number'&&v==''){return''}else return Soruka.InputNormalization.normalize(this.type,v)};UiParameter.prototype.setValue=function(value){this.elm.val(value)};UiParameter.prototype.typeCheck=function(){return this.optional||!jawa.util.isNull(this.getNormalizedValue())};UiParameter.prototype.show=function(){var paramContainer=this.elm.parents("dd:eq(0)");if(this.label){paramContainer.prev("dt").slideDown(100,function(){paramContainer.slideDown(200,setExportDialogHeight)})}else paramContainer.slideDown(200,setExportDialogHeight)};UiParameter.prototype.hide=function(){var paramContainer=this.elm.parents("dd:eq(0)");paramContainer.slideUp();if(this.label)paramContainer.prev("dt").slideUp()};UiParameter.prepareParents=function(page,dependencyInfo){var parent,parentId,parentParam,triggerValues,childDependencies,i,iLen;for(i=0,iLen=dependencyInfo.parents.length;i<iLen;i++){parentId=dependencyInfo.parents[i].id;parent=page.find("#"+parentId);parentParam=parent.data("uiParam");if(dependencyInfo.parents[i].triggerValues){triggerValues=parent.data("triggerValues");if(typeof triggerValues=="undefined"){triggerValues={};triggerValues[dependencyInfo.id]=dependencyInfo.parents[i].triggerValues}else triggerValues[dependencyInfo.id]=dependencyInfo.parents[i].triggerValues;parent.data("triggerValues",triggerValues)};childDependencies=parent.data("childDependencies");if(typeof childDependencies=="undefined"){childDependencies=[dependencyInfo]}else childDependencies.push(dependencyInfo);parent.data("childDependencies",childDependencies);parentParam.hasDependents=true;if(parentParam.customChange){parentParam.customChange(updateChildParams)}else parent.change(updateChildParams)}}
function EnumParam(uiParam){EnumParam.superclass.constructor.call(this,uiParam)};extend(EnumParam,UiParameter);EnumParam.prototype.render=function(){var values=[],itemLabel,itemValue,i,iLen,j,jLen,id,defaultLabel=this.defaultLabel?this.defaultLabel:this.value,dom,dt,dd,elm;if(this.isDependent&&!this.parentValue){if(this.type.values&&this.type.values.length>0)values=this.type.values;var style=this.getRenderStyles("display:none","display:none");dt=$('<dt '+style.dt+'><label for="'+this.id+'">'+this.label+'</label></dt>');dd=$(this.noIndent?'<dd style="display:none;margin-left:0;"/>':'<dd '+style.dd+'/>')}else if(this.type.values&&this.type.values.length>0){var style=this.getRenderStyles();if(!style.dt)style.dt="";if(!style.dd)style.dd="";values=this.type.values;dt=$('<dt'+style.dt+'><label for="'+this.id+'">'+this.label+'</label></dt>');dd=$(this.noIndent?'<dd style="margin-left:0;"/>':'<dd'+style.dd+'/>')}else{if(this.type.display!="auto complete"){var handleFetchResponse=function(fetchResponse){if(fetchResponse&&fetchResponse.data){_fetchedValues=fetchResponse.data}else _fetchedValues=[]};if(!this.values||this.values.length==0){if(this.parentValue){fetchValues(handleFetchResponse,this.type.name,this.parentValue)}else fetchValues(handleFetchResponse,this.type.name);values=_fetchedValues}};var style=this.getRenderStyles();if(!style.dt)style.dt="";if(!style.dd)style.dd="";dt=$('<dt'+style.dt+'><label for="'+this.id+'">'+this.label+'</label></dt>');dd=$(this.noIndent?'<dd style="margin-left:0;"/>':'<dd'+style.dd+'/>')};switch(this.type.display){case'radio buttons':elm=$('<div id="'+this.id+'" class="uiParam uiParamRadios"/>');if(this.type.layout&&(this.type.layout=='column')){this.renderColumnLayout(elm,values,EnumParam.renderRadioButton)}else this.renderFlowLayout(elm,values,EnumParam.renderRadioButton);break;case'check list':case'checkboxes':elm=$('<div id="'+this.id+'" class="uiParam uiParamCheckboxes"/>');if(this.type.layout&&(this.type.layout=='column')){this.renderColumnLayout(elm,values,EnumParam.renderCheckbox)}else this.renderFlowLayout(elm,values,EnumParam.renderCheckbox);break;case'check listbox':elm=$('<div id="'+this.id+'" class="uiParam uiParamCheckListbox"/>');this.renderCheckListboxLayout(elm,values);break;case'auto complete':elm=$('<input  type="text" id="'+this.id+'" name="'+this.name+'" style="width:200px">');break;case'drop down':default:elm=$('<div id="'+this.id+'" class="uiParam uiParamCmbWrapper"/>');if($.browser.mozilla)elm.data("mousedownHandler",function(){this.focus()});var prompt=null;if(typeof this.prompt=="undefined"){prompt='<option value="">(select...)</option>'}else if(typeof this.prompt=="string")prompt='<option value="">'+this.prompt+'</option>';this.renderDropDown(elm,prompt,values,this.value);break};dd.append(elm);return dt.add(dd)};EnumParam.prototype.renderColumnLayout=function(elm,values,fnRenderCtl){var n,nLen,c,cLen,offset,numRows,numColumns=1,maxLabelLen=0,tbl,tbody,tr,td;if(this.type.columns){numColumns=this.type.columns}else{if(values.length>6){numColumns=3}else if(values.length>3)numColumns=2;if(numColumns>1){for(n=0,nLen=values.length;n<nLen;n++)if(values[n].label.length>maxLabelLen)maxLabelLen=values[n].label.length;if(maxLabelLen>30){numColumns=1}else if(maxLabelLen>15)numColumns=2}};if(numColumns==1){for(n=0,nLen=values.length;n<nLen;n++){elm.append(fnRenderCtl(this.name,values[n],this.value));elm.append("<br>")}}else{numRows=Math.ceil(values.length/numColumns);tbl=$('<table cellspacing="0"></table>');tbody=$("<tbody/>");tbl.append(tbody);for(n=0;n<numRows;n++){tr=$('<tr/>');for(c=0;c<numColumns;c++){offset=(n+(c*numRows));if(offset<values.length){td=$('<td style="padding-right:4px;"/>');td.append(fnRenderCtl(this.name,values[offset],this.value))}else td=$('<td/>');tr.append(td)};tbody.append(tr)};elm.append(tbl)}};EnumParam.prototype.renderFlowLayout=function(elm,values,fnRenderCtl){var n,nLen,c,cLen,offset,numRows,numColumns=3,maxLabelLen=0,tbl,tbody,tr,td;if(this.type.columns){numColumns=this.type.columns}else{for(n=0,nLen=values.length;n<nLen;n++)if(values[n].label.length>maxLabelLen)maxLabelLen=values[n].label.length;if(maxLabelLen>30){numColumns=1}else if(maxLabelLen>15)numColumns=2};numRows=Math.ceil(values.length/numColumns);tbl=$('<table cellspacing="0"></table>');tbody=$("<tbody/>");tbl.append(tbody);for(n=0;n<numRows;n++){tr=$('<tr/>');for(c=0;c<numColumns;c++){offset=((n*numColumns)+c);if(offset<values.length){td=$('<td style="padding-right:4px;"/>');td.append(fnRenderCtl(this.name,values[offset],this.value))}else td=$('<td/>');tr.append(td)};tbody.append(tr)};elm.append(tbl)};EnumParam.prototype.renderCheckListboxLayout=function(elm,values){var n,nLen=values.length,div,selectAll=$('<div class="checkListboxCommands"><a href="#">Select all</a></div>'),list=$('<div class="checkListbox"/>');elm.append(list).append(selectAll);for(n=0;n<nLen;n++){div=$("<div/>");div.append(EnumParam.renderCheckbox(this.name,values[n],this.value));list.append(div)}};EnumParam.prototype.renderDropDown=function(wrapper,prompt,values,selectedValue){var a=[];a.push('<select name="'+this.name+'">');if(prompt)a.push(prompt);for(i=0,iLen=values.length;i<iLen;i++){itemLabel=(values[i].label)?values[i].label:values[i].value;a.push('<option>'+itemLabel+'</option>')};a.push("</select>");wrapper.empty();wrapper.get(0).innerHTML=a.join("");var cmb=wrapper.find("select").get(0),bFoundMatchingValue=false;if(prompt)values.splice(0,0,{value:""});for(i=0,iLen=values.length;i<iLen;i++){cmb.options[i].value=values[i].value;if(selectedValue&&(values[i].value==selectedValue)){cmb.selectedIndex=i;bFoundMatchingValue=true}};if(!bFoundMatchingValue)setTimeout("$('#"+this.id+"').children(':eq(0)').get(0).selectedIndex = 0;",5)};EnumParam.prototype.getValue=function(){var values="",sel;switch(this.type.display){case'radio buttons':sel=sel=this.elm.find('input[type="radio"]:checked');if($.browser.msie){this.elm.find('input[type="radio"]').removeAttr("defaultChecked");sel.attr("defaultChecked","defaultChecked")};sel=sel.get(0);if(typeof sel!="undefined")values=sel.value;break;case'check list':case'checkboxes':case'check listbox':values=[];sel=sel=this.elm.find('input[type="checkbox"]:checked');if($.browser.msie){this.elm.find('input[type="checkbox"]').removeAttr("defaultChecked");sel.attr("defaultChecked","defaultChecked")};sel=sel.get();if(typeof sel!="undefined")for(var n=0;n<sel.length;n++)values.push(sel[n].value);break;case'auto complete':if(this.elm.data('valueActual')){values=this.elm.data('valueActual')}else values=this.elm.val();break;case'drop down':default:values=this.elm.children(":eq(0)").val();break};return values};EnumParam.prototype.getValueLabel=function(){var labels="",sel;switch(this.type.display){case'radio buttons':sel=this.elm.find('input[type="radio"]:checked');if(typeof sel!="undefined")labels=sel.next("label").text();break;case'check list':case'checkboxes':case'check listbox':labels=[];sel=this.elm.find('input[type="checkbox"]:checked');sel.each(function(){labels.push($(this).next("label").text())});break;case'auto complete':labels=this.label;break;case'drop down':default:var cmb=this.elm.children(":eq(0)").get(0);if(cmb.options.length>0){labels=cmb.options[cmb.selectedIndex].text}else labels="";break};return labels};EnumParam.prototype.setValue=function(value){var values=value;switch(this.type.display){case'radio buttons':this.elm.find('input[type="radio"][value="'+value+'"]').attr("defaultChecked","defaultChecked").attr("checked","checked");break;case'check list':case'checkboxes':case'check listbox':if(typeOf(value)!="array")values=[value];this.elm.find('input[type="checkbox"]').each(function(){if(in_array(this.value,values)){this.checked=true;this.defaultChecked=true}});break;case'auto complete':this.elm.val(value);this.value=value;break;case'drop down':this.elm.children(":eq(0)").val(value);this.value=value;break}};EnumParam.prototype.update=function(values,selectedValue){var n,nLen,a=[];switch(this.type.display){case'radio buttons':this.elm.empty();if(this.type.layout&&(this.type.layout=='column')){this.renderColumnLayout(this.elm,values,EnumParam.renderRadioButton)}else this.renderFlowLayout(this.elm,values,EnumParam.renderRadioButton);if(this.hasDependents)this.customChange(updateChildParams);break;case'check list':case'checkboxes':this.elm.empty();if(this.type.layout&&(this.type.layout=='column')){this.renderColumnLayout(this.elm,values,EnumParam.renderCheckbox)}else this.renderFlowLayout(this.elm,values,EnumParam.renderCheckbox);if(this.hasDependents)this.customChange(updateChildParams);break;case'check listbox':this.elm.empty();this.renderCheckListboxLayout(this.elm,values);this.init();if(this.hasDependents)this.customChange(updateChildParams);break;case'auto complete':this.elm.val("").data("valueActual","");break;case'drop down':default:var cmb=this.elm.children(":eq(0)").get(0),prompt=null;if((cmb.options.length>0)&&(cmb.options[0].value===''))prompt='<option value="">'+cmb.options[0].text+"</option>";this.renderDropDown(this.elm,prompt,values,selectedValue);this.init();break}};EnumParam.prototype.init=function(context){EnumParam.superclass.init.call(this,context);if(this.type.display=="drop down"){var n,elm=this.elm,$cmb=elm.children(":eq(0)");$cmb.unbind("mousedown").unbind("change");var mousedownHandler=elm.data("mousedownHandler");if(mousedownHandler)$cmb.mousedown(mousedownHandler);var changeHandler=elm.data("changeHandler");if(changeHandler)$cmb.change(changeHandler)}else if(this.type.display=="check listbox"){var checkboxes=this.elm.find("input"),checkedCheckboxes=checkboxes.filter(":checked");checkboxes.each(function(){$(this).click(EnumParam.updateAccessoryControls)});var selectAll=this.elm.find("div.checkListboxCommands a:eq(0)");selectAll.click(EnumParam.selectAll);selectAll.text((checkboxes.length==checkedCheckboxes.length)?'Unselect all':'Select all')}else if(this.type.display=="auto complete"){var extraParams={};if(this.isDependent&&typeof this.parentValue!="undefined")extraParams.pval=this.parentValue;this.elm.autocomplete("/autocomplete/?format=json&type="+encodeURIComponent(this.type.name),{extraParams:extraParams,minChars:0,max:100,mustMatch:true,autoFill:false,multiple:false,multipleSeparator:"||||||||||||",matchContains:true,matchSubset:false,parse:function(data){data=eval("("+data+")");data=data.data;var parsed=[];for(var nn=0;nn<data.length;nn++)parsed.push({data:data[nn],value:data[nn].id,result:data[nn].label});return parsed},highlight:highlightWordMatches,formatItem:function(data,i,max,value){return data.label}}).result(function(evt,data,formatted){$(this).val(data.label).data("valueActual",data.value).trigger('change')})}};EnumParam.prototype.customChange=function(fn){var elms,typeDisplay=this.type.display;if((typeDisplay=="check list")||(typeDisplay=="checkboxes")||(typeDisplay=="check listbox")||(typeDisplay=="radio buttons")){elms=this.elm.find("input");elms.each(function(){$(this).click(fn)})}else if(typeDisplay=="drop down"){this.elm.data("changeHandler",fn);this.elm.children(":eq(0)").change(fn)}else this.elm.unbind("change").change(fn)};EnumParam.selectAll=function(evt){var selectAll=$(this),listbox=selectAll.parent().prev(),param=listbox.parent().data("uiParam");if(param.type.display=="check listbox"){var checkboxes=param.elm.find("input"),checkedCheckboxes=checkboxes.filter(":checked");if(checkboxes.length==checkedCheckboxes.length){checkboxes.each(function(){this.checked=false;this.defaultChecked=false});selectAll.text("Select all")}else{checkboxes.each(function(){this.checked=true;this.defaultChecked=true});selectAll.text("Unselect all")}};return false};EnumParam.updateAccessoryControls=function(evt){var listbox=$(this).parents("div.checkListbox:eq(0)"),param=listbox.parent().data("uiParam"),selectAll=listbox.next().find("a:eq(0)");if(param.type.display=="check listbox"){var checkboxes=param.elm.find("input"),checkedCheckboxes=checkboxes.filter(":checked");if(checkboxes.length==checkedCheckboxes.length){selectAll.text("Unselect all")}else if(selectAll.text()!="Select all")selectAll.text("Select all")}};EnumParam.renderCheckbox=function(name,item,value){var id="chk"+uniqId(),elm=$('<input type="checkbox" name="chk:'+name+'" id = "'+id+'"/>');elm.get(0).value=item.value;var label=$('<label for="'+id+'"/>');label.html((item.label?item.label:item.value));return elm.add(label)};EnumParam.renderRadioButton=function(name,item,value){var id="radio"+uniqId(),elm=$('<input type="radio" name=radio:"'+name+'" id = "'+id+'"/>');elm.get(0).value=item.value;var label=$('<label for="'+id+'"/>');label.html((item.label?item.label:item.value));return elm.add(label)}
function ChooserParam(uiParam){ChooserParam.superclass.constructor.call(this,uiParam)};extend(ChooserParam,UiParameter);ChooserParam.prototype.render=function(a){var item,values=this.type.values,n,nLen=values.length,realElmId,style=this.getRenderStyles(),dt,dd,elm,cmb,opt,div,tbl,tbody,tr,td,input,s;switch(this.type.display){case"list":realElmId=uniqId();if(this.label){dt=$('<dt'+style.dt+'><label for="'+realElmId+'">'+this.label+'</label></dt>')}else dt=$('<dt'+style.dt+'></dt>');dd=$('<dd'+style.dd+'/>');elm=$('<div id="'+this.id+'" class="uiParam uiParamChooser"/>');dd.append(elm);switch(this.selection){case"multiple":cmb=$('<select id="'+realElmId+'" name="'+this.name+'" size="7" style="width:100%;" multiple/>');for(n=0;n<nLen;n++){item=values[n];opt=$('<option>'+item.label+'</option>');opt.data("chooserValue",item.value);cmb.append(opt)};break;case"none":cmb=$('<select id="'+realElmId+'" name="'+this.name+'" size="7" style="width:100%;" disabled/>');for(n=0;n<nLen;n++){item=values[n];opt=$('<option>'+item.label+'</option>');cmb.append(opt);opt.data("chooserValue",item.value)};break;case"single":default:cmb=$('<select id="'+realElmId+'" name="'+this.name+'" size="7" style="width:100%;"/>');for(n=0;n<nLen;n++){item=values[n];opt=$('<option>'+item.label+'</option>');opt.data("chooserValue",item.value);cmb.append(opt)};break};break;case"table":if(this.label){dt=$('<dt'+style.dt+'><label for="'+this.id+'">'+this.label+'</label></dt>')}else dt=$('<dt'+style.dt+'></dt>');dd=$('<dd'+style.dd+'/>');elm=$('<div id="'+this.id+'" class="uiParam uiParamChooser"/>');dd.append(elm);div=$('<div class="chooser-table"/>');tbl=$('<table cellspacing="0" width="100%"/>');tbody=$('<tbody/>');tbl.append(tbody);div.append(tbl);elm.append(div);switch(this.selection){case"multiple":for(n=0;n<nLen;n++){item=values[n];tr=$("<tr/>");td=$('<td/>');input=$('<input type="checkbox" name="chk"/>');input.data("chooserValue",item.value);input.attr("label",item.label);td.append(input);tr.append(td);if(item.thumbnail){td=$('<td><img src="'+item.thumbnail+'" height="36"></td>')}else td=$('<td/>');tr.append(td);td=$('<td width="100%"/>');td.html(item.label);if(item.url)td.append('<br><a href="'+item.url.link+'" title="'+item.url.description+'">'+item.url.label+'</a>');tr.append(td);tbody.append(tr)};break;case"none":for(n=0;n<nLen;n++){item=values[n];tr=$("<tr/>");if(item.thumbnail){td=$('<td><img src="'+item.thumbnail+'" height="36"></td>')}else td=$('<td/>');tr.append(td);td=$('<td width="100%"/>');td.html(item.label);if(item.url)td.append('<br><a href="'+item.url.link+'" title="'+item.url.description+'">'+item.url.label+'</a>');tr.append(td);tbody.append(tr)};break;case"single":default:for(n=0;n<nLen;n++){item=values[n];tr=$("<tr/>");if(item.thumbnail){td=$('<td><img src="'+item.thumbnail+'" height="36"></td>')}else td=$('<td/>');tr.append(td);td=$('<td width="100%"/>');td.html(item.label);input=$('<input type="radio" name="chk" style="display:none">');input.data("chooserValue",item.value);input.attr("label",item.label);td.append(input);if(item.url)td.append('<br><a href="'+item.url.link+'" title="'+item.url.description+'">'+item.url.label+'</a>');tr.append(td);tbody.append(tr)};break};break;case"palette":break};return dt.add(dd)};ChooserParam.prototype.getValue=function(){var values=[],selected;switch(this.type.display){case"list":this.elm.find('select option:selected').each(function(){values.push($(this).data("chooserValue"))});break;case"table":this.elm.find('td input:checked').each(function(){values.push($(this).data("chooserValue"))});break};if(this.selection=="single")if(values.length>0){values=values[0]}else values="";return values};ChooserParam.prototype.getValueLabel=function(){var labels=[],selected;switch(this.type.display){case"list":selected=this.elm.find('select option:selected').get();if(typeof selected!="undefined")for(var n=0;n<selected.length;n++)labels.push(selected[n].text);break;case"table":selected=this.elm.find('td input:checked');selected.each(function(){labels.push($(this).attr("label"))});break};if(this.selection=="single")if(labels.length>0){labels=labels[0]}else labels="";return labels};ChooserParam.prototype.setValue=function(value){};ChooserParam.prototype.update=function(values,selectedValue){};ChooserParam.prototype.init=function(context){var ctls,tr,n,nLen;ChooserParam.superclass.init.call(this,context);tr=this.elm.find("tr");if(this.selection=="single"){tr.each(function(){$(this).find('a').click(ChooserParam.clickLink);$(this).click(ChooserParam.singleClickRow)})}else if(this.selection=="multiple"){tr.each(function(){$(this).find('input[type="checkbox"]').click(ChooserParam.multiClickCheckbox);$(this).find('a').click(ChooserParam.clickLink);$(this).click(ChooserParam.multiClickRow)})}else tr.each(function(){$(this).find('a').click(ChooserParam.clickLink)})};ChooserParam.singleClickRow=function(){var tr=$(this),radio=tr.find('input[type="radio"]').get(0);radio.checked=true;tr.addClass("selected");tr.parent().children().each(function(){var tr=$(this),radio=tr.find('input[type="radio"]').get(0);if(!radio.checked)tr.removeClass("selected")});return false};ChooserParam.multiClickRow=function(){var tr=$(this),chk=tr.find('input[type="checkbox"]').get(0);chk.checked=true;tr.addClass("selected");return false};ChooserParam.multiClickCheckbox=function(evt){evt.stopPropagation();var chk=this,tr=$(chk).parents("tr:eq(0)");if(chk.checked){tr.addClass("selected")}else tr.removeClass("selected")};ChooserParam.clickLink=function(evt){var href=$(this).attr('href');window.open(href,'sorukaBrowse','menubar,toolbar,location,status,resizable,scrollbars,width=600,height=400');return false}
function CheckboxParam(uiParam){CheckboxParam.superclass.constructor.call(this,uiParam)};extend(CheckboxParam,UiParameter);CheckboxParam.prototype.render=function(){var style=this.getRenderStyles(),a=[];a.push('<dt style="display:none"></dt>');if(!style.dd)style.dd=" style=\"margin-left:0;\"";a.push('<dd'+style.dd+'>');a.push('<input type="checkbox" id="'+this.id+'" name="'+this.name+'"');if(this.value==1)a.push(' checked');a.push('><label for="'+this.id+'">'+this.label+'</label>');a.push('</dd>');return $(a.join(""))};CheckboxParam.prototype.getValue=function(){if(this.elm.attr("checked")==""){this.elm.removeAttr("defaultChecked");return 0}else{this.elm.attr("defaultChecked","defaultChecked");return 1}};CheckboxParam.prototype.setValue=function(value){if(value==1){this.elm.attr("checked","checked")}else this.elm.attr("checked","")};CheckboxParam.prototype.show=function(){var paramContainer=this.elm.parents("dd:eq(0)");paramContainer.slideDown(200,setExportDialogHeight)};CheckboxParam.prototype.hide=function(){var paramContainer=this.elm.parents("dd:eq(0)");paramContainer.slideUp()};CheckboxParam.prototype.customChange=function(fn){this.elm.click(fn)}
function NumberParam(uiParam){NumberParam.superclass.constructor.call(this,uiParam)};extend(NumberParam,UiParameter);NumberParam.prototype.render=function(){var a=[],style=this.getRenderStyles();a.push('<dt'+style.dt+'><label for="'+this.id+'">'+this.label+'</label></dt>');a.push('<dd'+style.dd+'>');a.push('<input type="text" id="'+this.id+'" name="'+this.name+'" size="15">');a.push('</dd>');return $(a.join(""))}
function StringParam(uiParam){StringParam.superclass.constructor.call(this,uiParam)};extend(StringParam,UiParameter);StringParam.prototype.render=function(){var a=[],style=this.getRenderStyles();a.push('<dt'+style.dt+'><label for="'+this.id+'">'+this.label+'</label></dt>');a.push('<dd'+style.dd+'>');a.push('<input type="text" id="'+this.id+'" name="'+this.name+'" size="30">');if(this.pickUrl)try{var url;if(this.pickUrl.url){url=this.pickUrl.url}else if(this.pickUrl.link)url=this.pickUrl.link;url='<a href="'+url+'" target="_blank" ';var label=(this.pickUrl.label?this.pickUrl.label:this.pickUrl.url);if(this.pickUrl.description)url+='title="'+this.pickUrl.description+'"';a.push(url+'>'+label+'</a>')}catch(e){};a.push('</dd>');return $(a.join(""))}
function DateParam(uiParam){DateParam.superclass.constructor.call(this,uiParam)};extend(DateParam,UiParameter);DateParam.prototype.render=function(){var a=[],style=this.getRenderStyles();a.push('<dt'+style.dt+'><label for="'+this.id+'">'+this.label+'</label></dt>');a.push('<dd'+style.dd+'>');a.push('<input type="text" id="'+this.id+'" name="'+this.name+'" value="'+this.value+'" size="15">');a.push('</dd>');return $(a.join(""))}
function HiddenParam(uiParam){HiddenParam.superclass.constructor.call(this,uiParam)};extend(HiddenParam,UiParameter);HiddenParam.prototype.render=function(){var a=[];a.push('<dt style="display:none"><label for="'+this.id+'">'+this.label+'</label></dt>');a.push('<dd style="display:none;">');a.push('<input type="hidden" id="'+this.id+'" name="'+this.name+'">');a.push('</dd>');return $(a.join(""))};HiddenParam.prototype.getValue=function(){return this.elm.data("value")};HiddenParam.prototype.setValue=function(val){this.elm.data("value",val)};HiddenParam.prototype.show=function(){};HiddenParam.prototype.hide=function(){}
function PostcodeParam(uiParam){PostcodeParam.superclass.constructor.call(this,uiParam)};extend(PostcodeParam,UiParameter);PostcodeParam.prototype.render=function(){var a=[],style=this.getRenderStyles();a.push('<dt'+style.dt+'><label for="'+this.id+'">'+this.label+'</label></dt>');a.push('<dd'+style.dd+'>');a.push('<input type="text" id="'+this.id+'" name="'+this.name+'" size="12">');a.push('</dd>');return $(a.join(""))}
function PriceParam(uiParam){PriceParam.superclass.constructor.call(this,uiParam)};extend(PriceParam,UiParameter);PriceParam.prototype.render=function(){var a=[],style=this.getRenderStyles();a.push('<dt'+style.dt+'><label for="'+this.id+'">'+this.label+'</label></dt>');a.push('<dd'+style.dd+'>');a.push('<input type="text" id="'+this.id+'" name="'+this.name+'" size="15">');a.push('</dd>');return $(a.join(""))}
function PercentParam(uiParam){PercentParam.superclass.constructor.call(this,uiParam)};extend(PercentParam,UiParameter);PercentParam.prototype.render=function(){var a=[],style=this.getRenderStyles();a.push('<dt'+style.dt+'><label for="'+this.id+'">'+this.label+'</label></dt>');a.push('<dd'+style.dd+'>');a.push('<input type="text" id="'+this.id+'" name="'+this.name+'" size="15">');a.push('</dd>');return $(a.join(""))}
function LabelParam(uiParam){LabelParam.superclass.constructor.call(this,uiParam)};extend(LabelParam,UiParameter);LabelParam.prototype.render=function(){var a=[],style=this.getRenderStyles();a.push('<dt'+style.dt+'><label for="'+this.id+'">'+this.label+'</label></dt>');a.push('<dd'+style.dd+'>');a.push('<span id="'+this.id+'">'+this.value+'</span>');a.push('</dd>');return $(a.join(""))};LabelParam.prototype.getValue=function(){return""};LabelParam.prototype.setValue=function(value){};LabelParam.prototype.update=function(values,selectedValue){};LabelParam.prototype.getCustomRenderStyles=function(style){if(!this.value||this.value==""){style.dt.marginTop="1em";style.dt.marginRight="6px";style.dd.display="none"};return style}
function HtmlParam(uiParam){HtmlParam.superclass.constructor.call(this,uiParam)};extend(HtmlParam,UiParameter);HtmlParam.prototype.render=function(){var a=[],template="";if(this.template)template=this.template;var values=[];if(this.values)values=this.values;var style=this.getRenderStyles();if(this.label){a.push('<dt'+style.dt+'>'+this.label+'</dt>')}else a.push('<dt'+style.dt+'></dt>');a.push('<dd'+style.dd+'>');a.push('<div class="uiParam uiParamHtml" style="background-color:#FFF;">');a.push(HtmlParam.renderTemplate(template,values,this.tableOptions));a.push('</div>');a.push('</dd>');var htmlObj=$(a.join(""));htmlObj.find("a").bind("click",function(e){var href=this.href;if((href.charAt(0)!='/')&&(href.indexOf(window.location.hostname)<0)){var target=this.target;if(!target){window.open(href,'sorukaBrowse','menubar,toolbar,location,status,resizable,scrollbars,width=600,height=400');return false}}});return htmlObj};HtmlParam.prototype.getValue=function(){return""};HtmlParam.prototype.setValue=function(value){};HtmlParam.prototype.update=function(values,selectedValue){};HtmlParam.renderTemplate=function(html,values,tableOptions){var n,nLen,a=[];if(html.length>0){for(n=0,nLen=values.length;n<nLen;n++)html=html.replace("{"+values[n].name+"}",values[n].value)}else{var tdStyle,o={tdStyle:"padding:2px 4px 2px 2px",trStyle:"",tableStyle:"",trEven:"",trOdd:"",tdName:"",tdValue:""};if(tableOptions)$.extend(o,tableOptions);a.push('<table style="'+o.tableStyle+'">');for(n=0,nLen=values.length;n<nLen;n++)if((n+1)%2==0){tdStyle=o.tdStyle+";"+o.trOdd;a.push('<tr style="'+o.trStyle+'"><td style="'+tdStyle+';'+o.tdName+'">'+values[n].name+'</td>');a.push('<td style="'+tdStyle+';'+o.tdValue+'">'+values[n].value+'</td></tr>')}else{tdStyle=o.tdStyle+";"+o.trEven;a.push('<tr><td style="'+tdStyle+';'+o.tdName+'">'+values[n].name+'</td>');a.push('<td style="'+tdStyle+';'+o.tdValue+'">'+values[n].value+'</td></tr>')};a.push("</table>");html=a.join("")};return html};var getSigninDialog=function getSigninDialog(){return _siDialog};return{getAbstractQueryId:function(){return _abstractQueryId},getAbstractQueryKind:function(){return _abstractQueryKind},show:function(id,action,validUser,fromQuick){if(typeof action=="undefined")action="new";showSubscriptionDialog(id,action,validUser,fromQuick)},showPremium:function(id,action,validUser,premiumUserType,allowSave){if(typeof action=="undefined")action="new";showSubscriptionDialog(id,action,validUser,false,premiumUserType,allowSave)},renderInline:function(id,paramValues,options){renderSubscriptionInline(id,"new",paramValues,options)},showDialog0:function(uiOptions,uiParams,subParams){createDialog(uiOptions,uiParams,subParams)},showDialog:function(uiOptions,uiParams){showNewPanel(uiOptions,uiParams)},showPreview:function(uiOptions,uiParams){showPreviewResults(uiOptions,uiParams)},unknownUser:function(serializedContinueInfo,fnContinue){onUnknownUser(serializedContinueInfo,fnContinue)},newFromConcrete:function(id,paramValues,options,validUser,premiumUserType,allowSave){showSubscriptionDialog(id,"newFromConcrete",validUser,false,premiumUserType,allowSave,paramValues,options)},editFromConcrete:function(id,paramValues,options,validUser,premiumUserType,allowSave){showSubscriptionDialog(id,"editFromConcrete",validUser,false,premiumUserType,allowSave,paramValues,options)},newFromAbstract:function(id,paramValues,options,validUser,premiumUserType,allowSave){showSubscriptionDialog(id,"newFromAbstract",validUser,false,premiumUserType,allowSave,paramValues,options)},getSigninDialog:function(){return getSigninDialog()}}}()
function highlightWordMatches(value,term){var term=term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1"),rx="(?![^&;]+;)(?!<[^<>]*)(\\b"+term+")(?![^<>]*>)(?![^&;]+;)";return value.replace(new RegExp(rx,"gi"),"<strong>$1</strong>")}