var FARECOMPAREMODE=false;var TRIPALERTZMODE=false;
/* $Rev: 326831 $ */
var itandlAttractionsJSON;function itandlAttractionsCallback(a){itandlAttractionsJSON=a}var itandlEventsJSON;function itandlEventsCallback(a){itandlEventsJSON=a}var itandlToursJSON;function itandlToursCallback(a){itandlToursJSON=a}var itandlDiningJSON;function itandlDiningCallback(a){itandlDiningJSON=a}itaneedleutils={EVENT_DOMAIN:"us-festivals",TOUR_DOMAIN:"Tours",ATTRACTION_DOMAIN:"US-Attractions",DINING_DOMAIN:"Restaurant",StringBuffer:function(a){if(a){this.buffer=[a]}else{this.buffer=[]}},callJsonFunction:function(a,b){jQuery.ajax({type:"get",url:a,data:null,success:b,dataType:"script",cache:true})},createLeftColumn:function(){return jQuery('<div class="ndlLeftColumn" style="width:'+(itaneedleutils.widgetPane.tabVariables.widgetListWidth+5)+'px;"></div>')},formatDate:function(a){return(a.getMonth()+1)+"/"+a.getDate()+"/"+a.getFullYear()},formatDateDetails:function(a){return this.DAY_NAMES[a.getDay()]+" "+this.MONTH_NAMES[a.getMonth()]+" "+a.getDate()},formatDateDetailsShort:function(a){return this.MONTH_NAMES[a.getMonth()]+" "+a.getDate()},formatDateTime:function(c){var a=c.getHours();var d=c.getMinutes();var b="AM";if(d<10){d="0"+d}if(a>11){a-=12;b="PM"}var e=this.formatDateDetails(c);if(a==0&&d==0){return e}if(a==0&&d!=0){a=12}return e+" "+a+":"+d+b},SPACER:'<div class="ndlSpacer"/>',getFirstIndexedValue:function(a,c){var b=a[0];if(b){return b[c]}return null},getFirstDisplayValue:function(a){return itaneedleutils.getFirstIndexedValue(a,0)},getFirstSortValue:function(a){return itaneedleutils.getFirstIndexedValue(a,1)},sortByField:function(a){return function(b,c){return itaneedleutils.nameSortCore(b[a],c[a])}},nameSort:function(a,b){return itaneedleutils.nameSortCore(a.sort,b.sort)},nameSortCore:function(b,a){if(b<a){return -1}else{if(b==a){return 0}else{return 1}}},buildFilterList:function(y,c,w,e,u,s){var n=4;var a={};var o={};jQuery.each(y,function(){var j={};jQuery.each(this[c],function(){var C=this.name;if(!C){C=this}var D=this.supertopic;if(D){j[D]=true;if(!o[D]){o[D]={}}o[D][C]?o[D][C]++:o[D][C]=1}else{j[C]=true}});for(var i in j){a[i]?a[i]++:a[i]=1}});var d=[];for(var B in a){d.push(B)}d.sort();var f={};if(d.length<=n){u=false}else{if(d.length<=n+2){n=n+2;u=false}}if(u){var q=[];for(var B in a){q.push([B,a[B]])}q.sort(function(j,i){var C=itaneedleutils.nameSortCore(j[1],i[1]);if(C==0){return itaneedleutils.nameSortCore(j[0],i[0])}return -1*C});for(var x=0;x<n&&x<q.length;x++){f[q[x][0]]=true}}var l=w+"s";if(w=="City"){l="Cities"}var g=0;var p=new itaneedleutils.StringBuffer('<div class="ndlFilterTitle">');p.add(e);p.add("</div>");p.add('<table class="ndlEventTypeFilter" cellspacing="0">');p.add("<tbody>");var h="Featured "+l;if(s){this._renderFilterRow(p,h,c,u,f,g,a,true,true);if(!a[h]){s=false}}else{p.add('<tr class="ndlFilterRow ndlHoverOff ndlHighlightRow">');p.add('<td class="ndlFilterCheckBox">');p.add('<div><input type="checkbox" value="all" id="'+c+"needleCheckbox"+g+'" checked/></div>');p.add("</td>");p.add('<td class="ndlLabelForFilter" colspan="2">');p.add('<label for="'+c+"needleCheckbox"+g+'">All '+l+"</label>");p.add("</td>");p.add("</tr>")}for(var x=0;x<d.length;x++){g++;var B=d[x];if(B!=h){this._renderFilterRow(p,B,c,u,f,g,a,!s,null,o[B]!=null);if(o[B]){var t=[];for(var k in o[B]){t.push(k)}t.sort();for(var v=0;v<t.length;v++){g++;this._renderFilterRow(p,t[v],c,u,f,g,o[B],!s,null,"isChild")}var b=[];var A="Other "+B;jQuery.each(y,function(){var j=false;jQuery.each(this[c],function(){if(this.name==B){j=true}});if(j){var i=false;jQuery.each(this[c],function(){if(o[B][this.name]){i=true}});if(!i){b.push(this);if(!this.otherCategory){this.otherCategory=[]}this.otherCategory.push(A)}}});if(b.length>0){g++;var r={};r[A]=b.length;this._renderFilterRow(p,A,c,u,f,g,r,!s,null,"isChild")}}}}if(u){p.add('<tr class="ndlExpandFilter">');p.add('<td colspan="3"><span class="linked">Show '+(d.length-n)+" more "+e.toLowerCase()+"</span></td>");p.add("</tr>");p.add('<tr class="ndlCollapseFilter">');p.add('<td colspan="3"><span class="linked">Show fewer '+e.toLowerCase()+"</span></td>");p.add("</tr>")}p.add("</tbody>");p.add("</table>");var z=jQuery(p.toString());z.find(".ndlExpandFilter,.ndlCollapseFilter").click(function(){var i=jQuery(this);var j=i.parents(".ndlEventTypeFilter");j.toggleClass("ndlExpandedFilter");if(j.is(".ndlExpandedFilter")){j.find(".ndlCollapseFilter,.ndlAbbreviated").not(".ndlFilterIndent").show()}else{j.find(".ndlCollapseFilter,.ndlAbbreviated,.ndlContractChildren").hide();j.find(".ndlExpandChildren").show()}});var m=z.find(".ndlFilterRow");if(!s){m=m.filter(":not(:first)")}m.bind("mouseover",function(){jQuery(this).addClass("ndlHover").removeClass("ndlHoverOff")}).bind("mouseout",function(){jQuery(this).removeClass("ndlHover").addClass("ndlHoverOff")});z.find(".ndlOnlyLink").bind("click",function(){var i=jQuery(this);i.parents("table:first").find("input:checked").removeAttr("checked");var j=i.parents("tr:first");j.find("input[type=checkbox]").attr("checked",true);itaneedleutils.checkChildrenAndParents(j,true)});z.find(".ndlExpandChildren").bind("click",function(){var i=jQuery(this);i.hide();i.parent().find(".ndlContractChildren").show();var j=i.parents("tr:first");j=j.next();while(j.is(".ndlFilterIndent")){j.show();j=j.next()}});z.find(".ndlContractChildren").bind("click",function(){var i=jQuery(this);i.hide();i.parent().find(".ndlExpandChildren").show();var j=i.parents("tr:first");j=j.next();while(j.is(".ndlFilterIndent")){j.hide();j=j.next()}});return z},checkChildrenAndParents:function(c,a){if(c.is(".ndlFilterParent")){c=c.next();while(c.is(".ndlFilterIndent")){c.find("input[type=checkbox]").attr("checked",a);c=c.next()}}if(c.is(".ndlFilterIndent")){c=c.prev();while(c.is(".ndlFilterIndent")){c=c.prev()}if(a){var b=c;c=c.next();while(c.is(".ndlFilterIndent")){a=a&&c.find("input[type=checkbox]").attr("checked");c=c.next()}c=b}c.find("input[type=checkbox]").attr("checked",a)}},_renderFilterRow:function(f,a,j,b,e,g,i,h,d,c){if(i[a]){f.add('<tr class="ndlFilterRow ndlHoverOff');if(b&&!e[a]){f.add(" ndlAbbreviated")}if(d){f.add(" ndlHighlightRow")}if(c=="isChild"){f.add(" ndlFilterIndent")}if(c==true){f.add(" ndlFilterParent")}f.add('">');if(c=="isChild"){f.add('<td class="ndlLabelForFilter">&nbsp;</td>')}f.add('<td class="ndlFilterCheckBox">');f.add('<div><input type="checkbox" value="'+a+'" id="'+j+"needleCheckbox"+g+'" '+(h?"checked":"")+"/> </div>");f.add("</td>");f.add('<td class="ndlLabelForFilter"');if(c!="isChild"){f.add(' colspan="2"')}f.add(">");f.add('<label for="'+j+"needleCheckbox"+g+'">');if(j=="eventTypes"&&itaneedleutils.EVENT_ICONS[a]){f.add(' <img src="');f.add(itaneedleutils.baseUrl);f.add("/images/");f.add(itaneedleutils.EVENT_ICONS[a]);f.add('"/> ')}f.add(a);f.add('</label> <span class="ndlFade">('+i[a]+")</span>");if(c==true){f.add(' <span class="linked ndlExpandChildren">...</span>');f.add('<span class="linked ndlContractChildren">(close)</span>')}f.add('&nbsp;<span class="ndlOnlyLink linked">Only</span>');f.add("</td>");f.add("</tr>")}},_getFilterBoxHtml:function(b){var a=new itaneedleutils.StringBuffer('<div class="ndlRightColumn">');a.add("</div>");return jQuery(a.toString())},initPane:function(b){var a=jQuery("#needle .needleMain .ndlContent");var c=a.find("."+b);if(c.length==0){c=jQuery("<div class="+b+"></div>");a.append(c)}else{c.html("").show()}return c},checkboxClicked:function(c){var b=jQuery(c);var d=b.parents("table:first").find("input[value=all]:first");if(b.val()=="all"){b.parents("table:first").find("input[type=checkbox]").attr("checked",b.attr("checked"))}else{var e=b.attr("checked");if(!e){d.attr("checked",e)}else{var a=b.parents("table:first").find("input[type=checkbox]:not(:first):checked").length;var f=b.parents("table:first").find("input[type=checkbox]:not(:first)").length;if(a==f){d.attr("checked",e)}}itaneedleutils.checkChildrenAndParents(b.parents("tr:first"),e)}},updateElementListBasedOnFilters:function(a,f,c,g,h){var i=jQuery.trim(a.find(".ndlSearchInput").val()).toLowerCase();if(!a.find("input.ndlSearchCheckbox")[0].checked){i=""}var b;var e=f.find("input[value=all]").attr("checked");if(!f||(e&&i=="")){b=c}else{var d={};if(!e){f.find("tr").not(".ndlFilterParent").find("input:checked").each(function(){d[this.value]=true})}b=jQuery.map(c,function(k){var j=null;if(i==""||k.sort.indexOf(i)!=-1||(k.description.length>0&&k.description[0].sort.indexOf(i)!=-1)){if(e){j=k}else{jQuery.each(k[g],function(){if(d[this.name]||d[this]||d[this.supertopic]){j=k}});if(k.otherCategory){jQuery.each(k.otherCategory,function(){if(d[this]){j=k}})}}}return j})}b.sort(h);return b},commonClearOldWidgetData:function(a){a.children().remove()},getOrCreateHeaderSort:function(a){var b=a.find(".ndlLeftColumn");if(b.length==0){b=itaneedleutils.createLeftColumn();a.append(b)}var c=a.find(".ndlEventListHeader");if(c.length>0){c.html("")}else{var c=jQuery("<div class='ndlEventListHeader'></div>");b.append(c)}return c},getOrCreateSharedHeader:function(f,j,k,d,a,c,e,b,i){var h=f.find(".ndlSharedHeader");if(h.length>0){h.html("")}else{h=jQuery("<div class='ndlSharedHeader'></div>");f.append(h)}if(j==0&&!k){h.html("No "+a.toLowerCase()+"s available.");return h}else{if(j||j==0){var g=new itaneedleutils.StringBuffer();g.add(j);if(j!=k){g.add("/"+k)}g.add(" "+a);if(k>1){g.add("s")}if(d&&j>d){g.add(" (first "+d+" displayed)")}if(e){g.add(" near ");g.add(e)}if(e&&b&&i){g.add(",")}if(b&&i){g.add(" "+itaneedleutils.formatDateDetailsShort(b)+"-"+itaneedleutils.formatDateDetailsShort(i))}h.html(g.toString());return h}}},getOrCreateListArea:function(a,b){var d=b.find(".ndlLeftColumn");if(d.length==0){d=itaneedleutils.createLeftColumn();b.append(d)}d.children().not(".ndlEventListHeader").remove();var c=jQuery("<div></div>");c.css({width:a.widgetListWidth+"px",height:a.widgetListHeight+"px"});d.append(c);return c},createFilterBox:function(b,c,e){var d=c.find(".ndlRightColumn");if(d.length==0){d=itaneedleutils._getFilterBoxHtml(e);var a=b.widgetListHeight;a+=38;c.append(d);d.css({height:a+"px"})}filter=d;filter.html("");return filter},addSearchBox:function(d,j,b){var i=d.find(".ndlRightColumn");var h="Find";i.append(itaneedleutils.SPACER);var e=new itaneedleutils.StringBuffer('<div class="ndlFilterTitle">');e.add(h);e.add("</div>");e.add('<table class="ndlEventTypeFilter">');e.add("<tbody>");e.add('<tr class="ndlFilterRow ndlHoverOff">');e.add('<td class="ndlFilterCheckBox ndlSearchCheckBox">');e.add('<div><input type="checkbox" class="ndlSearchCheckbox"/> </div>');e.add("</td>");e.add('<td class="ndlLabelForFilter">');e.add('<input size="18" class="ndlSearchInput"/>');e.add("</td>");e.add("</tr>");e.add("</tbody>");e.add("</table>");i.append(e.toString());var k=i.find(".ndlSearchInput");var f=i.find("input.ndlSearchCheckbox");var a=0;var g=null;var c=function(){if(g!=null){clearTimeout(g)}if(jQuery.trim(k.val())==""){if(f[0].checked){a=(new Date()).getTime()}f[0].checked=false}else{if(!f[0].checked){a=(new Date()).getTime()}f[0].checked=true}b()};k.keypress(function(l){if(l.keyCode==13){c()}else{if(g!=null){clearTimeout(g)}g=setTimeout(c,1000)}}).change(c);f.click(function(){var l=(new Date()).getTime();if(l-a>400){b()}else{return false}});i.find(".ndlLabelForFilter input").css("visibility","hidden").css("visibility","visible")},getTabHtml:function(d,a){var c=new itaneedleutils.StringBuffer('<div class="ndlTabHeader">');for(var b=0;b<d.length;b++){var e=d[b]==a||(a==null&&b==0);c.add('<div class="ndlTabOuter');if(e){c.add(" ndlTabselected")}c.add('">');c.add('<div class="ndlTabInner">');c.add('<div class="linked ndlTabLabel ndlTabContent');if(e){c.add(" ndlActive")}c.add('">');c.add("<span>");c.add(d[b]);c.add("</span>");c.add("</div>");c.add("</div>");c.add("</div>")}c.add("</div>");c.add('<table class="ndlRoundedPane" border="0" cellpadding="0" cellspacing="0">');c.add("<tbody>");c.add("<tr>");c.add('<td class="ndlRoundedPaneCorner ndlRoundedPaneTopLeft"> </td>');c.add('<td class="ndlRoundedPaneTopBottom ndlRoundedPaneTop"> </td>');c.add('<td class="ndlRoundedPaneCorner ndlRoundedPaneTopRight"> </td>');c.add("</tr>");c.add("<tr>");c.add('<td class="ndlRoundedPaneSide ndlRoundedPaneLeft"> </td>');c.add('<td class="ndlRoundedPaneMain needleMain">');c.add("</td>");c.add('<td class="ndlRoundedPaneSide ndlRoundedPaneRight"> </td>');c.add("</tr>");c.add("<tr>");c.add('<td class="ndlRoundedPaneCorner ndlRoundedPaneBottomLeft"> </td>');c.add('<td class="ndlRoundedPaneTopBottom ndlRoundedPaneBottom"> </td>');c.add('<td class="ndlRoundedPaneCorner ndlRoundedPaneBottomRight"> </td>');c.add("</tr>");c.add("</tbody></table>");return c.toString()},getIcon:function getIcon(a){return new google.maps.MarkerImage(this.getIconImage(a),new google.maps.Size(32,32))},getIconImage:function(a){return itaneedleutils.baseUrl+"images/"+a+".png"},highlightOverlay:function(b,a,c){b.setIcon(itaneedleutils.getIcon(a));b.setZIndex(c)},createMapAddress:function(a,e){var b=jQuery("<div></div>");var d=new itaneedleutils.StringBuffer('<span class="ndlMapStayingHeader">Where are you staying?</span> <span class="ndlMapStaying">Enter an address to show on map</span>');d.add("<table><tr><td>");d.add('<img class="linked" src="'+itaneedleutils.getIconImage("purple")+'"/> ');d.add('</td><td valign="middle">');d.add("<span>");d.add('<input class="ndlStayingInput"/>');d.add(' <input type="button" class="ndlStayingButton" value="Add to map"/>');d.add("</span>");d.add("</td></tr></table>");b.html(d.toString());b.find("img").click(function(){var f=e.map;if(f){if(e.addressMarker){f.panTo(e.addressMarker.position)}}});e.mapInput=b.find(".ndlStayingInput");if(a.whereStaying){e.mapInput.val(a.whereStaying)}var c=b.find(".ndlStayingButton");e.mapInput.keypress(function(f){if(f.keyCode==13){c.click()}});c.click(function(){a.whereStaying=jQuery.trim(e.mapInput.val());if(a.whereStaying==""){a.whereStayingLocation=null;itaneedleutils.displayOrUpdateAddress(a,e)}else{var f={address:a.whereStaying};var g=e.map;if(g){f.bounds=g.getBounds()}itaneedleutils.geocoder.geocode(f,function(i,h){if(h==google.maps.GeocoderStatus.OK){a.whereStayingLocation=i[0].geometry.location;a.whereStayingResult=i[0].formatted_address}else{a.whereStayingLocation=null}itaneedleutils.displayOrUpdateAddress(a,e)})}});return b},displayOrUpdateAddress:function(a,e){var b=a.whereStayingLocation;var c=e.addressMarker;var f=a.whereStayingResult;if(b){if(e.addressMarker==null){var d=e.map;if(d){c=new google.maps.Marker({position:b,title:f,map:d,icon:itaneedleutils.getIcon("purple"),zIndex:20});e.addressMarker=c}}else{c.setPosition(b);c.setTitle(f);c.setMap(e.map)}}else{if(c){c.setMap(null);e.addressMarker=null}}if(e.mapInput&&a.whereStaying){e.mapInput.val(a.whereStaying)}},geocoder:new google.maps.Geocoder(),linkregex:/^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*)/,DAY_NAMES:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],MONTH_NAMES:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],VENDOR_IMAGES:{Ticketmaster:"logo.ticketmaster.sm.gif",Stubhub:"logo.stubhub.sm.gif",Ticketcity:"logo.ticketcity.sm.gif","Ticket Network":"ticketnetwork.gif"},EVENT_ICONS:{Sports:"sports.png",Music:"music.png",Entertainment:"perf.png","Arts & Education":"art.png",Community:"misc.png","Special Interest":"balloon.png"},baseUrl:"../src/",stubhubPID:"3421415",openTablePID:"126",ticketnetworkPID:"&utm_medium=3421415&utm_source=cjid&cjid=3421415",DAY:1000*60*60*24,TABNAMES:["Events","Tours","Attractions","Dining"],MAP_LIMIT:100,widgetPane:new function(){var a=this;this.startDate;this.endDate;this.narrowStartDate=null;this.narrowEndDate=null;this.metro;this.latitude;this.longitude;this.urlbase;this.callback;this.tabVariables={widgetListWidth:576,widgetListHeight:491};this.initializedTabs={};this.selectedTabName=null;this.contentPane;this.tabVariables.widgetUseTabs=true;this.hasBeenInited=false;this.renderTab=function(b,f,c,d,h,e,g){this.renderSelectedTab(null,b,f,c,d,h,e,g)};this.renderSelectedTabFromAddress=function(d,b,f,e,c,g){this.startDate=b;this.endDate=f;this.metro=null;this.tabVariables.cityname=e;this.latitude=null;this.longitude=null;this.address=c;this.urlbase=d;this.callback=g;this.initializedTabs={};this.initWidgetDisplay();this.initContentPane()};this.renderSelectedTab=function(d,b,g,c,e,i,f,h){this.startDate=b;this.endDate=g;this.metro=c;this.tabVariables.cityname=e;this.latitude=i;this.longitude=f;this.urlbase=d;this.callback=h;this.initializedTabs={};this.initWidgetDisplay();this.initContentPane()};this.narrowDateRange=function(b,c,d){this.narrowStartDate=b;this.narrowEndDate=c;this.contentPane.narrowDateRange(b,c,d)};this.resetDateRange=function(b){this.narrowStartDate=null;this.narrowEndDate=null;this.contentPane.resetDateRange(this.startDate,this.endDate,b)};this.initWidgetDisplay=function(){if(this.hasBeenInited){return}if(this.tabVariables.widgetUseTabs&&jQuery(".ndlTabHeader").length==0){this.hasBeenInited=true;jQuery(document).unload(function(h){GUnload()});var f=jQuery(itaneedleutils.getTabHtml(itaneedleutils.TABNAMES,this.selectedTabName));var e=new itaneedleutils.StringBuffer('<div class="ndlLoading">');e.add('<table class="ndlRoundedPane" border="0" cellpadding="0" cellspacing="0">');e.add("<tbody>");e.add("<tr>");e.add('<td class="ndlRoundedPaneCorner ndlRoundedPaneTopLeft"> </td>');e.add('<td colspan="2" class="ndlRoundedPaneTopBottom ndlRoundedPaneTop"> </td>');e.add('<td class="ndlRoundedPaneCorner ndlRoundedPaneTopRight"> </td>');e.add("</tr>");e.add("<tr>");e.add('<td class="ndlRoundedPaneSide ndlRoundedPaneLeft"> </td>');e.add('<td class="ndlRoundedPaneMain">');e.add('<img src="'+itaneedleutils.baseUrl+'/images/loading.gif"/> ');e.add("</td>");e.add('<td class="ndlRoundedPaneMain ndlfade">');e.add("&nbsp;&nbsp;&nbsp;Loading...");e.add("</td>");e.add('<td class="ndlRoundedPaneSide ndlRoundedPaneRight"> </td>');e.add("</tr>");e.add("<tr>");e.add('<td class="ndlRoundedPaneCorner ndlRoundedPaneBottomLeft"> </td>');e.add('<td colspan="2" class="ndlRoundedPaneTopBottom ndlRoundedPaneBottom"> </td>');e.add('<td class="ndlRoundedPaneCorner ndlRoundedPaneBottomRight"> </td>');e.add("</tr>");e.add("</tbody></table>");e.add("</div>");e.add('<div class="ndlContent">');e.add("</div>");f.find(".ndlRoundedPaneMain").html(e.toString());var c=jQuery("#needle");c.children().remove();c.append(f);c.find(".ndlTabLabel").click(function(){var h=jQuery(this);h.parents(".ndlTabHeader:first").find(".ndlTabOuter").removeClass("ndlTabselected").find(".ndlTabLabel").removeClass("ndlActive");h.addClass("ndlActive").parents(".ndlTabOuter:first").addClass("ndlTabselected");a.selectedTabName=jQuery.trim(h.find("span").html());a.initContentPane()});var b=this.tabVariables.widgetListWidth+225;var d=this.tabVariables.widgetListHeight+66;c.find(".needleMain").css({width:b+"px",height:d+"px"});c.find("table:first").css({width:(b+24)+"px"});var g=c.find(".ndlLoading");g.css({left:((b-124)/2)+"px"});c.find(".needleMain .ndlContent")}};this.initContentPane=function(){if(this.contentPane!=null){this.contentPane.unload();this.commonUnload()}this.contentPane=null;var c=jQuery(".needleMain .ndlContent");if(this.selectedTabName==null){this.selectedTabName="Events"}if(this.initializedTabs[this.selectedTabName]){this.contentPane=this.initializedTabs[this.selectedTabName];this.commonRestore();this.contentPane.restore()}else{var b=this.tabVariables[this.selectedTabName];if(b==null){b={};this.tabVariables[this.selectedTabName]=b}if(this.selectedTabName=="Events"){this.contentPane=new itaneedleutils.EventPane(this.startDate,this.endDate,this.tabVariables,b)}else{if(this.selectedTabName=="Tours"){this.contentPane=new itaneedleutils.TourPane(this.tabVariables,b)}else{if(this.selectedTabName=="Dining"){this.contentPane=new itaneedleutils.DiningPane(this.tabVariables,b)}else{if(this.selectedTabName=="Attractions"){this.contentPane=new itaneedleutils.AttractionsPane(this.tabVariables,b)}else{c.children().remove()}}}}jQuery(".needleMain").addClass("ndlCurrentlyLoading");if(this.contentPane!=null){this.initializedTabs[this.selectedTabName]=this.contentPane;this.contentPane.getContent(this.urlbase,this.metro,this.latitude,this.longitude,this.address,this.callback)}}};this.commonUnload=function(b){this.contentPane.base.hide()};this.commonRestore=function(){this.contentPane.base.show();if(this.narrowStartDate){this.contentPane.narrowDateRange(this.narrowStartDate,this.narrowEndDate)}};this.setEventListSize=function(c,b){this.tabVariables.widgetListWidth=c;this.tabVariables.widgetListHeight=b};this.setUseTabs=function(b){this.tabVariables.widgetUseTabs=b}},AttractionsPane:function(a,b){this.tabVariables=a;this.localVariables=b;this.localVariables.allObjects=[];var c=this;this.base=itaneedleutils.initPane("ndlAttractionsPane");this.getContent=function(g,f,j,h,d,i){g+="Matrix2Attractions.do?domain="+itaneedleutils.ATTRACTION_DOMAIN+"&mode=concise&";if(f){g+="metro="+f}else{if(j&&h){g+="lat="+j+"&long="+h}else{g+="address="+d}}var e=g+"&callback=itandlAttractionsCallback";itaneedleutils.callJsonFunction(e,function(){var k=itandlAttractionsJSON;c.getAttractionsFromJSON(k);c.getNeedleWidget();jQuery(".needleMain").removeClass("ndlCurrentlyLoading");if(i){i(k.success,c.localVariables.objects.length,k.errorCode,k.errorMessage)}})};this.narrowDateRange=function(d,e,f){};this.resetDateRange=function(d,e,f){c.getNeedleWidget();if(f){f(true,c.localVariables.objects.length)}};this.getAttractionsFromJSON=function(f){var e=f.results;if(!e){e=[]}this.localVariables.objects=[];for(var d=0;d<e.length;d++){this.localVariables.objects.push(new itaneedleutils.Attraction(e[d]))}this.localVariables.allObjects=this.localVariables.objects};this.clearOldWidgetData=function(){itaneedleutils.commonClearOldWidgetData(this.base);this.renderedTabs={}};this.unload=function(){};this.restore=function(){if(this.map){google.maps.event.trigger(this.map,"resize")}itaneedleutils.displayOrUpdateAddress(a,b)};this.updateSharedHeader=function(){itaneedleutils.getOrCreateSharedHeader(this.base,this.localVariables.objects.length,this.localVariables.allObjects.length,itaneedleutils.MAP_LIMIT,"Attraction",c.checkboxClicked,c.tabVariables.cityname)};this.getNeedleWidget=function(){this.clearOldWidgetData();this.updateSharedHeader();if(this.localVariables.objects.length>0){var f=this.localVariables.objects[0].address[0];this.center=new google.maps.LatLng(f.latitude[0],f.longitude[0]);var e={zoom:11,center:this.center,mapTypeId:google.maps.MapTypeId.ROADMAP};var g=itaneedleutils.getOrCreateListArea(this.tabVariables,this.base);var d=c.getBaseHeight();g.css("height",d+"px");g.children().remove();this.mapPane=jQuery('<div style="height: '+(d-54)+'px" class="ndlEventList"></div>');var h=jQuery('<div class="ndlAttractionMap"></div>');h.append(this.mapPane);h.append(itaneedleutils.createMapAddress(this.tabVariables,this.localVariables));this.listPane=jQuery('<div class="ndlAttractionList"></div>');g.append(h);this.map=new google.maps.Map(this.mapPane[0],e);this.localVariables.map=this.map;this.infoDivObj=new google.maps.InfoWindow({});google.maps.event.addListener(this.infoDivObj,"closeclick",function(){c._infoDivClosed()});this.overlays=[];this.buildCheckboxList();this.displayLeftPanel();this.base.find(".ndlRightColumn").append(this.listPane);c.adjustRightPaneHeight()}jQuery(".needleMain").removeClass("ndlCurrentlyLoading")};this.getBaseHeight=function(){return c.tabVariables.widgetListHeight+35};this.adjustRightPaneHeight=function(){var e=c.getBaseHeight();var f=this.base.find(".ndlRightColumn");f.css("height",(e+3)+"px");this.listPane.css("width","210px");var d=25;f.children().not(this.listPane).each(function(){d+=jQuery(this).height()});this.listPane.css("height",(e-d)+"px");this.listPane.css("margin-top","10px");c.listPane.find(".ndlAttractionListElt .linked").hide().show();this.base.find("td").hide().show()};this.displayLeftPanel=function(){this.updateSharedHeader();itaneedleutils.displayOrUpdateAddress(a,b);var d=new google.maps.LatLngBounds(this.center,this.center);jQuery.each(this.overlays,function(){this.setMap(null)});this.overlays=[];c.infoDivObj.close();this.listPane.children().remove();this.clickedIcon=null;if(this.localVariables.objects.length>0){jQuery.each(this.localVariables.objects,function(h){var k=this;var f=this.address[0];var e=new google.maps.LatLng(f.latitude[0],f.longitude[0]);if(h<itaneedleutils.MAP_LIMIT){d.extend(e);c.overlays[h]=new google.maps.Marker({position:e,title:this.name+" - "+f.name,map:c.map,icon:itaneedleutils.getIcon("red"),zIndex:0});google.maps.event.addListener(c.overlays[h],"click",function(){c._objectClicked(k,c.overlays[h])});var g=new itaneedleutils.StringBuffer('<div class="ndlAttractionListElt">');g.add("<table><tr><td>");g.add('<img class="linked" src="'+itaneedleutils.getIconImage("red")+'"/> ');g.add('</td><td valign="middle">');g.add('<span class="linked">');g.add(k.name);g.add("</span>");g.add("</td></tr></table>");g.add("</div>");listElt=jQuery(g.toString());var j=listElt.find("img");listElt.find("td").click(function(){c._objectClicked(k,c.overlays[h])}).mouseover(function(){if(c.clickedIcon!=c.overlays[h]){itaneedleutils.highlightOverlay(c.overlays[h],"yellow",10)}j.attr("src",itaneedleutils.getIconImage("yellow"))}).mouseout(function(){if(c.clickedIcon!=c.overlays[h]){itaneedleutils.highlightOverlay(c.overlays[h],"red",0)}j.attr("src",itaneedleutils.getIconImage("red"))});c.listPane.append(listElt)}});this.map.fitBounds(d)}};this._infoDivClosed=function(){if(this.clickedIcon){itaneedleutils.highlightOverlay(this.clickedIcon,"red",0)}};this._objectClicked=function(f,d){this._infoDivClosed();this.clickedIcon=d;itaneedleutils.highlightOverlay(this.clickedIcon,"green",15);c.infoDivObj.close();var e=c._getObjectHtml(f);c.infoDivObj.setOptions({content:e});c.infoDivObj.open(c.map,d)};this._getObjectHtml=function(e){var d=new itaneedleutils.StringBuffer('<div class="ndlAttractionDetails"><div class="ndlAttractionType">');jQuery.each(e.type,function(f){if(f!=0){d.add(" - ")}d.add(this.name)});d.add("</div>");d.add('<div class="ndlBold">');d.add(e.name);d.add("</div>");d.add("<div>");d.add(e.address[0].name);d.add("</div>");if(e.description.length>0){d.add('<div class="ndlAttractionDescription">');d.add(e.description[0].name);d.add("</div>")}if(e.link.length>0){d.add('<div class="ndlLinkSpan"><a href="'+e.link[0]+'" target="_blank">Visit Website</a>');d.add(' <a href="'+e.link[0]+'" target="_blank"><img src="'+itaneedleutils.baseUrl+'/images/link.gif"/></a>');d.add("</div>")}d.add("</div>");return d.toString()};this.buildCheckboxList=function(){this.filter=itaneedleutils.createFilterBox(this.tabVariables,this.base,"Attraction");var e=itaneedleutils.buildFilterList(this.localVariables.objects,"type","Attraction","Attraction Types",false,true);e.find("input[type=checkbox]").click(function(){c.checkboxClicked(this)});e.find(".ndlOnlyLink").bind("click",function(){var f=jQuery(this);f.parents("tr:first").find("input[type=checkbox]").each(function(){c.checkboxClicked(this)})});this.filter.append(e);itaneedleutils.addSearchBox(this.base,"attraction",this.checkboxClicked);this.localVariables.objects=itaneedleutils.updateElementListBasedOnFilters(this.base,this.filter,this.localVariables.allObjects,"type",itaneedleutils.nameSort);if(this.localVariables.objects.length>0){var d=this.localVariables.objects[0].address[0];this.center=new google.maps.LatLng(d.latitude[0],d.longitude[0])}this.filter.find(".ndlExpandChildren,.ndlContractChildren").click(function(){c.adjustRightPaneHeight()})};this.checkboxClicked=function(d){itaneedleutils.checkboxClicked(d);c.localVariables.objects=itaneedleutils.updateElementListBasedOnFilters(c.base,c.filter,c.localVariables.allObjects,"type",itaneedleutils.nameSort);c.displayLeftPanel()}},Attraction:function(a){this.name=a[0];this.sort=a[1];this.address=[];this.type=[];this.description=[];this.link=[];var b=this;var c=a[2];jQuery.each(c[0],function(){b.address.push(new itaneedleutils.Address(this))});jQuery.each(c[1],function(){b.description.push(new itaneedleutils.ObjWithSort(this[0],this[1]))});jQuery.each(c[3],function(){b.type.push(new itaneedleutils.DataType(this))});jQuery.each(c[2],function(){b.link.push(this[0])})},DiningPane:function(a,b){this.tabVariables=a;this.localVariables=b;this.localVariables.allObjects=[];var c=this;this.base=itaneedleutils.initPane("ndlDiningPane");this.HEIGHT=92;this.TABNAMES=["List View","Map View"];this.selectedTabName="List View";this.updatedTabs=[];this.getContent=function(g,f,j,h,d,i){g+="Matrix2Dining.do?domain="+itaneedleutils.DINING_DOMAIN+"&mode=concise&";if(f){g+="metro="+f}else{if(j&&h){g+="lat="+j+"&long="+h}else{g+="address="+d}}var e=g+"&callback=itandlDiningCallback";itaneedleutils.callJsonFunction(e,function(){var k=itandlDiningJSON;c.getRestaurantsFromJSON(k);c.getNeedleWidget();jQuery(".needleMain").removeClass("ndlCurrentlyLoading");if(i){i(k.success,c.localVariables.objects.length,k.errorCode,k.errorMessage)}})};this.narrowDateRange=function(d,e,f){};this.resetDateRange=function(d,e,f){c.getNeedleWidget();if(f){f(true,c.localVariables.objects.length)}};this.getRestaurantsFromJSON=function(g){var f=g.results;if(!f){f=[]}this.localVariables.objects=[];for(var e=0;e<f.length;e++){var d=new itaneedleutils.Restaurant(f[e]);this.localVariables.objects.push(d)}this.localVariables.allObjects=this.localVariables.objects};this.clearOldWidgetData=function(){itaneedleutils.commonClearOldWidgetData(this.base);this.renderedTabs={}};this.unload=function(){};this.restore=function(){if(this.map){google.maps.event.trigger(this.map,"resize")}itaneedleutils.displayOrUpdateAddress(a,b);if(this.selectedTabName=="List View"){this.scrollBarMove(this.scroller)}};this.updateSharedHeader=function(){itaneedleutils.getOrCreateSharedHeader(this.base,this.localVariables.objects.length,this.localVariables.allObjects.length,this.selectedTabName=="List View"?null:itaneedleutils.MAP_LIMIT,"Restaurant",c.checkboxClicked,c.tabVariables.cityname)};this.getNeedleWidget=function(){this.clearOldWidgetData();this.updateSharedHeader();if(this.localVariables.objects.length>0){var d=jQuery(itaneedleutils.getTabHtml(this.TABNAMES,this.selectedTabName));jQuery('<a target="_blank" href="http://www.opentable.com/home.aspx?ref='+itaneedleutils.openTablePID+'" class="ndlOpenTable"><img src="'+itaneedleutils.baseUrl+'/images/opentable.gif"/></a>').insertBefore(d.children().eq(0));var e=itaneedleutils.createLeftColumn();e.append(d);this.base.append(e);this.tabLabels=d.find(".ndlTabLabel");this.tabLabels.click(function(){var f=jQuery(this);f.parents(".ndlTabHeader:first").find(".ndlTabOuter").removeClass("ndlTabselected").find(".ndlTabLabel").removeClass("ndlActive");f.addClass("ndlActive").parents(".ndlTabOuter:first").addClass("ndlTabselected");c.selectedTabName=jQuery.trim(f.find("span").html());c.renderSelectedTab()});this.tabsMain=d.find(".needleMain");this.tabsMain.parents("table:first").css("width",(c.tabVariables.widgetListWidth+5)+"px");this.tabsMain.html("<div class='ndlDiningMap'></div><div class='ndlDiningList'></div>");c.renderSelectedTab()}jQuery(".needleMain").removeClass("ndlCurrentlyLoading")};this.renderSelectedTab=function(){this.updateSharedHeader();var d=this.renderedTabs[this.selectedTabName];if(!d){this.renderedTabs[this.selectedTabName]=true}if(this.selectedTabName=="List View"){this.renderListView(d)}else{this.renderMapView(d)}};this.renderMapView=function(k){this.tabsMain.find(".ndlDiningList").hide();var h=this.tabsMain.find(".ndlDiningMap").show();if(k&&!this.updatedTabs[this.selectedTabName]){this.updateSelectedTab()}if(!k&&this.localVariables.objects.length>0){var g=this.localVariables.objects[0].address[0];var f={zoom:11,center:this.center,mapTypeId:google.maps.MapTypeId.ROADMAP};var i=itaneedleutils.getOrCreateListArea(this.tabVariables,this.tabsMain.find(".ndlDiningMap"));i.css("width",(c.tabVariables.widgetListWidth-19)+"px");i.parent().css("width",(c.tabVariables.widgetListWidth-19)+"px");var d=c.tabVariables.widgetListHeight-15;i.css("height",d);var e=jQuery('<div style="height: '+(c.tabVariables.widgetListHeight-65)+"px; width: "+i.width()+'px" class="ndlEventList"></div>');i.append(e);i.append(itaneedleutils.createMapAddress(this.tabVariables,this.localVariables));var j=new google.maps.Map(e[0],f);this.localVariables.map=j;this.infoDivObj=new google.maps.InfoWindow({});google.maps.event.addListener(this.infoDivObj,"closeclick",function(){c._infoDivClosed()});this.updateMapView()}};this.updateSelectedTab=function(){this.updateSharedHeader();this.updatedTabs[this.selectedTabName]=true;if(this.selectedTabName=="List View"){this.displayLeftPanel()}else{this.updateMapView()}};this.updateMapView=function(){if(this.localVariables.map){google.maps.event.trigger(this.localVariables.map,"resize")}itaneedleutils.displayOrUpdateAddress(a,b);if(this.overlays){jQuery.each(this.overlays,function(){if(this.setMap){this.setMap(null)}})}this.overlays=[];c.infoDivObj.close();if(this.localVariables.objects.length>0){var d=this.localVariables.objects[0].address[0];this.center=new google.maps.LatLng(d.latitude[0],d.longitude[0]);var e=new google.maps.LatLngBounds(this.center,this.center);jQuery.each(this.localVariables.objects,function(f){c._renderMapElement(this,f,e)});c.localVariables.map.fitBounds(e)}};this._renderMapElement=function(j,g,h,f){var e=j.address[0];var d=new google.maps.LatLng(e.latitude[0],e.longitude[0]);if(f||g<itaneedleutils.MAP_LIMIT){if(h){h.extend(d)}c.overlays[g]=new google.maps.Marker({position:d,title:j.name+" - "+e.name,map:c.localVariables.map,icon:itaneedleutils.getIcon("red"),zIndex:0});c.overlays[g].obj=j;google.maps.event.addListener(c.overlays[g],"click",function(){c._overlayClicked(g)})}};this._overlayClicked=function(d){c.infoDivObj.close();c._infoDivClosed();c.clickedIcon=c.overlays[d];itaneedleutils.highlightOverlay(c.clickedIcon,"green",15);var e=jQuery(c._getObjectHtml(c.overlays[d].obj));e.find(".ndlDiningDescription").show();c.infoDivObj.setOptions({content:e[0]});c.infoDivObj.open(c.localVariables.map,c.overlays[d])};this._infoDivClosed=function(){if(c.clickedIcon){itaneedleutils.highlightOverlay(c.clickedIcon,"red",0)}};this.renderListView=function(f){this.tabsMain.find(".ndlDiningMap").hide();var e=this.tabsMain.find(".ndlDiningList").show();if(f&&!this.updatedTabs[this.selectedTabName]){this.updateSelectedTab()}if(!f){var g=itaneedleutils.getOrCreateHeaderSort(e,this.base);var d=jQuery('<span class="ndlEventListControl">Sort by: <span class="ndlActive linked" id="sortByName">Name</span> | <span id="sortByPrice" class="linked">Price</span> | <span id="sortByCuisine" class="linked">Cuisine</span> | <span id="sortByNeighborhood" class="linked">Neighborhood</span></span>');g.append(d);this.sortFunc=itaneedleutils.nameSort;this.localVariables.objects.sort(this.sortFunc);d.click(function(h){var i=jQuery(h.target);if(i.is(".linked:not(.ndlActive)")){i.parent().children().removeClass("ndlActive");i.addClass("ndlActive");var j=i.attr("id");if(j=="sortByName"){c.sortFunc=itaneedleutils.nameSort}else{if(j=="sortByPrice"){c.sortFunc=itaneedleutils.sortByField("price")}else{if(j=="sortByCuisine"){c.sortFunc=itaneedleutils.sortByField("cuisine")}else{if(j=="sortByNeighborhood"){c.sortFunc=itaneedleutils.sortByField("neighborhood")}}}}c.localVariables.objects.sort(c.sortFunc);c.displayLeftPanel()}});this.buildCheckboxList(this.base);this.displayLeftPanel();this.base.find("td").hide().show()}};this._priceSort=function(e,d){var g=e.getPriceAmount();var f=d.getPriceAmount();if(g==null){if(f==null){return 0}return 1}if(f==null){return -1}return itaneedleutils.nameSortCore(g,f)};this.displayLeftPanel=function(){var f=itaneedleutils.getOrCreateListArea(this.tabVariables,this.tabsMain.find(".ndlDiningList"));f.css("width",(c.tabVariables.widgetListWidth-19)+"px");f.parent().css("width",(c.tabVariables.widgetListWidth-19)+"px");f.addClass("ndlEventList");f.children().remove();var d=c.tabVariables.widgetListHeight-53;f.css("height",d);var e=c.tabVariables.widgetListWidth-19;this.scroller=jQuery('<div class="ndlDiningScroller" id="ndlDiningScroller" style="width: '+e+"px; height: "+d+'px;"><div style="left: 0px; top: 0px; width: '+e+"px; height: "+(this.localVariables.objects.length*c.tabVariables.widgetListHeight)+'px;"></div></div>');this.diningContents=jQuery('<div id="ndlDiningContents" class="ndlDiningContents" style="width: '+(c.tabVariables.widgetListWidth-34)+'px"></div>');this.scrollTo=f.find(".ndlDining:first");f.append(this.scroller);f.append(this.diningContents);this.bindMouseWheel(f);this.initScroll();this._renderToScroll();this.scroller.hide().show()};this._renderToScroll=function(){if(this.localVariables.objects.length==0){return}var j=this.scroller.attr("scrollTop");var e=Math.floor(j/c.tabVariables.widgetListHeight);if(e>=this.localVariables.objects.length){e=this.localVariables.objects.length-1}var h=this.localVariables.objects[e];this.diningContents.children().remove();var g=0;var d=c.tabVariables.widgetListHeight;while(g<d&&e<this.localVariables.objects.length){var i=this.localVariables.objects[e];var f=c._renderObject(this.diningContents,i,e);g+=f.height();e++}};this._notDoneRendering=function(e,d){return e==null||((e[0].offsetTop+e.height())<d)};this._renderObject=function(f,g,e){var d=jQuery(this._getObjectHtml(g,true,false));if(g.expanded){d.find(".ndlDiningDescription").show()}d.find(".ndlDiningHeader").click(function(){g.expanded=!g.expanded;jQuery(this).parents(".ndlDining").find(".ndlDiningDescription").toggle()});d.find(".ndlShowOnMap").click(function(){c.selectedTabName="Map View";c.tabLabels.filter(":last").click();if(!c.overlays[e]){c._renderMapElement(c.localVariables.objects[e],e,null,true)}c._overlayClicked(e)});f.append(d);return d};this._getObjectHtml=function(g,h){var e=new itaneedleutils.StringBuffer('<div style="overflow: auto;');if(!h){e.add("margin-top:10px;")}e.add('">');e.add('<div class="ndlDining">');e.add('<span class="ndlDiningHeader');if(h){e.add(" linked")}e.add('">');e.add(g.name);e.add("</span>");e.add('<div><span class="ndlBold">');var f=[];jQuery.each(g.cuisine,function(){f.push(this)});jQuery.each(g.price,function(){f.push(this)});e.add(f.join(" - "));e.add(" </span>");if(f.length>0&&g.neighborhood.length>0){e.add(" - ")}e.add(g.neighborhood.join("/"));e.add("</div>");e.add("<div>");e.add(g.address[0].name);if(h){e.add(' <span class="ndlLinkSpan"><span class="linked ndlShowOnMap">Show on Map</span>');e.add("</span>")}e.add("</div>");if(g.description.length>0){e.add('<div class="ndlDiningDescription ndlfade">');e.add(g.description[0].name);e.add("</div>")}e.add('<div class="ndlDiningLink">');if(g.telephone.length>0){e.add(g.telephone[0]+" ")}if(g.reservation.length>0){var d="http://www.opentable.com/reserve/"+g.reservation[0]+"&ref="+itaneedleutils.openTablePID;e.add('<span class="ndlLinkSpan"><a href="'+d+'" target="_blank">Make a reservation</a>');e.add(' <a href="'+d+'" target="_blank"><img src="'+itaneedleutils.baseUrl+'/images/link.gif"/></a>');e.add("</span>")}if(g.link.length>0){e.add('<span class="ndlLinkSpan"><a href="'+g.link[0]+'" target="_blank">Visit Website</a>');e.add(' <a href="'+g.link[0]+'" target="_blank"><img src="'+itaneedleutils.baseUrl+'/images/link.gif"/></a>');e.add("</span>")}e.add("</div>");e.add("</div></div>");return e.toString()};this.bindMouseWheel=function(d){d.mousewheel(function(e,f){c.scroller.mouseWheel=true;c.scroller.attr("scrollTop",c.scroller.attr("scrollTop")+-1*f*c.tabVariables.widgetListHeight);return c.scroller.height()>=c.scroller.children().height()})};this.initScroll=function(){this.scroller.attr("scrollTop",0);this.scroller.bind("scroll",function(d){c.scrollBarMove(c.scroller,d)})};this.scrollBarMove=function(f,g){if(c.scroller){var i=parseInt(c.scroller.attr("oldScroll"));if(!i){i=0}var d=c.scroller.attr("scrollTop");var e=i;var h=(d-i);if(h%c.tabVariables.widgetListHeight!=0){if(Math.abs(h)<1000&&!c.scroller.mouseWheel){if(!itaneedleutils.needleIsScrolling){itaneedleutils.needleIsScrolling=true;if(Math.abs(h)<100){h=h/Math.abs(h)*1}else{h=h/Math.abs(h)*5}e+=h*c.tabVariables.widgetListHeight;e-=(e%c.tabVariables.widgetListHeight);e=Math.max(0,e);c.scroller.attr("scrollTop",e);setTimeout("itaneedleutils.needleIsScrolling = false;",200)}}}c.scroller.attr("oldScroll",c.scroller.attr("scrollTop"));c.scroller.mouseWheel=null;this._renderToScroll()}};this.buildCheckboxList=function(){this.base.find(".ndlRightColumn").children().remove();var e=itaneedleutils.createFilterBox(this.tabVariables,this.base,"Neighborhood");this.filter1=itaneedleutils.buildFilterList(this.localVariables.objects,"neighborhood","Neighborhood","Neighborhoods",true);this.filter2=itaneedleutils.buildFilterList(this.localVariables.objects,"cuisine","Cuisine","Cuisines",true);var d=jQuery(this.filter1).add(this.filter2);d.find("input[type=checkbox]").click(function(){c.checkboxClicked(this)});d.find(".ndlOnlyLink").bind("click",function(){var f=jQuery(this);f.parents("tr:first").find("input[type=checkbox]").each(function(){c.checkboxClicked(this)})});e.append(this.filter1);e.append(itaneedleutils.SPACER);e.append(this.filter2);itaneedleutils.addSearchBox(this.base,"restaurant",this.checkboxClicked)};this.checkboxClicked=function(d){itaneedleutils.checkboxClicked(d);c.localVariables.objects=itaneedleutils.updateElementListBasedOnFilters(c.base,c.filter1,c.localVariables.allObjects,"neighborhood",c.sortFunc);c.localVariables.objects=itaneedleutils.updateElementListBasedOnFilters(c.base,c.filter2,c.localVariables.objects,"cuisine",c.sortFunc);c.updatedTabs=[];c.updateSelectedTab()}},Restaurant:function(a){this.name=a[0];this.sort=a[1];this.address=[];this.cuisine=[];this.description=[];this.link=[];this.neighborhood=[];this.price=[];this.reservation=[];this.telephone=[];var b=this;var c=a[2];jQuery.each(c[0],function(){b.address.push(new itaneedleutils.Address(this))});jQuery.each(c[1],function(){b.cuisine.push(this[0])});jQuery.each(c[2],function(){b.description.push(new itaneedleutils.ObjWithSort(this[0],this[1]))});jQuery.each(c[3],function(){b.link.push(this[0])});jQuery.each(c[4],function(){b.neighborhood.push(this[0])});jQuery.each(c[5],function(){b.price.push(this[0])});jQuery.each(c[6],function(){b.reservation.push(this[0])});jQuery.each(c[7],function(){b.telephone.push(this[0])})},Address:function(a){this.name=a[0];this.latitude=[];this.longitude=[];var b=this;var c=a[2];jQuery.each(c[2],function(){b.latitude.push(parseFloat(this[1]))});jQuery.each(c[0],function(){b.latitude.push(parseFloat(this[1]))});jQuery.each(c[3],function(){b.longitude.push(parseFloat(this[1]))});jQuery.each(c[1],function(){b.longitude.push(parseFloat(this[1]))})},TourPane:function(a,b){this.tabVariables=a;this.localVariables=b;this.localVariables.allTours=[];var c=this;this.base=itaneedleutils.initPane("ndlTourPane");this.getContent=function(g,f,j,h,d,i){g+="Matrix2Tour.do?domain="+itaneedleutils.TOUR_DOMAIN+"&mode=concise&";if(f){g+="metro="+f}else{if(j&&h){g+="lat="+j+"&long="+h}else{g+="address="+d}}var e=g+"&callback=itandlToursCallback";itaneedleutils.callJsonFunction(e,function(){var k=itandlToursJSON;c.getToursFromJSON(k);c.getNeedleWidget();jQuery(".needleMain").removeClass("ndlCurrentlyLoading");if(i){i(k.success,c.localVariables.tours.length,k.errorCode,k.errorMessage)}})};this.narrowDateRange=function(d,e,f){};this.resetDateRange=function(d,e,f){c.getNeedleWidget();if(f){f(true,b.tours.length)}};this.restore=function(){};this.getToursFromJSON=function(f){var e=f.results;if(!e){e=[]}this.localVariables.tours=[];for(var d=0;d<e.length;d++){this.localVariables.tours.push(new itaneedleutils.Tour(e[d]))}this.localVariables.allTours=this.localVariables.tours};this.clearOldWidgetData=function(){itaneedleutils.commonClearOldWidgetData(this.base)};this.unload=function(){};this.updateSharedHeader=function(){itaneedleutils.getOrCreateSharedHeader(this.base,this.localVariables.tours.length,this.localVariables.allTours.length,null,"Tour",c.checkboxClicked,c.tabVariables.cityname)};this.getNeedleWidget=function(){this.clearOldWidgetData();this.updateSharedHeader();if(this.localVariables.tours.length>0){var e=itaneedleutils.getOrCreateHeaderSort(this.base);var d=jQuery('<span class="ndlEventListControl">Sort by: <span class="ndlActive linked" id="sortByName">Name</span> | <span id="sortByPrice" class="linked">Price</span></span>');e.append(d);this.sortFunc=itaneedleutils.nameSort;this.localVariables.tours.sort(this.sortFunc);d.click(function(f){var g=jQuery(f.target);if(g.is(".linked:not(.ndlActive)")){g.parent().children().removeClass("ndlActive");g.addClass("ndlActive");var h=g.attr("id");if(h=="sortByName"){c.sortFunc=itaneedleutils.nameSort}else{if(h=="sortByPrice"){c.sortFunc=c._priceSort}}c.localVariables.tours.sort(c.sortFunc);c.displayLeftPanel()}});this.displayLeftPanel();this.buildCheckboxList();this.base.find(".ndlSmallTourDescription").hide().show()}jQuery(".needleMain").removeClass("ndlCurrentlyLoading")};this._priceSort=function(e,d){var g=e.getPriceAmount();var f=d.getPriceAmount();if(g==null){if(f==null){return 0}return 1}if(f==null){return -1}return itaneedleutils.nameSortCore(g,f)};this.displayLeftPanel=function(){this.updateSharedHeader();var e=itaneedleutils.getOrCreateListArea(this.tabVariables,this.base);e.addClass("ndlTourList");var d=new itaneedleutils.StringBuffer(new itaneedleutils.StringBuffer('<div class="ndlTourListScrollBox"><table class="ndlTour">'));jQuery.each(this.localVariables.tours,function(){d.add('<tr class="ndlTourRow ndlTourSmall">');d.add('<td class="ndlTourImage">');if(this.image.length>0){d.add("<div>");d.add(this.image[0]);d.add("</div>")}d.add("</td>");d.add('<td class="ndlTourCore">');d.add("<div>");d.add('<span class="linked ndlTour">');d.add(this.name);d.add("</span>");d.add("</div>");d.add("<div>");var f=0;var j=175;if(this.category.length>0){jQuery.each(this.category,function(){d.add(this);d.add(" ");f+=this.length})}if(this.category.length>0&&this.duration.length>0){d.add(" - ");f+=3}if(this.duration.length>0){d.add(this.duration[0]);f+=this.duration[0].length}if((this.category.length>0||this.duration.length>0)&&this.availability.length>0){d.add(" - ");f+=3}if(this.availability.length>0){d.add(this.availability[0]);f+=this.availability[0].length}d.add("</div>");d.add('<div class="ndlfade ndlSmallTourDescription">');if(this.description.length>0){if(f<j){if(j-f<this.description[0].name.length){d.add(this.description[0].name.substr(0,j-f))}}d.add('<span class="linked ndlTour">...</span>')}d.add("</div>");d.add('<div class="ndlfade ndlLargeTourDescription">');if(this.description.length>0){d.add(this.description[0].name)}d.add("</div>");d.add("</td>");d.add('<td class="ndlTourLink">');if(this.prices.length>0){for(var h=0;h<this.prices.length;h++){var g='<a href="'+this.prices[h].url[0]+'" target="_blank">';d.add('<div class="ndlVendorLink">');d.add("<div>");d.add(g);d.add(this.prices[h].vendor[0]);d.add("</a> ");d.add(g);d.add('<img src="'+itaneedleutils.baseUrl+'/images/link.gif"/>');d.add("</a>");d.add("</div>");d.add('<div class="ndlPriceFrom">');d.add("from ");d.add(this.prices[h].price[0]);d.add("</div>");d.add("</div>")}}d.add("</td>");d.add("</tr>")});d.add("</table></div>");e.html(d.toString());e.find(".ndlTour").click(function(){var h=jQuery(this).parents("tr.ndlTourRow");var g=h.find(".ndlLargeTourDescription");var f=h.find(".ndlSmallTourDescription");if(g.is(":visible")){g.hide();f.show()}else{f.hide();g.show()}h.toggleClass("ndlTourSmall")})};this.buildCheckboxList=function(){this.filter=itaneedleutils.createFilterBox(this.tabVariables,this.base,"Tour");var d=itaneedleutils.buildFilterList(this.localVariables.tours,"category","Tour","Tour Types");d.find("input[type=checkbox]").click(function(){c.checkboxClicked(this)});d.find(".ndlOnlyLink").bind("click",function(){var e=jQuery(this);e.parents("tr:first").find("input[type=checkbox]").each(function(){c.checkboxClicked(this)})});this.filter.append(d);itaneedleutils.addSearchBox(this.base,"tour",this.checkboxClicked)};this.checkboxClicked=function(d){itaneedleutils.checkboxClicked(d);c.localVariables.tours=itaneedleutils.updateElementListBasedOnFilters(c.base,c.filter,c.localVariables.allTours,"category",c.sortFunc);c.displayLeftPanel()}},Tour:function(a){this.name=a[0];this.sort=a[1];this.availability=[];this.category=[];this.description=[];this.duration=[];this.image=[];this.metro=[];this.prices=[];var c=this;var b=a[2];this.getPriceAmount=function(){if(this.prices.length>0&&this.prices[0].amount.length>0){return parseFloat(this.prices[0].amount[0])}return null};jQuery.each(b[0],function(){c.availability.push(this[0])});jQuery.each(b[1],function(){c.category.push(this[0])});jQuery.each(b[2],function(){c.description.push(new itaneedleutils.ObjWithSort(this[0],this[1]))});jQuery.each(b[3],function(){c.duration.push(this[0])});jQuery.each(b[4],function(){c.image.push(this[0])});jQuery.each(b[5],function(){c.metro.push(this[0])});jQuery.each(b[6],function(){c.prices.push(new itaneedleutils.TourPrice(this))})},TourPrice:function(b){this.price=[];this.amount=[];this.url=[];this.vendor=[];var a=this;var c=b[2];jQuery.each(c[0],function(){a.price.push(this[0]);jQuery.each(this[2][0],function(){a.amount.push(this[0])})});jQuery.each(c[1],function(){a.url.push(this[0])});jQuery.each(c[2],function(){a.vendor.push(this[0])})},EventPane:function(b,f,a,e){this.tabVariables=a;this.localVariables=e;var g=this;this.base=itaneedleutils.initPane("ndlEventPane");this.dateNumberWidth=27;this.EXTERIORWIDTH=15;this.viewWidth=g.tabVariables.widgetListWidth-this.EXTERIORWIDTH;this.EXTERIORHEIGHT=31;this.EVENT_PANEL_HEIGHT=g.tabVariables.widgetListHeight-this.EXTERIORHEIGHT;this.HEIGHT=22;this.maxEventRenderedIndex=0;this.startDate=b;this.endDate=f;this.startMillis=b.getTime();this.endMillis=f.getTime();var c=false;var d=false;this.getContent=function(k,j,n,l,h,m){k+="Matrix2.do?domain="+itaneedleutils.EVENT_DOMAIN+"&mode=concise&";if(j){k+="metro="+j}else{if(n&&l){k+="lat="+n+"&long="+l}else{k+="address="+h}}var i=k+"&startDate="+itaneedleutils.formatDate(b)+"&endDate="+itaneedleutils.formatDate(f)+"&callback=itandlEventsCallback";itaneedleutils.callJsonFunction(i,function(){var o=itandlEventsJSON;g.getEventsFromJSON(o);g.getNeedleWidget();if(m){m(o.success,g.localVariables.allEvents.length,o.errorCode,o.errorMessage)}})};this.narrowDateRange=function(h,i,j){c=true;d=false;if(this.startDate!=h||this.endDate!=i){this.startDate=h;this.endDate=i;this.startMillis=h.getTime();this.endMillis=i.getTime();this.localVariables.allEventsInRange=jQuery.map(this.localVariables.allEvents,function(k){if(k.getDatesWithinRange(g.startMillis,g.endMillis).length>0){return k}});this.localVariables.events=this.localVariables.allEventsInRange;g.getNeedleWidget()}if(j){j(true,g.localVariables.allEventsInRange.length)}};this.resetDateRange=function(h,i,j){c=false;d=true;this.startDate=h;this.endDate=i;this.startMillis=h.getTime();this.endMillis=i.getTime();this.localVariables.allEventsInRange=this.localVariables.allEvents;this.localVariables.events=this.localVariables.allEventsInRange;g.getNeedleWidget();if(j){j(true,g.localVariables.allEventsInRange.length)}};this.getEventsFromJSON=function(k){var j=k.results;if(!j){j=[]}this.localVariables.events=[];for(var h=0;h<j.length;h++){var l=new itaneedleutils.Event(j[h]);if(l.dateRanges.length>0){this.localVariables.events.push(l)}}this.localVariables.allEvents=this.localVariables.events;this.localVariables.allEventsInRange=this.localVariables.events};this.clearOldWidgetData=function(){g.maxEventRenderedIndex=0;if(c||d){this.base.children().not(".ndlRightColumn").children().remove()}else{itaneedleutils.commonClearOldWidgetData(this.base)}jQuery("#eventDetail").remove()};this.updateSharedHeader=function(){itaneedleutils.getOrCreateSharedHeader(this.base,this.localVariables.events.length,this.localVariables.allEventsInRange.length,null,"Event",g.checkboxClicked,g.tabVariables.cityname,this.startDate,this.endDate)};this.getNeedleWidget=function(){this.clearOldWidgetData();this.updateSharedHeader();if(this.localVariables.events.length>0){if(c||d){g.updateEventList()}var j=itaneedleutils.getOrCreateHeaderSort(this.base);var i=jQuery('<span class="ndlEventListControl">Sort by: <span class="ndlActive linked" id="sortByDate">Date</span> | <span id="sortByEventType" class="linked">Event type</span> | <span class="linked" id="sortByEventName">Name</span></span>');j.append(i);this.sortFunc=this._eventDateSort;if(c){var h=jQuery('<span class="ndlEventListControl"><span class="linked" onclick="itaneedleutils.widgetPane.resetDateRange();">Show events for all dates</span></span>');j.append(h)}else{this.localVariables.events.sort(this.sortFunc)}i.click(function(k){var l=jQuery(k.target);if(l.is(".linked:not(.ndlActive)")){l.parent().children().removeClass("ndlActive");l.addClass("ndlActive");var m=l.attr("id");if(m=="sortByDate"){g.sortFunc=g._eventDateSort}else{if(m=="sortByEventType"){g.sortFunc=g._eventTypeSort}else{if(m=="sortByEventName"){g.sortFunc=itaneedleutils.nameSort}}}g.redisplayLeftPane()}});this.buildEventListContainer();if(!c&&!d){this.buildCheckboxList()}}jQuery(".needleMain").removeClass("ndlCurrentlyLoading")};this.redisplayLeftPane=function(){g.maxEventRenderedIndex=0;jQuery("#eventDetail,#ndlEventScroller,#ndlEventContainer,#ndlEventTimelineContainer").remove();this.localVariables.events.sort(g.sortFunc);g.buildEventList();this.updateSharedHeader();g.initScroll()};this.initScroll=function(){this.eventScroller.attr("scrollTop",0);this.eventScroller.bind("scroll",function(){g.scrollBarMove(g.eventScroller)})};this.unload=function(){jQuery("#eventDetail").remove()};this.restore=function(){this.scrollBarMove(this.eventScroller)};this.buildEventListContainer=function(){b=this.startDate;f=this.endDate;var q=Math.floor((f.getTime()-b.getTime())/itaneedleutils.DAY)+1;var j=this.viewWidth/q;this.dayWidth=j;var u=1;if(j<this.dateNumberWidth){var v=Math.floor(this.viewWidth/this.dateNumberWidth);u=q/v;j*=u}var h=itaneedleutils.getOrCreateListArea(this.tabVariables,this.base);this.eventList=h;h.addClass("ndlEventList");var m=jQuery("<div class='ndlTimeBand' style='width: "+g.tabVariables.widgetListWidth+"px;'></div>");h.append(m);var w=jQuery("<div class='ndlEventListViewPort' style='width: "+this.viewWidth+"px; height: "+g.tabVariables.widgetListHeight+"px;'></div>");h.append(w);var l=jQuery("<div class='ndlEventDateContainer' style='left: 0px;'></div>");m.append(l);if(u>1){l.addClass("ndlMultiday")}var o=jQuery("<div class='ndlEventBand' style='height: "+this.EVENT_PANEL_HEIGHT+"px;'></div>");w.append(o);var s=jQuery("<div class='ndlEventDateMarkers' style='left: 0px;'></div>");o.append(s);var p=0;var k=b.getTime();while(b<=f){var n=jQuery('<div class="ndlEventDate"><div class="ndlEventDayNumber">'+b.getDate()+'</div><div class="ndlEventDayName">'+itaneedleutils.DAY_NAMES[b.getDay()]+"</div></div>");var r={width:(Math.floor(j)-2)+"px",left:Math.floor(p*j)+"px"};n.css(r);l.append(n);var n=jQuery('<div class="ndlEventDateMarker"></div>');n.css(r);s.append(n);p++;b=new Date(k+(itaneedleutils.DAY*Math.floor(u*p)));var t=b.getHours();if(t!=0&&t>20){b.setHours(24)}if(t!=0&&t<4){b.setHours(0)}}this.buildEventList();this.initScroll();h.find(".ndlEventDate,.ndlEventDateMarker,.ndlEventPeriod,.ndlEvent,.ndlEventScroller").hide().show()};this.buildEventList=function(){var h=this.eventList;this.eventScroller=jQuery('<div class="ndlEventScroller" id="ndlEventScroller" style="width: '+g.tabVariables.widgetListWidth+"px; height: "+this.EVENT_PANEL_HEIGHT+'px;"><div style="left: 0px; top: 0px; width: '+this.viewWidth+"px; height: "+(this.localVariables.events.length*this.HEIGHT)+'px;"></div></div>');this.eventList.append(this.eventScroller);var k=jQuery("<div class='ndlEventTimelineContainer' id='ndlEventTimelineContainer' style='top: 0px;'></div>");var j=this.eventList.find(".ndlEventBand");j.append(k);var i=jQuery("<div class='ndlEventContainer' id='ndlEventContainer'></div>");i.bind("click",this.showEventDetails);j.append(i);this.bindMouseWheel(this.eventList);this.renderEventsTo(i,k,Math.ceil(this.EVENT_PANEL_HEIGHT/this.HEIGHT))};this.bindMouseWheel=function(h){var i=this.HEIGHT;h.mousewheel(function(j,k){g.eventScroller.attr("scrollTop",g.eventScroller.attr("scrollTop")+-1*k*i);return g.eventScroller.height()>=g.eventScroller.children().height()})};this.addEventIcons=function(h,i){jQuery.each(i.eventTypes,function(){if(itaneedleutils.EVENT_ICONS[this.name]){h.add('<img src="');h.add(itaneedleutils.baseUrl);h.add("/images/");h.add(itaneedleutils.EVENT_ICONS[this.name]);h.add('"/> ')}})};this.renderEventsTo=function(k,m,l){for(;this.maxEventRenderedIndex<l&&this.maxEventRenderedIndex<this.localVariables.events.length;this.maxEventRenderedIndex++){var j=this.maxEventRenderedIndex*this.HEIGHT;var i=this.localVariables.events[this.maxEventRenderedIndex];var h=new itaneedleutils.StringBuffer('<div eventIndex="'+this.maxEventRenderedIndex+'" class="ndlEvent" style="height: '+this.HEIGHT+"px; top: "+(j-2)+'px;">');g.addEventIcons(h,i);h.add("<span"+(i.isTicketable(g.startMillis,g.endMillis)?' class="ndlTicketable"':"")+">"+i.name+"</span></div>");k.append(jQuery(h.toString()));jQuery.each(i.getDatesWithinRange(this.startMillis,this.endMillis),function(){var r=this.startMillis;var n=this.endMillis;var q=0;var p=0;if(r<g.startMillis){r=g.startMillis}else{q=g.dayWidth*Math.round((r-g.startMillis)/itaneedleutils.DAY)-2}if(n>g.endMillis){n=g.endMillis}p=g.dayWidth*(1+Math.round((n-r)/itaneedleutils.DAY));var o=new itaneedleutils.StringBuffer('<div class="ndlEventPeriod" style="height: ');o.add(g.HEIGHT-5);o.add("px; top: ");o.add(j);o.add("px; left: ");o.add(q);o.add("px; width: ");o.add(p);o.add('px;"> ');if(r<g.startMillis){o.add('<div class="ndlEventPeriodLeftArrow"> </div>')}if(n>g.endMillis){o.add('<div class="ndlEventPeriodRightArrow"> </div>')}o.add("</div>");m.append(jQuery(o.toString()))})}};this.scrollBarMove=function(j){jQuery("#eventDetail").remove();if(j){var i=j.attr("scrollTop");this.renderEventsTo(jQuery("#ndlEventContainer"),jQuery("#ndlEventTimelineContainer"),Math.ceil((this.EVENT_PANEL_HEIGHT+i)/this.HEIGHT));var h=jQuery("#ndlEventContainer,#ndlEventTimelineContainer");h.css("top",-1*i+"px")}};this._eventDateSort=function(h,k){var j=h.getEarliestStart(g.startMillis,g.endMillis);var i=k.getEarliestStart(g.startMillis,g.endMillis);if(j==i){return itaneedleutils.nameSort(h,k)}return j-i};this._eventTypeSort=function(h,l){var j=h.eventTypes;var i=l.eventTypes;var k=g._eventTypeSortCore(j,i,true);if(k!=0){return k}k=g._eventTypeSortCore(j,i,false);if(k!=0){return k}k=g._eventDateSort(h,l);if(k!=0){return k}return itaneedleutils.nameSort(h,l)};this._eventTypeSortCore=function(n,l,h){var m=g.getNextEltIndex(n,0,h);var k=g.getNextEltIndex(l,0,h);while(m!=null&&k!=null){var o=itaneedleutils.nameSortCore(n[m].name?n[m].name:n[m],l[k].name?l[k].name:l[k]);if(o!=0){return o}m=g.getNextEltIndex(n,++m,h);k=g.getNextEltIndex(l,++k,h)}if(m!=null||k!=null){if(k==null){return 1}if(m==null){return -1}}return 0};this.getNextEltIndex=function(j,i,h){while(i<j.length){if((j[i].supertopic==null)==h){return i}i++}return null};this.buildCheckboxList=function(){var i=itaneedleutils.createFilterBox(this.tabVariables,this.base,"Event");this.filter1=itaneedleutils.buildFilterList(this.localVariables.allEvents,"eventTypes","Event","Event Types",false);this.filter2=itaneedleutils.buildFilterList(this.localVariables.allEvents,"cities","City","Cities",true);var h=jQuery(this.filter1).add(this.filter2);h.find("input[type=checkbox]").click(function(){g.checkboxClicked(this)});h.find(".ndlOnlyLink").bind("click",function(){var j=jQuery(this);j.parents("tr:first").find("input[type=checkbox]").each(function(){g.checkboxClicked(this)})});i.append(this.filter1);i.append(itaneedleutils.SPACER);i.append(this.filter2);itaneedleutils.addSearchBox(this.base,"event",this.checkboxClicked)};this.showEventDetails=function(h){var o=jQuery(h.target);var n=g.localVariables.events[o.parent().attr("eventIndex")];if(!n){n=g.localVariables.events[o.attr("eventIndex")];if(!n){return}o=o.children()}jQuery("#eventDetail").remove();var m=new itaneedleutils.StringBuffer('<div id = "eventDetail" class="ndlEventDetail ndlEventDetailAbove ndlEventDetailABLeft" style="left: '+(o.offset().left+10)+'px; opacity: 1;">');m.add('<div style="position: relative;">');m.add('<span class="ndlEventDetailCloseIcon" onclick="jQuery(\'#eventDetail\').remove()"/>');m.add('<table cellspacing="0" cellpadding="0" border="0">');m.add("<tbody>");m.add("<tr>");m.add('<td class="ndlRoundedPaneCorner ndlRoundedPaneTopLeft"/>');m.add('<td class="ndlRoundedPaneTopBottom ndlRoundedPaneTop"> </td>');m.add('<td class="ndlRoundedPaneCorner ndlRoundedPaneTopRight"/>');m.add("</tr>");m.add("<tr>");m.add('<td class="ndlRoundedPaneSide ndlRoundedPaneLeft"/>');m.add('<td class="ndlRoundedPaneMain">');m.add('<div class="ndlEventDetailContainer">');m.add('<div class="ndlEventDetailHeader">');if(n.eventTypes.length>0){m.add('<div class="ndlEventDetailType">');g.addEventIcons(m,n);for(var l=0;l<n.eventTypes.length;l++){if(l>0){m.add("&middot;")}m.add(" "+n.eventTypes[l].name+" ")}m.add("</div>")}m.add('<div class="ndlEventDetailName">');m.add(n.name);m.add("</div>");if(n.locations.length>0){m.add('<div class="ndlEventDetailLocation">');n.locations[0].getDetailDisplay(m);m.add("</div>")}m.add('<div class="ndlEventDetailDate">');jQuery.each(n.getDatesWithinRange(g.startMillis,g.endMillis),function(q){if(q>0){m.add(", ")}this.getDetailDisplay(m)});m.add("</div>");m.add("</div>");if(n.hasBody(g.startMillis,g.endMillis)){m.add('<div class="ndlEventDetailBody" style="display: block;">');m.add('<div style="padding: 15px; padding-bottom: 0px;">');if(n.images.length>0||n.description.length>0){m.add('<div style="padding-bottom: 15px;">');if(n.images.length>0){m.add('<div class="ndlImageBox">');m.add(n.images[0]);m.add("</div>")}if(n.description.length>0){m.add('<div class="ndlEventDetailDescription">'+n.description[0].name+"</div>")}m.add("</div>")}if(n.isTicketable(g.startMillis,g.endMillis)){m.add('<div style="clear: both; padding-bottom: 15px;">');n.getTicketMatrix(m,g.startMillis,g.endMillis);m.add("</div>")}m.add("</div>");m.add("</div>")}if(n.links.length>0||n.sourceLink!=null){m.add('<div class="ndlEventDetailFooter">');if(n.links.length>0){m.add('<div class="ndlEventDetailLink">');m.add('<a target="_blank" href="'+n.links[0].link+'">'+n.links[0].getLabel()+"</a>");m.add("</div>")}if(n.sourceLink!=null){m.add('<div class="ndlEventDetailSourceLink">');m.add('Event data provided by <a target="_blank" href="'+n.sourceLink.link+'">'+n.sourceLink.label+"</a>");m.add("</div>")}m.add("</div>")}m.add("</div>");m.add("</td>");m.add('<td class="ndlRoundedPaneSide ndlRoundedPaneRight"/>');m.add("</tr>");m.add("<tr>");m.add('<td class="ndlRoundedPaneCorner ndlRoundedPaneBottomLeft"/>');m.add('<td class="ndlRoundedPaneTopBottom ndlRoundedPaneBottom"> </td>');m.add('<td class="ndlRoundedPaneCorner ndlRoundedPaneBottomRight"/>');m.add("</tr>");m.add("</tbody>");m.add("</table>");m.add("</div>");m.add('<div class="ndlEventDetailConnector"/>');var j=jQuery(m.toString());jQuery("body").append(j);var k=j.height()+15;var p=(document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop);if(k<(o.offset().top-p)){j.css("top",o.offset().top-k)}else{j.removeClass("ndlEventDetailAbove");j.addClass("ndlEventDetailBelow");j.css("top",o.offset().top+20)}};this.checkboxClicked=function(h){itaneedleutils.checkboxClicked(h);g.updateEventList();g.redisplayLeftPane()};this.updateEventList=function(){this.localVariables.events=itaneedleutils.updateElementListBasedOnFilters(this.base,this.filter1,this.localVariables.allEventsInRange,"eventTypes",g.sortFunc);this.localVariables.events=itaneedleutils.updateElementListBasedOnFilters(this.base,this.filter2,this.localVariables.events,"cities",g.sortFunc)}},ObjWithSort:function(a,b){this.name=a;this.sort=b},Event:function(k){this.name=k[0];this.sort=k[1];this.dateRanges=[];this.datesWithinRange={};this.earliestStarts={};this.eventTypes=[];this.locations=[];this.cities=[];this.description=[];this.images=[];this.links=[];this.sourceLink=null;this.ticketDetails=[];var a=this;var g=k[2];this.hasBody=function(l,i){return this.description.length>0||this.images.length>0||this.isTicketable(l,i)};this.getTicketMatrix=function(u,z,q){var n={};var w=[];var s={};var p=[];var o;var D=this.getTicketDatesWithinRange(z,q);jQuery.each(D,function(){var F=this.vendor;var i=this.ticketDate.startMillis;if(!s[i]){s[i]={};p.push(i)}if(!s[i][F]){s[i][F]=[]}s[i][F].push(this);if(!n[F]){n[F]=true;w.push(F)}if(!o||this.lowPriceNum<o){o=this.lowPriceNum}});p=p.sort();w=w.sort();if(p.length==0||w.length==0){return"Tickets unavailable"}u.add("<table class='ndlTicketDate' cellspacing=0><tr><th class='ndlTicketDates'>Dates</th>");for(var y=0;y<w.length;y++){var B=w[y];u.add("<th>");if(B){if(itaneedleutils.VENDOR_IMAGES[B]){u.add('<img src="'+itaneedleutils.baseUrl+"/images/"+itaneedleutils.VENDOR_IMAGES[B]+'"/>')}else{u.add(B)}}else{u.add("Misc")}u.add("</th>")}u.add("</tr><tr><td colspan="+(w.length+1)+" class='ndlHr'><hr/></td></tr>");for(var y=0;y<p.length;y++){if(y%2==0){u.add("<tr class='ndlStripe'>")}else{u.add("<tr>")}u.add("<td>");u.add(itaneedleutils.formatDateTime(new Date(p[y])));u.add("</td>");for(var x=0;x<w.length;x++){var C=false;var l=s[p[y]][w[x]];u.add("<td>");if(l){var E=null;var v=null;var m=null;var t=null;for(ticketIndex=0;ticketIndex<l.length;ticketIndex++){var A=l[ticketIndex];if(A.highPriceNum&&(!E||A.highPriceNum>E)){E=A.highPriceNum;m=A.highPrice}if(A.lowPriceNum&&(!v||A.lowPriceNum<v)){v=A.lowPriceNum;t=A.lowPrice}}if(l[0].ticketLink){var r=l[0].ticketLink;if(l[0].vendor==="Stubhub"){r=r.replace(/--/,"-"+itaneedleutils.stubhubPID+"-")}if(l[0].vendor==="Ticket Network"){r+=itaneedleutils.ticketnetworkPID}u.add("<a target='_blank' href='"+r+"'>")}if(E&&!v){v=E;t=m}else{if(!E&&v){E=v;m=t}}if(E&&v&&E>0){if(m.indexOf(".00")==m.length-3){m=m.substring(0,m.length-3)}if(t.indexOf(".00")==t.length-3){t=t.substring(0,t.length-3)}if(v==o){u.add("<span class='ndlLowestPrice'>"+t+"</span>")}else{u.add(t)}if(v!=E){u.add("&nbsp;-&nbsp;"+m)}}else{u.add("check availability")}if(l[0].ticketLink){u.add("</a>")}}u.add("</td>")}u.add("</tr>")}u.add("</table>")};this.getTicketDatesWithinRange=function(l,i){i+=itaneedleutils.DAY;return jQuery.map(this.ticketDetails,function(m){if(m.ticketDate&&m.ticketDate.endMillis>=l&&m.ticketDate.startMillis<=i){return m}return null})};this.isTicketable=function(i,l){return this.getTicketDatesWithinRange(i,l).length>0};this.getDatesWithinRange=function(m,i){var l=this.datesWithinRange[m+"-"+i];if(l){return l}l=jQuery.map(this.dateRanges,function(n){if(n.endMillis>=m&&n.startMillis<=i){return n}return null});this.datesWithinRange[m+"-"+i]=l;return l};this.getEarliestStart=function(m,i){var l=this.earliestStarts[m+"-"+i];if(l){return l}var n=this.getDatesWithinRange(m,i)[0];if(n==null){this.getDatesWithinRange(m,i)}if(n.startMillis<m){l=m}else{l=n.startMillis}this.earliestStarts[m+"-"+i]=l;return l};jQuery.each(g[6],function(){var m=this[2];var n=itaneedleutils.getFirstDisplayValue(m[0]);var i=itaneedleutils.getFirstDisplayValue(m[1]);var l=new itaneedleutils.EventDate(n,i);a.dateRanges.push(l)});jQuery.each(g[1],function(){a.eventTypes.push(new itaneedleutils.DataType(this))});jQuery.each(g[2],function(){a.description.push(new itaneedleutils.ObjWithSort(this[0],this[1]))});jQuery.each(g[7],function(){a.images.push(this[0])});jQuery.each(g[3],function(){a.links.push(new itaneedleutils.EventLink(this[0]))});jQuery.each(g[9],function(){a.sourceLink=new itaneedleutils.EventSourceLink(this)});jQuery.each(g[5],function(){a.cities.push(this[0])});var f=g[0];var c=g[4];var b=Math.max(f.length,c.length);for(var d=0;d<b;d++){var j=f.length>d?f[d]:null;var h=c.length>d?c[d]:null;a.locations.push(new itaneedleutils.EventLocation(j,h))}var e=g[8];jQuery.each(e,function(){a.ticketDetails.push(new itaneedleutils.EventTicketDetails(this))})},DataType:function(a){var b=a[2];this.name=a[0];this.supertopic=b?itaneedleutils.getFirstDisplayValue(b[0]):null},EventSourceLink:function(a){var b=a[2];this.link=itaneedleutils.getFirstDisplayValue(b[0]);this.label=a[0]},EventTicketDetails:function(c){this._parseNumber=function(g){if(g){if(g.indexOf("$")==0){g=g.substring(1)}g=Math.round(parseFloat(g));return g>0?g:null}};var e=c[2];this.highPrice=itaneedleutils.getFirstDisplayValue(e[0]);this.lowPrice=itaneedleutils.getFirstDisplayValue(e[1]);this.highPriceNum=itaneedleutils.getFirstSortValue(e[0]);this.lowPriceNum=itaneedleutils.getFirstSortValue(e[1]);this.ticketLink=itaneedleutils.getFirstDisplayValue(e[3]);this.vendor=itaneedleutils.getFirstDisplayValue(e[2]);var b=e[4][0];var d=b[2];var f=itaneedleutils.getFirstDisplayValue(d[2]);var a=itaneedleutils.getFirstDisplayValue(d[3]);if(f&&a){this.ticketDate=new itaneedleutils.EventDate(f,a)}},EventLocation:function(b,a){this._getvalIfExists=function(c){if(c&&c[0]&&c[0]!=""){return c[0]}return null};this.name=this._getvalIfExists(b);this.address=this._getvalIfExists(a);this.getDetailDisplay=function(c){if(this.name&&this.address){c.add(this.name);c.add(", ");c.add(this.address)}else{if(this.name){c.add(this.name)}else{c.add(this.address)}}}},EventDate:function(b,a){this.start=new Date(b);this.end=new Date(a);this.startMillis=this.start.getTime();this.endMillis=this.end.getTime();this.getDetailDisplay=function(c){c.add(itaneedleutils.MONTH_NAMES[this.start.getMonth()]);c.add(" ");c.add(this.start.getDate());if(this.start.getTime()!=this.end.getTime()){c.add("-");if(this.start.getMonth()!=this.end.getMonth()){c.add(itaneedleutils.MONTH_NAMES[this.end.getMonth()]);c.add(" ")}c.add(this.end.getDate())}}},EventLink:function(a){this.link=a;this.label=null;this.getLabel=function(){if(this.link&&!this.label){var b=this.link.match(itaneedleutils.linkregex);if(b){this.label=b[3]||this.link}}return this.label}}};itaneedleutils.StringBuffer.prototype.add=function add(a){this.buffer.push(a);return this};itaneedleutils.StringBuffer.prototype.toString=function toString(){return this.buffer.join("")};(function(f){var e=["DOMMouseScroll","mousewheel"];f.event.special.mousewheel={setup:function(){if(this.addEventListener){for(var a=e.length;a;){this.addEventListener(e[--a],d,false)}}else{this.onmousewheel=d}},teardown:function(){if(this.removeEventListener){for(var a=e.length;a;){this.removeEventListener(e[--a],d,false)}}else{this.onmousewheel=null}}};f.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}});function d(b){var h=[].slice.call(arguments,1),a=0,c=true;b=f.event.fix(b||window.event);b.type="mousewheel";if(b.wheelDelta){a=b.wheelDelta/120}if(b.detail){a=-b.detail/3}h.unshift(b,a);return f.event.handle.apply(this,h)}})(jQuery);
