var it_AjaxResultPage=function(a){a=$extend({dataModel:null,initialResultsPerPage:25},a);var b=function(){var c=new Fx.Scroll(window,{duration:800});var e=$("listNFilters").getTop();var d=$$(".resultCountStatus");pageSelector=new it_PageSelector(a.dataModel.elements.length,["topPageSelector","bottomPageSelector"],"topResultPerPageSelector",{initialResultsPerPage:a.initialResultsPerPage,useNiceBorders:a.useNiceBorders,events:{selectionChanged:function(q,o,n,k){var r=a.dataModel.elements.slice(o,n);var p=new StringBuilder();var s=a.dataModel.formatter;var h=r.length;for(var m=0;m<h;m++){var l=r[m];s.format(l,p,m,h)}$("resultList").innerHTML=p.toString();if(s.afterWrite){for(var m=0;m<h;m++){var l=r[m];s.afterWrite(l,m,h)}}var v=a.dataModel.elements.length-a.dataModel.elements.length;var j;if(v!=0){j=it_message("common.synthResultsDisplayed",{resultsDisplayed:a.dataModel.elements.length,resultsHidden:v})}else{j=it_message("common.resultsFound",{resultsFound:a.dataModel.elements.length})}d.forEach(function(i){i.innerHTML=j});if(!k){if(!duringFilterChange){if(it_whitelabel){}else{c.set(0,e)}}}if(a.sendResults){var g=[];var f=$("resultList").getElements(".results");f.forEach(function(x){var w=parseInt(x.getProperty("id"));var y=a.dataModel.elements[w];var i=y.toExternalJson();i.y=x.getPosition().y;i.height=x.offsetHeight;g.push(i)});var u={page:q.getSelectedPage()+1,pageCount:q.getPageCount(),elementCount:a.dataModel.elements.length,elementCount:a.dataModel.elements.length,elements:g};if(a.dataModel.formData){u.form=a.dataModel.formData.toExternalJson()}var t=JSON.encode(u);parent.sendResults(t)}}}})};b()};var FilterNode=function(c,b){this.filters=it_Utils.ensureArray(c);this.propertyName=b;this.childrenFilterNodes=new Array();var e=b==null?true:EvalUtils.isDirectChild(b);var a=this;this.applyFilter=function(h){var j=new Array();for(var g=0;g<h.length;g++){var f=h[g];if(d(f)){j.push(f)}}return j};var d=function(g){var n=a.filters.every(function(i){return i.accept(g)});if(!n){return false}for(var f=0;f<a.childrenFilterNodes.length;f++){var h=a.childrenFilterNodes[f];var j=g[h.propertyName];var k=h.applyFilter(j);var m=it_StringUtils.capitalizeFirstLetter(h.propertyName);var l=g["setFiltered"+m];if(l!=null){l(k)}else{g["filtered"+m]=k}if(k.length==0){return false}}return true};this.addChildFilterNode=function(f){this.childrenFilterNodes.push(f)};this.init=function(f){this.filters.forEach(function(g){g.init(f)});this.childrenFilterNodes.forEach(function(h){var g=[];f.forEach(function(i){g.extend(EvalUtils.getValue(i,h.propertyName,e))});h.init(g)})};this.callOnFilters=function(f,g){this.filters.forEach(f,g);this.childrenFilterNodes.forEach(function(h){h.callOnFilters(f,g)})}};var EvalUtilsClass=function(){this.isDirectChild=function(expression){return expression.indexOf(".")==-1&&expression.indexOf("[")==-1};this.getValue=function(element,expression,directChild){if(directChild){return element[expression]}else{return eval("element."+expression)}};this.findMin=function(elements,expression,directChild){return this.getValue(this.findMinElement(elements,expression,directChild),expression,directChild)};this.findMax=function(elements,expression,directChild){return this.getValue(this.findMaxElement(elements,expression,directChild),expression,directChild)};this.findMinElement=function(elements,expression,directChild){var min=Number.MAX_VALUE;var minElement=null;for(var i=0;i<elements.length;i++){var element=elements[i];var value=this.getValue(element,expression,directChild);if(value<min){min=value;minElement=element}}return minElement};this.findMaxElement=function(elements,expression,directChild){var max=0;var maxElement=null;for(var i=0;i<elements.length;i++){var element=elements[i];var value=this.getValue(element,expression,directChild);if(value>max){max=value;maxElement=element}}return maxElement}};var EvalUtils=new EvalUtilsClass();var UniqueValues=function(d){this.expression=d;this.directChild=EvalUtils.isDirectChild(d);var b=this;this.init=function(f){this.entries=new Array();var g=this.directChild?d:d.split(".");a(f,g,0);this.entries.sort(e)};var a=function(k,l,j){if(k instanceof Array){for(var f=0;f<k.length;f++){a(k[f],l,j)}}else{if(l instanceof Array){var h=l[j];k=EvalUtils.getValue(k,h,true);if(j==l.length){l=null}a(k,l,j+1)}else{if(l!=null){k=EvalUtils.getValue(k,l,true);a(k,null,0)}else{if(k==null){return}var g=new Entry(k);if(b.entries[g.key]==null){b.entries[g.key]=g;b.entries.push(g)}}}}};this.accept=function(g,f){var h=EvalUtils.getValue(g,this.expression,this.directChild);return c(h,f)};var c=function(g,f){if(g==null){return false}if(g instanceof Array){return g.some(function(h){return c(h,f)},this)}if(f instanceof Array){return f.some(function(h){return c(g,h)},this)}if(g.key!=null&&g.value!=null){return g.key==f}return normalize(g)==f};this.reject=function(g,h){var f=EvalUtils.getValue(g,this.expression,this.directChild);if(f instanceof Array){return f.every(function(i){this.reject(reject,h)})}else{return c(f,h)}};var e=function(g,f){if(g.value==f.value){return 0}else{if(g.value<f.value){return -1}else{return 1}}}};var Entry=function(b,a){if(b.value!=null&&b.key!=null){this.key=b.key;this.value=b.value}else{this.value=b;if(a==null){a=normalize(b)}this.key=a}};var normalize=function(a){return a.toUpperCase()};function TitleDecorator(c){this.title=c;this.outputHeader=b;this.outputFooter=a;function b(d){d.a('<tr><td>&nbsp;</td></tr><tr><td align="center"><span>').a(c).a('</span></td></tr><tr><td align="left">')}function a(d){d.a("</td></tr>")}}function SubTitleDecorator(b,a,c){this.outputHeader=function(d){if(c){if(b!=null){d.a('<tr><td align="left">').a(b).a("</td></tr>")}d.a('<tr><td align="left">')}else{d.a("<tr>");if(b!=null){d.a('<td class="filtersSubTitleLabel" align="right">').a(b).a("</td>")}d.a('<td class="filtersSubTitleSelector">')}};this.outputFooter=function(d){if(c){d.a("</td></tr>");if(a!=null){d.a('<tr><td align="left">').a(a).a("</td></tr>")}}else{d.a("</td>");if(a){d.a("<td>").a(a).a("</td>")}d.a("</tr>")}}}function GlobalDecorator(){this.outputHeader=function(a){a.a('<table id="filtersContent" border="0" cellpadding="0" cellspacing="0"><tr><td>').a('<form id="filtersForm" name="filters">')};this.outputFooter=function(a){a.a("</form></td></tr></table>")}}function AbstractFilter(c,b,a){this.decorator=c;this.uiOrder=b;this._containerElementId=it_nextRef();var d;this.getFieldName=function(){if(!d){var f=new StringBuilder();var e=false;if(!it_StringUtils.isEmpty(a)){e=true;f.a(a)}if(this.model&&this.model.expression){if(e){f.a(".")}f.a(this.model.expression)}d=f.toString()}return d};this.outputHtml=function(e){e.a('<table id="').a(this._containerElementId).a('" cellspacing="0" cellpadding="0" border="0" width="100%">');if(this.decorator){this.decorator.outputHeader(e)}this.outputHtmlContent(e);if(this.decorator){this.decorator.outputFooter(e)}e.a("</table>")};this.outputHtmlContent=function(e){};this.afterWrite=function(){}}var CompoundFilter=function(b,a){this.parent=AbstractFilter;this.parent(b,a);this.subFilters=[];this.addFilter=function(c){this.subFilters.push(c)};this.accept=function(d){for(var c=0;c<this.subFilters.length;c++){var e=this.subFilters[c];if(!e.accept(d)){return false}}return true};this.updateModel=function(){this.subFilters.forEach(function(c){c.updateModel()})};this.init=function(c){this.subFilters.forEach(function(d){d.init(c)})};this.outputHtmlContent=function(c){this.subFilters.forEach(function(d){d.outputHtml(c)})};this.afterWrite=function(){this.subFilters.forEach(function(c){c.afterWrite()})}};var CompoundComboFilter=function(b,a){this.parent=CompoundFilter;this.parent(b,a);this.isAllAccepted=function(){for(var d=0;d<this.subFilters.length;d++){var c=this.subFilters[d];if(!c.comboModel.allAccepted){return false}}return true}};var CheckBoxModel=function(a){this.expression=a;this.uniqueValues=new UniqueValues(a);this.rejectedValues=[];this.init=function(b){this.uniqueValues.init(b)};this.accept=function(b){var c=this.rejectedValues.length;if(c==0){return true}return !this.uniqueValues.reject(b,this.rejectedValues)};this.getEntries=function(){return this.uniqueValues.entries};this.setSelected=function(b,d){var c=this.rejectedValues.contains(b);if(d){if(c){this.rejectedValues.erase(b)}}else{if(!c){this.rejectedValues.push(b)}}}};var BooleanCheckBoxModel=function(f,b,d){this.expression=f;if(b==null){b="true"}if(d==null){d="false"}var c=EvalUtils.isDirectChild(f);var g=true;var e=true;var a=[new Entry(b,true),new Entry(d,false)];this.init=function(h){};this.accept=function(h){if(EvalUtils.getValue(h,this.expression,c)){return g}else{return e}};this.getEntries=function(){return a};this.setSelected=function(h,i){if(h){g=i}else{e=i}}};var CheckBoxFilter=function(d,c,b){this.parent=AbstractFilter;this.parent(c,b);this.model=d;this.checkBoxModel=d;var a=[];this.accept=function(e){return this.checkBoxModel.accept(e)};this.updateModel=function(){var e=this.checkBoxModel.getEntries();for(var g=0;g<e.length;g++){var h=e[g];var f=a[g];this.checkBoxModel.setSelected(h.key,f.checked)}};this.init=function(e){this.checkBoxModel.init(e)};this.outputHtmlContent=function(g){var f=this.checkBoxModel.getEntries();for(var h=0;h<f.length;h++){var j=f[h];var e=it_nextRef();a.push(e);g.a('<input id="').a(e).a('" type="checkbox" onClick="resultPage.updateFiltersModel();" checked><a onClick="it_InputUtils.click(\'').a(e).a("');resultPage.updateFiltersModel();\">").a(j.value).a("</a><br>")}};this.afterWrite=function(){a=a.map(function(e){return document.getElementById(e)})}};function ComboModel(b,a){this.expression=b;this.uniqueValues=new UniqueValues(b);if($type(a)=="string"){a=new Entry(a,-1000)}this.acceptAllEntry=a;this.allAccepted=true;this.init=function(c){this.uniqueValues.init(c)};this.accept=function(c){if(this.allAccepted){return true}return this.uniqueValues.accept(c,this.selectedKey)};this.getSelectedKey=function(){return this.selectedKey};this.setSelectedKey=function(c){this.selectedKey=c;this.allAccepted=(c==this.acceptAllEntry.key)};this.getEntries=function(){var c=[this.acceptAllEntry];c=c.concat(this.uniqueValues.entries);return c}}var NumberComboModel=function(c,b,a){this.expression=c;this.directChild=EvalUtils.isDirectChild(c);this.mode=b;if($type(a)=="string"){a=new Entry(a,-1000)}this.acceptAllEntry=a;this.allAccepted=false;this.numberFormat=null;this.init=function(f){this.entries=this.createEntries(f);if(this.numberFormat!=null){for(var d=0;d<this.entries.length;d++){var e=this.entries[d];if(!isNaN(e.value)){e.value=this.numberFormat.format(e.value)}}}if(this.acceptAllEntry!=null){this.entries.unshift(this.acceptAllEntry)}if(this.acceptAllEntry!=null){this.setSelectedKey(this.acceptAllEntry.key)}else{if(this.mode=="min"){this.setSelectedKey(this.entries[0].key)}else{if(this.mode=="max"){this.setSelectedKey(this.entries[this.entries.length-1].key)}}}};this.createEntries=function(d){return null};this.accept=function(d){if(this.allAccepted){return true}var e=parseFloat(EvalUtils.getValue(d,this.expression,this.directChild));if(isNaN(e)){return true}return this.acceptFloat(e)};this.acceptFloat=function(d){if(this.allAccepted){return true}if(this.mode=="min"){return d>=this.selectedKey}else{return d<=this.selectedKey}};this.getSelectedKey=function(){return this.selectedKey};this.setSelectedKey=function(d){var e=parseFloat(d);this.allAccepted=(this.acceptAllEntry!=null&&this.acceptAllEntry.key==e);this.selectedKey=e};this.getEntries=function(){return this.entries};this.setNumberFormat=function(d){this.numberFormat=d}};function PriceComboModel(b,a){this.parent=NumberComboModel;this.parent(b,a);this.numberFormat=new PriceFormat();this.createEntries=function(c){var f=this.findMinPrice();var d=this.findMaxPrice();var k=new Entry("min",f);var h=new Entry("max",d);var g=[];g.push(k);var j=f;for(var e=0;e<8;e++){j+=(d-f)/9;var l=new Entry(Math.round(j/10)*10,j);g.push(l)}g.push(h);return g};this.findMinPrice=function(){return EvalUtils.findMin(dataModel.elements,this.expression,this.directChild)};this.findMaxPrice=function(){return EvalUtils.findMax(dataModel.elements,this.expression,this.directChild)}}var ComboFilter=function(h,e,c,d,b,g){this.parent=AbstractFilter;this.parent(e,d,b);this.model=h;this.comboModel=h;var a;var f;this.accept=function(i){return this.comboModel.accept(i)};this.updateModel=function(){var i=document.filters.elements[this.getFieldName()].value;this.comboModel.setSelectedKey(i)};this.init=function(i){this.comboModel.init(i)};this.outputHtmlContent=function(k){f=it_nextRef();var l=this.getFieldName();k.a('<select class="box');if(c!=null){k.a(" ").a(c)}k.a('" id="').a(f).a('" name="').a(l).a('" onChange="resultPage.updateFiltersModel();">');var j=this.comboModel.getEntries();for(var m=0;m<j.length;m++){var n=j[m];k.a('<option value="').a(n.key).a('"');if(n.key==this.comboModel.getSelectedKey()){k.a(" selected")}k.a(">").a(n.value).a("</option>")}k.a("</select>")};this.afterWrite=function(){a=$(f);var i=this.model.getEntries().length;if(i<3){a.disabled=true;a.selectedIndex=i-1}if(g===true&&!it_IE6){it_InputUtils.wrapInNiceBorders(a,"low")}};this.isAllAccepted=function(){return this.comboModel.allAccepted}};function AdvertiserFilter(a){this.parent=CheckBoxFilter;this.parent(new CheckBoxModel("advertiserShownName"),new TitleDecorator(it_message("filters.touroperators")),a)}function SliderFilter(f,b,g,i){i=$extend({fieldNamePrefix:null},i);this.model={expression:f};this.parent=AbstractFilter;this.parent(b,g,i.fieldNamePrefix);var c=EvalUtils.isDirectChild(f);var h=null;var d=null;var e=null;var a=null;this.inAcceptAllState=true;this.accept=function(j){if(this.inAcceptAllState){return true}var k=EvalUtils.getValue(j,f,c);return this.acceptValue(k)};this.acceptValue=function(j){return j>=e&&j<=a};this.updateModel=function(){};this.init=function(j){h=EvalUtils.findMin(j,f,c);d=EvalUtils.findMax(j,f,c);e=h;a=d};this.outputHtml=function(j){var k=this.getFieldName();j.a('<div style="position: relative; width: 160px; height: 50px; margin: 0 6px;" >').a('<div id="').a(k).a('.minLabel" style="position: absolute; top: 35px; left: -5px; width: 50px;">').a(it_message("filters.priceRange.min")).a("</div>").a('<div id="').a(k).a('.maxLabel" style="position: absolute; top: 35px; right: -4px; width: 50px; text-align: right;">').a(it_message("filters.priceRange.max")).a("</div>").a('<div id="').a(k).a('.leftLabel" class="filterKnobPrice" style="position: absolute; top: 0px; left: 0px;"></div>').a('<div id="').a(k).a('.rightLabel" class="filterKnobPrice" style="position: absolute; top: 0px; left: 50px;"></div>').a('<div id="').a(k).a('.track" class="filterTrack" style="position: absolute; top: 20px; left: 0px; width: 160px;"></div>').a('<div id="').a(k).a('.leftKnob" class="filterKnob" style="position: absolute; top: 20px; left: -5px;"></div>').a('<div id="').a(k).a('.rightKnob" class="filterKnob" style="position: absolute; top: 20px; left: 154px;"><BR/></div>')};this.afterWrite=function(){new it_RangeSlider(h,d,this.getFieldName(),$extend({knobClassWhenPressed:"filterKnobPressed",onChange:function(j,k){if(j){a=k}else{e=k}this.inAcceptAllState=e==h&&a==d;resultPage.updateFiltersModel()}.bind(this),formatterUnit:"&#8364;"},i))}}function TimeSliderFilter(e,b,a,c){c=$extend({formatter:function(g){var f=g/60;var h=g-f*60;return""+f+"h"+(h<10?"0"+h:h)},formatterUnit:""},c);this.parent=SliderFilter;this.parent(e,b,a,c);var d=function(i){var g=i.indexOf("h");if(g==-1){return -1}var f=i.substring(0,g).toInt();var h=i.substring(g+1,i.length());return f*60+h}}var it_ResultPage=function(c){c=$extend({useNiceBorders:false,rootFilterNode:null,dataModel:null,initialResultsPerPage:25,sendResults:false},c);var d;var b=false;var a=this;var e=function(){if(c.rootFilterNode){c.rootFilterNode.init(c.dataModel.elements);var h=[];c.rootFilterNode.callOnFilters(function(m){h.push(m)});h=h.filter(function(m){return m.uiOrder});h.sort(function(n,m){return n.uiOrder-m.uiOrder});var g=new StringBuilder();var k=new GlobalDecorator();k.outputHeader(g);h.forEach(function(m){m.outputHtml(g)});k.outputFooter(g);var j=g.toString();document.write(j);h.forEach(function(m){m.afterWrite()})}c.dataModel.filteredElements=c.dataModel.elements;var f=new Fx.Scroll(window,{duration:800});var l=$("listNFilters").getTop();var i=$$(".resultCountStatus");d=new it_PageSelector(c.dataModel.filteredElements.length,["topPageSelector","bottomPageSelector"],"topResultPerPageSelector",{initialResultsPerPage:c.initialResultsPerPage,useNiceBorders:c.useNiceBorders,events:{selectionChanged:function(w,u,t,q){var x=c.dataModel.filteredElements.slice(u,t);var v=new StringBuilder();var y=c.dataModel.formatter;var o=x.length;for(var s=0;s<o;s++){var r=x[s];y.format(r,v,s,o)}$("resultList").innerHTML=v.toString();var B=c.dataModel.elements.length-c.dataModel.filteredElements.length;var p;if(B!=0){p=it_message("common.synthResultsDisplayed",{resultsDisplayed:c.dataModel.filteredElements.length,resultsHidden:B})}else{p=it_message("common.resultsFound",{resultsFound:c.dataModel.elements.length})}i.forEach(function(C){C.innerHTML=p});if(!q){if(!b){if(it_whitelabel){}else{f.set(0,l)}}}if(c.sendResults){var n=[];var m=$("resultList").getElements(".results");m.forEach(function(E){var D=parseInt(E.getProperty("id"));var F=c.dataModel.elements[D];var C=F.toExternalJson();C.y=E.getPosition().y;C.height=E.offsetHeight;n.push(C)});var A={page:w.getSelectedPage()+1,pageCount:w.getPageCount(),filteredElementCount:c.dataModel.filteredElements.length,elementCount:c.dataModel.elements.length,elements:n};if(c.dataModel.formData){A.form=c.dataModel.formData.toExternalJson()}var z=JSON.encode(A);parent.sendResults(z)}}}});window.resultPage=a};this.updateFiltersModel=function(){c.rootFilterNode.callOnFilters(function(f){f.updateModel()});this.updateUI()};this.updateUI=function(){if(c.rootFilterNode){c.dataModel.filteredElements=c.rootFilterNode.applyFilter(dataModel.elements)}else{c.dataModel.filteredElements=c.dataModel.elements}c.dataModel.filteredElements.forEach(function(f){if(f.update){f.update()}});if(c.dataModel.sorter!=null){c.dataModel.filteredElements.sort(c.dataModel.sorter)}b=true;d.setResultCount(c.dataModel.filteredElements.length);b=false};e()};var it_PageSelector=function(i,m,f,g){m=it_Utils.ensureDomArray(m);f=it_Utils.ensureDomArray(f);g=$extend({beforeAndAfterPageCount:3,initialResultsPerPage:25,maxPageGap:2,resultsPerPageValues:["5","10","25","50","100","250"],useNiceBorders:true,events:[]},g);var b=new Element("div");b.addEvents(g.events);var h=g.beforeAndAfterPageCount+(g.maxPageGap-1)+g.beforeAndAfterPageCount+1+g.beforeAndAfterPageCount+(g.maxPageGap-1)+g.beforeAndAfterPageCount;var n=g.initialResultsPerPage;var r=i;var d;var j=-1;var s=[];var p=false;var k=this;var q=function(){k.setResultCount(i);f.forEach(function(u){u.empty();var t=l();s.push(t);u.adopt(t);if(g.useNiceBorders){it_InputUtils.wrapInNiceBorders(t,"low")}});e()};this.setResultCount=function(t){r=t;a()};this.setResultsPerPage=function(t){n=t;a();e()};var a=function(){d=Math.ceil(r/n);k.setSelectedPage(0)};var e=function(){p=true;s.forEach(function(t){it_SelectUtils.select(t,n)});p=false};this.addEvent=function(t,u){b.addEvent(t,u)};this.setSelectedPage=function(v){var w=j==-1;j=v;m.forEach(function(y,x){c(y)});var t=j*n;var u=Math.min(r,(j+1)*n);b.fireEvent("selectionChanged",[this,t,u,w])};var c=function(u){u.empty();var t=false;var w=false;var v;if(d>h){t=(j>=(g.beforeAndAfterPageCount+g.maxPageGap+g.beforeAndAfterPageCount));w=(j<=(d-g.beforeAndAfterPageCount-g.maxPageGap-g.beforeAndAfterPageCount-1))}if(t){for(v=0;v<g.beforeAndAfterPageCount;v++){o(v,j,u)}u.appendText("... ");for(v=(j-g.beforeAndAfterPageCount);v<j;v++){o(v,j,u)}}else{for(v=0;v<j;v++){o(v,j,u)}}if(w){for(v=j;v<=(j+g.beforeAndAfterPageCount);v++){o(v,j,u)}u.appendText("... ");for(v=(d-g.beforeAndAfterPageCount);v<d;v++){o(v,j,u)}}else{for(v=j;v<d;v++){o(v,j,u)}}};var o=function(t,w,u){var v=new Element("a",{text:t+1,"class":t==w?"listNavigatorASelected":"listNavigatorA",events:{click:function(){k.setSelectedPage(t)}}});u.adopt(v).appendText(" ")};var l=function(){var t=new Element("select",{"class":"box pageSelect",events:{change:function(){if(p){return}var w=t.options[t.selectedIndex].value;k.setResultsPerPage(w)}}});for(var u=0;u<g.resultsPerPageValues.length;u++){var v=g.resultsPerPageValues[u];it_SelectUtils.addOption(t,v,v)}return t};this.getPageCount=function(){return d};this.getSelectedPage=function(){return j};q()};