
WeatherSearch=function(selector,args){var me=this;me.selector=selector;me.container=$(me.selector);me.formContainer=me.wtrContainer=me.searchContainer=null;me.formContainer=$("form",me.container);me.errorpanel=me.searchpanel=null
me.searchresponse=null;me.forecastBindings=new ForecastBindings();me.childc2=me.childc1=null;me.locfield=null;me.feedCount=0;me.defaultcity=args[0];me.tempformat=args[1];me.culture=args[2];me.cols=args[3];me.maxfeeds=args[4];me.loadmessage=args[5];me.closetext=args[6];me.duperr=args[7];me.maxfeedserr=args[8];me.invaliderr=args[9];me.emptyerr=args[10];me.servicename=args[11];me.imagepath=args[12];me.daystoforecast=args[13];me.locCodeRegEx=new RegExp("").compile("[a-zA-Z]{2,}:[a-zA-Z0-9]+","i");function showMessage(color,message){if(message!="&nbsp;"){$(me.errorpanel).css("color",color);$(me.errorpanel).html(message);$(me.errorpanel).show();}else{$(me.errorpanel).hide();}};function getCookie(name){var cookieName=name+"=";var cooks=document.cookie.split(';');if(cooks.length>0){for(var i=0;i<cooks.length;i++){var ca=cooks[i];while(ca.charAt(0)==' '){ca=ca.substring(1,ca.length);}
if(ca.indexOf(cookieName)==0){return ca.substring(cookieName.length,ca.length);}}}
return null;};function setCookie(cookieName,cookieValue,expireDate){var newExpire;if(expireDate!=null||expireDate!=""){newExpire=new Date();newExpire.setYear(newExpire.getFullYear()+5);}
else{newExpire=expireDate;};if(typeof document!="undefined"){document.cookie=cookieName+"="+cookieValue+";expires="+newExpire.toGMTString();return true;};return false;};function getPersistState(){return getCookie("WeatherSearch");};function setPersistState(){var cookieValue="";if(me.forecastBindings.size()!=0){for(var loc in me.forecastBindings.locations){cookieValue+=loc+"|";}
cookieValue=cookieValue.substring(0,cookieValue.length-1);}
setCookie("WeatherSearch",cookieValue);};function cancelEvent(evt){evt.cancelBubble=true;};function closeSearch(){$(me.errorpanel).html("&nbsp");$(me.errorpanel).hide();$(me.searchpanel).empty();$(me.searchContainer).hide();me.locfield.val("");return false;};function hasBindings(loc){if(me.forecastBindings.locations[loc]){return true;}else{me.forecastBindings.locations[loc]=loc;return false;}};function getWeatherForecast(location,node){if(me.maxfeeds!=0){if(me.forecastBindings.size()==me.maxfeeds){showMessage("red",me.maxfeedserr.replace("{#do not remove this text#}",me.maxfeeds));return;}}
if(hasBindings(location)){showMessage("red",me.duperr);return;}
if(me.wtrContainer==null){me.wtrContainer=$("<div class='wtrcon'/>");me.wtrContainer.insertBefore(me.childc1);$(me.childc1).prepend("<div class='separator'/>");}
var weatherInfo=$(node);var locationName=weatherInfo.attr("weatherlocationname");var locationCode=weatherInfo.attr("weatherlocationcode");var linkurl=weatherInfo.attr("url");var imagerelativeurl=weatherInfo.attr("imagerelativeurl");var degreetype=weatherInfo.attr("degreetype");var curweather=$("current",weatherInfo);var curtmp=curweather.attr("temperature");var cursky=curweather.attr("skytext");var wtr=$("<div class='wtr'/>");wtr.appendTo(me.wtrContainer);var hdrText=locationName;if(me.daystoforecast==2){hdrText+="<br/>";}
else{hdrText+="&nbsp;&nbsp;&nbsp;&nbsp;";}
hdrText+=curtmp+"\xB0"+degreetype.toLowerCase()+"&nbsp;&nbsp;&nbsp;&nbsp;"+cursky;var wtrhdr=$("<div class='wtrhdr'></div>");var wtrhdrlink=$("<a href='"+linkurl+"'>"+hdrText+"</a>");wtrhdrlink.appendTo(wtrhdr);var mticons=$("<span class='mticons'/>");var btnToggle=$("<img src ='"+me.imagepath+"categoryclosed.gif' align='absMiddle'>");btnToggle.toggle(function(evt){$(this).attr("src",me.imagepath+"categoryOpen.gif");$(wtrlist).hide();},function(evt){$(this).attr("src",me.imagepath+"categoryClosed.gif");$(wtrlist).show();});var btnKill=$("<img src ='"+me.imagepath+"categoryKill.gif' align='absMiddle'>");btnKill.click(function(evt){$(wtr).remove();delete me.forecastBindings.locations[locationCode];if(me.forecastBindings.size()==0){$("div.separator").remove();}
return false;});mticons.append(btnToggle);mticons.append(btnKill);wtrhdr.append(wtrhdrlink).append(mticons);wtrhdr.appendTo(wtr);var wtrlist=$("<ul class='wtrlist'/>");wtrlist.appendTo(wtr);var forenums=$(node).find("forecast").length;if(me.daystoforecast!=-1&&me.daystoforecast<forenums){forenums=me.daystoforecast;}
$("forecast",node).each(function(i){var wtrli=null;if(i<forenums){if(i==0){wtrli=$("<li class='first'/>");}
else if(i==forenums-1){wtrli=$("<li class='last'/>");}
else{wtrli=$("<li></li>");}
var wtrdays=$("<div class='wtrdays'/>");var wtrday=$("<div class='wtrday'>"+$(this).attr("day")+"</div>");var wtrimg=$("<img height='21' width='35' src="+imagerelativeurl+$(this).attr("skycodeday")+".gif alt = '"+$(this).attr("skytextday")+"' title = '"+$(this).attr("skytextday")+"'></img>");var wtrtmp=$("<div class='wtrtmp'>"+$(this).attr("high")+"/"+$(this).attr("low")+"</div>");$(wtrli).append(wtrdays.append(wtrday).append(wtrimg).append(wtrtmp));wtrlist.append(wtrli);}});closeSearch();};function resultClick(evt){var evtEl=null;if($.browser.mozilla){evtEl=evt.target;}
else{evtEl=evt.srcElement;}
if(evt.type.toLowerCase()=="click"){var loc=$(evtEl).attr("nc:value");var pos=$(evtEl).attr("nc:position");var node=$(me.searchresponse).find("weather").get(pos);getWeatherForecast(loc,node);}
return false;};function searchResults(data,textstatus){var weatherdata=$(data);if(weatherdata==null||weatherdata.find("weather").length==0){showMessage("red",me.invaliderr);}else{$(me.errorpanel).hide();$(me.searchpanel).empty();if(weatherdata.find("weather").length>1){me.searchresponse=weatherdata;var searchResult=null;$("weather",data).each(function(i){searchResult=$("<div class='wtrres'/>").appendTo(me.searchpanel);linkResult=$("<a href='#'></a>");linkResult.text($(this).attr("weatherlocationname"));linkResult.attr("nc:value",$(this).attr("weatherlocationcode"));linkResult.attr("nc:position",i);linkResult.appendTo(searchResult);linkResult.bind("click",null,resultClick);});searchResult=$("<div class='wtrres'/>").appendTo(me.searchpanel);linkClose=$("<a href='#'></a>");linkClose.text(me.closetext);linkClose.appendTo(searchResult);linkClose.click(function(){closeSearch();});$(me.searchContainer).show();}
else{var node=weatherdata.find("weather").get(0);var loc=$(node).attr("weatherlocationcode");if(loc==null){showMessage("red",me.emptyerr);}
else{getWeatherForecast(loc,node);}}}};function getForecast(loc,search){showMessage("#999",me.loadmessage);if(search){$.get(me.servicename,{"weasearchstr":loc,"weadegreetype":me.tempformat.toUpperCase(),"culture":me.culture,"rand":Math.random()},searchResults,"xml");}else{$.get(me.servicename,{"wealocations":loc.replace("|","\\r"),"weadegreetype":me.tempformat.toUpperCase(),"culture":me.culture,"rand":Math.random()},searchResults,"xml");}
return false;};function formSubmit(evt){var locValue=me.locfield.val();$(me.locfield).val("");if(locValue!=""&&locValue!=me.locfield.attr("initvalue")){if(me.locCodeRegEx.test(locValue)){return getForecast(locValue,false);}
else{return getForecast(locValue,true);}}
return false;};function addPersistedForecasts(){var states=getPersistState();if(states!=null){var bindings=states.split("|");for(var i=0;i<bindings.length;i++){getForecast(bindings[i],false);}}else{getForecast(me.defaultcity,false);}};this.dispose=function(){setPersistState();me.selector=me.container=me.formContainer=me.errorpanel=null;me.forecastBindings=null;me.searchresponse=null;};this.initialize=function(){$(window).unload(this.dispose);me.childc1=$("div.child.c1",me.container)
me.childc2=$("div.child.c2",me.container)
me.errorpanel=$("<div class='wtrerr'>&nbsp;</div>");me.errorpanel.insertBefore(me.childc2);me.errorpanel.hide();me.formContainer.removeAttr("action");me.formContainer.remove("method");$("p",me.formContainer).hide();$("div > label",me.formContainer).hide();me.locfield=$("input:text",me.formContainer);me.locfield.attr("name",me.locfield.id);me.locfield.attr("autocomplete","on");me.locfield.attr("initvalue",me.locfield.val());me.locfield.focus(function(){closeSearch();});me.searchContainer=$("div.child.c2 > div.richtext",me.container);if(me.searchContainer.length==0){me.childc2.append("<div class='richtext'/>");me.searchContainer=$("div.child.c2 > div.richtext",me.container);}
me.searchpanel=$("<div class='wtrscrh'/>");me.searchpanel.insertAfter(me.searchContainer);me.searchContainer.hide();me.formContainer.bind("submit",null,formSubmit);addPersistedForecasts();};me.initialize();};ForecastBindings=function(){me=this;me.locations={};this.initialize=function(){};this.size=function(){var locs=new Array();var i=0;for(loc in me.locations){locs[i]=loc;i++;}
return locs.length;};me.initialize();}