Soruka.Subscription=newClass({template:function(cls){var bind=jawa.cps.bind;var unit=jawa.cps.unit;var createdSubscription=null;var errors=null;var creatingWidgetSubscription=false;var premiumInfo=null;var 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};var 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+'"')}};var 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)}}};var 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)}}};var createPrimitiveConcreteQuery=function(aqId,params){return function(cont,abort){var url="/subscription/subscribe?format=json";var 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(){}})}};var loadCompositeTree=function(aqId){return function(cont,abort){var url="/subscription/subscribe-composite1?format=json";var 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})}};var createCompositeConcreteQuery=function(aqId,params,components){return function(cont,abort){var url="/subscription/subscribe-composite2?format=json";var 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})}};var 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}};var 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})}};var 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})}};var createWidgetHTML=function createWidgetHTML(abstractQueryId,subParams){return function(cont,abort){var creatorEmail=subParams.creatorEmail;var creatorURL=subParams.creatorURL;var 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")}})}};var 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)}};var 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)}};var previewHandler=function(params,preview){return function(cont,abort){Soruka.DSL.monad.run(Soruka.DSL.interpreter(params,{},{},Soruka.DSL.primitives).interpExpr(preview),cont,abort)}};var 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)};var genWidgetTemplate=function(aqId,params,subParams){var buttonLabel=jawa.util.dig(subParams,"buttonLabel","track it");var s=jawa.php.base64Encode(jawa.json.encode([aqId,params,subParams.title,{width:subParams.width,height:subParams.height,widgetCreatorEmail:subParams.widgetCreatorEmail,widgetCreatorURL:subParams.widgetCreatorURL}]));var clickHandler=["soruka_subscription_dialog_20090205.show.apply( ","soruka_subscription_dialog_20090205, ","soruka_subscription_dialog_20090205.decodeParams('",s,"')","); return false;"].join("");var 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"}};var 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)})})})})};var 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});var 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;var d=function(cont,abort){jawa.util.nop();var expr=eval("("+composite.disambiguition+")");var m=Soruka.DSL.interpreter(params,{},{},Soruka.DSL.primitives).interpExpr(expr);var _cont=function(a){cont(a[0][1]==1)};return monad.run(m,_cont,abort)};var 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);var _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 SigninDialog=function(){var b=false;var n,p;var g;var j;var t;var c=null;var m={};var s=false;var f=false;var r={dataType:"json",beforeSubmit:h,success:k,error:function(u){}};function e(u){if(g){g.remove()}j=u;g=$('<div id="dlgSignin" class="jqmWindow" style="margin-left:-250px;width:400px;"><img src="/img/busy_big.gif" alt="Loading..."></div>');$("body").append(g);g.jqm({overlay:50,toTop:true,ajax:false,onShow:function(v){v.w.show();positionDialog(v.w);q(u)},onHide:function(v){v.w.remove();v.o.fadeOut("500",function(){if(v.o){v.o.remove()}})}}).jqmShow()}function o(u,v){m=v||m;b=true;g=u;c=m.fnContinue;if(m.msg){j=m.msg}if(m.prompt){t=m.prompt}if(m.needPremium){f=m.needPremium}q()}function q(){var w="";g.html('<img src="/img/busy_big.gif" alt="Loading...">');var v=w+"/account/dlg-signin/?ex="+(m.externalSite?1:0);if(f){v+="&needPremium=true"}var u={type:"POST",dataType:"json",url:v,data:{format:"json",tag:m.serializedContinueInfo},success:l,error:function(x){console.log(x)}};$.ajax(u)}function l(w){g.empty();a=[];if(m.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"/>');g.html(a.join(""));var x=g.find("div.bd");x.html(w.html);$("#dlgSigninEmail").get(0).focus();if(j){x.find("div.messagePanel:eq(0)").empty().html(j).show()}if(t){x.find("div.prompt:eq(0)").empty().html(t).show()}g.find("div.hd a.btnCancel").click(function(){g.jqmHide();return false});if(m.onSignUpClick){x.find("#lnkSignUp").click(m.onSignUpClick)}if(!b){g.css({width:400,marginLeft:-200}).draggable({handle:g.find("div.hd"),containment:"document"});positionDialog(g)}if(w.externalSite){var v=g.find("#frmSignIn");var u=v[0].action;if(u.indexOf("ex=1")<0){v[0].action=u+"&ex=1"}}g.find("#frmSignIn").ajaxForm(r);return}function k(u){var v={};if(u.finished){s=u.newUser;if(c){v.showAlerts=u.isActivated;c(v)}else{g.html("<p style='padding:3em 1em'>Please wait...</p>");self.location.reload()}}else{if(u.promptPassword){if(u.html){g.find("div.bd").html(u.html);g.find("#frmSignIn").ajaxForm(r)}d(u);$("#dlgSigninPassword").get(0).focus()}else{d(u);$("#dlgSigninEmail").get(0).focus()}}}function d(u){if(u.messages.length>0){g.find("div.messagePanel:eq(0)").empty().html(u.messages[0]).show()}for(err in u.errors){switch(err){case"email":case"emailUnique":$("#dlgSignUpEmail").next("div.error").text(u.errors[err]).show();break;case"password":$("#dlgSignUpPassword").next("div.error").text(u.errors[err]).show();break}}}function h(){g.find("div.error").hide();g.find("div.messagePanel:eq(0)").hide()}return{show:function(u){e(u)},renderInline:function(u,v){o(u,v)},isNewUser:function(){return s},showErrors:function(u){d(u)}}};var SubscriptionDialog=function(){var _bRenderInline=false;var _abstractQueryId;var _abstractQueryKind;var _action;var _gettingWidget=true;var _panels;var _currentPanel;var _dialogBody,_dialogFooter,_dialogHeader;var _bSmsEnabled=false;var _bIMEnabled=false;var _userReceivesDigest=false;var _primitiveTypes=["number","postcode","price","percentage","date","string","hidden","chooser","enum","label","html","checkbox"];var _fetchedValues;var _authenticated=false;var _wasUnknownUser=false;var _validUser=false;var _quickInstall=false;var _siDialog=null;var _btnSignInClick=null;var _email="";var _url="";var _premiumUser=true;var _allowSave=true;var _widgetButtonTitle="Trackle it...";var _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;var panel;_panels=[];_currentPanel=0;if(!subParams){subParams={}}var dlgContainer=$("#dlgSubscription");var 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()}}else{}}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;var data=getUiParamValues(_panels[_currentPanel].uiParams);_dialogBody.find("div.error").remove();showPreviewPanel();buttons.btnPreview.click(data)}function onOKClick(evt){var buttons=evt.data;var data=getUiParamValues(_panels[_currentPanel].uiParams);var 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;var 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;var btnOK,btnPreview,btnBack,btnSignIn;var okLabel,previewLabel;var 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";var 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;var i,iLen;var param;var dlgPanel;var dl=$("<dl/>");var pageId="dlgPanel"+uniqId();var elmId;var uiParamByName={};var uiParamsIndexByName={};var paramParents,parentParts;var parent,parentId;var dependencyInfo;var childDependencies;var triggerValues;var 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;var thisStyle1='style="margin-top: 0;margin-bottom:';var thisStyle2='px;width:100%"';var 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;var 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;"/>');var 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;var isValueToTestArray=(typeOf(valueToTest)=="array");var 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;var p,pLen;var 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");var parentParam=parent.data("uiParam");var parentValue=parentParam.getValue();var triggerValues;var dependencyInfo;var child;var childId;var childParam;var numParents;var bOtherParentInControl=false;var otherParent,otherParentValue;var 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=[];var childId,childParam;var n,nLen;var 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;var n,nLen;var 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;var n,nLen;var validation=[];var values={};var bCheckForValue,bCheckForType;var bEmptyValue;var paramParents;var i,iLen;var parentParts,triggerValues;var 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);var 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;var panel=_panels[_currentPanel];var param;var 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();var server="http://"+location.host;var 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}">';var button2='<a href="#" onclick="{clickHandler}" title="'+btnTitle+'"><img src="'+server+'/widget/btn2.001.gif" alt="'+btnTitle+'" height="20" width="80" border="0"></a>';var 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();var url="/widget/preview";jawa.util.windowOpenWithPost(url,{content:jawa.php.base64Encode(widgetTemplate)})}};function convertStyleToString(oStyle){var a=[];var prop;var 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;var style={dt:{},dd:{}};var dtStyle=[];var 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;var triggerValues;var childDependencies;var 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=[];var itemLabel,itemValue;var i,iLen;var j,jLen;var id;var defaultLabel=this.defaultLabel?this.defaultLabel:this.value;var dom;var 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;var c,cLen;var offset;var numRows;var numColumns=1;var maxLabelLen=0;var 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;var c,cLen;var offset;var numRows;var numColumns=3;var maxLabelLen=0;var 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;var div;var selectAll=$('<div class="checkListboxCommands"><a href="#">Select all</a></div>');var 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);var 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="";var 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="";var 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;var 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);var 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;var elm=this.elm;var $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");var 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;var 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);var listbox=selectAll.parent().prev();var param=listbox.parent().data("uiParam");if(param.type.display=="check listbox"){var checkboxes=param.elm.find("input");var 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)");var param=listbox.parent().data("uiParam");var selectAll=listbox.next().find("a:eq(0)");if(param.type.display=="check listbox"){var checkboxes=param.elm.find("input");var 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();var 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();var 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;var values=this.type.values;var n,nLen=values.length;var realElmId;var style=this.getRenderStyles();var dt,dd,elm;var cmb,opt;var 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=[];var 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=[];var 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;var 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);var radio=tr.find('input[type="radio"]').get(0);radio.checked=true;tr.addClass("selected");tr.parent().children().each(function(){var tr=$(this);var radio=tr.find('input[type="radio"]').get(0);if(!radio.checked){tr.removeClass("selected")}});return false};ChooserParam.multiClickRow=function(){var tr=$(this);var 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;var 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();var 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=[];var 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=[];var 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=[];var 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=[];var 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=[];var 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=[];var 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=[];var 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=[];var 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;var 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;var 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(c,b){var b=b.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1");var d="(?![^&;]+;)(?!<[^<>]*)(\\b"+b+")(?![^<>]*>)(?![^&;]+;)";return c.replace(new RegExp(d,"gi"),"<strong>$1</strong>")};