var dbug={logged:[],timers:{},firebug:false,enabled:false,log:function(){dbug.logged.push(arguments)},nolog:function(msg){dbug.logged.push(arguments)},time:function(name){dbug.timers[name]=new Date().getTime()},timeEnd:function(name){if(dbug.timers[name]){var end=new Date().getTime()-dbug.timers[name];dbug.timers[name]=false;dbug.log("%s: %s",name,end)}else{dbug.log("no such timer: %s",name)}},enable:function(silent){if(dbug.firebug){try{dbug.enabled=true;dbug.log=function(){(console.debug||console.log).apply(console,arguments)};dbug.time=function(){console.time.apply(console,arguments)};dbug.timeEnd=function(){console.timeEnd.apply(console,arguments)};if(!silent){dbug.log("enabling dbug")}for(var i=0;i<dbug.logged.length;i++){dbug.log.apply(console,dbug.logged[i])}dbug.logged=[]}catch(e){dbug.enable.delay(400)}}},disable:function(){if(dbug.firebug){dbug.enabled=false}dbug.log=dbug.nolog;dbug.time=function(){};dbug.timeEnd=function(){}},cookie:function(set){var value=document.cookie.match("(?:^|;)\\s*jsdebug=([^;]*)");var debugCookie=value?unescape(value[1]):false;if((debugCookie!="true"||set)&&!set){dbug.enable();dbug.log("setting debugging cookie");var date=new Date();date.setTime(date.getTime()+(24*60*60*1000));document.cookie="jsdebug=true;expires="+date.toGMTString()+";path=/;"}else{dbug.disableCookie()}},disableCookie:function(){dbug.log("disabling debugging cookie");document.cookie="jsdebug=false;path=/;"}};(function(){var fb=typeof console!="undefined";var debugMethods=["debug","info","warn","error","assert","dir","dirxml"];var otherMethods=["trace","group","groupEnd","profile","profileEnd","count"];function set(methodList,defaultFunction){for(var i=0;i<methodList.length;i++){dbug[methodList[i]]=(fb&&console[methodList[i]])?console[methodList[i]]:defaultFunction}}set(debugMethods,dbug.log);set(otherMethods,function(){})})();if(typeof console!="undefined"&&console.warn){dbug.firebug=true;var value=document.cookie.match("(?:^|;)\\s*jsdebug=([^;]*)");var debugCookie=value?unescape(value[1]):false;if(window.location.href.indexOf("jsdebug=true")>0||debugCookie=="true"){dbug.enable()}if(debugCookie=="true"){dbug.log("debugging cookie enabled")}if(window.location.href.indexOf("jsdebugCookie=true")>0){dbug.cookie();if(!dbug.enabled){dbug.enable()}}if(window.location.href.indexOf("jsdebugCookie=false")>0){dbug.disableCookie()}}Browser.combine({getHost:function(url){url=$pick(url,window.location.href);var host=url;if(url.test("http://")){url=url.substring(url.indexOf("http://")+7,url.length);if(url.test(":")){url=url.substring(0,url.indexOf(":"))}if(url.test("/")){return url.substring(0,url.indexOf("/"))}return url}return false},getQueryStringValue:function(key,url){try{return Browser.getQueryStringValues(url)[key]}catch(e){return null}},getQueryStringValues:function(url){var qs=$pick(url,window.location.search,"").split("?")[1];if(!$chk(qs)){return{}}if(qs.test("#")){qs=qs.substring(0,qs.indexOf("#"))}try{if(qs){return qs.parseQuery()}}catch(e){return null}return{}},getPort:function(url){url=$pick(url,window.location.href);var re=new RegExp(":([0-9]{4})");var m=re.exec(url);if(m==null){return false}else{var port=false;m.each(function(val){if($chk(parseInt(val))){port=val}})}return port}});window.addEvent("domready",function(){var count=0;function setQs(){function retry(){count++;if(count<20){setQs.delay(50)}}try{if(!Browser.set("qs",Browser.getQueryStringValues())){retry()}}catch(e){retry()}}setQs()});Browser.combine({fixPNG:function(el){try{if(Browser.Engine.trident4){el=$(el);if(!el){return el}if(el.get("tag")=="img"&&el.get("src").test(".png")){var vis=el.isVisible();try{dim=el.getSize()}catch(e){}if(!vis){var before={};["visibility","display","position"].each(function(style){before[style]=this.style[style]||""},this);this.setStyles({visibility:"hidden",display:"block",position:"absolute"});dim=el.getSize();this.setStyles(before);el.hide()}var replacement=new Element("span",{id:(el.id)?el.id:"","class":(el.className)?el.className:"",title:(el.title)?el.title:(el.alt)?el.alt:"",styles:{display:vis?"inline-block":"none",width:dim.x,height:dim.y,filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader (src='"+el.src+"', sizingMethod='scale');"},src:el.src});if(el.style.cssText){try{var styles={};var s=el.style.cssText.split(";");s.each(function(style){var n=style.split(":");styles[n[0]]=n[1]});replacement.setStyle(styles)}catch(e){dbug.log("fixPNG1: ",e)}}if(replacement.cloneEvents){replacement.cloneEvents(el)}replacement.replaces(el)}else{if(el.get("tag")!="img"){var imgURL=el.getStyle("background-image");if(imgURL.test(/\((.+)\)/)){el.setStyles({background:"",filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', sizingMethod='crop', src="+imgURL.match(/\((.+)\)/)[1]+")"})}}}}}catch(e){dbug.log("fixPNG2: ",e)}}});if(Browser.Engine.trident4){window.addEvent("domready",function(){$$("img.fixPNG").each(Browser.fixPNG)})}var IframeShim=new Class({Implements:[Options,Events],options:{name:"",className:"iframeShim",display:false,zindex:null,margin:0,offset:{x:0,y:0},browsers:(Browser.Engine.trident4||(Browser.Engine.gecko&&!Browser.Engine.gecko19&&Browser.Platform.mac))},initialize:function(element,options){this.setOptions(options);if(this.options.offset&&this.options.offset.top){this.options.offset.y=this.options.offset.top}if(this.options.offset&&this.options.offset.left){this.options.offset.x=this.options.offset.left}this.element=$(element);this.makeShim();return },makeShim:function(){this.shim=new Element("iframe");this.id=this.options.name||new Date().getTime()+"_shim";if(this.element.getStyle("z-Index").toInt()<1||isNaN(this.element.getStyle("z-Index").toInt())){this.element.setStyle("z-Index",5)}var z=this.element.getStyle("z-Index")-1;if($chk(this.options.zindex)&&this.element.getStyle("z-Index").toInt()>this.options.zindex){z=this.options.zindex}this.shim.setStyles({position:"absolute",zIndex:z,border:"none",filter:"progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)"}).setProperties({src:"javascript:void(0);",frameborder:"0",scrolling:"no",id:this.id}).addClass(this.options.className);this.element.store("shim",this);var inject=function(){this.shim.inject(this.element,"after");if(this.options.display){this.show()}else{this.hide()}this.fireEvent("onInject")};if(this.options.browsers){if(Browser.Engine.trident&&!IframeShim.ready){window.addEvent("load",inject.bind(this))}else{inject.run(null,this)}}},position:function(shim){if(!this.options.browsers||!IframeShim.ready){return this}var before=this.element.getStyles("display","visibility","position");this.element.setStyles({display:"block",position:"absolute",visibility:"hidden"});var size=this.element.getSize();this.element.setStyles(before);if($type(this.options.margin)){size.x=size.x-(this.options.margin*2);size.y=size.y-(this.options.margin*2);this.options.offset.x+=this.options.margin;this.options.offset.y+=this.options.margin}this.shim.setStyles({width:size.x,height:size.y}).setPosition({relativeTo:this.element,offset:this.options.offset});return this},hide:function(){if(this.options.browsers){this.shim.setStyle("display","none")}return this},show:function(){if(!this.options.browsers){return this}this.shim.setStyle("display","block");return this.position()},dispose:function(){if(this.options.browsers){this.shim.dispose()}return this}});window.addEvent("load",function(){IframeShim.ready=true});Browser.set("Popup",new Class({Implements:[Options,Events],options:{width:500,height:300,x:50,y:50,toolbar:0,location:0,directories:0,status:0,scrollbars:"auto",resizable:1,name:"popup"},initialize:function(url,options){this.url=url||false;this.setOptions(options);if(this.url){this.openWin()}},openWin:function(url){url=url||this.url;var options="toolbar="+this.options.toolbar+",location="+this.options.location+",directories="+this.options.directories+",status="+this.options.status+",scrollbars="+this.options.scrollbars+",resizable="+this.options.resizable+",width="+this.options.width+",height="+this.options.height+",top="+this.options.y+",left="+this.options.x;this.window=window.open(url,this.options.name,options);if(!this.window){this.window=window.open("",this.options.name,options);this.window.location.href=url}this.focus.delay(100,this);return this},focus:function(){if(this.window){this.window.focus()}else{if(this.focusTries<10){this.focus.delay(100,this)}else{this.blocked=true;this.fireEvent("onBlock")}}return this},focusTries:0,blocked:null,close:function(){this.window.close();return this}}));new Native({name:"Date",initialize:Date,protect:true});["now","parse","UTC"].each(function(method){Native.genericize(Date,method,true)});Date.$Methods=new Hash();["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds","Time","TimezoneOffset","Week","Timezone","GMTOffset","DayOfYear","LastMonth","UTCDate","UTCDay","UTCFullYear","AMPM","UTCHours","UTCMilliseconds","UTCMinutes","UTCMonth","UTCSeconds"].each(function(method){Date.$Methods.set(method.toLowerCase(),method)});$each({ms:"Milliseconds",year:"FullYear",min:"Minutes",mo:"Month",sec:"Seconds",hr:"Hours"},function(value,key){Date.$Methods.set(key,value)});Date.implement({set:function(key,value){key=key.toLowerCase();var m=Date.$Methods;if(m.has(key)){this["set"+m.get(key)](value)}return this},get:function(key){key=key.toLowerCase();var m=Date.$Methods;if(m.has(key)){return this["get"+m.get(key)]()}return null},clone:function(){return new Date(this.get("time"))},increment:function(interval,times){return this.multiply(interval,times)},decrement:function(interval,times){return this.multiply(interval,times,false)},multiply:function(interval,times,increment){interval=interval||"day";times=$pick(times,1);increment=$pick(increment,true);var multiplier=increment?1:-1;var month=this.format("%m").toInt()-1;var year=this.format("%Y").toInt();var time=this.get("time");var offset=0;switch(interval){case"year":times.times(function(val){if(Date.isLeapYear(year+val)&&month>1&&multiplier>0){val++}if(Date.isLeapYear(year+val)&&month<=1&&multiplier<0){val--}offset+=Date.$units.year(year+val)});break;case"month":times.times(function(val){if(multiplier<0){val++}var mo=month+(val*multiplier);var year=year;if(mo<0){year--;mo=12+mo}if(mo>11||mo<0){year+=(mo/12).toInt()*multiplier;mo=mo%12}offset+=Date.$units.month(mo,year)});break;default:offset=Date.$units[interval]()*times;break}this.set("time",time+(offset*multiplier));return this},isLeapYear:function(){return Date.isLeapYear(this.get("year"))},clearTime:function(){this.set("hr",0);this.set("min",0);this.set("sec",0);this.set("ms",0);return this},diff:function(d,resolution){resolution=resolution||"day";if($type(d)=="string"){d=Date.parse(d)}switch(resolution){case"year":return d.format("%Y").toInt()-this.format("%Y").toInt();break;case"month":var months=(d.format("%Y").toInt()-this.format("%Y").toInt())*12;return months+d.format("%m").toInt()-this.format("%m").toInt();break;default:var diff=d.get("time")-this.get("time");if(diff<0&&Date.$units[resolution]()>(-1*(diff))){return 0}else{if(diff>=0&&diff<Date.$units[resolution]()){return 0}}return((d.get("time")-this.get("time"))/Date.$units[resolution]()).round()}},getWeek:function(){var day=(new Date(this.get("year"),0,1)).get("date");return Math.round((this.get("dayofyear")+(day>3?day-4:day+3))/7)},getTimezone:function(){return this.toString().replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3")},getGMTOffset:function(){var off=this.get("timezoneOffset");return((off>0)?"-":"+")+Math.floor(Math.abs(off)/60).zeroise(2)+(off%60).zeroise(2)},parse:function(str){this.set("time",Date.parse(str));return this},format:function(f){f=f||"%x %X";if(!this.valueOf()){return"invalid date"}if(Date.$formats[f.toLowerCase()]){f=Date.$formats[f.toLowerCase()]}var d=this;return f.replace(/\%([aAbBcdHIjmMpSUWwxXyYTZ])/g,function($1,$2){switch($2){case"a":return Date.$days[d.get("day")].substr(0,3);case"A":return Date.$days[d.get("day")];case"b":return Date.$months[d.get("month")].substr(0,3);case"B":return Date.$months[d.get("month")];case"c":return d.toString();case"d":return d.get("date").zeroise(2);case"H":return d.get("hr").zeroise(2);case"I":return((d.get("hr")%12)||12);case"j":return d.get("dayofyear").zeroise(3);case"m":return(d.get("mo")+1).zeroise(2);case"M":return d.get("min").zeroise(2);case"p":return d.get("hr")<12?"AM":"PM";case"S":return d.get("seconds").zeroise(2);case"U":return d.get("week").zeroise(2);case"W":throw new Error("%W is not supported yet");case"w":return d.get("day");case"x":var c=Date.$cultures[Date.$culture];return d.format("%"+c[0].substr(0,1)+c[3]+"%"+c[1].substr(0,1)+c[3]+"%"+c[2].substr(0,1).toUpperCase());case"X":return d.format("%I:%M%p");case"y":return d.get("year").toString().substr(2);case"Y":return d.get("year");case"T":return d.get("GMTOffset");case"Z":return d.get("Timezone");case"%":return"%"}return $2})},setAMPM:function(ampm){ampm=ampm.toUpperCase();if(this.format("%H").toInt()>11&&ampm=="AM"){return this.decrement("hour",12)}else{if(this.format("%H").toInt()<12&&ampm=="PM"){return this.increment("hour",12)}}return this}});Date.prototype.compare=Date.prototype.diff;Date.prototype.strftime=Date.prototype.format;Date.$nativeParse=Date.parse;$extend(Date,{$months:["January","February","March","April","May","June","July","August","September","October","November","December"],$days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],$daysInMonth:function(monthIndex,year){if(Date.isLeapYear(year.toInt())&&monthIndex===1){return 29}return[31,28,31,30,31,30,31,31,30,31,30,31][monthIndex]},$epoch:-1,$era:-2,$units:{ms:function(){return 1},second:function(){return 1000},minute:function(){return 60000},hour:function(){return 3600000},day:function(){return 86400000},week:function(){return 608400000},month:function(monthIndex,year){var d=new Date();return Date.$daysInMonth($pick(monthIndex,d.format("%m").toInt()),$pick(year,d.format("%Y").toInt()))*86400000},year:function(year){year=year||new Date().format("%Y").toInt();return Date.isLeapYear(year.toInt())?31622400000:31536000000}},$formats:{db:"%Y-%m-%d %H:%M:%S",compact:"%Y%m%dT%H%M%S",iso8601:"%Y-%m-%dT%H:%M:%S%T",rfc822:"%a, %d %b %Y %H:%M:%S %Z","short":"%d %b %H:%M","long":"%B %d, %Y %H:%M"},isLeapYear:function(yr){return new Date(yr,1,29).getDate()==29},parseUTC:function(value){var localDate=new Date(value);var utcSeconds=Date.UTC(localDate.get("year"),localDate.get("mo"),localDate.get("date"),localDate.get("hr"),localDate.get("min"),localDate.get("sec"));return new Date(utcSeconds)},parse:function(from){var type=$type(from);if(type=="number"){return new Date(from)}if(type!="string"){return from}if(!from.length){return null}for(var i=0,j=Date.$parsePatterns.length;i<j;i++){var r=Date.$parsePatterns[i].re.exec(from);if(r){try{return Date.$parsePatterns[i].handler(r)}catch(e){dbug.log("date parse error: ",e);return null}}}return new Date(Date.$nativeParse(from))},parseMonth:function(month,num){var ret=-1;switch($type(month)){case"object":ret=Date.$months[month.get("mo")];break;case"number":ret=Date.$months[month-1]||false;if(!ret){throw new Error("Invalid month index value must be between 1 and 12:"+index)}break;case"string":var match=Date.$months.filter(function(name){return this.test(name)},new RegExp("^"+month,"i"));if(!match.length){throw new Error("Invalid month string")}if(match.length>1){throw new Error("Ambiguous month")}ret=match[0]}return(num)?Date.$months.indexOf(ret):ret},parseDay:function(day,num){var ret=-1;switch($type(day)){case"number":ret=Date.$days[day-1]||false;if(!ret){throw new Error("Invalid day index value must be between 1 and 7")}break;case"string":var match=Date.$days.filter(function(name){return this.test(name)},new RegExp("^"+day,"i"));if(!match.length){throw new Error("Invalid day string")}if(match.length>1){throw new Error("Ambiguous day")}ret=match[0]}return(num)?Date.$days.indexOf(ret):ret},fixY2K:function(d){if(!isNaN(d)){var newDate=new Date(d);if(newDate.get("year")<2000&&d.toString().indexOf(newDate.get("year"))<0){newDate.increment("year",100)}return newDate}else{return d}},$cultures:{US:["month","date","year","/"],GB:["date","month","year","/"]},$culture:"US",$cIndex:function(unit){return Date.$cultures[Date.$culture].indexOf(unit)+1},$parsePatterns:[{re:/^(\d{1,2})[\.\-\/](\d{1,2})[\.\-\/](\d{2,4})$/,handler:function(bits){var d=new Date();var culture=Date.$cultures[Date.$culture];d.set("year",bits[Date.$cIndex("year")]);d.set("month",bits[Date.$cIndex("month")]-1);d.set("date",bits[Date.$cIndex("date")]);return Date.fixY2K(d)}},{re:/^(\d{1,2})[\.\-\/](\d{1,2})[\.\-\/](\d{2,4})\s(\d{1,2}):(\d{1,2})(\w{2})$/,handler:function(bits){var d=new Date();d.set("year",bits[Date.$cIndex("year")]);d.set("month",bits[Date.$cIndex("month")]-1);d.set("date",bits[Date.$cIndex("date")]);d.set("hr",bits[4]);d.set("min",bits[5]);d.set("ampm",bits[6]);return Date.fixY2K(d)}}]});Number.implement({zeroise:function(length){return String(this).zeroise(length)}});String.implement({repeat:function(times){var ret=[];for(var i=0;i<times;i++){ret.push(this)}return ret.join("")},zeroise:function(length){return"0".repeat(length-this.length)+this}});["LastDayOfMonth","Ordinal"].each(function(method){Date.$Methods.set(method.toLowerCase(),method)});Date.implement({timeAgoInWords:function(){var relative_to=(arguments.length>0)?arguments[1]:new Date();return Date.distanceOfTimeInWords(this,relative_to,arguments[2])},getOrdinal:function(){var test=this.get("date");return(test>3&&test<21)?"th":["th","st","nd","rd","th"][Math.min(test%10,4)]},getDayOfYear:function(){return((Date.UTC(this.getFullYear(),this.getMonth(),this.getDate()+1,0,0,0)-Date.UTC(this.getFullYear(),0,1,0,0,0))/Date.$units.day())},getLastDayOfMonth:function(){var ret=this.clone();ret.setMonth(ret.getMonth()+1,0);return ret.getDate()}});$extend(Date,{distanceOfTimeInWords:function(fromTime,toTime,includeTime){var delta=((toTime.getTime()-fromTime.getTime())/1000).toInt();if(delta<60){return"less than a minute ago"}else{if(delta<120){return"about a minute ago"}else{if(delta<(45*60)){return(delta/60).round()+" minutes ago"}else{if(delta<(90*60)){return"about an hour ago"}else{if(delta<(24*60*60)){return"about "+(delta/3600).round()+" hours ago"}else{if(delta<(48*60*60)){return"1 day ago"}else{var days=(delta/86400).round();if(days>30){var fmt="%B %d";if(toTime.getYear()!=fromTime.getYear()){fmt+=", %Y"}if(includeTime){fmt+=" %I:%M %p"}return fromTime.strftime(fmt)}else{return days+" days ago"}}}}}}}}});Date.$parsePatterns.extend([{re:/^(\d{4})(?:-?(\d{2})(?:-?(\d{2})(?:[T ](\d{2})(?::?(\d{2})(?::?(\d{2})(?:\.(\d+))?)?)?(?:Z|(?:([-+])(\d{2})(?::?(\d{2}))?)?)?)?)?)?$/,handler:function(bits){var offset=0;var d=new Date(bits[1],0,1);if(bits[2]){d.setMonth(bits[2]-1)}if(bits[3]){d.setDate(bits[3])}if(bits[4]){d.setHours(bits[4])}if(bits[5]){d.setMinutes(bits[5])}if(bits[6]){d.setSeconds(bits[6])}if(bits[7]){d.setMilliseconds(("0."+bits[7]).toInt()*1000)}if(bits[9]){offset=(bits[9].toInt()*60)+bits[10].toInt();offset*=((bits[8]=="-")?1:-1)}offset-=d.getTimezoneOffset();d.setTime((d*1)+(offset*60*1000).toInt());return d}},{re:/^tod/i,handler:function(){return new Date()}},{re:/^tom/i,handler:function(){return new Date().increment()}},{re:/^yes/i,handler:function(){return new Date().decrement()}},{re:/^(\d{1,2})(st|nd|rd|th)?$/i,handler:function(bits){var d=new Date();d.setDate(bits[1].toInt());return d}},{re:/^(\d{1,2})(?:st|nd|rd|th)? (\w+)$/i,handler:function(bits){var d=new Date();d.setMonth(Date.parseMonth(bits[2],true),bits[1].toInt());return d}},{re:/^(\d{1,2})(?:st|nd|rd|th)? (\w+),? (\d{4})$/i,handler:function(bits){var d=new Date();d.setMonth(Date.parseMonth(bits[2],true),bits[1].toInt());d.setYear(bits[3]);return d}},{re:/^(\w+) (\d{1,2})(?:st|nd|rd|th)?,? (\d{4})$/i,handler:function(bits){var d=new Date();d.setMonth(Date.parseMonth(bits[1],true),bits[2].toInt());d.setYear(bits[3]);return d}},{re:/^next (\w+)$/i,handler:function(bits){var d=new Date();var day=d.getDay();var newDay=Date.parseDay(bits[1],true);var addDays=newDay-day;if(newDay<=day){addDays+=7}d.setDate(d.getDate()+addDays);return d}},{re:/^\d+\s[a-zA-z]..\s\d.\:\d.$/,handler:function(bits){var d=new Date();bits=bits[0].split(" ");d.setDate(bits[0]);var m;Date.$months.each(function(mo,i){if(new RegExp("^"+bits[1]).test(mo)){m=i}});d.setMonth(m);d.setHours(bits[2].split(":")[0]);d.setMinutes(bits[2].split(":")[1]);d.setMilliseconds(0);return d}}]);Hash.implement({getFromPath:function(notation){var source=this.getClean();notation.replace(/\[([^\]]+)\]|\.([^.[]+)|[^[.]+/g,function(match){if(!source){return }var prop=arguments[2]||arguments[1]||arguments[0];source=(prop in source)?source[prop]:null;return match});return source},cleanValues:function(method){method=method||$defined;this.each(function(v,k){if(!method(v)){this.erase(k)}},this);return this}});String.implement({stripTags:function(){return this.replace(/<\/?[^>]+>/gi,"")},parseQuery:function(encodeKeys,encodeValues){encodeKeys=$pick(encodeKeys,true);encodeValues=$pick(encodeValues,true);var vars=this.split(/[&;]/);var rs={};if(vars.length){vars.each(function(val){var keys=val.split("=");if(keys.length&&keys.length==2){rs[(encodeKeys)?encodeURIComponent(keys[0]):keys[0]]=(encodeValues)?encodeURIComponent(keys[1]):keys[1]}})}return rs},tidy:function(){var txt=this.toString();$each({"[\xa0\u2002\u2003\u2009]":" ","\xb7":"*","[\u2018\u2019]":"'","[\u201c\u201d]":'"',"\u2026":"...","\u2013":"-","\u2014":"--","\uFFFD":"&raquo;"},function(value,key){txt=txt.replace(new RegExp(key,"g"),value)});return txt},cleanQueryString:function(method){return this.split("&").filter(method||function(set){return $chk(set.split("=")[1])}).join("&")}});Element.implement({tidy:function(){try{this.set("value",this.get("value").tidy())}catch(e){dbug.log("element.tidy error: %o",e)}},getTextInRange:function(start,end){return this.get("value").substring(start,end)},getSelectedText:function(){if(Browser.Engine.trident){return document.selection.createRange().text}return this.get("value").substring(this.getSelectionStart(),this.getSelectionEnd())},getSelectionStart:function(){if(Browser.Engine.trident){var offset=(Browser.Engine.trident4)?3:2;this.focus();var range=document.selection.createRange();if(range.compareEndPoints("StartToEnd",range)!=0){range.collapse(true)}return range.getBookmark().charCodeAt(2)-offset}return this.selectionStart},getSelectionEnd:function(){if(Browser.Engine.trident){var offset=(Browser.Engine.trident4)?3:2;var range=document.selection.createRange();if(range.compareEndPoints("StartToEnd",range)!=0){range.collapse(false)}return range.getBookmark().charCodeAt(2)-offset}return this.selectionEnd},getSelectedRange:function(){return{start:this.getSelectionStart(),end:this.getSelectionEnd()}},setCaretPosition:function(pos){if(pos=="end"){pos=this.get("value").length}this.selectRange(pos,pos);return this},getCaretPosition:function(){return this.getSelectedRange().start},selectRange:function(start,end){this.focus();if(Browser.Engine.trident){var range=this.createTextRange();range.collapse(true);range.moveStart("character",start);range.moveEnd("character",end-start);range.select();return this}this.setSelectionRange(start,end);return this},insertAtCursor:function(value,select){var start=this.getSelectionStart();var end=this.getSelectionEnd();this.set("value",this.get("value").substring(0,start)+value+this.get("value").substring(end,this.get("value").length));if($pick(select,true)){this.selectRange(start,start+value.length)}else{this.setCaretPosition(start+value.length)}return this},insertAroundCursor:function(options,select){options=$extend({before:"",defaultMiddle:"SOMETHING HERE",after:""},options);value=this.getSelectedText()||options.defaultMiddle;var start=this.getSelectionStart();var end=this.getSelectionEnd();if(start==end){var text=this.get("value");this.set("value",text.substring(0,start)+options.before+value+options.after+text.substring(end,text.length));this.selectRange(start+options.before.length,end+options.before.length+value.length);text=null}else{text=this.get("value").substring(start,end);this.set("value",this.get("value").substring(0,start)+options.before+text+options.after+this.get("value").substring(end,this.get("value").length));var selStart=start+options.before.length;if($pick(select,true)){this.selectRange(selStart,selStart+text.length)}else{this.setCaretPosition(selStart+text.length)}}return this}});Element.Properties.inputValue={get:function(){switch(this.get("tag")){case"select":vals=this.getSelected().map(function(op){var v=$pick(op.get("value"),op.get("text"));return(v=="")?op.get("text"):v});return this.get("multiple")?vals:vals[0];case"input":switch(this.get("type")){case"checkbox":return this.get("checked")?this.get("value"):false;case"radio":var checked;if(this.get("checked")){return this.get("value")}$(this.getParent("form")||document.body).getElements("input").each(function(input){if(input.get("name")==this.get("name")&&input.get("checked")){checked=input.get("value")}},this);return checked||null}case"input":case"textarea":return this.get("value");default:return this.get("inputValue")}},set:function(value){switch(this.get("tag")){case"select":this.getElements("option").each(function(op){var v=$pick(op.get("value"),op.get("text"));if(v==""){v=op.get("text")}op.set("selected",$splat(value).contains(v))});break;case"input":if(["radio","checkbox"].contains(this.get("type"))){this.set("checked",$type(value)=="boolean"?value:$splat(value).contains(this.get("value")));break}case"textarea":case"input":this.set("value",value);break;default:this.set("inputValue",value)}return this},erase:function(){switch(this.get("tag")){case"select":this.getElements("option").each(function(op){op.set("selected",false)});break;case"input":if(["radio","checkbox"].contains(this.get("type"))){this.set("checked",false);break}case"input":case"textarea":this.set("value","");break;default:this.set("inputValue","")}return this}};Element.implement({expose:function(){if(this.getStyle("display")!="none"){return $empty}var before={};var styles={visibility:"hidden",display:"block",position:"absolute"};$each(styles,function(value,style){before[style]=this.style[style]||""},this);this.setStyles(styles);return(function(){this.setStyles(before)}).bind(this)},getDimensions:function(options){options=$merge({computeSize:false},options);var dim={};function getSize(el,options){return(options.computeSize)?el.getComputedSize(options):el.getSize()}if(this.getStyle("display")=="none"){var restore=this.expose();dim=getSize(this,options);restore()}else{try{dim=getSize(this,options)}catch(e){}}return $chk(dim.x)?$extend(dim,{width:dim.x,height:dim.y}):$extend(dim,{x:dim.width,y:dim.height})},getComputedSize:function(options){options=$merge({styles:["padding","border"],plains:{height:["top","bottom"],width:["left","right"]},mode:"both"},options);var size={width:0,height:0};switch(options.mode){case"vertical":delete size.width;delete options.plains.width;break;case"horizontal":delete size.height;delete options.plains.height;break}var getStyles=[];$each(options.plains,function(plain,key){plain.each(function(edge){options.styles.each(function(style){getStyles.push((style=="border")?style+"-"+edge+"-width":style+"-"+edge)})})});var styles=this.getStyles.apply(this,getStyles);var subtracted=[];$each(options.plains,function(plain,key){size["total"+key.capitalize()]=0;size["computed"+key.capitalize()]=0;plain.each(function(edge){size["computed"+edge.capitalize()]=0;getStyles.each(function(style,i){if(style.test(edge)){styles[style]=styles[style].toInt();if(isNaN(styles[style])){styles[style]=0}size["total"+key.capitalize()]=size["total"+key.capitalize()]+styles[style];size["computed"+edge.capitalize()]=size["computed"+edge.capitalize()]+styles[style]}if(style.test(edge)&&key!=style&&(style.test("border")||style.test("padding"))&&!subtracted.contains(style)){subtracted.push(style);size["computed"+key.capitalize()]=size["computed"+key.capitalize()]-styles[style]}})})});if($chk(size.width)){size.width=size.width+this.offsetWidth+size.computedWidth;size.totalWidth=size.width+size.totalWidth;delete size.computedWidth}if($chk(size.height)){size.height=size.height+this.offsetHeight+size.computedHeight;size.totalHeight=size.height+size.totalHeight;delete size.computedHeight}return $extend(styles,size)}});Element.implement({autoMouseOvers:function(options){options=$extend({outString:"_out",overString:"_over",cssOver:"hover",cssOut:"hoverOut",subSelector:"",applyToBoth:false},options);el=this;if(options.subSelector){el=this.getElements(options.subSelector)}return el.addEvents({mouseenter:function(){this.swapClass(options.cssOut,options.cssOver);if(this.src&&this.src.contains(options.outString)){this.src=this.src.replace(options.outString,options.overString)}if(options.applyToBoth&&options.subSelector){this.getElements(options.subSelector).each(function(el){el.swapClass(options.cssOut,options.cssOver)})}}.bind(this),mouseleave:function(){this.swapClass(options.cssOver,options.cssOut);if(this.src&&this.src.contains(options.overString)){this.src=this.src.replace(options.overString,options.outString)}if(options.applyToBoth&&options.subSelector){this.getElements(options.subSelector).each(function(el){el.swapClass(options.cssOver,options.cssOut)})}}.bind(this)}).swapClass(options.cssOver,options.cssOut);el=null}});window.addEvent("domready",function(){$$("img.autoMouseOver").each(function(img){img.autoMouseOvers()})});window.addEvent("domready",function(){var test=new Element("div").setStyles({position:"fixed",top:0,right:0}).inject(document.body);var supported=(test.offsetTop===0);test.dispose();Browser.set("supportsPositionFixed",supported)});Element.implement({pin:function(enable){if(this.getStyle("display")=="none"){dbug.log("cannot pin "+this+" because it is hidden");return }if(enable!==false){var p=this.getPosition();if(!this.get("pinned")){var pos={top:(p.y-window.getScroll().y),left:(p.x-window.getScroll().x)};if(Browser.get("supportsPositionFixed")){this.setStyle("position","fixed").setStyles(pos)}else{this.setStyles({position:"absolute",top:p.y,left:p.x});window.addEvent("scroll",function(){if(this.get("pinned")){var to={top:(pos.top.toInt()+window.getScroll().y),left:(pos.left.toInt()+window.getScroll().x)};this.setStyles(to)}}.bind(this))}this.set("pinned",true)}}else{var op;if(!Browser.Engine.trident){if(this.getParent().getComputedStyle("position")!="static"){op=this.getParent()}else{op=this.getParent().getOffsetParent()}}var p=this.getPosition(op);this.set("pinned",false);var reposition=(Browser.get("supportsPositionFixed"))?{top:(p.y+window.getScroll().y),left:(p.x+window.getScroll().x)}:{top:(p.y),left:(p.x)};this.setStyles($merge(reposition,{position:"absolute"}))}return this},unpin:function(){return this.pin(false)},togglepin:function(){this.pin(!this.get("pinned"))}});Element.implement({setPosition:function(options){$each(options||{},function(v,k){if(!$defined(v)){delete options[k]}});options=$merge({relativeTo:document.body,position:{x:"center",y:"center"},edge:false,offset:{x:0,y:0},returnPos:false,relFixedPosition:false,ignoreMargins:false},options);var parentOffset={x:0,y:0};var parentPositioned=false;var putItBack=this.expose();var offsetParent=this.getOffsetParent();putItBack();if(offsetParent&&offsetParent!=this.getDocument().body){var putItBack=offsetParent.expose();parentOffset=offsetParent.getPosition();putItBack();parentPositioned=true;options.offset.x=options.offset.x-parentOffset.x;options.offset.y=options.offset.y-parentOffset.y}function fixValue(option){if($type(option)!="string"){return option}option=option.toLowerCase();var val={};if(option.test("left")){val.x="left"}else{if(option.test("right")){val.x="right"}else{val.x="center"}}if(option.test("upper")||option.test("top")){val.y="top"}else{if(option.test("bottom")){val.y="bottom"}else{val.y="center"}}return val}options.edge=fixValue(options.edge);options.position=fixValue(options.position);if(!options.edge){if(options.position.x=="center"&&options.position.y=="center"){options.edge={x:"center",y:"center"}}else{options.edge={x:"left",y:"top"}}}this.setStyle("position","absolute");var rel=$(options.relativeTo)||document.body;var top=(rel==document.body)?window.getScroll().y:rel.getPosition().y;var left=(rel==document.body)?window.getScroll().x:rel.getPosition().x;if(top<0){top=0}if(left<0){left=0}var dim=this.getDimensions({computeSize:true,styles:["padding","border","margin"]});if(options.ignoreMargins){options.offset.x=options.offset.x-parentOffset.x-offsetParent.getStyle("border-left-width").toInt()||0;options.offset.y=options.offset.y-parentOffset.y-offsetParent.getStyle("border-top-width").toInt()||0}var pos={};var prefY=options.offset.y.toInt();var prefX=options.offset.x.toInt();switch(options.position.x){case"left":pos.x=left+prefX;break;case"right":pos.x=left+prefX+rel.offsetWidth;break;default:pos.x=left+(((rel==document.body)?window.getSize().x:rel.offsetWidth)/2)+prefX;break}switch(options.position.y){case"top":pos.y=top+prefY;break;case"bottom":pos.y=top+prefY+rel.offsetHeight;break;default:pos.y=top+(((rel==document.body)?window.getSize().y:rel.offsetHeight)/2)+prefY;break}if(options.edge){var edgeOffset={};switch(options.edge.x){case"left":edgeOffset.x=0;break;case"right":edgeOffset.x=-dim.x-dim.computedRight-dim.computedLeft;break;default:edgeOffset.x=-(dim.x/2);break}switch(options.edge.y){case"top":edgeOffset.y=0;break;case"bottom":edgeOffset.y=-dim.y-dim.computedTop-dim.computedBottom;break;default:edgeOffset.y=-(dim.y/2);break}pos.x=pos.x+edgeOffset.x;pos.y=pos.y+edgeOffset.y}pos={left:((pos.x>=0||parentPositioned)?pos.x:0).toInt(),top:((pos.y>=0||parentPositioned)?pos.y:0).toInt()};if(rel.getStyle("position")=="fixed"||options.relFixedPosition){pos.top=pos.top.toInt()+window.getScroll().y;pos.left=pos.left.toInt()+window.getScroll().x}if(options.returnPos){return pos}else{this.setStyles(pos)}return this}});Element.implement({isVisible:function(){return this.getStyle("display")!="none"},toggle:function(){return this[this.isVisible()?"hide":"show"]()},hide:function(){var d;try{d=this.getStyle("display")}catch(e){}this.store("originalDisplay",d||"block");this.setStyle("display","none");return this},show:function(display){original=this.retrieve("originalDisplay")?this.retrieve("originalDisplay"):this.get("originalDisplay");this.setStyle("display",(display||original||"block"));return this},swapClass:function(remove,add){return this.removeClass(remove).addClass(add)},fxOpacityOk:function(){return !Browser.Engine.trident4}});Fx.Marquee=new Class({Extends:Fx.Morph,options:{mode:"horizontal",message:"",revert:true,delay:5000,cssClass:"msg",showEffect:{opacity:1},hideEffect:{opacity:0},revertEffect:{opacity:[0,1]},currentMessage:null},initialize:function(container,options){container=$(container);var msg=this.options.currentMessage||(container.getChildren().length==1)?container.getFirst():"";var wrapper=new Element("div",{styles:{position:"relative"},"class":"fxMarqueeWrapper"}).inject(container);this.parent(wrapper,options);this.current=this.wrapMessage(msg)},wrapMessage:function(msg){if($(msg)&&$(msg).hasClass("fxMarquee")){var wrapper=$(msg)}else{var wrapper=new Element("span",{"class":"fxMarquee",styles:{position:"relative"}});if($(msg)){wrapper.grab($(msg))}else{if($type(msg)=="string"){wrapper.set("html",msg)}}}return wrapper.inject(this.element)},announce:function(options){this.setOptions(options).showMessage();return this},showMessage:function(reverting){(function(){var chain=this.$chain?$A(this.$chain):[];this.clearChain();this.element=$(this.element);this.current=$(this.current);this.message=$(this.message);this.start(this.options.hideEffect).chain(function(){if(reverting){this.message.hide();if(this.current){this.current.show()}}else{if(this.message){this.message.dispose()}this.message=this.wrapMessage(this.options.message);if(this.current){this.current.hide()}}this.start((reverting)?this.options.revertEffect:this.options.showEffect).chain(function(){if(this.$chain){this.$chain.combine(chain)}else{this.$chain=chain}this.fireEvent((reverting)?"onRevert":"onMessage");if(!reverting&&this.options.revert){this.showMessage(true)}else{this.callChain.delay(this.options.delay,this)}}.bind(this))}.bind(this))}).delay((reverting)?this.options.delay:10,this);return this}});Fx.Move=new Class({Extends:Fx.Morph,options:{relativeTo:document.body,position:"center",edge:false,offset:{x:0,y:0}},start:function(destination){return this.parent(this.element.setPosition($merge(this.options,destination,{returnPos:true})))}});Element.Properties.move={set:function(options){var morph=this.retrieve("move");if(morph){morph.cancel()}return this.eliminate("move").store("move:options",$extend({link:"cancel"},options))},get:function(options){if(options||!this.retrieve("move")){if(options||!this.retrieve("move:options")){this.set("move",options)}this.store("move",new Fx.Move(this,this.retrieve("move:options")))}return this.retrieve("move")}};Element.implement({move:function(options){this.get("move").start(options);return this}});Fx.Reveal=new Class({Extends:Fx.Morph,options:{styles:["padding","border","margin"],transitionOpacity:true,mode:"vertical",heightOverride:null,widthOverride:null},dissolve:function(){try{if(!this.hiding&&!this.showing){if(this.element.getStyle("display")!="none"){this.hiding=true;this.showing=false;this.hidden=true;var startStyles=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});var setToAuto=this.element.style.height===""||this.element.style.height=="auto";this.element.setStyle("display","block");if(this.element.fxOpacityOk()&&this.options.transitionOpacity){startStyles.opacity=1}var zero={};$each(startStyles,function(style,name){zero[name]=[style,0]},this);var overflowBefore=this.element.getStyle("overflow");this.element.setStyle("overflow","hidden");if(!this.$chain){this.$chain=[]}this.$chain.unshift(function(){if(this.hidden){this.hiding=false;$each(startStyles,function(style,name){startStyles[name]=style},this);this.element.setStyles($merge({display:"none",overflow:overflowBefore},startStyles));if(setToAuto){this.element.setStyle("height","auto")}}this.callChain()}.bind(this));this.start(zero)}else{this.callChain.delay(10,this);this.fireEvent("onComplete",this.element)}}}catch(e){this.hiding=false;this.element.hide();this.callChain.delay(10,this);this.fireEvent("onComplete",this.element)}return this},reveal:function(){try{if(!this.showing&&!this.hiding){if(this.element.getStyle("display")=="none"||this.element.getStyle("visiblity")=="hidden"||this.element.getStyle("opacity")==0){this.showing=true;this.hiding=false;this.hidden=false;var before=this.element.getStyles("visibility","display","position");this.element.setStyles({visibility:"hidden",display:"block",position:"absolute"});var setToAuto=this.element.style.height===""||this.element.style.height=="auto";if(this.element.fxOpacityOk()&&this.options.transitionOpacity){this.element.setStyle("opacity",0)}var startStyles=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});this.element.setStyles(before);$each(startStyles,function(style,name){startStyles[name]=style},this);if($chk(this.options.heightOverride)){startStyles.height=this.options.heightOverride.toInt()}if($chk(this.options.widthOverride)){startStyles.width=this.options.widthOverride.toInt()}if(this.element.fxOpacityOk()&&this.options.transitionOpacity){startStyles.opacity=1}var zero={height:0,display:"block"};$each(startStyles,function(style,name){zero[name]=0},this);var overflowBefore=this.element.getStyle("overflow");this.element.setStyles($merge(zero,{overflow:"hidden"}));this.start(startStyles);if(!this.$chain){this.$chain=[]}this.$chain.unshift(function(){if(!this.options.heightOverride&&setToAuto){if(["vertical","both"].contains(this.options.mode)){this.element.setStyle("height","auto")}if(["width","both"].contains(this.options.mode)){this.element.setStyle("width","auto")}}if(!this.hidden){this.showing=false}this.element.setStyle("overflow",overflowBefore);this.callChain()}.bind(this))}else{this.callChain();this.fireEvent("onComplete",this.element)}}}catch(e){this.element.setStyles({display:"block",visiblity:"visible",opacity:1});this.showing=false;this.callChain.delay(10,this);this.fireEvent("onComplete",this.element)}return this},toggle:function(){try{if(this.element.getStyle("display")=="none"||this.element.getStyle("visiblity")=="hidden"||this.element.getStyle("opacity")==0){this.reveal()}else{this.dissolve()}}catch(e){this.show()}return this}});Element.Properties.reveal={set:function(options){var reveal=this.retrieve("reveal");if(reveal){reveal.cancel()}return this.eliminate("reveal").store("reveal:options",$extend({link:"cancel"},options))},get:function(options){if(options||!this.retrieve("reveal")){if(options||!this.retrieve("reveal:options")){this.set("reveal",options)}this.store("reveal",new Fx.Reveal(this,this.retrieve("reveal:options")))}return this.retrieve("reveal")}};Element.Properties.dissolve=Element.Properties.reveal;Element.implement({reveal:function(options){this.get("reveal",options).reveal();return this},dissolve:function(options){this.get("reveal",options).dissolve();return this}});Fx.Sort=new Class({Extends:Fx.Elements,options:{mode:"vertical"},initialize:function(elements,options){this.parent(elements,options);this.elements.each(function(el){if(el.getStyle("position")=="static"){el.setStyle("position","relative")}});this.setDefaultOrder()},setDefaultOrder:function(){this.currentOrder=this.elements.map(function(el,index){return index})},sort:function(newOrder){if($type(newOrder)!="array"){return false}var top=0;var left=0;var zero={};var vert=this.options.mode=="vertical";var current=this.elements.map(function(el,index){var size=el.getComputedSize({styles:["border","padding","margin"]});var val;if(vert){val={top:top,margin:size["margin-top"],height:size.totalHeight};top+=val.height-size["margin-top"]}else{val={left:left,margin:size["margin-left"],width:size.totalWidth};left+=val.width}var plain=vert?"top":"left";zero[index]={};var start=el.getStyle(plain).toInt();zero[index][plain]=($chk(start))?start:0;return val},this);this.set(zero);newOrder=newOrder.map(function(i){return i.toInt()});if(newOrder.length!=this.elements.length){this.currentOrder.each(function(index){if(!newOrder.contains(index)){newOrder.push(index)}});if(newOrder.length>this.elements.length){newOrder.splice(this.elements.length-1,newOrder.length-this.elements.length)}}var top=0;var left=0;var margin=0;var next={};newOrder.each(function(item,index){var newPos={};if(vert){newPos.top=top-current[item].top-margin;top+=current[item].height}else{newPos.left=left-current[item].left;left+=current[item].width}margin=margin+current[item].margin;next[item]=newPos},this);var mapped={};$A(newOrder).sort().each(function(index){mapped[index]=next[index]});this.start(mapped);this.currentOrder=newOrder;return this},rearrangeDOM:function(newOrder){newOrder=newOrder||this.currentOrder;var parent=this.elements[0].getParent();var rearranged=[];this.elements.setStyle("opacity",0);newOrder.each(function(index){rearranged.push(this.elements[index].inject(parent).setStyles({top:0,left:0}))},this);this.elements.setStyle("opacity",1);this.elements=$$(rearranged);this.setDefaultOrder();return this},getDefaultOrder:function(){return this.elements.map(function(el,index){return index})},forward:function(){return this.sort(this.getDefaultOrder())},backward:function(){return this.sort(this.getDefaultOrder().reverse())},reverse:function(){return this.sort(this.currentOrder.reverse())},sortByElements:function(elements){return this.sort(elements.map(function(el){return this.elements.indexOf(el)}))},swap:function(one,two){if($type(one)=="element"){one=this.elements.indexOf(one);two=this.elements.indexOf(two)}var indexOne=this.currentOrder.indexOf(one);var indexTwo=this.currentOrder.indexOf(two);var newOrder=$A(this.currentOrder);newOrder[indexOne]=two;newOrder[indexTwo]=one;this.sort(newOrder)}});var JsonP=new Class({Implements:[Options,Events],options:{callBackKey:"callback",queryString:"",data:{},timeout:5000,retries:0},initialize:function(url,options){this.setOptions(options);this.url=this.makeUrl(url).url;this.fired=false;this.scripts=[];this.requests=0;this.triesRemaining=[]},request:function(url,requestIndex){var u=this.makeUrl(url);if(!$chk(requestIndex)){requestIndex=this.requests;this.requests++}if(!$chk(this.triesRemaining[requestIndex])){this.triesRemaining[requestIndex]=this.options.retries}var remaining=this.triesRemaining[requestIndex];dbug.log("retrieving by json script method: %s",u.url);var dl=(Browser.Engine.trident)?50:0;(function(){var script=new Element("script",{src:u.url,type:"text/javascript",id:"jsonp_"+u.index+"_"+requestIndex});this.fired=true;this.addEvent("onComplete",function(){try{script.dispose()}catch(e){}}.bind(this));script.inject(document.head);if(remaining){(function(){this.triesRemaining[requestIndex]=remaining-1;if(script.getParent()&&remaining){dbug.log("removing script (%o) and retrying: try: %s, remaining: %s",requestIndex,remaining);script.dispose();this.request(url,requestIndex)}}).delay(this.options.timeout,this)}}.bind(this)).delay(dl);return this},makeUrl:function(url){var index;if(JsonP.requestors.contains(this)){index=JsonP.requestors.indexOf(this)}else{index=JsonP.requestors.push(this)-1;JsonP.requestors["request_"+index]=this}if(url){var separator=(url.test("\\?"))?"&":"?";var jurl=url+separator+this.options.callBackKey+"=JsonP.requestors.request_"+index+".handleResults";if(this.options.queryString){jurl+="&"+this.options.queryString}jurl+="&"+Hash.toQueryString(this.options.data)}else{var jurl=this.url}return{url:jurl,index:index}},handleResults:function(data){dbug.log("jsonp received: ",data);this.fireEvent("onComplete",[data,this])}});JsonP.requestors=[];var IconMenu=new Class({Implements:[Options,Events],options:{container:document,images:".iconImgs",captions:".iconCaptions",removeLinks:false,clearLinks:false,useAxis:"x",onFocusDelay:0,initialFocusDelay:250,onBlurDelay:0,length:"auto",iconPadding:1,scrollBackAdjuster:0,scrollFxOptions:{duration:1800,transition:"cubic:in:out"},backScrollButtons:"#scrollLeft",forwardScrollButtons:"#scrollRight",onSelect:function(index,img){img.morph({"border-top-color":"#00A0C6","border-left-color":"#00A0C6","border-right-color":"#00A0C6","border-bottom-color":"#00A0C6"})},onDeSelect:function(index,img){img.morph({"border-top-color":"#555","border-left-color":"#555","border-right-color":"#555","border-bottom-color":"#555"})}},imgs:[],selected:[],initialize:function(options){this.setOptions(options);this.container=$(this.options.container);var captions=($type(this.options.captions)=="string")?this.container.getElements(this.options.captions):this.options.captions;var imgs=($type(this.options.images)=="string")?this.container.getElements(this.options.images):this.options.images;imgs.each(function(img,index){this.addItem(img,captions[index],null)},this);this.fireEvent("onItemsAdded",this.imgs,50);this.side=(this.options.useAxis=="x")?"left":"top";this.container.setStyle(this.side,this.container.getStyle(this.side).toInt()||0);this.onFocusDelay=this.options.initialFocusDelay;this.setupEvents()},toElement:function(){return this.container},bound:{mouseover:{},mouseout:{}},scrollTo:function(index,useFx){useFx=$pick(useFx,true);var currentRange=this.calculateRange();if(index==currentRange.start){return this}var newRange=this.calculateRange(index);if(!newRange.elements.length){return this}if(this.container.getStyle("position")=="static"){this.container.setStyle("position","relative")}if(!this.scrollerFx){this.scrollerFx=new Fx.Tween(this.container,$merge(this.options.scrollFxOptions,{property:this.side,wait:false}))}if(useFx){this.scrollerFx.start(-newRange.elements[0].offset).chain(function(){this.fireEvent("onScroll",[index,newRange])}.bind(this))}else{this.scrollerFx.set(-newRange.elements[0].offset);this.fireEvent("onScroll",[index,newRange])}this.currentOffset=index;return this},pageForward:function(howMany){var range=this.calculateRange();return this.scrollTo(($type(howMany)=="number")?range.start+howMany:range.end)},pageBack:function(howMany){return this.scrollTo(($type(howMany)=="number")?this.currentOffset-howMany:this.calculateRange(this.currentOffset,true).start)},addItem:function(img,caption,where){if(caption){img.store("caption",caption);caption.store("image",img)}where=($defined(where))?where:this.imgs.length;if(this.imgs.contains(img)){this.removeItems([img],true)}this.imgs.splice(where,0,$(img));this.setupIconEvents(img,caption);this.fireEvent("onAdd",[img,caption]);return this},removeItems:function(imgs,useFx){var range=this.calculateRange();if(!imgs.length){return this}imgs=$A(imgs);useFx=$pick(useFx,true);var fadeItems=[];var fadeItemImgs=[];var effect={width:0,"border-width":0};var fadeEffects={};var itemsToQuietlyRemove={before:[],beforeImgs:[],after:[],afterImgs:[]};var indexes=[];imgs.each(function(image){var index=this.imgs.indexOf(image);if(index>=range.end){itemsToQuietlyRemove.after.push(image.getParent());itemsToQuietlyRemove.afterImgs.push(image)}else{if(index<range.start){itemsToQuietlyRemove.before.push(image.getParent());itemsToQuietlyRemove.beforeImgs.push(image)}else{fadeItems.push(image.getParent());fadeItemImgs.push(image);fadeEffects[fadeItems.length-1]=$unlink(effect)}}this.selected.erase(image);indexes.push(index)},this);this.imgs=this.imgs.filter(function(img,index){return !indexes.contains(index)});var removed=[];if(itemsToQuietlyRemove.before.length){var scrollTo=this.imgs.indexOf(range.elements[0].image);itemsToQuietlyRemove.before.each(function(el,index){this.fireEvent("onRemoveItem",[el]);var img=itemsToQuietlyRemove.beforeImgs[index];removed.push(img);try{el.dispose()}catch(e){dbug.log("before: error removing element %o, %o",el,e)}},this);this.scrollTo(scrollTo,false)}itemsToQuietlyRemove.after.each(function(el,index){this.fireEvent("onRemoveItem",[el]);removed.push(itemsToQuietlyRemove.afterImgs[index]);try{el.dispose()}catch(e){dbug.log("after: error removing element %o, %o",el,e)}});function clean(range,additionalItems){var items=[];fadeItems.each(function(el,index){this.fireEvent("onRemoveItem",[el]);items.push(fadeItemImgs[index]);try{el.dispose()}catch(e){dbug.log("fade: error removing element %o, %o",el,e)}},this);items.combine(additionalItems);this.fireEvent("onRemoveItems",[items]);range=this.calculateRange();if(range.elements==0&&range.start>0){this.pageBack()}if(!this.imgs.length){this.fireEvent("onEmpty")}}if(useFx){new Fx.Elements(fadeItems).start(fadeEffects).chain(clean.bind(this,[range,removed]))}else{clean.apply(this,[range,removed])}return this},removeSelected:function(useFx){this.removeItems(this.selected,useFx);return this},empty:function(suppressEvent){var effect={};var items=[];this.imgs.each(function(img,index){items.push(img.getParent());effect[index]={opacity:0}});new Fx.Elements(items).start(effect).chain(function(){this.removeItems(this.imgs,false);if(!suppressEvent){this.fireEvent("onEmpty")}}.bind(this));return this},selectItem:function(index,select){var img=this.imgs[index];if($defined(select)){if(select){img.addClass("selected")}else{img.removeClass("selected")}}else{img.toggleClass("selected")}if(img.hasClass("selected")){this.selected.push(img);this.fireEvent("select",[index,img])}else{this.selected.erase(img);this.fireEvent("onDeSelect",[index,img])}return this},getDefaultWidth:function(){if($type(this.options.length)=="number"){return this.options.length}var container=$(this.options.length);if(!container){container=this.container.getParent()}return container.getSize()[this.options.useAxis]},getIconPositions:function(){var offsets=[];var cumulative=0;var prev;this.imgs.each(function(img,index){var parent=img.getParent();cumulative+=(prev)?img.getCoordinates().left-prev.getCoordinates().left:0;prev=img;offsets.push({image:img,size:parent.getSize()[this.options.useAxis],offset:cumulative,container:parent})},this);return offsets},calculateRange:function(index,fromEnd){if(!this.imgs.length){return{start:0,end:0,elements:[]}}index=$pick(index,this.currentOffset||0);if(index<0){index=0}var length=this.getDefaultWidth();var positions=this.getIconPositions();var referencePoint;if(positions[index]){referencePoint=positions[index].offset}else{var lastIcon=this.imgs.getLast().getParent();var coords=lastIcon.getCoordinates();referencePoint=coords.width+coords.left-lastIcon.getParent().getPosition().x}var range=positions.filter(function(position,i){if(fromEnd){return i<index&&position.offset<referencePoint&&position.offset>=referencePoint-length-this.options.scrollBackAdjuster}else{return i>=index&&position.offset+position.size<=length+positions[index].offset}},this);return(fromEnd)?{start:index-range.length,end:index,elements:range}:{start:index,end:range.length+index,elements:range}},inRange:function(index){var range=this.calculateRange();return index<range.end&&index>=range.start},setupEvents:function(){$(this.options.container).addEvents({mouseleave:function(){if(this.inFocus){this.inFocus=null}this.imgOut(null,true)}.bind(this)});$$(this.options.backScrollButtons).each(function(el){el.addEvents({click:this.pageBack.bind(this),mouseover:function(){this.addClass("hover")},mouseout:function(){this.removeClass("hover")}})},this);$$(this.options.forwardScrollButtons).each(function(el){el.addEvents({click:this.pageForward.bind(this),mouseover:function(){this.addClass("hover")},mouseout:function(){this.removeClass("hover")}})},this);$$(this.options.clearLinks).each(function(el){el.addEvent("click",this.empty.bind(this))},this);$$(this.options.removeLinks).each(function(el){el.addEvent("click",this.removeSelected.bind(this))},this)},imgOver:function(img){this.inFocus=img;$clear(this.overTimeout);this.overTimeout=(function(){this.onFocusDelay=this.options.onFocusDelay;if(this.inFocus==img){this.fireEvent("onFocus",[img,this.imgs.indexOf(img)])}}).delay(this.onFocusDelay,this)},imgOut:function(img,force){if(!$defined(img)&&force){img=this.prevFocus||this.imgs[0]}if(this.inFocus==img&&img){this.inFocus=null;$clear(this.outTimeout);this.outTimeout=(function(){this.prevFocus=img;if(this.inFocus!=img||(img==null&&force)){this.fireEvent("onBlur",[img,this.imgs.indexOf(img)])}if(!this.inFocus){this.onFocusDelay=this.options.initialFocusDelay}}).delay(this.options.onBlurDelay,this)}},setupIconEvents:function(img,caption){img.addEvents({click:function(e){if(e.control||e.meta){this.selectItem(this.imgs.indexOf(img));e.stop()}}.bind(this)});img.getParent().addEvents({mouseover:this.imgOver.bind(this,img),mouseout:this.imgOver.bind(this,img)})}});var Modalizer=new Class({defaultModalStyle:{display:"block",position:"fixed",top:0,left:0,"z-index":5000,"background-color":"#333",opacity:0.8},setModalOptions:function(options){this.modalOptions=$merge({width:(window.getScrollSize().x+300),height:(window.getScrollSize().y+300),elementsToHide:"select",onModalHide:$empty,onModalShow:$empty,hideOnClick:true,modalStyle:{},updateOnResize:true},this.modalOptions,options);return this},toElement:function(){return $("modalOverlay")},resize:function(){if($("modalOverlay")){$("modalOverlay").setStyles({width:(window.getScrollSize().x+300),height:(window.getScrollSize().y+300)})}},setModalStyle:function(styleObject){this.modalOptions.modalStyle=styleObject;this.modalStyle=$merge(this.defaultModalStyle,{width:this.modalOptions.width,height:this.modalOptions.height},styleObject);if($("modalOverlay")){$("modalOverlay").setStyles(this.modalStyle)}return(this.modalStyle)},modalShow:function(options){this.setModalOptions(options);var overlay=null;if($("modalOverlay")){overlay=$("modalOverlay")}if(!overlay){overlay=new Element("div",{id:"modalOverlay"}).inject(document.body)}overlay.setStyles(this.setModalStyle(this.modalOptions.modalStyle));if(Browser.Engine.trident4){overlay.setStyle("position","absolute")}$("modalOverlay").removeEvents("click").addEvent("click",function(){this.modalHide(this.modalOptions.hideOnClick)}.bind(this));this.bound=this.bound||{};if(!this.bound.resize&&this.modalOptions.updateOnResize){this.bound.resize=this.resize.bind(this);window.addEvent("resize",this.bound.resize)}if($type(this.modalOptions.onModalShow)=="function"){this.modalOptions.onModalShow()}this.togglePopThroughElements(0);overlay.setStyle("display","block");return this},modalHide:function(override){if(override===false){return false}this.togglePopThroughElements(1);if($type(this.modalOptions.onModalHide)=="function"){this.modalOptions.onModalHide()}if($("modalOverlay")){$("modalOverlay").setStyle("display","none")}if(this.modalOptions.updateOnResize){this.bound=this.bound||{};if(!this.bound.resize){this.bound.resize=this.resize.bind(this)}window.removeEvent("resize",this.bound.resize)}return this},togglePopThroughElements:function(opacity){if(Browser.Engine.trident4||(Browser.Engine.gecko&&Browser.Platform.mac)){$$(this.modalOptions.elementsToHide).each(function(sel){sel.setStyle("opacity",opacity)})}}});var ObjectBrowser=new Class({Implements:[Options,Events],options:{onBranchClick:function(data){this.showLevel(data.path?data.path+"."+data.key:data.key,data.nodePath)},initPath:"",buildOnInit:true,data:{},excludeKeys:[],includeKeys:[]},initialize:function(container,options){this.container=$(container);this.setOptions(options);this.data=$H(this.options.data);this.levels={};this.elements={};if(this.options.buildOnInit){this.showLevel(this.options.initPath,this.container)}},toElement:function(){return this.container},getMemberByPath:function(path,parent){if(path===""||path=="top"){return this.data.getClean()}var h=parent?$H(parent):this.data;return h.getFromPath(path)},replaceMemberByPath:function(path,value){if(path===""||path=="top"){return this.data=$H(value)}var parentObj=this.getMemberByPath(path,true);parentObj[path.split(".").pop()]=value;return this.data},getPathByNode:function(el){return $H(this.elements).keyOf(el)},validLevel:function(key){return(!this.options.excludeKeys.contains(key)&&(!this.options.includeKeys.length||this.options.includeKeys.contains(key)))},buildLevel:function(path){if(path.test(".$")){path=path.substring(0,path.length)}var level=this.getMemberByPath(path);if(this.levels[path]){return this.levels[path]}var section=new Element("ul");switch($type(level)){case"function":this.buildNode(level,"function()",section,path,true);break;case"string":case"number":this.buildNode(level,null,section,path,true);break;case"array":level.each(function(node,index){this.buildNode(node,index,section,path,["string","function"].contains($type(node)))}.bind(this));break;default:$H(level).each(function(value,key){var db=false;if(key=="element_dimensions"){db=true}if(db){dbug.log(key)}if(this.validLevel(key)){if(db){dbug.log("is valid level")}var isLeaf;if($type(value)=="object"){isLeaf=false;$each(value,function(v,k){if(this.validLevel(k)){if(db){dbug.log("not a leaf!")}isLeaf=false}else{isLeaf=true}},this);if(isLeaf){value=false}}if(db){dbug.log(value,key,section,path,$chk(isLeaf)?isLeaf:null)}this.buildNode(value,key,section,path,$chk(isLeaf)?isLeaf:null)}},this)}this.levels[path]=section;return section},getParentFromPath:function(path){return this.elements[(path||"top")+"NODE"]},showLevel:function(path,target,method){target=target||path;if(!this.elements[path]){this.elements[path]=this.buildLevel(path)[method||"inject"](this.elements[target]||this.container)}else{this.elements[path].toggle()}dbug.log("toggle class");this.elements[path].getParent().toggleClass("collapsed");return this},buildNode:function(value,key,section,path,leaf){if(key===""||value===""){leaf=true}if(!this.validLevel(key)){return null}var nodePath=(path?path+"."+key:key)+"NODE";var lnk=this.buildLink((leaf)?value||key:$chk(key)?key:value,leaf);var li=new Element("li").addClass((leaf)?"leaf":"branch collapsed").adopt(lnk).inject(section);lnk.addEvent("click",function(e){e.stopPropagation();if(leaf){this.fireEvent("onLeafClick",{li:li,key:key,value:value,path:path,nodePath:nodePath,event:e})}else{this.fireEvent("onBranchClick",{li:li,key:key,value:value,path:path,nodePath:nodePath,event:e})}}.bind(this));this.elements[nodePath]=li;return li},buildLink:function(key){if($type(key)=="function"){key=key.toString();key=key.substring(0,key.indexOf("{")+1)+"..."}return new Element("a",{href:"javascript: void(0);"}).set("html",key)}});var PopupDetail=new Class({Implements:[Options,Events],visible:false,observed:false,hasData:false,options:{observerAction:"mouseenter",closeOnMouseOut:true,linkPopup:false,data:{},templateOptions:{},useAjax:false,ajaxOptions:{method:"get"},ajaxLink:false,ajaxCache:{},delayOn:100,delayOff:100,stickyWinOptions:{},showNow:false,htmlResponse:false,regExp:/\\?%([^%]+)%/g},initialize:function(html,observer,options){this.setOptions(options);try{this.options.stickyWinToUse=this.options.stickyWinToUse||StickyWinFx}catch(e){this.options.stickyWinToUse=StickyWin}this.observer=$(observer);this.html=($(html))?$(html).get("html"):html||"";if(this.options.showNow){this.show.delay(this.options.delayOn,this)}this.setUpObservers()},setUpObservers:function(){var opt=this.options;this.observer.addEvent(opt.observerAction,function(){this.observed=true;this.show.delay(opt.delayOn,this)}.bind(this));if((opt.observerAction=="mouseenter"||opt.observerAction=="mouseover")&&this.options.closeOnMouseOut){this.observer.addEvent("mouseleave",function(){this.observed=false;this.hide.delay(opt.delayOff,this)}.bind(this))}return this},parseTemplate:function(string,values){return string.substitute(values,this.options.regExp)},makePopup:function(){if(!this.stickyWin){var opt=this.options;if(opt.htmlResponse){this.content=this.data}else{this.content=this.parseTemplate(this.html,opt.data)}this.stickyWin=new opt.stickyWinToUse($merge(opt.stickyWinOptions,{relativeTo:this.observer,showNow:false,content:this.content,allowMultipleByClass:true}));if($(opt.linkPopup)||$type(opt.linkPopup)=="string"){this.stickyWin.win.setStyle("cursor","pointer").addEvent("click",function(){window.location.href=($type(url)=="string")?url:url.src})}this.stickyWin.win.addEvent("mouseenter",function(){this.observed=true}.bind(this));this.stickyWin.win.addEvent("mouseleave",function(){this.observed=false;if(opt.closeOnMouseOut){this.hide.delay(opt.delayOff,this)}}.bind(this))}return this},getContent:function(){try{new Request($merge(this.options.ajaxOptions,{url:this.options.ajaxLink||this.observer.href,onSuccess:this.show.bind(this)})).send()}catch(e){dbug.log("ajax error on PopupDetail: %s",e)}},show:function(data){var opt=this.options;if(data){this.data=data}if(this.observed&&!this.visible){if(opt.useAjax&&!this.data){var cachedVal=opt.ajaxCache[this.options.ajaxLink]||opt.ajaxCache[this.observer.href];if(cachedVal){this.fireEvent("onPopupShow",this);return this.show(cachedVal)}this.cursorStyle=this.observer.getStyle("cursor");this.observer.setStyle("cursor","wait");this.getContent();return false}else{if(this.cursorStyle){this.observer.setStyle("cursor",this.cursorStyle)}if(opt.useAjax&&!opt.htmlResponse){opt.data=JSON.decode(this.data)}this.makePopup();this.fireEvent("onPopupShow",this);this.stickyWin.show();this.visible=true;return this}}return this},hide:function(){if(!this.observed){this.fireEvent("onPopupHide");if(this.stickyWin){this.stickyWin.hide()}this.visible=false}return this}});var PopupDetailCollection=new Class({Implements:[Options],options:{details:{},links:[],ajaxLinks:[],useCache:true,template:"",popupDetailOptions:{}},cache:{},initialize:function(observers,options){this.observers=$$(observers);this.setOptions(options);var ln=this.options.ajaxLinks.length;if(ln<=0){ln=this.options.details.length}if(this.observers.length!=ln){dbug.log("warning: observers and details are out of sync.")}this.makePopupDetails()},makePopupDetails:function(){this.popupDetailObjs=this.observers.map(function(observer,index){var opt=this.options.popupDetailOptions;var pd=new PopupDetail(this.options.template,observer,$merge(opt,{data:$pick(this.options.details[index],{}),linkItem:$pick(this.options.links[index],$pick(opt.linkItem,false)),ajaxLink:$pick(this.options.ajaxLinks[index],false),ajaxCache:(this.options.useCache)?this.cache:{},useAjax:this.options.ajaxLinks.length>0}));return pd},this)}});var StyleWriter=new Class({createStyle:function(css,id){window.addEvent("domready",function(){try{if($(id)&&id){return }var style=new Element("style",{id:id||""}).inject($$("head")[0]);if(Browser.Engine.trident){style.styleSheet.cssText=css}else{style.set("text",css)}}catch(e){dbug.log("error: %s",e)}}.bind(this))}});var StickyWin=new Class({Implements:[Options,Events,StyleWriter],options:{closeClassName:"closeSticky",pinClassName:"pinSticky",content:"",zIndex:10000,className:"",width:false,height:false,timeout:-1,allowMultipleByClass:false,allowMultiple:true,showNow:true,useIframeShim:true,iframeShimSelector:""},css:'.SWclearfix:after {content: "."; display: block; height: 0; clear: both; visibility: hidden;}.SWclearfix {display: inline-table;}* html .SWclearfix {height: 1%;}.SWclearfix {display: block;}',initialize:function(options){this.options.inject={target:document.body,where:"bottom"};this.setOptions(options);this.id=this.options.id||"StickyWin_"+new Date().getTime();this.makeWindow();if(this.options.content){this.setContent(this.options.content)}if(this.options.showNow){this.show()}this.createStyle(this.css,"StickyWinClearFix")},toElement:function(){return this.win},makeWindow:function(){this.destroyOthers();if(!$(this.id)){this.win=new Element("div",{id:this.id}).addClass(this.options.className).addClass("StickyWinInstance").addClass("SWclearfix").setStyles({display:"none",position:"absolute",zIndex:this.options.zIndex}).inject(this.options.inject.target,this.options.inject.where).store("StickyWin",this)}else{this.win=$(this.id)}if(this.options.width&&$type(this.options.width.toInt())=="number"){this.win.setStyle("width",this.options.width.toInt())}if(this.options.height&&$type(this.options.height.toInt())=="number"){this.win.setStyle("height",this.options.height.toInt())}return this},show:function(){this.fireEvent("onDisplay");this.showWin();if(this.options.useIframeShim){this.showIframeShim()}this.visible=true;return this},showWin:function(){this.win.setStyle("display","block");if(!this.positioned){this.position()}},hide:function(){this.fireEvent("onClose");this.hideWin();if(this.options.useIframeShim){this.hideIframeShim()}this.visible=false;return this},hideWin:function(){this.win.setStyle("display","none")},destroyOthers:function(){if(!this.options.allowMultipleByClass||!this.options.allowMultiple){$$("div.StickyWinInstance").each(function(sw){if(!this.options.allowMultiple||(!this.options.allowMultipleByClass&&sw.hasClass(this.options.className))){sw.dispose()}},this)}},setContent:function(html){if(this.win.getChildren().length>0){this.win.empty()}if($type(html)=="string"){this.win.set("html",html)}else{if($(html)){this.win.adopt(html)}}this.win.getElements("."+this.options.closeClassName).each(function(el){el.addEvent("click",this.hide.bind(this))},this);this.win.getElements("."+this.options.pinClassName).each(function(el){el.addEvent("click",this.togglepin.bind(this))},this);return this},position:function(){this.positioned=true;this.win.setPosition({relativeTo:this.options.relativeTo,position:this.options.position,offset:this.options.offset,edge:this.options.edge});if(this.shim){this.shim.position()}return this},pin:function(pin){if(!this.win.pin){dbug.log("you must include element.pin.js!");return this}this.pinned=$pick(pin,true);this.win.pin(pin);return this},unpin:function(){return this.pin(false)},togglepin:function(){return this.pin(!this.pinned)},makeIframeShim:function(){if(!this.shim){var el=(this.options.iframeShimSelector)?this.win.getElement(this.options.iframeShimSelector):this.win;this.shim=new IframeShim(el,{display:false,name:"StickyWinShim"})}},showIframeShim:function(){if(this.options.useIframeShim){this.makeIframeShim();this.shim.show()}},hideIframeShim:function(){if(this.options.useIframeShim){this.shim.hide()}},destroy:function(){if(this.win){this.win.dispose()}if(this.options.useIframeShim){this.shim.dispose()}if($("modalOverlay")){$("modalOverlay").dispose()}}});var StickyWinFx=new Class({Extends:StickyWin,options:{fade:true,fadeDuration:150,draggable:false,dragOptions:{},dragHandleSelector:".dragHandle",resizable:false,resizeOptions:{},resizeHandleSelector:""},setContent:function(html){this.parent(html);if(this.options.draggable){this.makeDraggable()}if(this.options.resizable){this.makeResizable()}return this},hideWin:function(){if(this.options.fade){this.fade(0)}else{this.parent()}},showWin:function(){if(this.options.fade){this.fade(1)}else{this.parent()}},fade:function(to){if(!this.fadeFx){this.win.setStyles({opacity:0,display:"block"});var opts={property:"opacity",duration:this.options.fadeDuration};if(this.options.fadeTransition){opts.transition=this.options.fadeTransition}this.fadeFx=new Fx.Tween(this.win,opts)}if(to>0){this.win.setStyle("display","block");this.position()}this.fadeFx.clearChain();this.fadeFx.start(to).chain(function(){if(to==0){this.win.setStyle("display","none")}}.bind(this));return this},makeDraggable:function(){dbug.log("you must include Drag.js, cannot make draggable")},makeResizable:function(){dbug.log("you must include Drag.js, cannot make resizable")}});if(typeof Drag!="undefined"){StickyWinFx.implement({makeDraggable:function(){var toggled=this.toggleVisible(true);if(this.options.useIframeShim){this.makeIframeShim();var onComplete=(this.options.dragOptions.onComplete||$empty);this.options.dragOptions.onComplete=function(){onComplete();this.shim.position()}.bind(this)}if(this.options.dragHandleSelector){var handle=this.win.getElement(this.options.dragHandleSelector);if(handle){handle.setStyle("cursor","move");this.options.dragOptions.handle=handle}}this.win.makeDraggable(this.options.dragOptions);if(toggled){this.toggleVisible(false)}},makeResizable:function(){var toggled=this.toggleVisible(true);if(this.options.useIframeShim){this.makeIframeShim();var onComplete=(this.options.resizeOptions.onComplete||$empty);this.options.resizeOptions.onComplete=function(){onComplete();this.shim.position()}.bind(this)}if(this.options.resizeHandleSelector){var handle=this.win.getElement(this.options.resizeHandleSelector);if(handle){this.options.resizeOptions.handle=this.win.getElement(this.options.resizeHandleSelector)}}this.win.makeResizable(this.options.resizeOptions);if(toggled){this.toggleVisible(false)}},toggleVisible:function(show){if(!this.visible&&Browser.Engine.webkit&&$pick(show,true)){this.win.setStyles({display:"block",opacity:0});return true}else{if(!$pick(show,false)){this.win.setStyles({display:"none",opacity:1});return false}}return false}})}var StickyWinModal,StickyWinFxModal;(function(){var modalWinBase=function(extend){return{Extends:extend,initialize:function(options){options=options||{};this.setModalOptions($merge(options.modalOptions||{},{onModalHide:function(){this.hide(false)}.bind(this)}));this.parent(options)},show:function(showModal){if($pick(showModal,true)){this.modalShow();this.win.getElements(this.modalOptions.elementsToHide).setStyle("opacity",1)}this.parent()},hide:function(hideModal){if($pick(hideModal,true)){this.modalHide()}this.parent()}}};StickyWinModal=new Class(modalWinBase(StickyWin));StickyWinModal.implement(new Modalizer);StickyWinFxModal=(typeof StickyWinFx!="undefined")?new Class(modalWinBase(StickyWinFx)):$empty;try{StickyWinFxModal.implement(new Modalizer())}catch(e){}})();(function(){var SWA=function(extend){return{Extends:extend,options:{url:"",showNow:false,requestOptions:{method:"get"},wrapWithUi:false,caption:"",uiOptions:{},handleResponse:function(response){var responseScript="";this.Request.response.text.stripScripts(function(script){responseScript+=script});if(this.options.wrapWithUi){response=StickyWin.ui(this.options.caption,response,this.options.uiOptions)}this.setContent(response);this.show();if(this.evalScripts){$exec(responseScript)}}},initialize:function(options){this.parent(options);this.evalScripts=this.options.requestOptions.evalScripts;this.options.requestOptions.evalScripts=false;this.createRequest()},createRequest:function(){this.Request=new Request(this.options.requestOptions).addEvent("onSuccess",this.options.handleResponse.bind(this))},update:function(url,options){this.Request.setOptions(options).send({url:url||this.options.url});return this}}};try{StickyWin.Ajax=new Class(SWA(StickyWin))}catch(e){}try{StickyWinFx.Ajax=new Class(SWA(StickyWinFx))}catch(e){}try{StickyWinModal.Ajax=new Class(SWA(StickyWinModal))}catch(e){}try{StickyWinFxModal.Ajax=new Class(SWA(StickyWinFxModal))}catch(e){}})();StickyWin.alert=function(msghdr,msg,baseHref){baseHref=baseHref||"http://www.cnet.com/html/rb/assets/global/simple.error.popup";msg='<p class="errorMsg SWclearfix" style="margin: 0px;"><img src="'+baseHref+'/icon_problems_sm.gif" class="bang clearfix" style="float: left; width: 30px; height: 30px; margin: 3px 5px 5px 0px;">'+msg+"</p>";var body=StickyWin.ui(msghdr,msg,{width:250});return new StickyWinModal({modalOptions:{modalStyle:{zIndex:11000}},zIndex:110001,content:body,position:"center"})};StickyWin.ui=function(caption,body,options){options=$extend({width:300,css:"div.DefaultStickyWin div.body{font-family:verdana; font-size:11px; line-height: 13px;}div.DefaultStickyWin div.top_ul{background:url({%baseHref%}full.png) top left no-repeat; height:30px; width:15px; float:left}div.DefaultStickyWin div.top_ur{position:relative; left:0px !important; left:-4px; background:url({%baseHref%}full.png) top right !important; height:30px; margin:0px 0px 0px 15px !important; margin-right:-4px; padding:0px}div.DefaultStickyWin h1.caption{clear: none !important; margin:0px 5px 0px 0px !important; overflow: hidden; padding:0 !important; font-weight:bold; color:#555; font-size:14px !important; position:relative; top:8px !important; left:5px !important; float: left; height: 22px !important;}div.DefaultStickyWin div.middle, div.DefaultStickyWin div.closeBody {background:url({%baseHref%}body.png) top left repeat-y; margin:0px 20px 0px 0px !important;	margin-bottom: -3px; position: relative;	top: 0px !important; top: -3px;}div.DefaultStickyWin div.body{background:url({%baseHref%}body.png) top right repeat-y; padding:8px 30px 8px 0px !important; margin-left:5px !important; position:relative; right:-20px !important;}div.DefaultStickyWin div.bottom{clear:both}div.DefaultStickyWin div.bottom_ll{background:url({%baseHref%}full.png) bottom left no-repeat; width:15px; height:15px; float:left}div.DefaultStickyWin div.bottom_lr{background:url({%baseHref%}full.png) bottom right; position:relative; left:0px !important; left:-4px; margin:0px 0px 0px 15px !important; margin-right:-4px; height:15px}div.DefaultStickyWin div.closeButtons{text-align: center; background:url({%baseHref%}body.png) top right repeat-y; padding: 0px 30px 8px 0px; margin-left:5px; position:relative; right:-20px}div.DefaultStickyWin a.button:hover{background:url({%baseHref%}big_button_over.gif) repeat-x}div.DefaultStickyWin a.button {background:url({%baseHref%}big_button.gif) repeat-x; margin: 2px 8px 2px 8px; padding: 2px 12px; cursor:pointer; border: 1px solid #999 !important; text-decoration:none; color: #000 !important;}div.DefaultStickyWin div.closeButton{width:13px; height:13px; background:url({%baseHref%}closebtn.gif) no-repeat; position: absolute; right: 0px; margin:10px 15px 0px 0px !important; cursor:pointer}div.DefaultStickyWin div.dragHandle {	width: 11px;	height: 25px;	position: relative;	top: 5px;	left: -3px;	cursor: move;	background: url({%baseHref%}drag_corner.gif); float: left;}",cornerHandle:false,cssClass:"",baseHref:"http://www.cnet.com/html/rb/assets/global/stickyWinHTML/",buttons:[]},options);if(options.confirmTxt){options.buttons.push({text:options.confirmTxt,onClick:options.onConfirm||$empty})}if(options.closeTxt){options.buttons.push({text:options.closeTxt,onClick:options.onClose||$empty})}new StyleWriter().createStyle(options.css.substitute({baseHref:options.baseHref},/\\?\{%([^}]+)%\}/g),"defaultStickyWinStyle");caption=$pick(caption,"%caption%");body=$pick(body,"%body%");var container=new Element("div").setStyle("width",options.width).addClass("DefaultStickyWin");if(options.cssClass){container.addClass(options.cssClass)}var h1Caption=new Element("h1").addClass("caption").setStyle("width",(options.width.toInt()-(options.cornerHandle?70:60)));if($(caption)){h1Caption.adopt(caption)}else{h1Caption.set("html",caption)}var bodyDiv=new Element("div").addClass("body");if($(body)){bodyDiv.adopt(body)}else{bodyDiv.set("html",body)}var top_ur=new Element("div").addClass("top_ur").adopt(new Element("div").addClass("closeButton").addClass("closeSticky")).adopt(h1Caption);if(options.cornerHandle){new Element("div").addClass("dragHandle").inject(top_ur,"top")}else{h1Caption.addClass("dragHandle")}container.adopt(new Element("div").addClass("top").adopt(new Element("div").addClass("top_ul")).adopt(top_ur));container.adopt(new Element("div").addClass("middle").adopt(bodyDiv));if(options.buttons.length>0){var closeButtons=new Element("div").addClass("closeButtons");options.buttons.each(function(button){if(button.properties&&button.properties.className){button.properties["class"]=button.properties.className;delete button.properties.className}var properties=$merge({"class":"closeSticky"},button.properties);new Element("a").addEvent("click",button.onClick||$empty).appendText(button.text).inject(closeButtons).setProperties(properties).addClass("button")});container.adopt(new Element("div").addClass("closeBody").adopt(closeButtons))}container.adopt(new Element("div").addClass("bottom").adopt(new Element("div").addClass("bottom_ll")).adopt(new Element("div").addClass("bottom_lr")));return container};var Waiter=new Class({Implements:[Options,Events,Chain],options:{baseHref:"http://www.cnet.com/html/rb/assets/global/waiter/",containerProps:{styles:{position:"absolute","text-align":"center"},"class":"waiterContainer"},containerPosition:{},msg:false,msgProps:{styles:{"text-align":"center",fontWeight:"bold"},"class":"waiterMsg"},img:{src:"waiter.gif",styles:{width:24,height:24},"class":"waiterImg"},layer:{styles:{width:0,height:0,position:"absolute",zIndex:999,display:"none",opacity:0.9,background:"#fff"},"class":"waitingDiv"},useIframeShim:true,fxOptions:{}},initialize:function(target,options){this.target=$(target)||$(document.body);this.setOptions(options);this.waiterContainer=new Element("div",this.options.containerProps).inject(document.body);if(this.options.msg){this.msgContainer=new Element("div",this.options.msgProps);this.waiterContainer.adopt(this.msgContainer);if(!$(this.options.msg)){this.msg=new Element("p").appendText(this.options.msg)}else{this.msg=$(this.options.msg)}this.msgContainer.adopt(this.msg)}if(this.options.img){this.waiterImg=$(this.options.img.id)||new Element("img").injectInside(this.waiterContainer)}this.waiterOverlay=$(this.options.layer.id)||new Element("div").injectInside(document.body).adopt(this.waiterContainer);try{if(this.options.useIframeShim){this.shim=new IframeShim(this.waiterOverlay,this.options.iframeShimOptions)}}catch(e){dbug.log("Waiter attempting to use IframeShim but failed; did you include IframeShim? Error: ",e);this.options.useIframeShim=false}this.waiterFx=this.waiterFx||new Fx.Elements($$(this.waiterContainer,this.waiterOverlay),this.options.fxOptions)},toggle:function(element,show){element=$(element)||$(this.active)||$(this.target);if(!$(element)){return this}if(this.active&&element!=this.active){return this.stop(this.start.bind(this,element))}if((!this.active||show)&&show!==false){this.start(element)}else{if(this.active&&!show){this.stop()}}return this},reset:function(){this.waiterFx.cancel().set({0:{opacity:[0]},1:{opacity:[0]}})},start:function(element){this.reset();element=$(element)||$(this.target);if(this.options.img){this.waiterImg.set($merge(this.options.img,{src:this.options.baseHref+this.options.img.src}))}this.waiterOverlay.set(this.options.layer);var start=function(){var dim=element.getComputedSize();this.active=element;this.waiterOverlay.setStyles({width:this.options.layer.width||dim.totalWidth,height:this.options.layer.height||dim.totalHeight,display:"block"}).setPosition({relativeTo:element,position:"upperLeft"});this.waiterContainer.setPosition({relativeTo:this.waiterOverlay});if(this.options.useIframeShim){this.shim.show()}this.waiterFx.start({0:{opacity:[1]},1:{opacity:[this.options.layer.styles.opacity]}}).chain(function(){if(this.active==element){this.fireEvent("onShow",element)}this.callChain()}.bind(this))}.bind(this);if(this.active&&this.active!=element){this.stop(start)}else{start()}return this},stop:function(callback){if(!this.active){if($type(callback)=="function"){callback.attempt()}return this}this.waiterFx.cancel();this.waiterFx.clearChain();this.waiterFx.start({0:{opacity:[0]},1:{opacity:[0]}}).chain(function(){this.active=null;this.waiterOverlay.hide();if(this.options.useIframeShim){this.shim.hide()}this.fireEvent("onHide",this.active);this.callChain();this.clearChain();if($type(callback)=="function"){callback.attempt()}}.bind(this));return this}});if(typeof Request!="undefined"&&Request.HTML){Request.HTML=new Class({Extends:Request.HTML,options:{useWaiter:false,waiterOptions:{},waiterTarget:false},initialize:function(options){this._send=this.send;this.send=function(options){if(this.waiter){this.waiter.start().chain(this._send.bind(this,options))}else{this._send(options)}return this};this.parent(options);if(this.options.useWaiter&&($(this.options.update)||$(this.options.waiterTarget))){this.waiter=new Waiter(this.options.waiterTarget||this.options.update,this.options.waiterOptions);["onComplete","onException","onCancel"].each(function(event){this.addEvent(event,this.waiter.stop.bind(this.waiter))},this)}}})}var HtmlTable=new Class({Implements:[Options],options:{properties:{cellpadding:0,cellspacing:0,border:0},rows:[]},initialize:function(options){this.setOptions(options);this.table=new Element("table").setProperties(this.options.properties);this.table.store("HtmlTable",this);this.tbody=new Element("tbody").inject(this.table);this.options.rows.each(this.push.bind(this));["adopt","inject","wraps","grab","replaces","empty","dispose"].each(function(method){this[method]=this.table[method].bind(this.table)},this)},toElement:function(){return this.table},push:function(row){var tr=new Element("tr").inject(this.tbody);var tds=row.map(function(tdata){var td=new Element("td").inject(tr);if(tdata.properties){td.setProperties(tdata.properties)}function setContent(content){if($(content)){td.adopt($(content))}else{td.set("html",content)}}if(tdata.content){setContent(tdata.content)}else{setContent(tdata)}return td},this);return{tr:tr,tds:tds}}});var MultipleOpenAccordion=new Class({Implements:[Options,Events,Chain],options:{togglers:[],elements:[],openAll:true,firstElementsOpen:[0],fixedHeight:false,fixedWidth:false,height:true,opacity:true,width:false},togglers:[],elements:[],initialize:function(container,options){this.setOptions(options);this.container=$(container);elements=$$(options.elements);$$(options.togglers).each(function(toggler,idx){this.addSection(toggler,elements[idx],idx)},this);if(this.togglers.length){if(this.options.openAll){this.showAll()}else{this.openSections(this.options.firstElementsOpen)}}},addSection:function(toggler,element,pos){toggler=$(toggler);element=$(element);var test=this.togglers.contains(toggler);var len=this.togglers.length;this.togglers.include(toggler);this.elements.include(element);if(len&&(!test||pos)){pos=$pick(pos-1,len-1);toggler.inject(this.elements[pos],"after");element.inject(toggler,"after")}else{if(this.container&&!test){toggler.inject(this.container);element.inject(this.container)}}var idx=this.togglers.indexOf(toggler);toggler.addEvent("click",this.toggleSection.bind(this,idx));var mode;if(this.options.height&&this.options.width){mode="both"}else{mode=(this.options.height)?"vertical":"horizontal"}element.store("reveal",new Fx.Reveal(element,{transitionOpacity:this.options.opacity,mode:mode,heightOverride:this.options.fixedHeight,widthOverride:this.options.fixedWidth}));return this},onComplete:function(idx,callChain){this.fireEvent(this.elements[idx].isVisible()?"onActive":"onBackground",[this.togglers[idx],this.elements[idx]]);this.callChain();return this},showSection:function(idx,useFx){this.toggleSection(idx,useFx,true)},hideSection:function(idx,useFx){this.toggleSection(idx,useFx,false)},toggleSection:function(idx,useFx,show,callChain){var method=show?"reveal":$defined(show)?"dissolve":"toggle";callChain=$pick(callChain,true);if($pick(useFx,true)){this.elements[idx].retrieve("reveal")[method]().chain(this.onComplete.bind(this,[idx,callChain]))}else{if(method=="toggle"){el.togglek()}else{el[method=="reveal"?"show":"hide"]()}this.onComplete(idx,callChain)}return this},toggleAll:function(useFx,show){var method=show?"reveal":$chk(show)?"disolve":"toggle";var last=this.elements.getLast();this.elements.each(function(el,idx){this.toggleSection(idx,useFx,show,el==last)},this);return this},toggleSections:function(sections,useFx,show){last=sections.getLast();this.elements.each(function(el,idx){this.toggleSection(idx,useFx,sections.contains(idx),show,idx==last)},this);return this},openSections:function(sections,useFx){this.toggleSections(sections,useFx,true)},closeSections:function(sections,useFx){this.toggleSections(sections,useFx,false)},showAll:function(useFx){return this.toggleAll(useFx,true)},hideAll:function(useFx){return this.toggleAll(useFx,false)}});var MooScroller=new Class({Implements:[Options,Events],options:{maxThumbSize:10,mode:"vertical",width:0,scrollSteps:10,wheel:true,scrollLinks:{forward:"scrollForward",back:"scrollBack"}},initialize:function(content,knob,options){this.setOptions(options);this.horz=(this.options.mode=="horizontal");this.content=$(content).setStyle("overflow","hidden");this.knob=$(knob);this.track=this.knob.getParent();this.setPositions();if(this.horz&&this.options.width){this.wrapper=new Element("div");this.content.getChildren().each(function(child){this.wrapper.adopt(child)},this);this.wrapper.inject(this.content).setStyle("width",this.options.width)}this.bound={start:this.start.bind(this),end:this.end.bind(this),drag:this.drag.bind(this),wheel:this.wheel.bind(this),page:this.page.bind(this)};this.position={};this.mouse={};this.update();this.attach();var clearScroll=function(){$clear(this.scrolling)}.bind(this);["forward","back"].each(function(direction){var lnk=$(this.options.scrollLinks[direction]);if(lnk){lnk.addEvents({mousedown:function(){this.scrolling=this[direction].periodical(50,this)}.bind(this),mouseup:clearScroll.bind(this),click:clearScroll.bind(this)})}},this);this.knob.addEvent("click",clearScroll.bind(this));window.addEvent("domready",function(){try{$(document.body).addEvent("mouseup",clearScroll.bind(this))}catch(e){}}.bind(this))},setPositions:function(){[this.track,this.knob].each(function(el){if(el.getStyle("position")=="static"){el.setStyle("position","relative")}})},toElement:function(){return this.content},update:function(){var plain=this.horz?"Width":"Height";this.contentSize=this.content["offset"+plain];this.contentScrollSize=this.content["scroll"+plain];this.trackSize=this.track["offset"+plain];this.contentRatio=this.contentSize/this.contentScrollSize;this.knobSize=(this.trackSize*this.contentRatio).limit(this.options.maxThumbSize,this.trackSize);this.scrollRatio=this.contentScrollSize/this.trackSize;this.knob.setStyle(plain.toLowerCase(),this.knobSize);this.updateThumbFromContentScroll();this.updateContentFromThumbPosition()},updateContentFromThumbPosition:function(){this.content[this.horz?"scrollLeft":"scrollTop"]=this.position.now*this.scrollRatio},updateThumbFromContentScroll:function(){this.position.now=(this.content[this.horz?"scrollLeft":"scrollTop"]/this.scrollRatio).limit(0,(this.trackSize-this.knobSize));this.knob.setStyle(this.horz?"left":"top",this.position.now)},attach:function(){this.knob.addEvent("mousedown",this.bound.start);if(this.options.scrollSteps){this.content.addEvent("mousewheel",this.bound.wheel)}this.track.addEvent("mouseup",this.bound.page)},wheel:function(event){this.scroll(-(event.wheel*this.options.scrollSteps));this.updateThumbFromContentScroll();event.stop()},scroll:function(steps){steps=steps||this.options.scrollSteps;this.content[this.horz?"scrollLeft":"scrollTop"]+=steps;this.updateThumbFromContentScroll();this.fireEvent("onScroll",steps)},forward:function(steps){this.scroll(steps)},back:function(steps){steps=steps||this.options.scrollSteps;this.scroll(-steps)},page:function(event){var axis=this.horz?"x":"y";var forward=(event.page[axis]>this.knob.getPosition()[axis]);this.scroll((forward?1:-1)*this.content["offset"+(this.horz?"Width":"Height")]);this.updateThumbFromContentScroll();this.fireEvent("onPage",forward);event.stop()},start:function(event){var axis=this.horz?"x":"y";this.mouse.start=event.page[axis];this.position.start=this.knob.getStyle(this.horz?"left":"top").toInt();document.addEvent("mousemove",this.bound.drag);document.addEvent("mouseup",this.bound.end);this.knob.addEvent("mouseup",this.bound.end);event.stop()},end:function(event){document.removeEvent("mousemove",this.bound.drag);document.removeEvent("mouseup",this.bound.end);this.knob.removeEvent("mouseup",this.bound.end);event.stop()},drag:function(event){var axis=this.horz?"x":"y";this.mouse.now=event.page[axis];this.position.now=(this.position.start+(this.mouse.now-this.mouse.start)).limit(0,(this.trackSize-this.knobSize));this.updateContentFromThumbPosition();this.updateThumbFromContentScroll();event.stop()}});var SimpleCarousel=new Class({Implements:[Options,Events],options:{slideInterval:4000,transitionDuration:700,startIndex:0,buttonOnClass:"selected",buttonOffClass:"off",rotateAction:"none",rotateActionDuration:100,autoplay:true},initialize:function(container,slides,buttons,options){this.container=$(container);if(this.container.hasClass("hasCarousel")){return false}this.setOptions(options);this.container.addClass("hasCarousel");this.slides=$$(slides);this.buttons=$$(buttons);this.createFx();this.showSlide(this.options.startIndex);if(this.options.autoplay){this.autoplay()}if(this.options.rotateAction!="none"){this.setupAction(this.options.rotateAction)}return this},toElement:function(){return this.container},setupAction:function(action){this.buttons.each(function(el,idx){$(el).addEvent(action,function(){this.slideFx.setOptions(this.slideFx.options,{duration:this.options.rotateActionDuration});if(this.currentSlide!=idx){this.showSlide(idx)}this.stop()}.bind(this))},this)},createFx:function(){if(!this.slideFx){this.slideFx=new Fx.Elements(this.slides,{duration:this.options.transitionDuration})}this.slides.each(function(slide){slide.setStyle("opacity",0)})},showSlide:function(slideIndex){var action={};this.slides.each(function(slide,index){if(index==slideIndex&&index!=this.currentSlide){$(this.buttons[index]).swapClass(this.options.buttonOffClass,this.options.buttonOnClass);action[index.toString()]={opacity:1}}else{$(this.buttons[index]).swapClass(this.options.buttonOnClass,this.options.buttonOffClass);action[index.toString()]={opacity:0}}},this);this.fireEvent("onShowSlide",slideIndex);this.currentSlide=slideIndex;this.slideFx.start(action);return this},autoplay:function(){this.slideshowInt=this.rotate.periodical(this.options.slideInterval,this);this.fireEvent("onAutoPlay");return this},stop:function(){$clear(this.slideshowInt);this.fireEvent("onStop");return this},rotate:function(){var current=this.currentSlide;var next=(current+1>=this.slides.length)?0:current+1;this.showSlide(next);this.fireEvent("onRotate",next);return this}});var SimpleSlideShow=new Class({Implements:[Events,Options,Chain],options:{startIndex:0,slides:[],currentSlideClass:"currentSlide",currentIndexContainer:false,maxContainer:false,nextLink:false,prevLink:false,wrap:true,disabledLinkClass:"disabled",crossFadeOptions:{}},initialize:function(options){this.setOptions(options);this.slides=this.options.slides;this.makeSlides();this.setCounters();this.setUpNav();this.now=this.options.startIndex;if(this.slides.length>0){this.show(this.now)}},setCounters:function(){if($(this.options.currentIndexContainer)){$(this.options.currentIndexContainer).set("html",this.now+1)}if($(this.options.maxContainer)){$(this.options.maxContainer).set("html",this.slides.length)}},makeSlides:function(){this.slides.each(function(slide,index){if(index!=this.now){slide.setStyle("display","none")}else{slide.setStyle("display","block")}this.makeSlide(slide)},this)},makeSlide:function(slide){slide.addEvent("click",function(){this.fireEvent("onSlideClick")}.bind(this))},setUpNav:function(){if($(this.options.nextLink)){$(this.options.nextLink).addEvent("click",function(){this.forward()}.bind(this))}if($(this.options.prevLink)){$(this.options.prevLink).addEvent("click",function(){this.back()}.bind(this))}},forward:function(){var fireEvent=false;if($type(this.now)&&this.now<this.slides.length-1){fireEvent=this.show(this.now+1)}else{if($type(this.now)&&this.options.wrap){fireEvent=this.show(0)}else{if(!$type(this.now)){fireEvent=this.show(this.options.startIndex)}}}if(fireEvent){this.fireEvent("onNext")}if(this.now==this.slides.length&&!this.options.wrap&&$(this.options.nextLink)){$(this.options.nextLink).addClass(this.options.disabledLinkClass)}else{if($(this.options.nextLink)){$(this.options.nextLink).removeClass(this.options.disabledLinkClass)}}return this},back:function(){if(this.now>0){this.show(this.now-1);this.fireEvent("onPrev")}else{if(this.options.wrap&&this.slides.length>1){this.show(this.slides.length-1);this.fireEvent("onPrev")}}if(this.now==0&&!this.options.wrap&&$(this.options.prevSlide)){$(this.options.prevSlide).addClass(this.options.disabledLinkClass)}else{if($(this.options.prevSlide)){$(this.options.prevSlide).removeClass(this.options.disabledLinkClass)}}return this},show:function(index){if(this.showing){return this.chain(this.show.bind(this,index))}var now=this.now;var s=this.slides[index];function fadeIn(s,resetOpacity){s.setStyle("display","block");if(s.fxOpacityOk()){if(resetOpacity){s.setStyle("opacity",0)}s.set("tween",this.options.crossFadeOptions).get("tween").start("opacity",1).chain(function(){this.showing=false;this.callChain()}.bind(this))}}if(s){if($type(this.now)&&this.now!=index){if(s.fxOpacityOk()){var fx=this.slides[this.now].get("tween");fx.setOptions(this.options.crossFadeOptions);this.showing=true;fx.start("opacity",0).chain(function(){this.slides[now].setStyle("display","none");s.addClass(this.options.currentSlideClass);fadeIn.run([s,true],this)}.bind(this))}else{this.slides[this.now].setStyle("display","none");fadeIn.run(s,this)}}else{fadeIn.run(s,this)}this.now=index;this.setCounters()}},slideClick:function(){this.fireEvent("onSlideClick",[this.slides[this.now],this.now])}});var SimpleImageSlideShow=new Class({Extends:SimpleSlideShow,options:{imgUrls:[],imgClass:"screenshot",container:false},initialize:function(options){this.parent(options);this.options.imgUrls.each(function(url){this.addImg(url)},this);this.show(this.options.startIndex)},addImg:function(url){if($(this.options.container)){var img=new Element("img",{src:url,id:this.options.imgClass+this.slides.length}).addClass(this.options.imgClass).setStyle("display","none").inject($(this.options.container)).addEvent("click",this.slideClick.bind(this));this.slides.push(img);this.makeSlide(img);this.setCounters()}return this}});var TabSwapper=new Class({Implements:[Options,Events],options:{selectedClass:"tabSelected",mouseoverClass:"tabOver",deselectedClass:"",rearrangeDOM:true,initPanel:0,smooth:false,smoothSize:false,maxSize:null,effectOptions:{duration:500},cookieName:null,cookieDays:999},tabs:[],sections:[],clickers:[],sectionFx:[],initialize:function(options){this.setOptions(options);var prev=this.setup();if(prev){return prev}if(this.options.cookieName&&this.recall()){this.show(this.recall().toInt())}else{this.show(this.options.initPanel)}},setup:function(){var opt=this.options;sections=$$(opt.sections);tabs=$$(opt.tabs);if(tabs[0]&&tabs[0].retrieve("tabSwapper")){return tabs[0].retrieve("tabSwapper")}clickers=$$(opt.clickers);tabs.each(function(tab,index){this.addTab(tab,sections[index],clickers[index],index)},this)},addTab:function(tab,section,clicker,index){tab=$(tab);clicker=$(clicker);section=$(section);if(this.tabs.indexOf(tab)>=0&&tab.retrieve("tabbered")&&this.tabs.indexOf(tab)!=index&&this.options.rearrangeDOM){this.moveTab(this.tabs.indexOf(tab),index);return this}if(!$defined(index)){index=this.tabs.length}if(index>0&&this.tabs[index-1]&&this.options.rearrangeDOM){tab.inject(this.tabs[index-1],"after");section.inject(this.tabs[index-1].retrieve("section"),"after")}this.tabs.splice(index,0,tab);clicker=clicker||tab;tab.addEvents({mouseout:function(){tab.removeClass(this.options.mouseoverClass)}.bind(this),mouseover:function(){tab.addClass(this.options.mouseoverClass)}.bind(this)});clicker.addEvent("click",function(e){e.preventDefault();this.show(index)}.bind(this));tab.store("tabbered",true);tab.store("section",section);tab.store("clicker",clicker);this.hideSection(index);return this},removeTab:function(index){var now=this.tabs[this.now];if(this.now==index){if(index>0){this.show(index-1)}else{if(index<this.tabs.length){this.show(index+1)}}}this.now=this.tabs.indexOf(now);return this},moveTab:function(from,to){var tab=this.tabs[from];var clicker=tab.retrieve("clicker");var section=tab.retrieve("section");var toTab=this.tabs[to];var toClicker=toTab.retrieve("clicker");var toSection=toTab.retrieve("section");this.tabs.erase(tab).splice(to,0,tab);tab.inject(toTab,"before");clicker.inject(toClicker,"before");section.inject(toSection,"before");return this},show:function(i){if(!$chk(this.now)){this.tabs.each(function(tab,idx){if(i!=idx){this.hideSection(idx)}},this)}this.showSection(i).save(i);return this},save:function(index){if(this.options.cookieName){Cookie.write(this.options.cookieName,index,{duration:this.options.cookieDays})}return this},recall:function(){return(this.options.cookieName)?$pick(Cookie.read(this.options.cookieName),false):false},hideSection:function(idx){var tab=this.tabs[idx];if(!tab){return this}var sect=tab.retrieve("section");if(!sect){return this}if(sect.getStyle("display")!="none"){this.lastHeight=sect.getSize().y;sect.setStyle("display","none");tab.swapClass(this.options.selectedClass,this.options.deselectedClass);this.fireEvent("onBackground",[idx,sect,tab])}return this},showSection:function(idx){var tab=this.tabs[idx];if(!tab){return this}var sect=tab.retrieve("section");if(!sect){return this}var smoothOk=this.options.smooth&&(!Browser.Engine.trident4||(Browser.Engine.trident4&&sect.fxOpacityOk()));if(this.now!=idx){if(!tab.retrieve("tabFx")){tab.store("tabFx",new Fx.Morph(sect,this.options.effectOptions))}var start={display:"block",overflow:"hidden"};if(smoothOk){start.opacity=0}var effect=false;if(smoothOk){effect={opacity:1}}else{if(sect.getStyle("opacity").toInt()<1){sect.setStyle("opacity",1);if(!this.options.smoothSize){this.fireEvent("onActiveAfterFx",[idx,sect,tab])}}}if(this.options.smoothSize){var size=sect.getDimensions().height;if($chk(this.options.maxSize)&&this.options.maxSize<size){size=this.options.maxSize}if(!effect){effect={}}effect.height=size}if($chk(this.now)){this.hideSection(this.now)}if(this.options.smoothSize&&this.lastHeight){start.height=this.lastHeight}sect.setStyles(start);if(effect){tab.retrieve("tabFx").start(effect).chain(function(){this.fireEvent("onActiveAfterFx",[idx,sect,tab]);sect.setStyle("height","auto")}.bind(this))}this.now=idx;this.fireEvent("onActive",[idx,sect,tab])}tab.swapClass(this.options.deselectedClass,this.options.selectedClass);return this}});var Clipboard={swfLocation:"http://www.cnet.com/html/rb/assets/global/clipboard/_clipboard.swf",copyFromElement:function(element){element=$(element);if(!element){return null}if(Browser.Engine.trident){try{window.addEvent("domready",function(){var range=element.createTextRange();if(range){range.execCommand("Copy")}})}catch(e){dbug.log("cannot copy to clipboard: %s",o)}}else{var text=(element.getSelectedText)?element.getSelectedText():element.get("value");if(text){Clipboard.copy(text)}}return element},copy:function(text){if(Browser.Engine.trident){window.addEvent("domready",function(){var cb=new Element("textarea",{styles:{display:"none"}}).inject(document.body);cb.set("value",text).select();Clipboard.copyFromElement(cb);cb.dispose()})}else{var swf=($("flashcopier"))?$("flashcopier"):new Element("div",{id:"flashcopier"}).inject(document.body);swf.empty();swf.set("html",'<embed src="'+this.swfLocation+'" FlashVars="clipboard='+escape(text)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>')}}};var Confirmer=new Class({Implements:[Options,Events],options:{reposition:true,positionOptions:{relativeTo:false,position:"upperRight",offset:{x:-225,y:0},zIndex:9999},msg:"your changes have been saved",msgContainerSelector:".body",delay:250,pause:1000,effectOptions:{duration:500},prompterStyle:{padding:"2px 6px",border:"1px solid #9f0000",backgroundColor:"#f9d0d0",fontWeight:"bold",color:"#000",width:210}},initialize:function(options){this.setOptions(options);this.options.positionOptions.relativeTo=$(this.options.positionOptions.relativeTo)||document.body;this.prompter=($(this.options.msg))?$(this.options.msg):this.makePrompter(this.options.msg);if(this.options.reposition){this.prompter.setStyles({position:"absolute",display:"none",zIndex:this.options.positionOptions.zIndex});if(this.prompter.fxOpacityOk()){this.prompter.setStyle("opacity",0)}}else{if(this.prompter.fxOpacityOk()){this.prompter.setStyle("opacity",0)}else{this.prompter.setStyle("visibility","hidden")}}if(!this.prompter.getParent()){window.addEvent("domready",function(){this.prompter.inject(document.body)}.bind(this))}try{this.msgHolder=this.prompter.getElement(this.options.msgContainerSelector);if(!this.msgHolder){this.msgHolder=this.prompter}}catch(e){dbug.log(e)}},makePrompter:function(msg){return new Element("div").setStyles(this.options.prompterStyle).appendText(msg)},prompt:function(options){if(!this.paused){this.stop()}var msg=(options)?options.msg:false;options=$merge(this.options,{saveAsDefault:false},options||{});if($(options.msg)&&msg){this.msgHolder.empty().adopt(options.msg)}else{if(!$(options.msg)&&options.msg){this.msgHolder.empty().appendText(options.msg)}}if(!this.paused){if(options.reposition){this.position(options.positionOptions)}(function(){this.timer=this.fade(options.pause)}).delay(options.delay,this)}if(options.saveAsDefault){this.setOptions(options)}return this},fade:function(pause){this.paused=true;pause=$pick(pause,this.options.pause);if(!this.fx&&this.prompter.fxOpacityOk()){this.fx=new Fx.Tween(this.prompter,$merge({property:"opacity"},this.options.effectOptions))}if(this.options.reposition){this.prompter.setStyle("display","block")}if(this.prompter.fxOpacityOk()){this.prompter.setStyle("visibility","visible");this.fx.start(0,1).chain(function(){this.timer=(function(){this.fx.start(0).chain(function(){if(this.options.reposition){this.prompter.hide()}this.paused=false}.bind(this))}).delay(pause,this)}.bind(this))}else{this.prompter.setStyle("visibility","visible");this.timer=(function(){this.prompter.setStyle("visibility","hidden");this.fireEvent("onComplete");this.paused=false}).delay(pause+this.options.effectOptions.duration,this)}return this},stop:function(){this.paused=false;$clear(this.timer);if(this.fx){this.fx.set(0)}if(this.options.reposition){this.prompter.hide()}return this},position:function(positionOptions){this.prompter.setPosition($merge(this.options.positionOptions,positionOptions));return this}});var DatePicker=new Class({Implements:[Options,Events,StyleWriter],options:{format:"%x",defaultCss:'div.calendarHolder {height:177px;position: absolute;top: -21px !important;top: -27px;left: -3px;width: 100%;}div.calendarHolder table.cal {margin-right: 15px !important;margin-right: 8px;width: 205px;}div.calendarHolder td {text-align:center;}div.calendarHolder tr.dayRow td {padding: 2px;width: 22px;cursor: pointer;}div.calendarHolder table.datePicker * {font-size:11px;line-height:16px;}div.calendarHolder table.datePicker {margin: 0;padding:0 5px;float: left;}div.calendarHolder table.datePicker table.cal td {cursor:pointer;}div.calendarHolder tr.dateNav {font-weight: bold;height:22px;margin-top:8px;}div.calendarHolder tr.dayNames {height: 23px;}div.calendarHolder tr.dayNames td {color:#666;font-weight:700;border-bottom:1px solid #ddd;}div.calendarHolder table.datePicker tr.dayRow td:hover {background:#ccc;}div.calendarHolder table.datePicker tr.dayRow td {margin: 1px;}div.calendarHolder td.today {color:#bb0904;}div.calendarHolder td.otherMonthDate {border:1px solid #fff;color:#ccc;background:#f3f3f3 !important;margin: 0px !important;}div.calendarHolder td.selectedDate {border: 1px solid #20397b;background:#dcddef;margin: 0px !important;}div.calendarHolder a.leftScroll, div.calendarHolder a.rightScroll {cursor: pointer;}div.datePickerSW div.body {height: 160px !important;height: 149px;}div.datePickerSW .clearfix:after {content: ".";display: block;height: 0;clear: both;visibility: hidden;}div.datePickerSW .clearfix {display: inline-table;}* html div.datePickerSW .clearfix {height: 1%;}div.datePickerSW .clearfix {display: block;}',calendarId:false,stickyWinOptions:{draggable:true,dragOptions:{},position:"bottomLeft",offset:{x:10,y:10},fadeDuration:400},updateOnBlur:true,additionalShowLinks:[],showOnInputFocus:true,useDefaultCss:true,hideCalendarOnPick:true},initialize:function(input,options){if($(input)){this.inputs=$H({start:$(input)})}this.today=new Date();var StickyWinToUse=(typeof StickyWinFx=="undefined")?StickyWin:StickyWinFx;this.setOptions({stickyWinToUse:StickyWinToUse},options);this.whens=this.whens||["start"];if(!this.calendarId){this.calendarId="popupCalendar"+new Date().getTime()}if(this.options.useDefaultCss){this.createStyle(this.options.defaultCss,"datePickerStyle")}this.setUpObservers();this.getCalendar();this.formValidatorInterface()},formValidatorInterface:function(){this.inputs.each(function(input){var props;if(input.get("validatorProps")){try{props=JSON.decode(input.get("validatorProps"))}catch(e){}}if(props&&props.dateFormat){dbug.log("using date format specified in validatorProps property of element to play nice with FormValidator");this.setOptions({format:props.dateFormat})}else{if(!props){props={}}props.dateFormat=this.options.format;input.set("validatorProps",JSON.encode(props))}},this)},calWidth:260,inputDates:{},selectedDates:{},setUpObservers:function(){this.inputs.each(function(input){if(this.options.showOnInputFocus){input.addEvent("focus",this.show.bind(this))}input.addEvent("blur",function(e){if(e){this.selectedDates=this.getDates(null,true);this.fillCalendar(this.selectedDates.start);if(this.options.updateOnBlur){this.updateInput()}}}.bind(this))},this);this.options.additionalShowLinks.each(function(lnk){$(lnk).addEvent("click",this.show.bind(this))},this)},getDates:function(dates,getFromInputs){var d={};if(!getFromInputs){dates=dates||this.selectedDates}var getFromInput=function(when){var input=this.inputs.get(when);if(input){d[when]=this.validDate(input.get("value"))}}.bind(this);this.whens.each(function(when){switch($type(dates)){case"object":if(dates){d[when]=dates[when]?dates[when]:dates}if(!d[when]&&!d[when].format){getFromInput(when)}break;default:getFromInput(when);break}if(!d[when]){d[when]=this.selectedDates[when]||new Date()}},this);return d},updateInput:function(){var d={};$each(this.getDates(),function(value,key){var input=this.inputs.get(key);if(!input){return }input.set("value",(value)?this.formatDate(value)||"":"")},this);return this},validDate:function(val){if(!$chk(val)){return null}var date=Date.parse(val.trim());return isNaN(date)?null:date},formatDate:function(date){return date.format(this.options.format)},getCalendar:function(){if(!this.calendar){var cal=new Element("table",{id:this.options.calendarId,border:"0",cellpadding:"0",cellspacing:"0"}).addClass("datePicker");var tbody=new Element("tbody").inject(cal);var rows=[];(8).times(function(i){var row=new Element("tr").inject(tbody);(7).times(function(i){var td=new Element("td").inject(row).set("html","&nbsp;")})});var rows=tbody.getElements("tr");rows[0].addClass("dateNav");rows[1].addClass("dayNames");(6).times(function(i){rows[i+1].addClass("dayRow")});this.rows=rows;var dayCells=rows[1].getElements("td");dayCells.each(function(cell,i){cell.firstChild.data=Date.$days[i].substring(0,3)});[6,5,4,3].each(function(i){rows[0].getElements("td")[i].dispose()});this.prevLnk=rows[0].getElement("td").setStyle("text-align","right");if(!Browser.Engine.trident4){this.prevLnk.adopt(new Element("a").set("html",String.fromCharCode(9668)).addClass("rightScroll"))}else{this.prevLnk.adopt(new Element("a").set("html","&lt;").addClass("rightScroll"))}this.month=rows[0].getElements("td")[1];this.month.set("colspan",5);this.nextLnk=rows[0].getElements("td")[2].setStyle("text-align","left");if(!Browser.Engine.trident4){this.nextLnk.adopt(new Element("a").set("html",String.fromCharCode(9658)).addClass("leftScroll"))}else{this.nextLnk.adopt(new Element("a").set("html","&gt;").addClass("leftScroll"))}cal.addEvent("click",this.clickCalendar.bind(this));this.calendar=cal;this.container=new Element("div").adopt(cal).addClass("calendarHolder");this.content=StickyWin.ui("",this.container,{cornerHandle:this.options.stickyWinOptions.draggable,width:this.calWidth});var opts=$merge(this.options.stickyWinOptions,{content:this.content,className:"datePickerSW",allowMultipleByClass:true,showNow:false,relativeTo:this.inputs.get("start")});this.stickyWin=new this.options.stickyWinToUse(opts);var closer=this.content.getElement("div.closeButton");if(closer){closer.setStyle("z-index",this.stickyWin.win.getStyle("z-index").toInt()+2)}}return this.calendar},hide:function(){this.stickyWin.hide();this.fireEvent("onHide");return this},show:function(){this.selectedDates={};var dates=this.getDates(null,true);this.whens.each(function(when){this.inputDates[when]=dates[when]?dates[when].clone():dates.start?dates.start.clone():this.today;this.selectedDates[when]=!this.inputDates[when]||isNaN(this.inputDates[when])?this.today:this.inputDates[when].clone();this.getCalendar(when)},this);this.fillCalendar(this.selectedDates.start);this.stickyWin.show();this.fireEvent("onShow");return this},handleScroll:function(e){if(e.target.hasClass("rightScroll")||e.target.hasClass("leftScroll")){var newRef=e.target.hasClass("rightScroll")?this.rows[2].getElement("td").refDate-Date.$units.day():this.rows[7].getElements("td")[6].refDate+Date.$units.day();this.fillCalendar(new Date(newRef));return true}return false},setSelectedDates:function(e,newDate){this.selectedDates.start=newDate},onPick:function(){this.updateSelectors();this.inputs.each(function(input){input.fireEvent("change");input.fireEvent("blur")});this.fireEvent("onPick");if(this.options.hideCalendarOnPick){this.hide()}},clickCalendar:function(e){if(this.handleScroll(e)){return }if(!e.target.firstChild||!e.target.firstChild.data){return }var val=e.target.firstChild.data;if(e.target.refDate){var newDate=new Date(e.target.refDate);this.setSelectedDates(e,newDate);this.updateInput();this.onPick()}},fillCalendar:function(date){if($type(date)=="string"){date=new Date(date)}var startDate=(date)?new Date(date.getTime()):new Date();startDate.setDate(1);startDate.setTime(startDate.getTime()-(Date.$units.day()*startDate.getDay()));this.rows[0].getElements("td")[1].firstChild.data=Date.$months[date.getMonth()]+" "+date.getFullYear();var atDate=startDate.clone();this.rows.each(function(row,i){if(i<2){return }row.getElements("td").each(function(td){td.firstChild.data=atDate.getDate();td.refDate=atDate.getTime();atDate.setTime(atDate.getTime()+Date.$units.day())},this)},this);this.updateSelectors()},updateSelectors:function(){var atDate;var month=new Date(this.rows[5].getElement("td").refDate).getMonth();this.rows.each(function(row,i){if(i<2){return }row.getElements("td").each(function(td){td.className="";atDate=new Date(td.refDate);if(atDate.format("%x")==this.today.format("%x")){td.addClass("today")}this.whens.each(function(when){var date=this.selectedDates[when];if(date&&atDate.format("%x")==date.format("%x")){td.addClass("selectedDate");this.fireEvent("selectedDateMatch",[td,when])}},this);this.fireEvent("rowDateEvaluated",[atDate,td]);if(atDate.getMonth()!=month){td.addClass("otherMonthDate")}atDate.setTime(atDate.getTime()+Date.$units.day())},this)},this)}});DatePicker=new Class({Extends:DatePicker,options:{extraCSS:"a.finish {position: relative;height: 13px !important;top: -31px !important;left: 85px !important;top: -34px;left: 77px;height: 16px;display:block;float: left;padding: 1px 12px 3px !important;}div.calendarHolder div.time {border: #999 1px solid;width: 55px;position: relative;left: 3px;height: 17px;}div.calendarHolder td.timeTD {width: 140px;} div.calendarHolder td.label{width:35px; text-align:right}div.calendarHolder div.time select {font-size: 10px !important; font-size: 15px;padding: 0px;left:60px;position:absolute;top:-1px !important; width: auto !important;}div.calendarHolder div.time input {width: 16px !important;width: 12px;padding: 2px;height: 13px;border: none !important;border: 1px solid #fff;}div.calendarHolder div.timeSub {clear:both;position: relative;width: 65px;}div.calendarHolder div.timeSub span {text-align: center;color: #999;margin: 5px;}div.calendarHolder span.seperator {position:relative;top:-3px;}div.calendarHolder table.stamp {position:relative;top: 35px !important;top: 50px;left: 0px;}div.calendarHolder table.stamp a {left:123px;position:relative;top:9px;}div.calendarHolder table.stamp td {border: none !important;}div.calendarHolder td.selected_end {border-width: 1px 1px 1px 0px !important;margin: 0px 0px 0px 1px !important;}div.calendarHolder td.selected_start {border-width: 1px 0px 1px 1px !important;margin: 0px 1px 0px 0px !important;}div.calendarHolder table.datePicker td.range {background: #dcddef;border: solid #20397b;border-width: 1px 0px;margin: 0px 1px !important;}",range:false,time:false},initialize:function(inputs,options){if(options&&(options.range||options.time)){options=$merge({hideCalendarOnPick:false},options)}if(options.time&&!options.format){options.format="%x %X"}this.setOptions(options);this.whens=(this.options.range)?["start","end"]:["start"];if($type(inputs)=="object"){this.inputs=$H(inputs)}else{if($type($(inputs))=="element"){this.inputs=$H({start:$(inputs)})}else{if($type(inputs)=="array"){inputs=$$(inputs);this.inputs=$H({});this.whens.each(function(when,i){this.inputs.set(when,inputs[i])},this)}}}if(this.options.time){this.calWidth=460}this.parent(inputs,this.options);this.createStyle(this.options.extraCSS,"datePickerPlusStyle");this.addEvent("rowDateEvaluated",function(atDate,td){if(this.options.range&&this.selectedDates.start.diff(atDate,"minute")>0&&this.selectedDates.end.diff(atDate,"minute")<0){td.addClass("range")}}.bind(this));this.addEvent("selectedDateMatch",function(td,when){if(this.options.range){td.addClass("selected_"+when)}}.bind(this))},updateInput:function(){this.parent();if(this.options.time){this.updateView()}},updateView:function(){this.whens.each(function(when){var stamp=this.stamps[when];var date=this.getDates()[when];stamp.date.set("html",date?date.format("%b. %d, %Y"):"");if(stamp.hr){stamp.hr.set("value",date?date.format("%I"):"");stamp.min.set("value",date?date.format("%M"):"")}},this)},stamps:{},setupWideView:function(){var timeStampMap={hr:"%I",min:"%M"};timeSetMap={hr:"setHours",min:"setMinutes"};var dates=this.getDates();if(!this.options.range&&!this.options.time){return }this.stamps.table=new Element("table",{"class":"stamp"}).inject(this.container);this.stamps.tbody=new Element("tbody").inject(this.stamps.table);this.whens.each(function(when){this.stamps[when]={};var s=this.stamps[when];s.container=new Element("tr").addClass(when+"_stamp").inject(this.stamps.tbody);s.label=new Element("td").inject(s.container).addClass("label");if(this.whens.length==1){s.label.set("html","date:")}else{s.label.set("html",when=="start"?"from:":"to:")}s.date=new Element("td").inject(s.container);if(this.options.time){currentWhen=dates[when]||new Date();s.time=new Element("tr").inject(this.stamps.tbody);new Element("td").inject(s.time);s.timeTD=new Element("td").inject(s.time);s.timeInputs=new Element("div").addClass("time clearfix").inject(s.timeTD);s.timeSub=new Element("div",{"class":"timeSub"}).inject(s.timeTD);["hr","min"].each(function(t,i){s[t]=new Element("input",{type:"text","class":t,name:t,events:{focus:function(){this.select()},change:function(){this.selectedDates[when][timeSetMap[t]](s[t].get("value"));this.selectedDates[when].setAMPM(s.ampm.get("value"));this.updateInput()}.bind(this)}}).inject(s.timeInputs);s[t].set("value",currentWhen.format(timeStampMap[t]));if(i<1){s.timeInputs.adopt(new Element("span",{"class":"seperator"}).set("html",":"))}new Element("span",{"class":t}).set("html",t).inject(s.timeSub)},this);s.ampm=new Element("select").inject(s.timeInputs);["AM","PM"].each(function(ampm){var opt=new Element("option",{value:ampm,text:ampm.toLowerCase()}).set("html",ampm).inject(s.ampm);if(ampm==currentWhen.format("%p")){opt.selected=true}});s.ampm.addEvent("change",function(){var date=this.getDates()[when];var ampm=s.ampm.get("value");if(ampm!=date.format("%p")){date.setAMPM(ampm);this.updateInput()}}.bind(this))}},this);new Element("tr").inject(this.stamps.tbody).adopt(new Element("td",{colspan:2}).adopt(new Element("a",{"class":"closeSticky button",events:{click:function(){this.hide()}.bind(this)}}).set("html","Ok")))},show:function(){this.parent();if(this.options.time){if(!this.stamps.table){this.setupWideView()}this.updateView()}},startSet:false,onPick:function(){if((this.options.range&&this.selectedDates.start&&this.selectedDates.end)||!this.options.range){this.parent()}},setSelectedDates:function(e,newDate){if(this.options.range){if(this.selectedDates.start&&this.startSet){if(this.selectedDates.start.getTime()>newDate.getTime()){this.selectedDates.end=new Date(this.selectedDates.start);this.selectedDates.start=newDate}else{this.selectedDates.end=newDate}this.startSet=false}else{this.selectedDates.start=newDate;if(this.selectedDates.end&&this.selectedDates.start.getTime()>this.selectedDates.end.getTime()){this.selectedDates.end=new Date(newDate)}this.startSet=true}}else{this.parent(e,newDate)}if(this.options.time){this.whens.each(function(when){var hr=this.stamps[when].hr.get("value").toInt();if(this.stamps[when].ampm.get("value")=="PM"&&hr<12){hr+=12}this.selectedDates[when].setHours(hr);this.selectedDates[when].setMinutes(this.stamps[when]["min"].get("value")||"0");this.selectedDates[when].setAMPM(this.stamps[when].ampm.get("value")||"AM")},this)}}});var InputValidator=new Class({Implements:[Options],initialize:function(className,options){this.setOptions({errorMsg:"Validation failed.",test:function(field){return true}},options);this.className=className},test:function(field){if($(field)){return this.options.test($(field),this.getProps(field))}else{return false}},getError:function(field){var err=this.options.errorMsg;if($type(err)=="function"){err=err($(field),this.getProps(field))}return err},getProps:function(field){if($(field)&&$(field).get("validatorProps")){try{return JSON.decode($(field).get("validatorProps"))}catch(e){return{}}}else{return{}}}});var FormValidator=new Class({Implements:[Options,Events],options:{fieldSelectors:"input, select, textarea",useTitles:false,evaluateOnSubmit:true,evaluateFieldsOnBlur:true,evaluateFieldsOnChange:true,serial:true,warningPrefix:"Warning: ",errorPrefix:"Error: "},initialize:function(form,options){this.setOptions(options);this.form=$(form);this.form.store("validator",this);if(this.options.evaluateOnSubmit){this.form.addEvent("submit",this.onSubmit.bind(this))}if(this.options.evaluateFieldsOnBlur){this.watchFields()}},toElement:function(){return this.form},getFields:function(){return this.fields=this.form.getElements(this.options.fieldSelectors)},watchFields:function(){this.getFields().each(function(el){el.addEvent("blur",this.validateField.pass([el,false],this));if(this.options.evaluateFieldsOnChange){el.addEvent("change",this.validateField.pass([el,true],this))}},this)},onSubmit:function(event){if(!this.validate(event)&&event){event.stop()}else{this.stop();this.reset()}},reset:function(){this.getFields().each(this.resetField,this);return this},validate:function(event){var result=this.getFields().map(function(field){return this.validateField(field,true)},this);result=result.every(function(val){return val});this.fireEvent("onFormValidate",[result,this.form,event]);return result},validateField:function(field,force){if(this.paused){return true}field=$(field);var result=field.hasClass("validation-failed");var failed,warned;if(this.options.serial&&!force){failed=this.form.getElement(".validation-failed");warned=this.form.getElement(".warning")}if(field&&(!failed||force||field.hasClass("validation-failed")||(failed&&!this.options.serial))){var validators=field.className.split(" ").some(function(cn){return this.getValidator(cn)},this);result=field.className.split(" ").map(function(className){return this.test(className,field)},this).every(function(val){return val});if(validators&&!field.hasClass("warnOnly")){if(result){field.addClass("validation-passed").removeClass("validation-failed")}else{field.addClass("validation-failed").removeClass("validation-passed")}}if(!warned){var warnings=field.className.split(" ").some(function(cn){if(cn.test("^warn-")||field.hasClass("warnOnly")){return this.getValidator(cn.replace(/^warn-/,""))}else{return null}},this);field.removeClass("warning");var warnResult=field.className.split(" ").map(function(cn){if(cn.test("^warn-")||field.hasClass("warnOnly")){return this.test(cn.replace(/^warn-/,""),field,true)}else{return null}},this)}}return result},getPropName:function(className){return"__advice"+className},test:function(className,field,warn){field=$(field);if(field.hasClass("ignoreValidation")){return true}warn=$pick(warn,false);if(field.hasClass("warnOnly")){warn=true}var isValid=true;if(field){var validator=this.getValidator(className);if(validator&&this.isVisible(field)){isValid=validator.test(field);if(!isValid&&validator.getError(field)){if(warn){field.addClass("warning")}var advice=this.makeAdvice(className,field,validator.getError(field),warn);this.insertAdvice(advice,field);this.showAdvice(className,field)}else{this.hideAdvice(className,field)}this.fireEvent("onElementValidate",[isValid,field])}}if(warn){return true}return isValid},showAdvice:function(className,field){var advice=this.getAdvice(className,field);if(advice&&!field[this.getPropName(className)]&&(advice.getStyle("display")=="none"||advice.getStyle("visiblity")=="hidden"||advice.getStyle("opacity")==0)){field[this.getPropName(className)]=true;if(advice.reveal){advice.reveal()}else{advice.setStyle("display","block")}}},hideAdvice:function(className,field){var advice=this.getAdvice(className,field);if(advice&&field[this.getPropName(className)]){field[this.getPropName(className)]=false;if(advice.dissolve){advice.dissolve()}else{advice.setStyle("display","none")}}},isVisible:function(field){while(field!=document.body){if($(field).getStyle("display")=="none"){return false}field=field.getParent()}return true},getAdvice:function(className,field){return $("advice-"+className+"-"+this.getFieldId(field))},makeAdvice:function(className,field,error,warn){var errorMsg=(warn)?this.options.warningPrefix:this.options.errorPrefix;errorMsg+=(this.options.useTitles)?field.title||error:error;var advice=this.getAdvice(className,field);if(!advice){var cssClass=(warn)?"warning-advice":"validation-advice";advice=new Element("div",{text:errorMsg,styles:{display:"none"},id:"advice-"+className+"-"+this.getFieldId(field)}).addClass(cssClass)}else{advice.set("html",errorMsg)}return advice},insertAdvice:function(advice,field){switch(field.type.toLowerCase()){case"radio":var p=$(field.parentNode);if(p){p.adopt(advice);break}default:advice.inject($(field),"after")}},getFieldId:function(field){return field.id?field.id:field.id="input_"+field.name},resetField:function(field){field=$(field);if(field){var cn=field.className.split(" ");cn.each(function(className){if(className.test("^warn-")){className=className.replace(/^warn-/,"")}var prop=this.getPropName(className);if(field[prop]){this.hideAdvice(className,field)}field.removeClass("validation-failed");field.removeClass("warning");field.removeClass("validation-passed")},this)}return this},stop:function(){this.paused=true;return this},start:function(){this.paused=false;return this},ignoreField:function(field,warn){field=$(field);if(field){this.enforceField(field);if(warn){field.addClass("warnOnly")}else{field.addClass("ignoreValidation")}}return this},enforceField:function(field){field=$(field);if(field){field.removeClass("warnOnly").removeClass("ignoreValidation")}return this}});FormValidator.resources={enUS:{required:"This field is required.",minLength:"Please enter at least {minLength} characters (you entered {length} characters).",maxLength:"Please enter no more than {maxLength} characters (you entered {length} characters).",integer:"Please enter an integer in this field. Numbers with decimals (e.g. 1.25) are not permitted.",numeric:'Please enter only numeric values in this field (i.e. "1" or "1.1" or "-1" or "-1.1").',digits:"Please use numbers and punctuation only in this field (for example, a phone number with dashes or dots is permitted).",alpha:"Please use letters only (a-z) with in this field. No spaces or other characters are allowed.",alphanum:"Please use only letters (a-z) or numbers (0-9) only in this field. No spaces or other characters are allowed.",dateSuchAs:"Please enter a valid date such as {date}",dateInFormatMDY:'Please enter a valid date such as MM/DD/YYYY (i.e. "12/31/1999")',email:'Please enter a valid email address. For example "fred@domain.com".',url:"Please enter a valid URL such as http://www.google.com.",currencyDollar:"Please enter a valid $ amount. For example $100.00 .",oneRequired:"Please enter something for at least one of these inputs."}};FormValidator.language="enUS";FormValidator.getMsg=function(key,language){return FormValidator.resources[language||FormValidator.language][key]};FormValidator.adders={validators:{},add:function(className,options){this.validators[className]=new InputValidator(className,options);if(!this.initialize){this.implement({validators:this.validators})}},addAllThese:function(validators){$A(validators).each(function(validator){this.add(validator[0],validator[1])},this)},getValidator:function(className){return this.validators[className]}};$extend(FormValidator,FormValidator.adders);FormValidator.implement(FormValidator.adders);FormValidator.add("IsEmpty",{errorMsg:false,test:function(element){if(element.type=="select-one"||element.type=="select"){return !(element.selectedIndex>=0&&element.options[element.selectedIndex].value!="")}else{return((element.get("value")==null)||(element.get("value").length==0))}}});FormValidator.addAllThese([["required",{errorMsg:FormValidator.getMsg("required"),test:function(element){return !FormValidator.getValidator("IsEmpty").test(element)}}],["minLength",{errorMsg:function(element,props){if($type(props.minLength)){return FormValidator.getMsg("minLength").substitute({minLength:props.minLength,length:element.get("value").length})}else{return""}},test:function(element,props){if($type(props.minLength)){return(element.get("value").length>=$pick(props.minLength,0))}else{return true}}}],["maxLength",{errorMsg:function(element,props){if($type(props.maxLength)){return FormValidator.getMsg("maxLength").substitute({maxLength:props.maxLength,length:element.get("value").length})}else{return""}},test:function(element,props){return(element.get("value").length<=$pick(props.maxLength,10000))}}],["validate-integer",{errorMsg:FormValidator.getMsg("integer"),test:function(element){return FormValidator.getValidator("IsEmpty").test(element)||/^-?[1-9]\d*$/.test(element.get("value"))}}],["validate-numeric",{errorMsg:FormValidator.getMsg("numeric"),test:function(element){return FormValidator.getValidator("IsEmpty").test(element)||/^-?(?:0$0(?=\d*\.)|[1-9]|0)\d*(\.\d+)?$/.test(element.get("value"))}}],["validate-digits",{errorMsg:FormValidator.getMsg("digits"),test:function(element){return FormValidator.getValidator("IsEmpty").test(element)||(/^[\d() .:\-\+#]+$/.test(element.get("value")))}}],["validate-alpha",{errorMsg:FormValidator.getMsg("alpha"),test:function(element){return FormValidator.getValidator("IsEmpty").test(element)||/^[a-zA-Z]+$/.test(element.get("value"))}}],["validate-alphanum",{errorMsg:FormValidator.getMsg("alphanum"),test:function(element){return FormValidator.getValidator("IsEmpty").test(element)||!/\W/.test(element.get("value"))}}],["validate-date",{errorMsg:function(element,props){if(Date.parse){var format=props.dateFormat||"%x";return FormValidator.getMsg("dateSuchAs").substitute({date:new Date().format(format)})}else{return FormValidator.getMsg("dateInFormatMDY")}},test:function(element,props){if(FormValidator.getValidator("IsEmpty").test(element)){return true}if(Date.parse){var format=props.dateFormat||"%x";var d=Date.parse(element.get("value"));var formatted=d.format(format);if(formatted!="invalid date"){element.set("value",formatted)}return !isNaN(d)}else{var regex=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!regex.test(element.get("value"))){return false}var d=new Date(element.get("value").replace(regex,"$1/$2/$3"));return(parseInt(RegExp.$1,10)==(1+d.getMonth()))&&(parseInt(RegExp.$2,10)==d.getDate())&&(parseInt(RegExp.$3,10)==d.getFullYear())}}}],["validate-email",{errorMsg:FormValidator.getMsg("email"),test:function(element){return FormValidator.getValidator("IsEmpty").test(element)||/^[^@]+@([a-zA-Z\-]+\.)+[a-zA-Z]{2,}$/.test(element.get("value"))}}],["validate-url",{errorMsg:FormValidator.getMsg("url"),test:function(element){return FormValidator.getValidator("IsEmpty").test(element)||/^(https?|ftp|rmtp|mms):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(element.get("value"))}}],["validate-currency-dollar",{errorMsg:FormValidator.getMsg("currencyDollar"),test:function(element){return FormValidator.getValidator("IsEmpty").test(element)||/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(element.get("value"))}}],["validate-one-required",{errorMsg:FormValidator.getMsg("oneRequired"),test:function(element){var p=element.parentNode;return p.getElements("input").some(function(el){if(["checkbox","radio"].contains(el.get("type"))){return el.get("checked")}return el.get("value")})}}]]);var OverText=new Class({Implements:[Options,Events],options:{positionOptions:{position:"upperLeft",edge:"upperLeft",offset:{x:4,y:2}},poll:false,pollInterval:250},overTxtEls:[],initialize:function(inputs,options){this.setOptions(options);$$(inputs).each(this.addElement,this);OverText.instances.push(this);if(this.options.poll){this.poll()}},addElement:function(el){if(this.overTxtEls.contains(el)||el.retrieve("overtext")){return }var val=this.options.textOverride||el.get("alt")||el.get("title");if(!val){return }this.overTxtEls.push(el);var txt=new Element("div",{"class":"overTxtDiv",html:val,events:{click:this.hideTxt.pass([el,true],this)}}).inject(el,"after");el.addEvents({focus:this.hideTxt.pass([el,true],this),blur:this.testOverTxt.pass(el,this),change:this.testOverTxt.pass(el,this)}).store("overtext",txt);window.addEvent("resize",this.repositionAll.bind(this));this.testOverTxt(el);this.repositionOverTxt(el)},startPolling:function(){this.pollingPaused=false;return this.poll()},poll:function(stop){if(this.poller&&!stop){return this}var test=function(){if(this.pollingPaused==true){return }this.overTxtEls.each(function(el){if(el.retrieve("ot_paused")){return }this.testOverTxt(el)},this)}.bind(this);if(stop){$clear(this.poller)}else{this.poller=test.periodical(this.options.pollInterval,this)}return this},stopPolling:function(){this.pollingPaused=true;return this.poll(true)},hideTxt:function(el,focus){var txt=el.retrieve("overtext");if(txt&&txt.isVisible()&&!el.get("disabled")){txt.hide();try{if(focus){el.fireEvent("focus").focus()}}catch(e){}this.fireEvent("onTextHide",[txt,el]);el.store("ot_paused",true)}return this},showTxt:function(el){var txt=el.retrieve("overtext");if(txt&&!txt.isVisible()){txt.show();this.fireEvent("onTextShow",[txt,el]);el.store("ot_paused",false)}return this},testOverTxt:function(el){if(el.get("value")){this.hideTxt(el)}else{this.showTxt(el)}},repositionAll:function(){this.overTxtEls.each(this.repositionOverTxt.bind(this));return this},repositionOverTxt:function(el){if(!el){return }try{var txt=el.retrieve("overtext");if(!txt||!el.getParent()){return }this.testOverTxt(el);txt.setPosition($merge(this.options.positionOptions,{relativeTo:el}));if(el.offsetHeight){this.testOverTxt(el)}else{this.hideTxt(el)}}catch(e){dbug.log("overTxt error: ",e)}return this}});OverText.instances=[];OverText.update=function(){return OverText.instances.map(function(ot){return ot.repositionAll()})};var Picklet=new Class({Implements:[Options,Events],inputElements:{},initialize:function(className,options){this.setOptions(options);this.className=className;this.getQuery=this.options.getQuery}});var ProductPicker=new Class({Implements:[Options,Events,StyleWriter],options:{title:"Product picker",showOnFocus:true,additionalShowLinks:[],stickyWinToUse:StickyWinFx,stickyWinOptions:{fadeDuration:200,draggable:true},moveIntoView:true,baseHref:"http://www.cnet.com/html/rb/assets/global/Picker",css:"div.productPickerProductDiv div.results { overflow: 'auto'; width: 100%; margin-top: 4px }div.productPickerProductDiv select { margin: 4px 0px 4px 0px}div.pickerPreview div.sliderContent img {border: 1px solid #000}div.pickerPreview div.sliderContent a {color: #0d63a0}div.productPickerProductDiv * {color: #000}.tool-tip { color: #fff; width: 172px; z-index: 13000; }.tool-title { font: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; font-size: 11px; margin: 0; padding: 8px 8px 4px; background: url(%tipsArt%/bubble.png) top left !important; background: url(%tipsArt%/bubble.gif) top left; }.tool-text {font-size: 11px; margin: 0px; padding: 4px 8px 8px; background: url(%tipsArt%/bubble.png) bottom right !important; background: url(%tipsArt%/bubble.gif) bottom right; }"},initialize:function(input,picklets,options){this.setOptions(options);this.input=$(input);this.picklets=picklets;this.setUpObservers();this.writeCss()},writeCss:function(){var art=this.options.baseHref;var tipsArt=art.replace("Picker","tips");this.createStyle(this.options.css.replace("%tipsArt%",tipsArt,"g"),"pickerStyles")},getPickletList:function(){if(this.picklets.length>1){var selector=new Element("select").setStyle("width",399);this.picklets.each(function(picklet,index){var opt=new Element("option").set("value",index);opt.text=picklet.options.descriptiveName;selector.adopt(opt)},this);selector.addEvent("change",function(){this.showForm(this.picklets[selector.getSelected()[0].get("value")]);this.focusInput(true)}.bind(this));return selector}else{return false}},buildPicker:function(picklet){var contents=new Element("div");this.formBody=new Element("div");this.pickletList=this.getPickletList();if(this.pickletList){contents.adopt(this.pickletList)}contents.adopt(this.formBody);var body=StickyWin.ui(this.options.title,contents,{width:450,closeTxt:"close"}).addClass("productPickerProductDiv");this.showForm();return body},showForm:function(picklet){this.form=this.makeSearchForm(picklet||this.picklets[0]);this.formBody.empty().adopt(this.form);(picklet||this.picklets[0]).fireEvent("onShow");this.results=new Element("div").addClass("results");this.formBody.adopt(this.results);this.sliderFx=null;this.fireEvent("onShow")},makeSlider:function(){var png=(Browser.Engine.trident)?"gif":"png";this.slider=new Element("div",{styles:{background:"url("+this.options.baseHref+"/slider."+png+") top right no-repeat",display:"none",height:250,left:439,position:"absolute",top:25,width:0,overflow:"hidden"}}).addClass("pickerPreview").inject(this.swin.win).addEvents({mouseover:function(){this.previewHover=true}.bind(this),mouseout:function(){this.previewHover=false;(function(){if(!this.previewHover){this.hidePreview()}}).delay(400,this)}.bind(this)});this.sliderContent=new Element("div",{styles:{width:130,height:200,padding:10,margin:"10px 10px 0px 0px",overflow:"auto",cssFloat:"right"}}).inject(this.slider).addClass("sliderContent")},makeSearchForm:function(picklet){this.currentPicklet=picklet;var formTable=new Element("table",{styles:{width:"100%",cellpadding:"0",cellspacing:"0"}});var tBody=new Element("tbody").inject(formTable);var form=new Element("form").addEvent("submit",function(e){this.getResults(e.target,picklet)}.bind(this)).adopt(formTable).set("action","javascript:void(0);");$each(picklet.options.inputs,function(val,name){var ins=this.getSearchInputTr(val,name);tBody.adopt(ins.holder);picklet.inputElements[name]=ins.input},this);return form},getSearchInputTr:function(val,name){try{var style=($type(val.style))?val.style:{};var input=(Browser.Engine.trident)?new Element("<"+val.tagName+' name="'+name+'" />'):new Element(val.tagName,{name:name});input.setStyles(style);if(val.type){input.set("type",val.type)}if(val.tip&&Tips){input.set("title",val.tip);new Tips([input],{onShow:function(tip){this.shown=true;(function(){if(!this.shown){return }$(tip).setStyles({display:"block",opacity:0});new Fx.Tween(tip,{property:"opacity",duration:300}).start(0,0.9)}).delay(500,this)},onHide:function(tip){tip.setStyle("visibility","hidden");this.shown=false}})}if(val.tagName=="select"){val.value.each(function(option,index){var opt=new Element("option",{value:option});opt.text=(val.optionNames&&val.optionNames[index])?$pick(val.optionNames[index],option):option;input.adopt(opt)})}else{input.set("value",$pick(val.value,""))}var holder=new Element("tr");var colspan=0;if(val.instructions){holder.adopt(new Element("td").set("html",val.instructions))}else{colspan=2}var inputTD=new Element("td").adopt(input);if(colspan){inputTD.set("colspan",colspan)}holder.adopt(inputTD);return{holder:holder,input:input}}catch(e){dbug.log(e);return false}},getResults:function(form,picklet){if(form.get("tag")!="form"){form=$$("form").filter(function(fm){return fm.hasChild(form)})[0]}if(!form){dbug.log("error computing form");return null}var query=picklet.getQuery(unescape(form.toQueryString()).parseQuery());query.addEvent("onComplete",this.showResults.bind(this));query.request();return this},showResults:function(data){var empty=false;if(this.results.innerHTML==""){empty=true;this.results.setStyles({height:0,border:"1px solid #666",padding:0,overflow:"auto",opacity:0})}else{this.results.empty()}this.items=this.currentPicklet.options.resultsList(data);if(this.items&&this.items.length>0){this.items.each(function(item,index){var name=this.currentPicklet.options.listItemName(item);var value=this.currentPicklet.options.listItemValue(item);this.results.adopt(this.makeProductListEntry(name,value,index))},this)}else{this.results.set("html","Sorry, there don't seem to be any items for that search")}this.results.morph({height:200,opacity:1});this.listStyles();this.getOnScreen.delay(500,this)},getOnScreen:function(){if(document.compatMode=="BackCompat"){return }var s=this.swin.win.getCoordinates();if(s.top<window.getScroll().y){this.swin.win.tween("top",window.getScroll().y+50);return }if(s.top+s.height>window.getScroll().y+window.getSize().y&&window.getSize().y>s.height){this.swin.win.tween("top",window.getScroll().y+window.getSize().y-s.height-100);return }try{this.swin.shim.show.delay(500,this.swin.shim)}catch(e){}return },listStyles:function(){var defaultStyle={cursor:"pointer",borderBottom:"1px solid #ddd",padding:"2px 8px 2px 8px",backgroundColor:"#fff",color:"#000",fontWeight:"normal"};var hoverStyle={backgroundColor:"#fcfbd1",color:"#d56a00"};var selectedStyle=$extend(defaultStyle,{color:"#D00000",fontWeight:"bold",backgroundColor:"#eee"});this.results.getElements("div.productPickerProductDiv").each(function(p){var useStyle=(this.input.value.toInt()==p.get("val").toInt())?selectedStyle:defaultStyle;p.setStyles(useStyle);if(!Browser.Engine.trident){p.addEvent("mouseover",function(){p.setStyles(hoverStyle)}.bind(this));p.addEvent("mouseout",function(){p.setStyles(useStyle)})}},this)},makeProductListEntry:function(name,value,index){var pDiv=new Element("div").addClass("productPickerProductDiv").adopt(new Element("div").set("html",name)).set("val",value);pDiv.addEvent("mouseenter",function(e){this.preview=true;this.sliderContent.empty();var content=this.getPreview(index);if($type(content)=="string"){this.sliderContent.set("html",content)}else{if($(content)){this.sliderContent.adopt(content)}}this.showPreview.delay(200,this)}.bind(this));pDiv.addEvent("mouseleave",function(e){this.preview=false;(function(){if(!this.previewHover){this.hidePreview()}}).delay(400,this)}.bind(this));pDiv.addEvent("click",function(){this.currentPicklet.options.updateInput(this.input,this.items[index]);this.fireEvent("onPick",[this.input,this.items[index],this]);this.hide();this.listStyles.delay(200,this)}.bind(this));return pDiv},makeStickyWin:function(){if(document.compatMode=="BackCompat"){this.options.stickyWinOptions.relativeTo=this.input}this.swin=new this.options.stickyWinToUse($merge(this.options.stickyWinOptions,{draggable:true,content:this.buildPicker()}))},focusInput:function(force){if((!this.focused||$pick(force,false))&&this.form.getElement("input")){this.focused=true;try{this.form.getElement("input").focus()}catch(e){}}},show:function(){if(!this.swin){this.makeStickyWin()}if(!this.slider){this.makeSlider()}if(!this.swin.visible){this.swin.show()}this.focusInput();return this},hide:function(){$$(".tool-tip").hide();this.swin.hide();this.focused=false;return this},setUpObservers:function(){try{if(this.options.showOnFocus){this.input.addEvent("focus",this.show.bind(this))}if(this.options.additionalShowLinks.length>0){this.options.additionalShowLinks.each(function(lnk){$(lnk).addEvent("click",this.show.bind(this))},this)}}catch(e){dbug.log(e)}},showPreview:function(index){width=this.currentPicklet.options.previewWidth||150;this.sliderContent.setStyle("width",(width-30));if(!this.sliderFx){this.sliderFx=new Fx.Elements([this.slider,this.swin.win])}this.sliderFx.clearChain();this.sliderFx.setOptions({duration:1000,transition:"elastic:out"});if(this.preview&&this.slider.getStyle("width").toInt()<width-5){this.slider.show("block");this.sliderFx.start({"0":{width:width},"1":{width:width+450}})}},hidePreview:function(){if(!this.preview){this.sliderFx.setOptions({duration:250,transition:"back:in"});this.sliderFx.clearChain();this.sliderFx.start({"0":{width:[this.slider.getStyle("width").toInt(),0]},"1":{width:[this.swin.win.getStyle("width").toInt(),450]}}).chain(function(){this.slider.hide()}.bind(this))}},getPreview:function(index){return this.currentPicklet.options.previewHtml(this.items[index])}});$extend(ProductPicker,{picklets:[],add:function(picklet){if(!picklet.className){dbug.log("error: cannot add Picklet %o; missing className: %s",picklet,picklet.className);return }this.picklets[picklet.className]=picklet},addAllThese:function(picklets){picklets.each(function(picklet){this.add(picklet)},this)},getPicklet:function(className){return ProductPicker.picklets[className]||false}});var FormPickers=new Class({Implements:[Options],options:{inputs:"input",additionalShowLinkClass:"openPicker",pickletOptions:{}},initialize:function(form,options){this.setOptions(options);this.form=$(form);this.inputs=this.form.getElements(this.options.inputs);this.setUpInputs()},setUpInputs:function(inputs){inputs=$pick(inputs,this.inputs);inputs.each(this.addPickers.bind(this))},addPickers:function(input){var picklets=[];input.className.split(" ").each(function(clss){if(ProductPicker.getPicklet(clss)){picklets.push(ProductPicker.getPicklet(clss))}},this);if(input.getNext()&&input.getNext().hasClass(this.options.additionalShowLinkClass)){this.options.pickletOptions.additionalShowLinks=[input.getNext()]}if(picklets.length>0){new ProductPicker(input,picklets,this.options.pickletOptions)}}});var SimpleEditor=new Class({initialize:function(input,buttons,commands){this.commands=new Hash($extend(SimpleEditor.commands,commands||{}));this.input=$(input);this.buttons=$$(buttons);this.buttons.each(function(button){button.addEvent("click",function(){this.exec(button.get("rel"))}.bind(this))}.bind(this));this.input.addEvent("keydown",function(e){if(e.control||e.meta){var key=this.shortCutToKey(e.key);if(key){e.stop();this.exec(key)}}}.bind(this));this.input.store("editor",this)},toElement:function(){return this.input},shortCutToKey:function(shortcut){var returnKey=false;this.commands.each(function(value,key){if(value.shortcut==shortcut){returnKey=key}});return returnKey},addCommand:function(key,command,shortcut){this.commands.set(key,{command:command,shortcut:shortcut})},addCommands:function(commands){this.commands.extend(commands)},exec:function(key){var currentScrollPos;if(this.input.scrollTop||this.input.scrollLeft){currentScrollPos={scrollTop:this.input.getScroll().y,scrollLeft:this.input.getScroll().x}}if(this.commands.has(key)){this.commands.get(key).command(this.input)}if(currentScrollPos){this.input.set("scrollTop",currentScrollPos.getScroll().y);this.input.set("scrollLeft",currentScrollPos.getScroll().x)}}});$extend(SimpleEditor,{commands:{},addCommand:function(key,command,shortcut){SimpleEditor.commands[key]={command:command,shortcut:shortcut}},addCommands:function(commands){$extend(SimpleEditor.commands,commands)}});SimpleEditor.addCommands({bold:{shortcut:"b",command:function(input){input.insertAroundCursor({before:"<b>",after:"</b>"})}},underline:{shortcut:"u",command:function(input){input.insertAroundCursor({before:"<u>",after:"</u>"})}},anchor:{shortcut:"l",command:function(input){function simpleLinker(){if(window.TagMaker){if(!this.linkBuilder){this.linkBuilder=new TagMaker.anchor()}this.linkBuilder.prompt(input)}else{var href=window.prompt("The URL for the link");var opts={before:'<a href="'+href+'">',after:"</a>"};if(!input.getSelectedText()){opts.defaultMiddle=window.prompt("The link text")}input.insertAroundCursor(opts)}}try{if(Trinket){if(!this.linkBulder){var lb=Trinket.available.filter(function(trinket){return trinket.name=="Link Builder"});this.linkBuilder=(lb.length)?lb[0]:new Trinket.LinkBuilder({context:"default"});this.linkBuilder.clickPrompt(input)}}else{simpleLinker()}}catch(e){simpleLinker()}}},copy:{shortcut:false,command:function(input){if(Clipboard){Clipboard.copyFromElement(input)}else{simpleErrorPopup("Woops","Sorry, this function doesn't work here; use ctrl+c.")}input.focus()}},cut:{shortcut:false,command:function(input){if(Clipboard){Clipboard.copyFromElement(input);input.insertAtCursor("")}else{simpleErrorPopup("Woops","Sorry, this function doesn't work here; use ctrl+x.")}}},hr:{shortcut:"-",command:function(input){input.insertAtCursor("\n<hr/>\n")}},img:{shortcut:"g",command:function(input){if(window.TagMaker){if(!this.anchorBuilder){this.anchorBuilder=new TagMaker.image()}this.anchorBuilder.prompt(input)}else{input.insertAtCursor('<img src="'+window.prompt("The url to the image")+'" />')}}},stripTags:{shortcut:"\\",command:function(input){input.insertAtCursor(input.getSelectedText().stripTags())}},sup:{shortcut:false,command:function(input){input.insertAroundCursor({before:"<sup>",after:"</sup>"})}},sub:{shortcut:false,command:function(input){input.insertAroundCursor({before:"<sub>",after:"</sub>"})}},paragraph:{shortcut:"enter",command:function(input){input.insertAroundCursor({before:"\n<p>\n",after:"\n</p>\n"})}},strike:{shortcut:"k",command:function(input){input.insertAroundCursor({before:"<strike>",after:"</strike>"})}},italics:{shortcut:"i",command:function(input){input.insertAroundCursor({before:"<i>",after:"</i>"})}},bullets:{shortcut:"8",command:function(input){input.insertAroundCursor({before:"<ul>\n	<li>",after:"</li>\n</ul>"})}},numberList:{shortcut:"=",command:function(input){input.insertAroundCursor({before:"<ol>\n	<li>",after:"</li>\n</ol>"})}},clean:{shortcut:false,command:function(input){input.tidy()}},preview:{shortcut:false,command:function(input){try{if(!this.container){this.container=new Element("div",{styles:{border:"1px solid black",padding:8,height:300,overflow:"auto"}});this.preview=new StickyWinModal({content:StickyWin.ui("preview",this.container,{width:600,buttons:[{text:"close",onClick:function(){this.container.empty()}.bind(this)}]}),showNow:false})}this.container.set("html",input.get("value"));this.preview.show()}catch(e){dbug.log("you need StickyWinModal and StickyWin.ui")}}}});var TagMaker=new Class({Implements:[Options,Events,StyleWriter],options:{name:"Tag Builder",output:"",picklets:{},help:{},example:{},"class":{},selectLists:{},width:400,maxHeight:500,clearOnPrompt:true,baseHref:"http://www.cnet.com/html/rb/assets/global/tips",css:"table.trinket {	width: 98%;	margin: 0px auto;	font-size: 10px; }table.trinket td {	vertical-align: top;	padding: 4px;}table.trinket td a.button {	position: relative;	top: -2px;}table.trinket td.example {	font-size: 9px;	color: #666;	text-align: right;	border-bottom: 1px solid #ddd;padding-bottom: 6px;}table.trinket div.validation-advice {	background-color: #a36565;	font-weight: bold;	color: #fff;	padding: 4px;margin-top: 3px;}table.trinket input.text {width: 100%;}.tagMakerTipElement { 	cursor: help; }.tagMaker .tip {	color: #fff;	width: 172px;	z-index: 13000; }.tagMaker .tip-title {	font-weight: bold;	font-size: 11px;	margin: 0;	padding: 8px 8px 4px;background: url(%baseHref%/bubble.png) top left;}.tagMaker .tip-text { font-size: 11px; 	padding: 4px 8px 8px; background: url(%baseHref%/bubble.png) bottom right; }.tagMaker { z-index:10001 }"},initialize:function(options){this.setOptions(options);this.buttons=[{text:"Copy",onClick:this.copyToClipboard.bind(this),properties:{"class":"closeSticky tip",title:"Copy::Copy the html to your OS clipboard (like hitting Ctrl+C)"}},{text:"Paste",onClick:function(){if(this.validator.validate()){this.insert()}}.bind(this),properties:{"class":"tip",title:"Paste::Insert the html into the field you are editing"}},{text:"Close",properties:{"class":"closeSticky tip",title:"Close::Close this popup"}}];this.createStyle(this.options.css.replace("%baseHref%",this.options.baseHref,"g"),"defaultTagBuilderStyle")},prompt:function(target){this.target=$(target);var content=this.getContent();if(this.options.clearOnPrompt){this.clear()}if(content){var relativeTo=(document.compatMode=="BackCompat"&&this.target)?this.target:document.body;if(!this.win){this.win=new StickyWinFx({content:content,draggable:true,relativeTo:relativeTo,onClose:function(){$$(".tagMaker-tip").hide()}})}if(!this.win.visible){this.win.show()}}var innerText=this.getInnerTextInput();this.range=target.getSelectedRange();if(innerText){innerText.set("value",target.getTextInRange(this.range.start,this.range.end)||"")}return this.fireEvent("onPrompt")},clear:function(){this.body.getElements("input").each(function(input){input.erase("value")})},getKeys:function(text){return text.split("%").filter(function(inputKey,index){return index%2})},getInnerTextInput:function(){return this.body.getElement("input[name=Inner-Text]")},getContent:function(){var opt=this.options;if(!this.form){this.form=new Element("form");var table=new HtmlTable({properties:{"class":"trinket"}});this.getKeys(opt.output).each(function(inputKey){if(this.options.selectLists[inputKey]){var input=new Element("select").setProperties({name:inputKey.replace(" ","-","g")}).addEvent("change",this.createOutput.bind(this));this.options.selectLists[inputKey].each(function(opt){var option=new Element("option").inject(input);if(opt.selected){option.set("selected",true)}option.set("value",opt.value);option.set("text",opt.key)},this);table.push([inputKey,input])}else{var input=new Element("input",{type:"text",name:inputKey.replace(/ /g,"-"),title:inputKey+"::"+opt.help[inputKey],"class":"text tip "+((opt["class"])?opt["class"][inputKey]||"":""),events:{keyup:this.createOutput.bind(this),focus:function(){this.select()},change:this.createOutput.bind(this)}});if(opt.picklets[inputKey]){var a=new Element("a").addClass("button").set("html","choose");var div=new Element("div").adopt(input.setStyle("width",160)).adopt(a);var picklets=($type(opt.picklets[inputKey])=="array")?opt.picklets[inputKey]:[opt.picklets[inputKey]];new ProductPicker(input,picklets,{showOnFocus:false,additionalShowLinks:[a],onPick:function(input,data,picker){try{var ltInput=this.getInnerTextInput();if(ltInput&&!ltInput.get("value")){try{ltInput.set("value",picker.currentPicklet.options.listItemName(data))}catch(e){dbug.log("set value error: ",e)}}var val=input.value;if(inputKey=="Full Path"&&val.test(/^http:/)){input.set("value",val.substring(val.indexOf("/",7),val.length))}this.createOutput()}catch(e){dbug.log(e)}}.bind(this)});table.push([inputKey,div])}else{table.push([inputKey,input])}}if(this.options.example[inputKey]){table.push([{content:"eg. "+this.options.example[inputKey],properties:{colspan:2,"class":"example"}}])}},this);this.resultInput=new Element("input",{type:"text",title:"HTML::This is the resulting tag html.","class":"text result tip"}).addEvent("focus",function(){this.select()});table.push(["HTML",this.resultInput]).tr;this.form=table.table;this.body=new Element("div",{styles:{overflow:"auto",maxHeight:this.options.maxHeight}}).adopt(this.form);this.validator=new FormValidator(this.form);this.validator.insertAdvice=function(advice,field){var p=$(field.parentNode);if(p){p.adopt(advice)}}}if(!this.content){this.content=StickyWin.ui(this.options.name,this.body,{buttons:this.buttons,width:this.options.width.toInt()});new Tips(this.content.getElements(".tip"),{showDelay:700,maxTitleChars:50,maxOpacity:0.9,className:"tagMaker"})}return this.content},createOutput:function(){var inputs=this.form.getElements("input, select");var html=this.options.output;inputs.each(function(input){if(!input.hasClass("result")){html=html.replace(new RegExp("%"+input.get("name").replace("-"," ","g").toLowerCase()+"%","ig"),(input.get("tag")=="select"?input.getSelected()[0]:input).get("value"));html=html.replace(/\s\w+\=""/g,"")}});return this.resultInput.value=html},copyToClipboard:function(){var inputs=this.form.getElements("input");var result=inputs[inputs.length-1];result.select();Clipboard.copyFromElement(result);$$(".tagMaker-tip").hide();this.win.hide();this.fireEvent("onChoose")},insert:function(){if(!this.target){simpleErrorPopup("Cannot Paste","This tag builder was not launched with a target input specified; you'll have to copy the tag yourself. Sorry!");return }var value=(this.target)?this.target.value:this.target;var output=this.body.getElement("input.result");var currentScrollPos;if(this.target.scrollTop||this.target.scrollLeft){currentScrollPos={scrollTop:this.target.getScroll().y,scrollLeft:this.target.getScroll().x}}this.target.value=value.substring(0,this.range.start)+output.value+value.substring((this.range.end-this.range.start)+this.range.start,value.length);if(currentScrollPos){this.target.scrollTop=currentScrollPos.getScroll().y;this.target.scrollLeft=currentScrollPos.getScroll().x}this.target.selectRange(this.range.start,output.value.length+this.range.start);this.fireEvent("onChoose");$$(".tagMaker-tip").hide();this.win.hide();return }});TagMaker.image=new Class({Extends:TagMaker,options:{name:"Image Builder",output:'<img src="%Full Url%" width="%Width%" height="%Height%" alt="%Alt Text%" style="%Alignment%"/>',help:{"Full Url":"Enter the external URL (http://...) to the image",Width:"Enter the width in pixels.",Height:"Enter the height in pixels.","Alt Text":"Enter the alternate text for the image.",Alignment:"Choose how to float the image."},example:{"Full Url":"http://i.i.com.com/cnwk.1d/i/hdft/redball.gif"},"class":{"Full Url":"validate-url required",Width:"validate-digits",Height:"validate-digits","Alt Text":""},selectLists:{Alignment:[{key:"left",value:"float: left"},{key:"right",value:"float: right"},{key:"none",value:"float: none",selected:true},{key:"center",value:"margin-left: auto; margin-right: auto;"}]}}});var TMPicklets=[];if(typeof CNETProductPicker_ReviewPath!="undefined"){TMPicklets.push(CNETProductPicker_ReviewPath)}if(typeof CNETProductPicker_PricePath!="undefined"){TMPicklets.push(CNETProductPicker_PricePath)}if(typeof NewsStoryPicker_Path!="undefined"){TMPicklets.push(NewsStoryPicker_Path)}TagMaker.anchor=new Class({Extends:TagMaker,options:{name:"Anchor Builder",output:'<a href="%Full Url%">%Inner Text%</a>',picklets:{"Full Url":(TMPicklets.length)?TMPicklets:false},help:{"Full Url":"Enter the external URL (http://...)","Inner Text":"Enter the text for the link body"},example:{"Full Url":"http://www.microsoft.com","Inner Text":"Microsoft"},"class":{"Full Url":"validate-url"}}});TagMaker.cnetVideo=new Class({Extends:TagMaker,options:{name:"CNET Video Embed Tag",output:'<cnet:video ssaVideoId="%Video Id%" float="%Alignment%"/>',help:{"Video Id":"The id of the video to embed"},"class":{"Video Id":"validate-digits required"},selectLists:{Alignment:[{key:"left",value:"left"},{key:"right",value:"right"},{key:"none",value:"",selected:true}]}}});var Autocompleter={};var OverlayFix=IframeShim;Autocompleter.Base=new Class({Implements:[Options,Events],options:{minLength:1,markQuery:true,width:"inherit",maxChoices:10,className:"autocompleter-choices",zIndex:42,delay:400,observerOptions:{},fxOptions:{},autoSubmit:false,overflow:false,overflowMargin:25,selectFirst:false,filter:null,filterCase:false,filterSubset:false,forceSelect:false,selectMode:true,choicesMatch:null,multiple:false,separator:", ",separatorSplit:/\s*[,;]\s*/,autoTrim:true,allowDupes:false,cache:true,relative:false},initialize:function(element,options){this.element=$(element);this.setOptions(options);this.build();this.observer=new Observer(this.element,this.prefetch.bind(this),$merge({delay:this.options.delay},this.options.observerOptions));this.queryValue=null;if(this.options.filter){this.filter=this.options.filter.bind(this)}var mode=this.options.selectMode;this.typeAhead=(mode=="type-ahead");this.selectMode=(mode===true)?"selection":mode;this.cached=[]},build:function(){if($(this.options.customChoices)){this.choices=this.options.customChoices}else{this.choices=new Element("ul",{"class":this.options.className,styles:{zIndex:this.options.zIndex}}).inject(document.body);this.relative=false;if(this.options.relative||this.element.getOffsetParent()!=document.body){this.choices.inject(this.element,"after");this.relative=this.element.getOffsetParent()}this.fix=new OverlayFix(this.choices)}if(!this.options.separator.test(this.options.separatorSplit)){this.options.separatorSplit=this.options.separator}this.fx=(!this.options.fxOptions)?null:new Fx.Tween(this.choices,$merge({property:"opacity",link:"cancel",duration:200},this.options.fxOptions)).addEvent("onStart",Chain.prototype.clearChain).set(0);this.element.setProperty("autocomplete","off").addEvent((Browser.Engine.trident||Browser.Engine.webkit)?"keydown":"keypress",this.onCommand.bind(this)).addEvent("click",this.onCommand.bind(this,[false])).addEvent("focus",this.toggleFocus.create({bind:this,arguments:true,delay:100})).addEvent("blur",this.toggleFocus.create({bind:this,arguments:false,delay:100}))},destroy:function(){if(this.fix){this.fix.dispose()}this.choices=this.selected=this.choices.destroy()},toggleFocus:function(state){this.focussed=state;if(!state){this.hideChoices(true)}this.fireEvent((state)?"onFocus":"onBlur",[this.element])},onCommand:function(e){if(!e&&this.focussed){return this.prefetch()}if(e&&e.key&&!e.shift){switch(e.key){case"enter":if(this.element.value!=this.opted){return true}if(this.selected&&this.visible){this.choiceSelect(this.selected);return !!(this.options.autoSubmit)}break;case"up":case"down":if(!this.prefetch()&&this.queryValue!==null){var up=(e.key=="up");this.choiceOver((this.selected||this.choices)[(this.selected)?((up)?"getPrevious":"getNext"):((up)?"getLast":"getFirst")](this.options.choicesMatch),true)}return false;case"esc":case"tab":this.hideChoices(true);break}}return true},setSelection:function(finish){var input=this.selected.inputValue,value=input;var start=this.queryValue.length,end=input.length;if(input.substr(0,start).toLowerCase()!=this.queryValue.toLowerCase()){start=0}if(this.options.multiple){var split=this.options.separatorSplit;value=this.element.value;start+=this.queryIndex;end+=this.queryIndex;var old=value.substr(this.queryIndex).split(split,1)[0];value=value.substr(0,this.queryIndex)+input+value.substr(this.queryIndex+old.length);if(finish){var space=/[^\s,]+/;var tokens=value.split(this.options.separatorSplit).filter(space.test,space);if(!this.options.allowDupes){tokens=[].combine(tokens)}var sep=this.options.separator;value=tokens.join(sep)+sep;end=value.length}}this.observer.setValue(value);this.opted=value;if(finish||this.selectMode=="pick"){start=end}this.element.selectRange(start,end);this.fireEvent("onSelection",[this.element,this.selected,value,input])},showChoices:function(){var match=this.options.choicesMatch,first=this.choices.getFirst(match);this.selected=this.selectedValue=null;if(this.fix){var pos=this.element.getCoordinates(this.relative),width=this.options.width||"auto";this.choices.setStyles({left:pos.left,top:pos.bottom,width:(width===true||width=="inherit")?pos.width:width})}if(!first){return }if(!this.visible){this.visible=true;this.choices.setStyle("display","");if(this.fx){this.fx.start(1)}this.fireEvent("onShow",[this.element,this.choices])}if(this.options.selectFirst||this.typeAhead||first.inputValue==this.queryValue){this.choiceOver(first,this.typeAhead)}var items=this.choices.getChildren(match),max=this.options.maxChoices;var styles={overflowY:"hidden",height:""};this.overflown=false;if(items.length>max){var item=items[max-1];styles.overflowY="scroll";styles.height=item.getCoordinates(this.choices).bottom;this.overflown=true}this.choices.setStyles(styles);this.fix.show()},hideChoices:function(clear){if(clear){var value=this.element.value;if(this.options.forceSelect){value=this.opted}if(this.options.autoTrim){value=value.split(this.options.separatorSplit).filter($arguments(0)).join(this.options.separator)}this.observer.setValue(value)}if(!this.visible){return }this.visible=false;this.observer.clear();var hide=function(){this.choices.setStyle("display","none");this.fix.hide()}.bind(this);if(this.fx){this.fx.start(0).chain(hide)}else{hide()}this.fireEvent("onHide",[this.element,this.choices])},prefetch:function(){var value=this.element.value,query=value;if(this.options.multiple){var split=this.options.separatorSplit;var values=value.split(split);var index=this.element.getCaretPosition();var toIndex=value.substr(0,index).split(split);var last=toIndex.length-1;index-=toIndex[last].length;query=values[last]}if(query.length<this.options.minLength){this.hideChoices()}else{if(query===this.queryValue||(this.visible&&query==this.selectedValue)){if(this.visible){return false}this.showChoices()}else{this.queryValue=query;this.queryIndex=index;if(!this.fetchCached()){this.query()}}}return true},fetchCached:function(){return false;if(!this.options.cache||!this.cached||!this.cached.length||this.cached.length>=this.options.maxChoices||this.queryValue){return false}this.update(this.filter(this.cached));return true},update:function(tokens){this.choices.empty();this.cached=tokens;if(!tokens||!tokens.length){this.hideChoices()}else{if(this.options.maxChoices<tokens.length&&!this.options.overflow){tokens.length=this.options.maxChoices}tokens.each(this.options.injectChoice||function(token){var choice=new Element("li",{html:this.markQueryValue(token)});choice.inputValue=token;this.addChoiceEvents(choice).inject(this.choices)},this);this.showChoices()}},choiceOver:function(choice,selection){if(!choice||choice==this.selected){return }if(this.selected){this.selected.removeClass("autocompleter-selected")}this.selected=choice.addClass("autocompleter-selected");this.fireEvent("onSelect",[this.element,this.selected,selection]);if(!selection){return }this.selectedValue=this.selected.inputValue;if(this.overflown){var coords=this.selected.getCoordinates(this.choices),margin=this.options.overflowMargin,top=this.choices.scrollTop,height=this.choices.offsetHeight,bottom=top+height;if(coords.top-margin<top&&top){this.choices.scrollTop=Math.max(coords.top-margin,0)}else{if(coords.bottom+margin>bottom){this.choices.scrollTop=Math.min(coords.bottom-height+margin,bottom)}}}if(this.selectMode){this.setSelection()}},choiceSelect:function(choice){if(choice){this.choiceOver(choice)}this.setSelection(true);this.queryValue=false;this.hideChoices()},filter:function(tokens){var regex=new RegExp(((this.options.filterSubset)?"":"^")+this.queryValue.escapeRegExp(),(this.options.filterCase)?"":"i");return(tokens||this.tokens).filter(regex.test,regex)},markQueryValue:function(str){return(!this.options.markQuery||!this.queryValue)?str:str.replace(new RegExp("("+((this.options.filterSubset)?"":"^")+this.queryValue.escapeRegExp()+")",(this.options.filterCase)?"":"i"),'<span class="autocompleter-queried">$1</span>')},addChoiceEvents:function(el){return el.addEvents({mouseover:this.choiceOver.bind(this,[el]),click:this.choiceSelect.bind(this,[el])})}});Autocompleter.Local=new Class({Extends:Autocompleter.Base,options:{minLength:0,delay:200},initialize:function(element,tokens,options){this.parent(element,options);this.tokens=tokens},query:function(){this.update(this.filter())}});Autocompleter.Ajax={};Autocompleter.Ajax.Base=new Class({Extends:Autocompleter.Base,options:{postVar:"value",postData:{},ajaxOptions:{},onRequest:$empty,onComplete:$empty},initialize:function(element,options){this.parent(element,options);var indicator=$(this.options.indicator);if(indicator){this.addEvents({onRequest:indicator.show.bind(indicator),onComplete:indicator.hide.bind(indicator)},true)}},query:function(){var data=$unlink(this.options.postData);data[this.options.postVar]=this.queryValue;this.fireEvent("onRequest",[this.element,this.request,data,this.queryValue]);this.request.send({data:data})},queryResponse:function(){this.fireEvent("onComplete",[this.element,this.request,this.response])}});Autocompleter.Ajax.Json=new Class({Extends:Autocompleter.Ajax.Base,initialize:function(el,url,options){this.parent(el,options);this.request=new Request.JSON($merge({url:url,link:"cancel"},this.options.ajaxOptions)).addEvent("onComplete",this.queryResponse.bind(this))},queryResponse:function(response){this.parent();this.update(response)}});Autocompleter.Ajax.Xhtml=new Class({Extends:Autocompleter.Ajax.Base,initialize:function(el,url,options){this.parent(el,options);this.request=new Request.HTML($merge({url:url,link:"cancel",update:this.choices},this.options.ajaxOptions)).addEvent("onComplete",this.queryResponse.bind(this))},queryResponse:function(tree,elements){this.parent();if(!elements||!elements.length){this.hideChoices()}else{this.choices.getChildren(this.options.choicesMatch).each(this.options.injectChoice||function(choice){var value=choice.innerHTML;choice.inputValue=value;this.addChoiceEvents(choice.set("html",this.markQueryValue(value)))},this);this.showChoices()}}});Autocompleter.JsonP=new Class({Extends:Autocompleter.Ajax.Json,options:{postVar:"query",jsonpOptions:{},minLength:1},initialize:function(el,url,options){this.url=url;this.setOptions(options);this.parent(el,options)},query:function(){var data=$unlink(this.options.jsonpOptions.data||{});data[this.options.postVar]=this.queryValue;this.jsonp=new JsonP(this.url,$merge({data:data},this.options.jsonpOptions));this.jsonp.addEvent("onComplete",this.queryResponse.bind(this));this.fireEvent("onRequest",[this.element,this.jsonp,data,this.queryValue]);this.jsonp.request()},queryResponse:function(){this.fireEvent("onComplete",[this.element,this.request,this.response])},queryResponse:function(response){this.parent();var data=(this.options.filter)?this.options.filter.run([response],this):response;this.update(data)}});var Observer=new Class({Implements:[Options,Events],options:{periodical:false,delay:1000},initialize:function(el,onFired,options){this.setOptions(options);this.addEvent("onFired",onFired);this.element=$(el)||$$(el);this.boundChange=this.changed.bind(this);this.resume()},changed:function(){var value=this.element.get("value");if($equals(this.value,value)){return }this.clear();this.value=value;this.timeout=this.onFired.delay(this.options.delay,this)},setValue:function(value){this.value=value;this.element.set("value",value);return this.clear()},onFired:function(){this.fireEvent("onFired",[this.value,this.element])},clear:function(){$clear(this.timeout||null);return this},pause:function(){$clear(this.timeout);$clear(this.timer);this.element.removeEvent("keyup",this.boundChange);return this},resume:function(){this.value=this.element.get("value");if(this.options.periodical){this.timer=this.changed.periodical(this.options.periodical,this)}else{this.element.addEvent("keyup",this.boundChange)}return this}});var $equals=function(obj1,obj2){return(obj1==obj2||JSON.encode(obj1)==JSON.encode(obj2))};var Lightbox=new Class({Implements:[Options,Events],options:{resizeDuration:400,initialWidth:250,initialHeight:250,zIndex:10,animateCaption:true,showCounter:true,autoScanLinks:true,relString:"lightbox",useDefaultCss:true,assetBaseUrl:"http://www.cnet.com/html/rb/assets/global/slimbox/",overlayStyles:{}},initialize:function(options){this.setOptions(options);this.anchors=this.options.anchors||arguments[1];if(this.options.autoScanLinks&&!this.anchors){this.anchors=[];$$("a[rel^="+this.options.relString+"]").each(function(el){if(!el.retrieve("lightbox")){this.anchors.push(el)}},this)}if(!$$(this.anchors).length){return }if(this.options.useDefaultCss){this.addCss()}$$(this.anchors).each(function(el){if(!el.retrieve("lightbox")){el.store("lightbox",this);el.addEvent("click",function(e){e.stop();this.click(el)}.bind(this))}}.bind(this));this.eventKeyDown=this.keyboardListener.bind(this);this.eventPosition=this.position.bind(this);window.addEvent("domready",this.addHtmlElements.bind(this))},addHtmlElements:function(){this.overlay=new Element("div",{"class":"lbOverlay",styles:{zIndex:this.options.zIndex}});this.overlay.inject(document.body).setStyles(this.options.overlayStyles);this.center=new Element("div",{styles:{width:this.options.initialWidth,height:this.options.initialHeight,marginLeft:(-(this.options.initialWidth/2)),display:"none",zIndex:this.options.zIndex+1}}).inject(document.body).addClass("lbCenter");this.image=new Element("div",{"class":"lbImage"}).inject(this.center);this.prevLink=new Element("a",{"class":"lbPrevLink",href:"javascript:void(0);",styles:{display:"none"}}).inject(this.image);this.nextLink=this.prevLink.clone().removeClass("lbPrevLink").addClass("lbNextLink").inject(this.image);this.prevLink.addEvent("click",this.previous.bind(this));this.nextLink.addEvent("click",this.next.bind(this));this.bottomContainer=new Element("div",{"class":"lbBottomContainer",styles:{display:"none",zIndex:this.options.zIndex+1}}).inject(document.body);this.bottom=new Element("div",{"class":"lbBottom"}).inject(this.bottomContainer);new Element("a",{"class":"lbCloseLink",href:"javascript:void(0);"}).inject(this.bottom).addEvent("click",this.close.bind(this));this.overlay.addEvent("click",this.close.bind(this));this.caption=new Element("div",{"class":"lbCaption"}).inject(this.bottom);this.number=new Element("div",{"class":"lbNumber"}).inject(this.bottom);new Element("div",{styles:{clear:"both"}}).inject(this.bottom);var nextEffect=this.nextEffect.bind(this);this.fx={overlay:new Fx.Tween(this.overlay,{property:"opacity",duration:500}).set(0),resize:new Fx.Morph(this.center,$extend({duration:this.options.resizeDuration,onComplete:nextEffect},this.options.resizeTransition?{transition:this.options.resizeTransition}:{})),image:new Fx.Tween(this.image,{property:"opacity",duration:500,onComplete:nextEffect}),bottom:new Fx.Tween(this.bottom,{property:"margin-top",duration:400,onComplete:nextEffect})};this.preloadPrev=new Element("img");this.preloadNext=new Element("img")},addCss:function(){window.addEvent("domready",function(){if($("LightboxCss")){return }new Element("link",{rel:"stylesheet",media:"screen",type:"text/css",href:this.options.assetBaseUrl+"slimbox.css",id:"LightboxCss"}).inject(document.head)}.bind(this))},click:function(link){link=$(link);var rel=link.get("rel")||this.options.relString;if(rel==this.options.relString){return this.show(link.get("href"),link.get("title"))}var j,imageNum,images=[];this.anchors.each(function(el){if(el.get("rel")==link.get("rel")){for(j=0;j<images.length;j++){if(images[j][0]==el.get("href")){break}}if(j==images.length){images.push([el.get("href"),el.get("title")]);if(el.get("href")==link.get("href")){imageNum=j}}}},this);return this.open(images,imageNum)},show:function(url,title){return this.open([[url,title]],0)},open:function(images,imageNum){this.fireEvent("onDisplay");this.images=images;this.position();this.setup(true);this.top=(window.getScroll().y+(window.getSize().y/15)).toInt();this.center.setStyles({top:this.top,display:""});this.fx.overlay.start(0.8);return this.changeImage(imageNum)},position:function(){this.overlay.setStyles({top:window.getScroll().y,height:window.getSize().y})},setup:function(open){var elements=$$("object, iframe");elements.extend($$(Browser.Engine.trident?"select":"embed"));elements.each(function(el){if(open){el.store("lbBackupStyle",el.getStyle("visibility"))}var vis=(open?"hidden":el.retrieve("lbBackupStyle"));el.setStyle("visibility",vis)});var fn=open?"addEvent":"removeEvent";window[fn]("scroll",this.eventPosition)[fn]("resize",this.eventPosition);document[fn]("keydown",this.eventKeyDown);this.step=0},keyboardListener:function(event){switch(event.code){case 27:case 88:case 67:this.close();break;case 37:case 80:this.previous();break;case 39:case 78:this.next()}},previous:function(){return this.changeImage(this.activeImage-1)},next:function(){return this.changeImage(this.activeImage+1)},changeImage:function(imageNum){this.fireEvent("onImageShow",[imageNum,this.images[imageNum]]);if(this.step||(imageNum<0)||(imageNum>=this.images.length)){return false}this.step=1;this.activeImage=imageNum;this.center.setStyle("backgroundColor","");this.bottomContainer.setStyle("display","none");this.prevLink.setStyle("display","none");this.nextLink.setStyle("display","none");this.fx.image.set(0);this.center.addClass("lbLoading");this.preload=new Element("img",{events:{load:function(){this.nextEffect.delay(100,this)}.bind(this)}});this.preload.set("src",this.images[imageNum][0]);return false},nextEffect:function(){switch(this.step++){case 1:this.image.setStyle("backgroundImage","url("+this.images[this.activeImage][0]+")");this.image.setStyle("width",this.preload.width);this.bottom.setStyle("width",this.preload.width);this.image.setStyle("height",this.preload.height);this.prevLink.setStyle("height",this.preload.height);this.nextLink.setStyle("height",this.preload.height);this.caption.set("html",this.images[this.activeImage][1]||"");this.number.set("html",(!this.options.showCounter||(this.images.length==1))?"":"Image "+(this.activeImage+1)+" of "+this.images.length);if(this.activeImage){$(this.preloadPrev).set("src",this.images[this.activeImage-1][0])}if(this.activeImage!=(this.images.length-1)){$(this.preloadNext).set("src",this.images[this.activeImage+1][0])}if(this.center.clientHeight!=this.image.offsetHeight){this.fx.resize.start({height:this.image.offsetHeight});break}this.step++;case 2:if(this.center.clientWidth!=this.image.offsetWidth){this.fx.resize.start({width:this.image.offsetWidth,marginLeft:-this.image.offsetWidth/2});break}this.step++;case 3:this.bottomContainer.setStyles({top:(this.top+this.center.getSize().y),height:0,marginLeft:this.center.getStyle("margin-left"),display:""});this.fx.image.start(1);break;case 4:this.center.style.backgroundColor="#000";if(this.options.animateCaption){this.fx.bottom.set(-this.bottom.offsetHeight);this.bottomContainer.setStyle("height","");this.fx.bottom.start(0);break}this.bottomContainer.style.height="";case 5:if(this.activeImage){this.prevLink.setStyle("display","")}if(this.activeImage!=(this.images.length-1)){this.nextLink.setStyle("display","")}this.step=0}},close:function(){this.fireEvent("onHide");if(this.step<0){return }this.step=-1;if(this.preload){this.preload.destroy()}for(var f in this.fx){this.fx[f].cancel()}this.center.setStyle("display","none");this.bottomContainer.setStyle("display","none");this.fx.overlay.chain(this.setup.pass(false,this)).start(0);return }});window.addEvent("domready",function(){if($(document.body).get("html").match(/rel=?.lightbox/i)){new Lightbox()}});