var css_browser_selector=function(){var d=navigator.userAgent.toLowerCase(),f=function(c){return d.indexOf(c)!=-1},e=document.getElementsByTagName("html")[0],a=(!(/opera|webtv/i.test(d))&&/msie\s(\d)/.test(d))?("ie ie"+RegExp.$1):f("firefox/2")?"gecko ff2":f("firefox/3")?"gecko ff3":f("gecko/")?"gecko":f("opera/9")?"opera opera9":/opera\s(\d)/.test(d)?"opera opera"+RegExp.$1:f("konqueror")?"konqueror":f("chrome")?"chrome webkit safari":f("applewebkit/")?"webkit safari":f("mozilla/")?"gecko":"",g=(f("x11")||f("linux"))?" linux":f("mac")?" mac":f("win")?" win":"";var l=a+g+" js";e.className+=e.className?" "+l:l}();Date.parseFunctions={count:0};Date.parseRegexes=[];Date.parseDate=function(a,d){if(Date.parseFunctions[d]==null){Date.createParser(d)}var c=Date.parseFunctions[d];return Date[c](a)};Date.createParser=function(n){var h="parse"+Date.parseFunctions.count++;var d=Date.parseRegexes.length;var o=1;var c="{var y = -1, m = -1, d = -1, h = -1, i = -1, s = -1;\nvar d = new Date();\ny = d.getFullYear();\nm = d.getMonth();\nd = d.getDate();\nvar results = input.match(Date.parseRegexes["+d+"]);\nif (results && results.length > 0) {";var l="";var g=false;var a="";for(var e=0;e<n.length;++e){a=n.charAt(e);if(!g&&a=="\\"){g=true}else{if(g){g=false;l+=String.escape(a)}else{obj=Date.formatCodeToRegex(a,o);o+=obj.g;l+=obj.s;if(obj.g&&obj.c){c+=obj.c}}}}c+="if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n{return new Date(y, m, d, h, i, s);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n{return new Date(y, m, d, h, i);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0)\n{return new Date(y, m, d, h);}\nelse if (y > 0 && m >= 0 && d > 0)\n{return new Date(y, m, d);}\nelse if (y > 0 && m >= 0)\n{return new Date(y, m);}\nelse if (y > 0)\n{return new Date(y);}\n}return null;}";Date.parseRegexes[d]=new RegExp("^"+l+"$");Date.parseFunctions[n]=h;var f=new Function("input",c);Date[h]={};Date[h]=f};Date.formatCodeToRegex=function(c,a){switch(c){case"D":return{g:0,c:null,s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};case"j":case"d":return{g:1,c:"d = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"\\d"};case"z":return{g:0,c:null,s:"(?:\\d{1,3})"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"].substring(0, 3)], 10);\n",s:"("+Date.monthNames.join("|")+")"};case"M":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case"n":case"m":return{g:1,c:"m = parseInt(results["+a+"], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"\\d{1,2}"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"Y":return{g:1,c:"y = parseInt(results["+a+"], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["+a+"], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};case"a":return{g:1,c:"if (results["+a+"] == 'am') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["+a+"] == 'AM') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":case"h":case"H":return{g:1,c:"h = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"i":return{g:1,c:"i = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"s":return{g:1,c:"s = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"O":return{g:0,c:null,s:"[+-]\\d{4}"};case"T":return{g:0,c:null,s:"[A-Z]{3}"};case"Z":return{g:0,c:null,s:"[+-]\\d{1,5}"};default:return{g:0,c:null,s:String.escape(c)}}};Date.prototype.getDayOfYear=function(){var a=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var c=0;c<this.getMonth();++c){a+=Date.daysInMonth[c]}return a+this.getDate()-1};Date.prototype.getWeekOfYear=function(){var c=this.getDayOfYear()+(4-this.getDay());var a=new Date(this.getFullYear(),0,1);var d=(7-a.getDay()+4);return String.leftPad(((c-d)/7)+1,2,"0")};Date.prototype.isLeapYear=function(){var a=this.getFullYear();return((a&3)==0&&(a%100||(a%400==0&&a)))};Date.prototype.getFirstDayOfMonth=function(){var a=(this.getDay()-(this.getDate()-1))%7;return(a<0)?(a+7):a};Date.prototype.getLastDayOfMonth=function(){var a=(this.getDay()+(Date.daysInMonth[this.getMonth()]-this.getDate()))%7;return(a<0)?(a+7):a};Date.prototype.getDaysInMonth=function(){Date.daysInMonth[1]=this.isLeapYear()?29:28;return Date.daysInMonth[this.getMonth()]};Date.prototype.getSuffix=function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}};Date.prototype.addMilliseconds=function(a){this.setMilliseconds(this.getMilliseconds()+a);return this};Date.prototype.addDays=function(a){return this.addMilliseconds(a*86400000)};Date.prototype.addWeeks=function(a){return this.addMilliseconds(a*604800000)};Date.prototype.addMonths=function(a){var c=this.getDate();this.setDate(1);this.setMonth(this.getMonth()+a);this.setDate(Math.min(c,this.getDaysInMonth()));return this};Date.prototype.addYears=function(a){return this.addMonths(a*12)};Date.prototype.getAbbreviatedDay=function(){var a=Date.abbreviatedDayNames[this.getDay()];return a};String.escape=function(a){return a.replace(/('|\\)/g,"\\$1")};String.leftPad=function(e,c,d){var a=new String(e);if(d==null){d=" "}while(a.length<c){a=d+a}return a};Date.daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];Date.monthNames=["January","February","March","April","May","June","July","August","September","October","November","December"];Date.dayNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];Date.abbreviatedDayNames=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];Date.dayNumbers={Sun:0,Mon:1,Tue:2,Wed:3,Thu:4,Fri:5,Sat:6};Date.y2kYear=50;Date.monthNumbers={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};Date.patterns={ISO8601LongPattern:"Y-m-d H:i:s",ISO8601ShortPattern:"Y-m-d",ShortDatePattern:"n/j/Y",LongDatePattern:"l, F d, Y",FullDateTimePattern:"l, F d, Y g:i:s A",MonthDayPattern:"F d",ShortTimePattern:"g:i A",LongTimePattern:"g:i:s A",SortableDateTimePattern:"Y-m-d\\TH:i:s",UniversalSortableDateTimePattern:"Y-m-d H:i:sO",YearMonthPattern:"F, Y"};(function(s){s.facebox=function(a,c){s.facebox.loading();if(a.ajax){r(a.ajax)}else{if(a.image){v(a.image)}else{if(a.div){n(a.div)}else{if(s.isFunction(a)){a.call(s)}else{s.facebox.reveal(a,c)}}}}};s.extend(s.facebox,{settings:{opacity:0,overlay:true,loadingImage:"images/facebox/loading.gif",closeImage:"images/facebox/closelabel.gif",imageTypes:["png","jpg","jpeg","gif"],faceboxHtml:'    <div id="facebox" style="display:none;">       <div class="popup">         <table>           <tbody>             <tr>               <td class="tl"/><td class="b"/><td class="tr"/>             </tr>             <tr>               <td class="b"/>               <td class="body">                 <div class="content">                 </div>                 <div class="footer">                   <a class="close">                     <img src="images/facebox/closelabel.gif" title="close" class="close_image" />                   </a>                 </div>               </td>               <td class="b"/>             </tr>             <tr>               <td class="bl"/><td class="b"/><td class="br"/>             </tr>           </tbody>         </table>       </div>     </div>'},loading:function(){l();if(s("#facebox .loading").length==1){return true}t();s("#facebox .content").empty();s("#facebox .body").children().hide().end().append('<div class="loading"><img src="'+s.facebox.settings.loadingImage+'"/></div>');s("#facebox").css({top:q()[1]+(o()/10),left:385.5}).show();s(document).bind("keydown.facebox",function(a){if(a.keyCode==27){s.facebox.close()}return true});s(document).trigger("loading.facebox")},reveal:function(a,c){s(document).trigger("beforeReveal.facebox");if(c){s("#facebox .content").addClass(c)}s("#facebox .content").append(a);s("#facebox .loading").remove();s("#facebox .body").children().fadeIn("normal");s("#facebox").css("left",s(window).width()/2-(s("#facebox table").width()/2));s(document).trigger("reveal.facebox").trigger("afterReveal.facebox")},close:function(){s(document).trigger("close.facebox");return false}});s.fn.facebox=function(c){l(c);function a(){s.facebox.loading(true);var d=this.rel.match(/facebox\[?\.(\w+)\]?/);if(d){d=d[1]}n(this.href,d);return false}return this.click(a)};function l(d){if(s.facebox.settings.inited){return true}else{s.facebox.settings.inited=true}s(document).trigger("init.facebox");u();var c=s.facebox.settings.imageTypes.join("|");s.facebox.settings.imageTypesRegexp=new RegExp("."+c+"$","i");if(d){s.extend(s.facebox.settings,d)}s("body").append(s.facebox.settings.faceboxHtml);var a=[new Image(),new Image()];a[0].src=s.facebox.settings.closeImage;a[1].src=s.facebox.settings.loadingImage;s("#facebox").find(".b:first, .bl, .br, .tl, .tr").each(function(){a.push(new Image());a.slice(-1).src=s(this).css("background-image").replace(/url\((.+)\)/,"$1")});s("#facebox .close").click(s.facebox.close);s("#facebox .close_image").attr("src",s.facebox.settings.closeImage)}function q(){var a,c;if(self.pageYOffset){c=self.pageYOffset;a=self.pageXOffset}else{if(document.documentElement&&document.documentElement.scrollTop){c=document.documentElement.scrollTop;a=document.documentElement.scrollLeft}else{if(document.body){c=document.body.scrollTop;a=document.body.scrollLeft}}}return new Array(a,c)}function o(){var a;if(self.innerHeight){a=self.innerHeight}else{if(document.documentElement&&document.documentElement.clientHeight){a=document.documentElement.clientHeight}else{if(document.body){a=document.body.clientHeight}}}return a}function u(){var a=s.facebox.settings;a.loadingImage=a.loading_image||a.loadingImage;a.closeImage=a.close_image||a.closeImage;a.imageTypes=a.image_types||a.imageTypes;a.faceboxHtml=a.facebox_html||a.faceboxHtml}function n(a,c){if(a.match(/#/)){var e=window.location.href.split("#")[0];var d=a.replace(e,"");s.facebox.reveal(s(d).clone().show(),c)}else{if(a.match(s.facebox.settings.imageTypesRegexp)){v(a,c)}else{r(a,c)}}}function v(a,c){var d=new Image();d.onload=function(){s.facebox.reveal('<div class="image"><img src="'+d.src+'" /></div>',c)};d.src=a}function r(a,c){s.get(a,function(d){s.facebox.reveal(d,c)})}function w(){return s.facebox.settings.overlay==false||s.facebox.settings.opacity===null}function t(){if(w()){return}if(s("facebox_overlay").length==0){s("body").append('<div id="facebox_overlay" class="facebox_hide"></div>')}s("#facebox_overlay").hide().addClass("facebox_overlayBG").css("opacity",s.facebox.settings.opacity).click(function(){s(document).trigger("close.facebox")}).fadeIn(200);return false}function x(){if(w()){return}s("#facebox_overlay").fadeOut(200,function(){s("#facebox_overlay").removeClass("facebox_overlayBG");s("#facebox_overlay").addClass("facebox_hide");s("#facebox_overlay").remove()});return false}s(document).bind("close.facebox",function(){s(document).unbind("keydown.facebox");s("#facebox").fadeOut(function(){s("#facebox .content").removeClass().addClass("content");x();s("#facebox .loading").remove()})})})(jQuery);(function(c){var a=null;c.fn.autogrow=function(d){return this.each(function(){new c.autogrow(this,d)})};c.autogrow=function(d,f){this.options=f||{};this.dummy=null;this.interval=null;this.line_height=this.options.lineHeight||parseInt(c(d).css("line-height"));this.min_height=this.options.minHeight||parseInt(c(d).css("min-height"));this.max_height=this.options.maxHeight||parseInt(c(d).css("max-height"));this.textarea=c(d);if(this.line_height==NaN){this.line_height=0}this.init()};c.autogrow.fn=c.autogrow.prototype={autogrow:"1.2.2"};c.autogrow.fn.extend=c.autogrow.extend=c.extend;c.autogrow.fn.extend({init:function(){var d=this;this.textarea.css({overflow:"hidden",display:"block"});this.textarea.bind("focus",function(){d.startExpand()}).bind("blur",function(){d.stopExpand()});this.checkExpand()},startExpand:function(){var d=this;this.interval=window.setInterval(function(){d.checkExpand()},400)},stopExpand:function(){clearInterval(this.interval)},checkExpand:function(){if(this.dummy==null){this.dummy=c("<div></div>");this.dummy.css({"font-size":this.textarea.css("font-size"),"font-family":this.textarea.css("font-family"),width:this.textarea.css("width"),padding:this.textarea.css("padding"),"line-height":this.line_height+"px","overflow-x":"hidden",position:"absolute",top:0,left:-9999}).appendTo("body")}var d=this.textarea.val().replace(/(<|>)/g,"");if($.browser.msie){d=d.replace(/\n/g,"<BR>new")}else{d=d.replace(/\n/g,"<br>new")}if(this.dummy.html()!=d){this.dummy.html(d);if(this.max_height>0&&(this.dummy.height()+this.line_height>this.max_height)){this.textarea.css("overflow-y","auto")}else{this.textarea.css("overflow-y","hidden");if(this.textarea.height()<this.dummy.height()){this.textarea.animate({height:this.dummy.height()+"px"},100)}}}}})})(jQuery);(function(c){c.fn.ajaxSubmit=function(q){if(!this.length){d("ajaxSubmit: skipping submit process - no element selected");return this}if(typeof q=="function"){q={success:q}}q=c.extend({url:this.attr("action")||window.location.toString(),type:this.attr("method")||"GET"},q||{});var a={};this.trigger("form-pre-serialize",[this,q,a]);if(a.veto){d("ajaxSubmit: submit vetoed via form-pre-serialize trigger");return this}var u=this.formToArray(q.semantic);if(q.data){q.extraData=q.data;for(var x in q.data){u.push({name:x,value:q.data[x]})}}if(q.beforeSubmit&&q.beforeSubmit(u,this,q)===false){d("ajaxSubmit: submit aborted via beforeSubmit callback");return this}this.trigger("form-submit-validate",[u,this,q,a]);if(a.veto){d("ajaxSubmit: submit vetoed via form-submit-validate trigger");return this}var y=c.param(u);if(q.type.toUpperCase()=="GET"){q.url+=(q.url.indexOf("?")>=0?"&":"?")+y;q.data=null}else{q.data=y}var n=this,v=[];if(q.resetForm){v.push(function(){n.resetForm()})}if(q.clearForm){v.push(function(){n.clearForm()})}if(!q.dataType&&q.target){var s=q.success||function(){};v.push(function(e){c(q.target).html(e).each(s,arguments)})}else{if(q.success){v.push(q.success)}}q.success=function(f,h){for(var g=0,e=v.length;g<e;g++){v[g](f,h,n)}};var z=c("input:file",this).fieldValue();var r=false;for(var w=0;w<z.length;w++){if(z[w]){r=true}}if(q.iframe||r){if(c.browser.safari&&q.closeKeepAlive){c.get(q.closeKeepAlive,t)}else{t()}}else{c.ajax(q)}this.trigger("form-submit-notify",[this,q]);return this;function t(){var H=n[0];if(c(":input[@name=submit]",H).length){alert('Error: Form elements must not be named "submit".');return}var e=c.extend({},c.ajaxSettings,q);var I="jqFormIO"+(new Date().getTime());var C=c('<iframe id="'+I+'" name="'+I+'" />');var h=C[0];if(c.browser.msie||c.browser.opera){h.src='javascript:false;document.write("");'}C.css({position:"absolute",top:"-1000px",left:"-1000px"});var g={responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){}};var o=e.global;if(o&&!c.active++){c.event.trigger("ajaxStart")}if(o){c.event.trigger("ajaxSend",[g,e])}var f=0;var F=0;var l=H.clk;if(l){var G=l.name;if(G&&!l.disabled){q.extraData=q.extraData||{};q.extraData[G]=l.value;if(l.type=="image"){q.extraData[name+".x"]=H.clk_x;q.extraData[name+".y"]=H.clk_y}}}setTimeout(function(){var B=n.attr("target"),K=n.attr("action");n.attr({target:I,encoding:"multipart/form-data",enctype:"multipart/form-data",method:"POST",action:e.url});if(e.timeout){setTimeout(function(){F=true;E()},e.timeout)}var J=[];try{if(q.extraData){for(var A in q.extraData){J.push(c('<input type="hidden" name="'+A+'" value="'+q.extraData[A]+'" />').appendTo(H)[0])}}C.appendTo("body");h.attachEvent?h.attachEvent("onload",E):h.addEventListener("load",E,false);H.submit()}finally{n.attr("action",K);B?n.attr("target",B):n.removeAttr("target");c(J).remove()}},10);function E(){if(f++){return}h.detachEvent?h.detachEvent("onload",E):h.removeEventListener("load",E,false);var L=0;var K=true;try{if(F){throw"timeout"}var J,A;A=h.contentWindow?h.contentWindow.document:h.contentDocument?h.contentDocument:h.document;if(A.body==null&&!L&&c.browser.opera){L=1;f--;setTimeout(E,100);return}g.responseText=A.body?A.body.innerHTML:null;g.responseXML=A.XMLDocument?A.XMLDocument:A;g.getResponseHeader=function(N){var O={"content-type":e.dataType};return O[N]};if(e.dataType=="json"||e.dataType=="script"){var M=A.getElementsByTagName("textarea")[0];g.responseText=M?M.value:g.responseText}else{if(e.dataType=="xml"&&!g.responseXML&&g.responseText!=null){g.responseXML=D(g.responseText)}}J=c.httpData(g,e.dataType)}catch(B){K=false;c.handleError(e,g,"error",B)}if(K){e.success(J,"success");if(o){c.event.trigger("ajaxSuccess",[g,e])}}if(o){c.event.trigger("ajaxComplete",[g,e])}if(o&&!--c.active){c.event.trigger("ajaxStop")}if(e.complete){e.complete(g,K?"success":"error")}setTimeout(function(){C.remove();g.responseXML=null},100)}function D(B,A){if(window.ActiveXObject){A=new ActiveXObject("Microsoft.XMLDOM");A.async="false";A.loadXML(B)}else{A=(new DOMParser()).parseFromString(B,"text/xml")}return(A&&A.documentElement&&A.documentElement.tagName!="parsererror")?A:null}}};c.fn.ajaxForm=function(a){return this.ajaxFormUnbind().bind("submit.form-plugin",function(){c(this).ajaxSubmit(a);return false}).each(function(){c(":submit,input:image",this).bind("click.form-plugin",function(h){var l=this.form;l.clk=this;if(this.type=="image"){if(h.offsetX!=undefined){l.clk_x=h.offsetX;l.clk_y=h.offsetY}else{if(typeof c.fn.offset=="function"){var e=c(this).offset();l.clk_x=h.pageX-e.left;l.clk_y=h.pageY-e.top}else{l.clk_x=h.pageX-this.offsetLeft;l.clk_y=h.pageY-this.offsetTop}}}setTimeout(function(){l.clk=l.clk_x=l.clk_y=null},10)})})};c.fn.ajaxFormUnbind=function(){this.unbind("submit.form-plugin");return this.each(function(){c(":submit,input:image",this).unbind("click.form-plugin")})};c.fn.formToArray=function(n){var s=[];if(this.length==0){return s}var B=this[0];var x=n?B.getElementsByTagName("*"):B.elements;if(!x){return s}for(var w=0,u=x.length;w<u;w++){var A=x[w];var z=A.name;if(!z){continue}if(n&&B.clk&&A.type=="image"){if(!A.disabled&&B.clk==A){s.push({name:z+".x",value:B.clk_x},{name:z+".y",value:B.clk_y})}continue}var a=c.fieldValue(A,true);if(a&&a.constructor==Array){for(var y=0,C=a.length;y<C;y++){s.push({name:z,value:a[y]})}}else{if(a!==null&&typeof a!="undefined"){s.push({name:z,value:a})}}}if(!n&&B.clk){var v=B.getElementsByTagName("input");for(var w=0,u=v.length;w<u;w++){var t=v[w];var z=t.name;if(z&&!t.disabled&&t.type=="image"&&B.clk==t){s.push({name:z+".x",value:B.clk_x},{name:z+".y",value:B.clk_y})}}}return s};c.fn.formSerialize=function(a){return c.param(this.formToArray(a))};c.fn.fieldSerialize=function(a){var e=[];this.each(function(){var l=this.name;if(!l){return}var o=c.fieldValue(this,a);if(o&&o.constructor==Array){for(var n=0,q=o.length;n<q;n++){e.push({name:l,value:o[n]})}}else{if(o!==null&&typeof o!="undefined"){e.push({name:this.name,value:o})}}});return c.param(e)};c.fn.fieldValue=function(a){for(var l=[],o=0,r=this.length;o<r;o++){var n=this[o];var q=c.fieldValue(n,a);if(q===null||typeof q=="undefined"||(q.constructor==Array&&!q.length)){continue}q.constructor==Array?c.merge(l,q):l.push(q)}return l};c.fieldValue=function(B,v){var z=B.name,n=B.type,a=B.tagName.toLowerCase();if(typeof v=="undefined"){v=true}if(v&&(!z||B.disabled||n=="reset"||n=="button"||(n=="checkbox"||n=="radio")&&!B.checked||(n=="submit"||n=="image")&&B.form&&B.form.clk!=B||a=="select"&&B.selectedIndex==-1)){return null}if(a=="select"){var u=B.selectedIndex;if(u<0){return null}var s=[],A=B.options;var x=(n=="select-one");var t=(x?u+1:A.length);for(var y=(x?u:0);y<t;y++){var w=A[y];if(w.selected){var r=c.browser.msie&&!(w.attributes.value.specified)?w.text:w.value;if(x){return r}s.push(r)}}return s}return B.value};c.fn.clearForm=function(){return this.each(function(){c("input,select,textarea",this).clearFields()})};c.fn.clearFields=c.fn.clearInputs=function(){return this.each(function(){var a=this.type,e=this.tagName.toLowerCase();if(a=="text"||a=="password"||e=="textarea"){this.value=""}else{if(a=="checkbox"||a=="radio"){this.checked=false}else{if(e=="select"){this.selectedIndex=-1}}}})};c.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=="function"||(typeof this.reset=="object"&&!this.reset.nodeType)){this.reset()}})};c.fn.enable=function(a){if(a==undefined){a=true}return this.each(function(){this.disabled=!a})};c.fn.select=function(a){if(a==undefined){a=true}return this.each(function(){var g=this.type;if(g=="checkbox"||g=="radio"){this.checked=a}else{if(this.tagName.toLowerCase()=="option"){var f=c(this).parent("select");if(a&&f[0]&&f[0].type=="select-one"){f.find("option").select(false)}this.selected=a}}})};function d(){if(c.fn.ajaxSubmit.debug&&window.console&&window.console.log){window.console.log("[jquery.form] "+Array.prototype.join.call(arguments,""))}}})(jQuery);(function(a){a.fn.maxlength=function(c){if(typeof c=="string"){c={feedback:c}}c=a.extend({},a.fn.maxlength.defaults,c);function d(e){var f=e.value;if(c.words){f=e.value.length?f.split(/\s+/):{length:0}}return f.length}return this.each(function(){var n=this,l=a(n),h=a(n.form),g=c.useInput?h.find("input[name=maxlength]").val():l.attr("maxlength"),o=h.find(c.feedback);function f(s){var q=d(this),t=q>=g,r=s.keyCode;if(!t){return}switch(r){case 8:case 9:case 17:case 36:case 35:case 37:case 38:case 39:case 40:case 46:case 65:return;default:return c.words&&r!=32&&r!=27&&q==g}}var e=function(){var q=d(n),r=g-q;o.html(r||"0");if(c.hardLimit&&r<0){n.value=c.words?n.value.split(/(\s+)/,(g*2)-1).join(""):n.value.substr(0,g);e()}};l.keyup(e).change(e);if(c.hardLimit){l.keydown(f)}e()})};a.fn.maxlength.defaults={useInput:false,hardLimit:true,feedback:".charsLeft",words:false}})(jQuery);(function($){$.extend({metadata:{defaults:{type:"class",name:"metadata",cre:/({.*})/,single:"metadata"},setType:function(type,name){this.defaults.type=type;this.defaults.name=name},get:function(elem,opts){var settings=$.extend({},this.defaults,opts);if(!settings.single.length){settings.single="metadata"}var data=$.data(elem,settings.single);if(data){return data}data="{}";if(settings.type=="class"){var m=settings.cre.exec(elem.className);if(m){data=m[1]}}else{if(settings.type=="elem"){if(!elem.getElementsByTagName){return}var e=elem.getElementsByTagName(settings.name);if(e.length){data=$.trim(e[0].innerHTML)}}else{if(elem.getAttribute!=undefined){var attr=elem.getAttribute(settings.name);if(attr){data=attr}}}}if(data.indexOf("{")<0){data="{"+data+"}"}data=eval("("+data+")");$.data(elem,settings.single,data);return data}}});$.fn.metadata=function(opts){return $.metadata.get(this[0],opts)}})(jQuery);(function(f){var c={},q,s,u,o=f.browser.msie&&/MSIE\s(5\.5|6\.)/.test(navigator.userAgent),a=false;f.tooltip={blocked:false,defaults:{delay:200,fade:false,showURL:true,extraClass:"",top:15,left:15,id:"tooltip"},block:function(){f.tooltip.blocked=!f.tooltip.blocked}};f.fn.extend({tooltip:function(v){v=f.extend({},f.tooltip.defaults,v);l(v);return this.each(function(){f.data(this,"tooltip",v);this.tOpacity=c.parent.css("opacity");this.tooltipText=this.title;f(this).removeAttr("title");this.alt=""}).mouseover(r).mouseout(g).click(g)},fixPNG:o?function(){return this.each(function(){var v=f(this).css("backgroundImage");if(v.match(/^url\(["']?(.*\.png)["']?\)$/i)){v=RegExp.$1;f(this).css({backgroundImage:"none",filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='"+v+"')"}).each(function(){var w=f(this).css("position");if(w!="absolute"&&w!="relative"){f(this).css("position","relative")}})}})}:function(){return this},unfixPNG:o?function(){return this.each(function(){f(this).css({filter:"",backgroundImage:""})})}:function(){return this},hideWhenEmpty:function(){return this.each(function(){f(this)[f(this).html()?"show":"hide"]()})},url:function(){return this.attr("href")||this.attr("src")}});function l(v){if(c.parent){return}c.parent=f('<div id="'+v.id+'"><h3></h3><div class="body"></div><div class="url"></div></div>').appendTo(document.body).hide();if(f.fn.bgiframe){c.parent.bgiframe()}c.title=f("h3",c.parent);c.body=f("div.body",c.parent);c.url=f("div.url",c.parent)}function d(v){return f.data(v,"tooltip")}function h(v){if(d(this).delay){u=setTimeout(t,d(this).delay)}else{t()}a=!!d(this).track;f(document.body).bind("mousemove",e);e(v)}function r(){if(f.tooltip.blocked||this==q||(!this.tooltipText&&!d(this).bodyHandler)){return}q=this;s=this.tooltipText;if(d(this).bodyHandler){c.title.hide();var y=d(this).bodyHandler.call(this);if(y.nodeType||y.jquery){c.body.empty().append(y)}else{c.body.html(y)}c.body.show()}else{if(d(this).showBody){var x=s.split(d(this).showBody);c.title.html(x.shift()).show();c.body.empty();for(var w=0,v;(v=x[w]);w++){if(w>0){c.body.append("<br/>")}c.body.append(v)}c.body.hideWhenEmpty()}else{c.title.html(s).show();c.body.hide()}}if(d(this).showURL&&f(this).url()){c.url.html(f(this).url().replace("http://","")).show()}else{c.url.hide()}c.parent.addClass(d(this).extraClass);if(d(this).fixPNG){c.parent.fixPNG()}h.apply(this,arguments)}function t(){u=null;if((!o||!f.fn.bgiframe)&&d(q).fade){if(c.parent.is(":animated")){c.parent.stop().show().fadeTo(d(q).fade,q.tOpacity)}else{c.parent.is(":visible")?c.parent.fadeTo(d(q).fade,q.tOpacity):c.parent.fadeIn(d(q).fade)}}else{c.parent.show()}e()}function e(z){if(f.tooltip.blocked){return}if(z&&z.target.tagName=="OPTION"){return}if(!a&&c.parent.is(":visible")){f(document.body).unbind("mousemove",e)}if(q==null){f(document.body).unbind("mousemove",e);return}c.parent.removeClass("viewport-right").removeClass("viewport-bottom");var B=c.parent[0].offsetLeft;var A=c.parent[0].offsetTop;if(z){B=z.pageX+d(q).left;A=z.pageY+d(q).top;var x="auto";if(d(q).positionLeft){x=f(window).width()-B;B="auto"}c.parent.css({left:B,right:x,top:A})}var w=n(),y=c.parent[0];if(w.x+w.cx<y.offsetLeft+y.offsetWidth){B-=y.offsetWidth+20+d(q).left;c.parent.css({left:B+"px"}).addClass("viewport-right")}if(w.y+w.cy<y.offsetTop+y.offsetHeight){A-=y.offsetHeight+20+d(q).top;c.parent.css({top:A+"px"}).addClass("viewport-bottom")}}function n(){return{x:f(window).scrollLeft(),y:f(window).scrollTop(),cx:f(window).width(),cy:f(window).height()}}function g(x){if(f.tooltip.blocked){return}if(u){clearTimeout(u)}q=null;var w=d(this);function v(){c.parent.removeClass(w.extraClass).hide().css("opacity","")}if((!o||!f.fn.bgiframe)&&w.fade){if(c.parent.is(":animated")){c.parent.stop().fadeTo(w.fade,0,v)}else{c.parent.stop().fadeOut(w.fade,v)}}else{v()}if(d(this).fixPNG){c.parent.unfixPNG()}}})(jQuery);if(!this.JSON){JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z"};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];if(typeof c==="string"){return c}return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(typeof value.length==="number"&&!value.propertyIsEnumerable("length")){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==="string"){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}})();model=new function(){var g=this;this.newUser=false;this.fbFriendsTracked=[];this.sffc=0;this.sfic=0;this.sfsl=0;this.hpar=[];this.lpar=[];this.ars={};var o={};var f=[];var d=[];var a=[];var h=[];var l=[];var c=[];var n=[];this.friendFeedPast=[];this.friendFeedFuture=[];this.friendFbData={};this.fdc={};this.userUpcomingEvents={};this.plansReminders={};this.userPastEvents={};this.addresses={};this.friendAddress=[];this.userTags={};this.userInfo={};this.friendTags={};this.lastLoggedInDay={};this.s={};this.f={};this.fbCacheRetry=true;this.nuxAddFriendsRetry=true;this.init=function(){g.userUpcomingEvents.Count={};g.userUpcomingEvents.Count.Count=0;g.plansReminders.Count=0;g.userPastEvents.Count={};g.userPastEvents.Count.Count=0};this.getMainPageInformation=function(){g.getUserInfo();g.getHomeViewData(true);g.getSidebarData()};this.getBackgroundInfo=function(){g.getAddresses();g.updateFbCache()};this.getUserInfo=function(){var q=getCurrentDate();$.post("model/getUserInfo.php",{ct:q},function(s){var r=JSON.parse(s);if(r){g.lastLoggedInDay=r.ld;g.newUser=r.is;g.userInfo=r.ui;g.sffc=r.fc;g.sfic=r.ic}controller.getUserInfoCallback()})};this.getHomeViewData=function(r){var q=getCurrentDate();$.post("model/getHomeViewData.php",{ct:q,init:r},function(u){var t=JSON.parse(u);if(t){g.userUpcomingEvents.events={};g.userPastEvents.events={};g.plansReminders={};g.plansReminders=t.pr;g.userUpcomingEvents.events=t.ev.future;g.userPastEvents.events=t.ev.past;g.userUpcomingEvents.Count.Count=t.ev.fCount;g.userPastEvents.Count.Count=t.ev.pCount;g.hpar=t.dr.hpar;g.lpar=t.dr.lpar;g.ars={};for(var s=0;s<g.hpar.length;s++){g.ars[g.hpar[s].sid]=g.hpar[s].fid}for(var s=0;s<g.lpar.length;s++){g.ars[g.lpar[s].sid]=g.lpar[s].fid}if(r){g.fdc=(t.fdc)?t.fdc:[];for(var s=0;s<g.fdc.length;s++){g.fdc[s].ps=(g.fdc[s].ps=="")?("images/silhouette.gif"):(g.fdc[s].ps);g.f[g.fdc[s].uid]=g.fdc[s]}g.fdc.sort(sortByName);g.fbFriendsTracked=(t.ft)?t.ft:[];g.sfsl=(t.sl)?t.sl:0;for(var s=0;s<g.fbFriendsTracked.length;s++){g.s[g.fbFriendsTracked[s].fid]=g.fbFriendsTracked[s]}}}controller.getHomeViewDataCallback()})};this.getSidebarData=function(){$.post("model/getSidebarData.php",{},function(r){var q=JSON.parse(r);if(q){g.userTags={};g.friendTags={};g.userTags=q.ut.tgs;g.friendTags=q.ut.bfid;o=q.is;g.sfic=q.ic;controller.getSidebarDataCallback()}})};this.getFbCache=function(){var q=getCurrentDate();$.ajax({type:"POST",url:"model/getFbCache.php",data:{ct:q},success:function(t){var s=JSON.parse(t);g.fdc=s.fdc;for(var r=0;r<g.fdc.length;r++){g.fdc[r].ps=(g.fdc[r].ps=="")?("images/silhouette.gif"):(g.fdc[r].ps);g.f[g.fdc[r].uid]=g.fdc[r]}g.fdc.sort(sortByName);g.fbFriendsTracked=s.ft;g.sffc=g.fbFriendsTracked.length;g.sfsl=(s.sl)?s.sl:0;for(var r=0;r<g.fbFriendsTracked.length;r++){g.s[g.fbFriendsTracked[r].fid]=g.fbFriendsTracked[r]}controller.getFbCacheCallback()},error:function(r,t,s){if(!FB.Facebook.get_sessionState().result){window.location="index.php"}}})};this.updateFbCache=function(){var q=getCurrentDate();$.ajax({type:"POST",url:"model/updateFbCache.php",data:{ct:q},success:function(u){var t=JSON.parse(u);g.fdc=t.fdc;var s=(t.rf=="true")?true:false;for(var r=0;r<g.fdc.length;r++){g.fdc[r].ps=(g.fdc[r].ps=="")?("images/silhouette.gif"):(g.fdc[r].ps);g.f[g.fdc[r].uid]=g.fdc[r]}g.fdc.sort(sortByName);g.fbFriendsTracked=t.ft;g.sffc=g.fbFriendsTracked.length;g.sfsl=(t.sl)?t.sl:0;for(var r=0;r<g.fbFriendsTracked.length;r++){g.s[g.fbFriendsTracked[r].fid]=g.fbFriendsTracked[r]}controller.updateFbCacheCallback(s)},error:function(r,t,s){if(!FB.Facebook.get_sessionState().result){window.location="index.php"}}})};this.getFbStatsCache=function(){$.post("model/getFbStatsCache.php",{},function(){})};this.getAddresses=function(){$.post("model/getAddresses.php",{},function(t){g.addresses=JSON.parse(t);if(g.addresses.count>0){g.friendAddress=[];var q=g.addresses[0].fid;var r=[];for(var s=0;s<g.addresses.count;s++){var u=g.addresses[s].fid;if(u!=q){b={uid:q,addresses:r};g.friendAddress.push(b);r=[];q=u}r.push(g.addresses[s])}b={uid:u,addresses:r};g.friendAddress.push(b)}controller.getAddressesCallback()})};this.getUserTags=function(){$.post("model/getUserTags.php",{},function(q){thisTags=JSON.parse(q);g.userTags={};g.userTags=thisTags.tgs;g.friendTags={};g.friendTags=thisTags.bfid;controller.getUserTagsCallback()})};this.NUXAddFbFriends=function(){$.post("model/nuxAddFbFriends.php",{},function(s){var r=JSON.parse(s);g.fdc=r.fdc;for(var q=0;q<g.fdc.length;q++){g.fdc[q].ps=(g.fdc[q].ps=="")?("images/silhouette.gif"):(g.fdc[q].ps);g.f[g.fdc[q].uid]=g.fdc[q]}g.fdc.sort(sortByName);g.fbFriendsTracked=r.ft||[];g.sffc=g.fbFriendsTracked.length;g.sfsl=(r.sl)?r.sl:0;for(var q=0;q<g.fbFriendsTracked.length;q++){g.s[g.fbFriendsTracked[q].fid]=g.fbFriendsTracked[q]}controller.nuxAddFriendsCallback(g.sffc)})};this.NUXReset=function(){$.post("model/nuxDeactivateUser.php",{},function(q){})};this.getFbFriendData=function(q){$.post("model/getFbFriendData.php",{fid:q},function(r){tmp=JSON.parse(r);g.friendFbData[tmp.fid]=tmp;controller.getFbFriendDataCallback()})};this.getFriendDetailData=function(r){var q=getCurrentDate();$.post("model/getFriendDetailData.php",{fid:r,ct:q},function(s){tmp=JSON.parse(s);g.friendFeedPast=[];g.friendFeedFuture=[];if(tmp.ft!=null){g.friendFeedFuture=tmp.ft}if(tmp.pt!=null){g.friendFeedPast=tmp.pt}controller.getFriendDetailDataCallback()})};this.deleteUserTag=function(q){$.post("model/deleteUserTag.php",{tagId:q},function(s){g.getUserTags();var r="Tag: deletion";g.stats(r,0,0,1,"tag",0,0,0,0,0,0,1,0)})};this.updateUserTag=function(q,r){$.post("model/updateUserTag.php",{tag:q,tagId:r},function(t){g.getUserTags();var s="Tag: renaming";g.stats(s,0,1,0,"tag",0,0,0,0,0,0,1,0)})};this.getInteractionSummary=function(){return o};this.getInteractions=function(){var q={activities:f,notes:d,likes:a,relations:h,wants:l,favors:n,reciprocity:c};return q};this.loadInteractionSummary=function(){$.post("model/getInteractionSummary.php",{},function(r){var q=JSON.parse(r);if(q){o=q.is;g.sfic=q.ic}controller.getInteractionSummaryCallback()})};this.loadInteractionsIdates=function(){$.post("model/getInteractionsIdates.php",{},function(q){f=JSON.parse(q);if(f==null){f=[]}controller.loadInteractionsCallback()})};this.loadInteractionsNotes=function(){$.post("model/getInteractionsNotes.php",{},function(q){d=JSON.parse(q);if(d==null){d=[]}controller.loadInteractionsCallback()})};this.loadInteractionsLikes=function(){$.post("model/getInteractionsLikes.php",{},function(q){a=JSON.parse(q);if(a==null){a=[]}controller.loadInteractionsCallback()})};this.loadInteractionsRelations=function(){$.post("model/getInteractionsRelations.php",{},function(q){h=JSON.parse(q);if(h==null){h=[]}controller.loadInteractionsCallback()})};this.loadInteractionsWants=function(){$.post("model/getInteractionsWants.php",{},function(q){l=JSON.parse(q);if(l==null){l=[]}controller.loadInteractionsCallback()})};this.loadInteractionsFavors=function(){$.post("model/getInteractionsFavors.php",{},function(q){n=JSON.parse(q);if(n==null){n=[]}controller.loadInteractionsCallback()})};this.loadInteractionsReciprocity=function(){$.post("model/getInteractionsFavors.php",{},function(q){n=JSON.parse(q);if(n==null){n=[]}$.post("model/getInteractionsWants.php",{},function(r){l=JSON.parse(r);if(l==null){l=[]}c=n.concat(l);if(c==null){c=[]}controller.loadInteractionsCallback()})})};this.getFriendTracked=function(r){var q=getCurrentDate();$.post("model/getFriendTracked.php",{fid:r,ct:q},function(w){dt=JSON.parse(w);if(dt){var s=dt.ft.lt,u=dt.ft.rtd,v=dt.ft.rd,t=dt.ft.i;p=dt.ft.p;g.updatefbFriendsTrackedCache(r,t,p,v,s,u);g.sfsl=dt.sl}controller.getFriendTrackedCallback(r)})};this.addUpdateFriend=function(t,q,r){var s=getCurrentDate();q=Math.min(Math.max(0,q),5);r=Math.max(0,r);$.post("model/addUpdateFbContact.php",{fid:t,ct:s,i:q,p:r},function(u){g.getFriendTracked(t)})};this.removeFriend=function(q){$.post("model/deleteFbContact.php",{fid:q},function(r){g.getFbCache()})};this.resetAutoReminder=function(r){var q=getCurrentDate();$.post("model/resetAutoReminder.php",{fid:r,ct:q},function(){g.getFriendTracked(r)})};this.suggestionSnooze=function(q){var r=getCurrentDate();var t=JSON.stringify(q);$.post("model/suggestionSnooze.php",{sids:t,ct:r},function(){g.getHomeViewData();e(q)})};this.suggestionClose=function(q){var r=getCurrentDate();var t=JSON.stringify(q);$.post("model/suggestionClose.php",{sids:t,ct:r},function(){g.getHomeViewData();e(q)})};this.suggestionTalked=function(q){var r=getCurrentDate();var t=JSON.stringify(q);$.post("model/suggestionTalked.php",{sids:t,ct:r},function(){g.getHomeViewData();e(q)})};var e=function(r){for(var s=0;s<r.length;s++){var q=r[s];if(g.ars[q]){g.getFriendTracked(g.ars[q])}}};this.deleteInteraction=function(s,q,r){$.post("model/deleteInteraction.php",{fid:s,eid:q},function(u){controller.addUpdateDeleteInteractionCallback(s,r);g.getFriendTracked(s);var t="Interaction: Deleting "+r;g.stats(t,0,0,1,r,0,0,0,0,0,0,0,0)})};this.addUpdateInteraction=function(y){var u=(null!=y.parentId)?y.parentId:-1;var q=(null!=y.id)?y.id:-1;var r=(null!=y.date)?y.date:getCurrentDate();var w=getCurrentDate();var t=(null!=y.originalText)?String(y.originalText):" ";var B=(null!=y.text)?String(y.text):t;var x=(null!=y.type)?y.type:"note";var s=(null!=y.byUser)?y.byUser:true;var A=(null!=y.isNewInteraction)?y.isNewInteraction:true;var z=(null!=y.isDateSpecific)?y.isDateSpecific:false;var v=(null!=y.friendFbId)?y.friendFbId:0;$.post("model/addUpdateInteraction.php",{fid:v,isNewInteraction:A,id:q,parentId:u,type:x,text:B,originalText:t,date:r,lastUpdated:w,isDateSpecific:z,byUser:s},function(E){controller.addUpdateDeleteInteractionCallback(v,x);g.getFriendTracked(v);var D=(A)?("Interaction: Adding "+x):("Interaction: Updating "+x);var F=(A)?1:0;var C=(A)?0:1;g.stats(D,F,C,0,x,0,0,0,0,0,0,0,0)})};this.updatefbFriendsTrackedCache=function(w,s,v,u,q,t){if(!g.s[w]){g.s[w]=new Object();g.fbFriendsTracked.push({fid:w,i:s,p:v,rd:u,lt:q,rtd:t});g.sffc++;g.stats("Adding Friend",0,0,0,0,1,0,0,0,0,0,0,0)}model.s[w].rd=u;model.s[w].lt=q;model.s[w].rtd=t;if(model.s[w].i!=s){model.s[w].i=s;var r="Updating: Importance "+s;g.stats(r,0,0,0,0,0,1,0,0,0,0,0,0)}if(model.s[w].p!=v){model.s[w].p=v;var r="Updating: Period "+v;g.stats(r,0,0,0,0,0,0,1,0,0,0,0,0)}};this.stats=function(A,s,v,q,u,r,C,z,x,B,t,w,y){$.post("model/log.php",{text:A,ina:s,inu:v,ind:q,it:u,fa:r,fi:C,fp:z,cs:x,mv:B,fv:t,tv:w,nv:y},function(){})}};dataTypeView=new function(){var l=this;var n="";this.renderView=function(t,s){n=s;var u=t.id;var r=t.type;if($("#tabsSection").length==0){d();c()}var o=$(".ui-tabs-nav");var q=o.tabs().data("selected.tabs");if(u==q){dataTypeControl.load(r,s)}else{o.tabs("select",u)}};var d=function(){var o='<div class="newsfeed_header clearfix">  <div id="newsfeed_tabs_wrapper">    <div id="tabsSection" class="HomeTabs Tabset_tabset">      <ul>        <li id="notesTab" class="HomeTabs_tab Tabset_selected" style="margin-left: 6px;"><a href="#notesTabData"><div class="icon"><img class="sx_icons sx_note" src="images/sprite_face.png"/></div>Notes</a></li>        <li id="activitiesTab" class="HomeTabs_tab"><a href="#activitiesTabData"><div class="icon"><img class="sx_icons sx_event" src="images/sprite_face.png"/></div>Activities</a></li>        <li id="likesTab" class="HomeTabs_tab"><a href="#likesTabData"><div class="icon"><img class="sx_icons sx_like" src="images/sprite_face.png"/></div>Likes</a></li>        <li id="reciprocityTab" class="HomeTabs_tab"><a href="#reciprocityTabData"><div class="icon"><img class="sx_icons sx_favor" src="images/sprite_face.png"/></div>Reciprocity &amp; Favors</a></li>        <li id="relationshipsTab" class="HomeTabs_tab"><a href="#relationshipsTabData"><div class="icon"><img class="sx_icons sx_relationship" src="images/sprite_face.png"/></div>Relationships</a></li>      </ul>    </div>  </div></div>  <div id="notesTabData">    <div class="fullWidthHeading clearfix"><div class="pillFilter pillFilter_small pillFilter_position"></div></div>		<div class="dataTypeListSection"></div>  </div>  <div id="activitiesTabData">    <div class="fullWidthHeading clearfix"><div class="pillFilter pillFilter_small pillFilter_position"></div></div>		<div class="dataTypeListSection"></div>  </div>  <div id="likesTabData">    <div class="fullWidthHeading clearfix"><div class="pillFilter pillFilter_small pillFilter_position"></div></div>		<div class="dataTypeListSection"></div>  </div>  <div id="reciprocityTabData">    <div class="fullWidthHeading clearfix"><div class="pillFilter pillFilter_small pillFilter_position"></div></div>		<div class="dataTypeListSection"></div>  </div>  <div id="relationshipsTabData">    <div class="fullWidthHeading clearfix"><div class="pillFilter pillFilter_small pillFilter_position"></div></div>		<div class="dataTypeListSection"></div>  </div>';$("#homebody").html(o);$("#tabsSection > ul").tabs()};var c=function(){$(".ui-tabs-nav").bind("tabsselect",function(o,q){$(".HomeTabs_tab").removeClass("Tabset_selected");switch(q.index){case 0:$("#notesTab").addClass("Tabset_selected");dataTypeControl.load("notes");break;case 1:$("#activitiesTab").addClass("Tabset_selected");dataTypeControl.load("activities");break;case 2:$("#likesTab").addClass("Tabset_selected");dataTypeControl.load("likes");break;case 3:$("#reciprocityTab").addClass("Tabset_selected");dataTypeControl.load("reciprocity");break;case 4:$("#relationshipsTab").addClass("Tabset_selected");dataTypeControl.load("relations");break}})};this.renderNotesTab=function(){var o=$("#notesTabData");var t;var r=o.find(".dataTypeListSection");var s='<p>Show:</p><a class="pillFilter_filter Tabset_selected { id : 0 }"><span class="tl"><span class="tr"><span class="br"><span class="bl">All</span></span></span></span></a>';o.find(".pillFilter").html(s);var q=o.find(".pillFilter_filter");q.click(function(){var x=$(this).metadata();var u=x.id;q.removeClass("Tabset_selected");$(this).addClass("Tabset_selected");switch(u){case 0:t=dataTypeControl.filter("notes");n="";break}var A=t.length;r.empty();if(A==0){var v='<div class="upcomingListEmpty">	<div class="listExplanation">You haven\'t written any notes about your friends. Go to the <strong>Friends List</strong>, find a friend and click on them, and start writing notes!</div></div>';r.append(v)}else{for(var w=0;w<A;w++){var B=t[w].id;var z=t[w].type;var y=quickInputView.feedTextDataTypeHtml(t[w]);var v="<div id="+B+' class="homeFeedItem clearfix">  <div class="homeFeedItemIcon"><img class="sx_icons sx_'+z+'" src="images/sprite_face.png"/></div>  <div class="homeFeedItemWrapper">'+y+'</div>  <div class="homeFeedItemEdit"><a>Options</a></div></div>';r.append(v);f(t[w]);e(t[w])}}});q.eq(0).trigger("click")};this.renderActivitiesTab=function(){var q=$("#activitiesTabData");var v;var t=q.find(".dataTypeListSection");var u='<p>Show:</p><a class="pillFilter_filter Tabset_selected {id : 0}"><span class="tl"><span class="tr"><span class="br"><span class="bl">Upcoming</span></span></span></span></a><a class="pillFilter_filter {id : 1}"><span class="tl"><span class="tr"><span class="br"><span class="bl">Past</span></span></span></span></a><a class="pillFilter_filter {id : 2}"><span class="tl"><span class="tr"><span class="br"><span class="bl">Unscheduled (Plans)</span></span></span></span></a><a class="pillFilter_filter {id : 3}"><span class="tl"><span class="tr"><span class="br"><span class="bl">Recently Created</span></span></span></span></a>';q.find(".pillFilter").html(u);var r=q.find(".pillFilter_filter");r.click(function(){var C=$(this).metadata();var w=C.id;r.removeClass("Tabset_selected");$(this).addClass("Tabset_selected");switch(w){case 0:v=dataTypeControl.filter("upcoming");n="upcoming";break;case 1:v=dataTypeControl.filter("past");n="past";break;case 2:v=dataTypeControl.filter("plan");n="plan";break;case 3:v=dataTypeControl.filter("recent");n="recent";break}var A=v.length;t.empty();if(A==0){var E='<div class="upcomingListEmpty">	<div class="listExplanation">Face to face time is the best way to grow and maintain relationships. Here are some examples of activities you might want to set up: 		<ul>			<li><strong>Upcoming Meetings</strong> (e.g. <em>lunch next tuesday</em>)</li>			<li><strong>Plans you haven\'t finalized</strong> (e.g. <em>plan hiking</em>)</li>			<li><strong>Remembering Romance</strong> (e.g. <em>date last week went to museum and got coffee</em>)</li>		</ul>	Stay tuned for updates to this view!	</div></div>';t.append(E)}else{for(var z=0;z<A;z++){var x=v[z].id;var B=v[z].type;var y=v[z].prettyDate;var D=quickInputView.feedTextDataTypeHtml(v[z]);var E="<div id="+x+' class="dateFirstFeedItem clearfix">	<div class="dateFirstFeedItemDate">'+y+'</div>	<div class="dateFirstFeedItemIcon"><img class="sx_icons sx_'+B+'" src="images/sprite_face.png"/></div>	<div class="dateFirstFeedItemWrapper">'+D+'</div>	<div class="homeFeedItemEdit"><a>Options</a></div></div>';t.append(E);f(v[z]);e(v[z])}}});var o={"":0,upcoming:0,past:1,plan:2,recent:3};var s=0;if(n!=null){s=o[n]}if(!s){s=0}r.eq(s).trigger("click")};this.renderLikesTab=function(o){var o=$("#likesTabData");var t;var r=o.find(".dataTypeListSection");var s='<p>Show:</p><a class="pillFilter_filter Tabset_selected { id : 0 }"><span class="tl"><span class="tr"><span class="br"><span class="bl">Likes</span></span></span></span></a><a class="pillFilter_filter { id : 1 }"><span class="tl"><span class="tr"><span class="br"><span class="bl">Dislikes</span></span></span></span></a>';o.find(".pillFilter").html(s);var q=o.find(".pillFilter_filter");q.click(function(){var x=$(this).metadata();var u=x.id;q.removeClass("Tabset_selected");$(this).addClass("Tabset_selected");switch(u){case 0:t=dataTypeControl.filter("likes");n="likes";break;case 1:t=dataTypeControl.filter("dislikes");n="dislikes";break}var A=t.length;r.empty();if(A==0){var v='<div class="upcomingListEmpty">	<div class="listExplanation">It\'s always good to remember what you friends like and dislike. Here are some things you might want to remember: 		<ul>			<li><strong>Food</strong> (e.g. <em>likes sushi</em>)</li>			<li><strong>Movies</strong> (e.g. <em>dislikes horror movies</em>)</li>			<li><strong>Sports &amp; Activities</strong> (e.g. <em>likes surfing</em>)</li>			<li><strong>Music</strong> (e.g. <em>dislikes techno</em>)</li>			<li><strong>Hobbies</strong> (e.g. <em>likes photography</em>)</li>			<li><strong>People</strong> (e.g. <em>dislikes John D and his friends</em>)</li>			<li><strong>Random Factoids</strong> (e.g. <em>likes sea breeze</em>)</li>		</ul>	</div></div>';r.append(v)}else{for(var w=0;w<A;w++){var B=t[w].id;var z=t[w].type;var y=quickInputView.feedTextDataTypeHtml(t[w]);var v="<div id="+B+' class="homeFeedItem clearfix">  <div class="homeFeedItemIcon"><img class="sx_icons sx_'+z+'" src="images/sprite_face.png"/></div>  <div class="homeFeedItemWrapper">'+y+'</div>  <div class="homeFeedItemEdit"><a>Options</a></div></div>';r.append(v);f(t[w]);e(t[w])}}});q.eq(0).trigger("click")};this.renderReciprocityTab=function(q){var q=$("#reciprocityTabData");var v;var t=q.find(".dataTypeListSection");var u='<p>Show:</p><a class="pillFilter_filter Tabset_selected { id : 0 }"><span class="tl"><span class="tr"><span class="br"><span class="bl">All</span></span></span></span></a><a class="pillFilter_filter { id : 1 }"><span class="tl"><span class="tr"><span class="br"><span class="bl">Favors Owed</span></span></span></span></a><a class="pillFilter_filter { id : 2 }"><span class="tl"><span class="tr"><span class="br"><span class="bl">Favors You Owe</span></span></span></span></a><a class="pillFilter_filter { id : 3 }"><span class="tl"><span class="tr"><span class="br"><span class="bl">What Friends Want</span></span></span></span></a>';q.find(".pillFilter").html(u);var r=q.find(".pillFilter_filter");r.click(function(){var C=$(this).metadata();var w=C.id;r.removeClass("Tabset_selected");$(this).addClass("Tabset_selected");switch(w){case 0:v=dataTypeControl.filter();n="";break;case 1:v=dataTypeControl.filter("favorin");n="favorin";break;case 2:v=dataTypeControl.filter("favorout");n="favorout";break;case 3:v=dataTypeControl.filter("wants");n="wants";break}var z=v.length;t.empty();if(z==0){var E='<div class="upcomingListEmpty">	<div class="listExplanation">Keeping track of who\'s helped you or ways you can help others is important. Here are some examples of reciprocity you might want to remember: 		<ul>			<li><strong>Money in</strong> (e.g. <em>owe 20</em> = you owe them $20)</li>			<li><strong>Money out</strong> (e.g. <em>owes 20</em> = they owe you $20)</li>			<li><strong>General favors</strong> (e.g. <em>owe for help on project</em>)</li>			<li><strong>Desires</strong> (e.g. <em>wants DVD player</em>)</li>		</ul>	Stay tuned for updates to this view, we\'ve got many great things in store for you to keep on top of reciprocity!	</div></div>';t.append(E)}else{for(var y=0;y<z;y++){var x=v[y].id;var A=v[y].type;var D=quickInputView.feedTextDataTypeHtml(v[y]);var B=v[y].type;if(A=="favor"){if(v[y].bu==0){B="favorbf"}else{if(v[y].bu==1){B="favorbu"}}}var E="<div id="+x+' class="homeFeedItem clearfix">  <div class="homeFeedItemIcon"><img class="sx_icons sx_'+B+'" src="images/sprite_face.png"/></div>  <div class="homeFeedItemWrapper">'+D+'</div>  <div class="homeFeedItemEdit"><a>Options</a></div></div>';t.append(E);f(v[y]);e(v[y])}}});var o={"":0,favorin:1,favorout:2,wants:3};var s=0;if(n!=null){s=o[n]}if(!s){s=0}r.eq(s).trigger("click")};this.renderRelationshipsTab=function(o){var o=$("#relationshipsTabData");var t;var r=o.find(".dataTypeListSection");var s='<p>Show:</p><a class="pillFilter_filter Tabset_selected { id : 0 }"><span class="tl"><span class="tr"><span class="br"><span class="bl">All</span></span></span></span></a>';o.find(".pillFilter").html(s);var q=o.find(".pillFilter_filter");q.click(function(){var x=$(this).metadata();var u=x.id;q.removeClass("Tabset_selected");$(this).addClass("Tabset_selected");switch(u){case 0:t=dataTypeControl.filter();n="";break}var z=t.length;r.empty();if(z==0){var v='<div class="upcomingListEmpty">	<div class="listExplanation">Keeping on top of who your friends know is important. Here are some examples of relationships you might want to remember: 		<ul>			<li><strong>Family</strong> (e.g. <em>father gordon</em>)</li>			<li><strong>Friends</strong> (e.g. <em>bff julie</em>)</li>			<li><strong>Kids</strong> (e.g. <em>son mikey 6 years old</em>)</li>			<li><strong>Significant Others</strong> (e.g. <em>girlfriend emily</em>)</li>		</ul>	</div></div>';r.append(v)}else{for(var w=0;w<z;w++){var A=t[w].id;var y=quickInputView.feedTextDataTypeHtml(t[w]);var v="<div id="+A+' class="homeFeedItem clearfix">  <div class="homeFeedItemIcon"><img class="sx_icons sx_personed" src="images/sprite_face.png"/></div>  <div class="homeFeedItemWrapper">'+y+'</div>  <div class="homeFeedItemEdit"><a>Options</a></div></div>';r.append(v);f(t[w]);e(t[w])}}});q.eq(0).trigger("click")};var f=function(o){var q=o.uid;var r=o.id;$("#"+r+" .name").click(function(){homeControl.friendClick(q)})};var e=function(o){var t=o.id;var q=o.uid;var s=o.iid;var r=o.type;if(r!="birthday"){$("#"+t+"").hover(function(){$(this).children(".homeFeedItemEdit").addClass("hoverCraft")},function(){$(this).children(".homeFeedItemEdit").removeClass("hoverCraft")})}if(r=="birthday"){}else{$("#"+t+"").children(".homeFeedItemEdit").children("a").click(function(){$(this).parent().after(quickInputView.renderFlyoutMenu());$(this).parent().parent().children(".flyout_menu_18").hover(function(){$(this).stop().fadeTo(200,"1.0");$(this).find(".delete").click(function(){$("#"+t+"").fadeOut(500);$(this).trigger("mouseleave");homeControl.deleteFeed(o)});$(this).find(".edit").click(function(){quickInputView.quickInputEventHandlers(o,false,"dataType");$("#"+t+"").find(".flyout_menu_18").remove();$("#"+t+"").children(".homeFeedItemEdit").removeClass("hoverCraft")})},function(){var u=$(this);$(this).fadeOut(500,function(){u.remove()})})})}};var a=function(o){$("#friend"+o+" .friendListName a").click(function(){controlFriendList.friendClick(o)})};var g=function(){$("#listHeaderName").removeClass("sortUp").removeClass("sortDown");$("#listHeaderFullitem").removeClass("sortUp").removeClass("sortDown")};var h=function(){$("#listHeaderName").toggle(function(){l.removeSortClasses();$(this).addClass("sortDown");controlFriendList.sortName(-1)},function(){l.removeSortClasses();$(this).addClass("sortUp");controlFriendList.sortName(1)});$("#listHeaderFullitem").toggle(function(){l.removeSortClasses();$(this).addClass("sortDown");controlFriendList.sortReminder(-1)},function(){l.removeSortClasses();$(this).addClass("sortUp");controlFriendList.sortReminder(1)})}};footerView=new function(){var a=this;this.createFooter=function(){a.renderFooter();a.eventHandlers()};a.renderFooter=function(){var c='	<div class="pagefooter_topborder clearfix">		<div class="copyright_and_location clearfix">			<div class="copyright"><span title="Non-Trimmed">Socialfly © 2008-2009</span></div>		</div>		<div class="pagefooter_links">			<ul class="pagefooter_left_links">				<li><a rel="nofollow" target="_new" href="http://www.facebook.com/apps/application.php?id=37760222007">About</a></li>				<li><a rel="nofollow" target="_new" href="http://social-fly.com/blog/">Blog</a></li>				<li><a rel="nofollow" target="_new" href="http://www.twitter.com/socialfly/">Twitter</a></li>				<li><a rel="nofollow" target="_new" href="http://social-fly.com/blog/jobs">Jobs</a></li>			</ul>			<ul class="pagefooter_right_links">				<li>					<strong>					<a>Give us Feedback</a>					</strong>				</li>			</ul>		</div>';$("#pagefootersf").html(c)};this.feedbackHtml=function(){var c=FB.Facebook.get_sessionState().result.uid;var d='<div id="comments">	<form class="form" id="commentForm" action="model/userFeedback.php" method="post">		<img width="30" src="images/socialfly.jpg"/>		<span class="sf header"><em>We appreciate your feedback!</em></span>		<br><textarea class="textarea" name="feedback" wrap="hard"></textarea><br>		If you are submitting a bug, please add your browser version. Thanks!		<input type="hidden" name="fb_sig_user" value="'+c+'"/>		<input class="submit" type="submit" value="Submit Comment" />	</form></div>';return d};this.eventHandlers=function(){$("#pagefootersf .pagefooter_right_links a").click(function(){$.facebox(a.feedbackHtml());$("#facebox #commentForm").ajaxForm(function(){$.facebox('<h2 style="text-align:center">Thank you for your comments!</h2>');setTimeout("$.facebox.close()",1500)})})}};friendDetailView=new function(){var l=this;var f=0;this.createHtml=function(s,r){f=s.uid;var q=e(s,r);var o=d(s);var n=q+o;$.facebox(n);quickInputView.createIconHelp("note");l.createFriendTags(s);l.createLastTalked(s);c(s);quickInputView.mainQuickInputEventHandlers(s.uid)};this.createInteractions=function(w,C){$("#futureFeed").empty();$("#pastFeed").empty();var x="<p>Nothing coming up. Try typing '<strong>plan</strong>' or '<strong>event</strong>' if you want to do something with them!</p>";var D="<p>You have no past feed items. Write some notes, add something they like!</p>";var z=w.length;var o=C.length;for(var u=0;u<z;u++){var v="<div id="+w[u].id+' class="feedItem">	<div class="feedItemIcon"><img class="'+w[u].iconStr+'" src="images/sprite_face.png"/></div>	<div class="feedItemWrapper">	'+quickInputView.feedTextDetailHtml(w[u])+'	</div>	<div class="feedItemEdit"><a>Options</a></div></div>';$("#futureFeed").append(v);g(w[u]);h(w[u]);var B=w[u].childFeed.length;for(var t=0;t<B;t++){var v="<div id="+w[u].childFeed[t].id+' class="feedItem child">	<div class="feedItemIcon"><img class="'+w[u].childFeed[t].iconStr+'" src="images/sprite_face.png"/></div>	<div class="feedItemWrapper child">	'+quickInputView.feedTextChildHtml(w[u].childFeed[t])+'	</div>	<div class="feedItemEdit"><a>Options</a></div></div>';$("#futureFeed").append(v);h(w[u].childFeed[t])}}if(z==0){$("#futureFeed").html(x)}for(var u=0;u<o;u++){var y=C[u].type;var A=getDateDescription(C[u].date);if(y=="plan"){A="~"+A}if(y!="event"){var s="sx_icons sx_"+y}else{var r=new Date((C[u].date||"").replace(/-/g,"/").replace(/[TZ]/g," "));var s="sx_dateicons sx_"+r.getDate()}var v='<div id="popupFeedItemId_'+C[u].iid+'" class="feedItem">	<div class="feedItemIcon"><img class="'+C[u].iconStr+'" src="images/sprite_face.png"/></div>	<div class="feedItemWrapper">	'+quickInputView.feedTextDetailHtml(C[u])+'	</div>	<div class="feedItemEdit"><a>Options</a></div></div>';$("#pastFeed").append(v);g(C[u]);h(C[u]);var n=C[u].childFeed.length;for(var t=0;t<n;t++){var q=C[u].iid+"-"+C[u].childFeed[t].iid;var v='<div id="popupFeedItemId_'+q+'" class="feedItem child">	<div class="feedItemIcon"><img class="'+C[u].childFeed[t].iconStr+'" src="images/sprite_face.png"/></div>	<div class="feedItemWrapper child">	'+quickInputView.feedTextChildHtml(C[u].childFeed[t])+'	</div>	<div class="feedItemEdit"><a>Options</a></div></div>';$("#pastFeed").append(v);h(C[u].childFeed[t])}}if(o==0){$("#pastFeed").html(D)}};var e=function(r,n){var q="";if(n.step1||n.step2||n.newUser){if(n.step2){q='<div id="step2" class="friendDetailViewTipTop active"><p><strong>Next Step: Taking Notes </strong> &nbsp; All notes in Socialfly are private. Try typing some notes, such as things your friend likes, some plans you want to make with them, or anything else. </p></div>'}else{q='<div id="step2" class="friendDetailViewTipTop inactive"><p><strong>Notes</strong> &nbsp; Great! It looks like you\'ve got the hang of notetaking.</p><p>Try exploring other parts of Socialfly, like the Friend Map or Tag Editor.</p></div>'}}var o='<div id="friendPopup" class="clearfix">'+q+'	<div class="leftColumn">		<img id="popupPic" src="'+r.picUrl+'" width="100px">		<ul>			<li><div class="starPadder"><div class="star {id:1}"></div><div class="star {id:2}"></div><div class="star {id:3}"></div><div class="star {id:4}"></div><div class="star {id:5}"></div></div></li>			<li><div class="sliderPadder"><div class="sliderLeft" style="margin-left:20px;"><div id="slider000" class="ui-slider-1"><div class="ui-slider-handle"></div></div></div><div class="sliderRight" style="width:90px;">Reminder Off</div></div></li>			<li id="profileLink"><a>Go to Profile</a></li>			<li id="messageLink"><a>Send Message</a></li>		</ul>		<ul id="detailBday"></ul>		<ul id="detailTags"></ul>	</div>';return o};this.createLastTalked=function(r){var o=r.uid;var n=dayDiff(new Date(),new Date(model.s[o].lt));var q="";if(isNaN(n)){q="No record of last talked"}else{if(n==0){q="You last talked today"}else{if(n==-1){q="You last talked yesterday"}else{q="You last talked "+n*(-1)+" days ago"}}}$("#lastTalkedHolder").empty().html(q)};this.createFriendTags=function(o){var r=o.tags.length;var q="";for(var n=0;n<r;n++){q+='<li><div class="icon"><img class="sx_icons sx_tag" src="images/sprite_face.png"/></div><a>';q+=o.tags[n];q+="</a></li>"}if(r==0){q='<li><div class="icon"><img class="sx_icons sx_tag" src="images/sprite_face.png"/></div>No tags</li>'}$("#detailTags").empty().html(q)};var d=function(o){var n='	<div class="rightColumn">		<div class="friendHeader clearfix">			<h1>'+o.name+'</h1>			<h4>				<div class="talkedHolder">					<div class="icon"><img class="sx_icons sx_talked" src="images/sprite_face.png"/></div>					<div id="lastTalkedHolder"></div>				</div>			</h4>		</div>'+quickInputView.friendDetailViewComposerHtml()+'		<div class="header clearfix">			<h3>Our Future</h3>		</div>		<div id=futureFeed></div>		<div class="header clearfix">			<h3>Our Past</h3>		</div>		<div id=pastFeed></div>	</div></div>';return n};this.updateFbData=function(r){var o=r.bday;var n=r.picB;if(n.length>1){$("#friendPopup #popupPic").attr("src",n)}if(o!="na"){var q='<li><div class="icon" style="margin:-2px 0px 0px 0px"><img class="sx_icons sx_birthday" src="images/sprite_face.png"/></div><span>'+o+"</span></li>";$("#friendPopup #detailBday").html(q)}};var a=function(){var n='		<div class="feedItem child">			<div class="feedItemIcon"><img class="sx_icons sx_note" src="images/sprite_face.png"/></div>			<div class="feedItemWrapper child">				<span class="feedItemText">Had sooooo much fun, we danced This is a two line note feed that is very very long and involved in itself.</span>				<span class="feedItemDate">on Saturday</span>			</div>			<div class="feedItemEdit"><a href="#">Edit</a></div>		</div>		<div class="noteChild">			<div id="friendDetailViewComposer" class="composer" style="clear:both;">				<div id="canvas_container" class="canvas_container"><div id="composer_canvas" class="composer_rounded"><div class="composer_rounded composer_rounded_tr">					<div class="composer_rounded composer_rounded_bl"><div class="composer_rounded composer_rounded_br">						<div class="composer_well"><div class="well_content">							<div class="status_composer"><div class="status_composer_inner">								<table cellspacing="0" cellpadding="0" border="0"><tbody>									<tr>										<td class="show_placeholder">											<div class="status_field status_placeholder">												<div class="input_wrapper"><input class="inputtext status_placeholder_input DOMControl_placeholder" type="text" value="" name="" placeholder=""/></div>											</div>										</td>										<td>											<div class="status_button"><input class="inputsubmit post_button" type="submit" value="DataTypeHere" name=""/></div>										</td>									</tr>								</tbody></table>							</div></div>						</div></div>					</div></div>				</div></div></div>			</div>		</div>		<div class="feedItem">			<div class="feedItemIcon"><img class="sx_icons sx_plan" src="images/sprite_face.png"/></div>			<div class="feedItemWrapper">				<span class="feedItemText">Plan coffee (<strong>~11/4</strong>)</span>				<span class="feedItemDate">on Thursday</span>				<a> write a note</a>			</div>			<div class="feedItemEdit"><a href="#">Edit</a></div>		</div>		<div class="feedItem">			<div class="feedItemIcon"><img class="sx_icons sx_like" src="images/sprite_face.png"/></div>			<div class="feedItemWrapper">				<span class="feedItemText">Likes lots of things Likes lots of things Likes lots of things Likes lots of things Likes lots of things Likes lots of things Likes lots of things Likes lots of things Likes lots of things Likes lots of things Likes lots of things</span>				<span class="feedItemDate">on Monday</span>			</div>			<div class="feedItemEdit"><a href="#">Edit</a></div>		</div>'};var c=function(o){$("#friendPopup #profileLink").click(function(){window.open(o.profileUrl)});$("#friendPopup #messageLink").click(function(){window.open(o.composeMessageUrl)});for(var n=0;n<o.rating;n++){$("#friendPopup .starPadder .star:eq("+n+")").addClass("star_click")}$("#friendPopup .starPadder .star").click(function(){var r=$(this).parent().children(".star");var t=$(this).metadata();r.removeClass("star_click");for(var s=0;s<t.id;s++){r.eq(s).addClass("star_click")}friendDetailControl.updateFriendListControls(t.id,null)}).hover(function(){var r=$(this).parent().children(".star");var t=$(this).metadata();for(var s=0;s<t.id;s++){r.eq(s).addClass("star_hover")}},function(){var r=$(this).parent().children(".star");r.removeClass("star_hover")});var q=controlFriendList.days2SliderValue(o.period);$("#slider000").slider({startValue:q,max:10,steps:10,slide:function(s,r){$(this).parent().siblings(".sliderRight").text(controlFriendList.sliderValue2TimeScale(r.value))},change:function(s,r){friendDetailControl.updateFriendListControls(null,controlFriendList.sliderValue2Days(r.value))}}).parent().siblings(".sliderRight").text(controlFriendList.sliderValue2TimeScale(q))};var g=function(n){var o=n.id;$("#"+o+" .homeFeedItemText .note").click(function(){quickInputView.quickInputEventHandlers(n,true,"friendDetail")})};var h=function(n){var s=n.id;var o=n.uid;var r=n.iid;var q=n.type;if(q!="birthday"){$("#"+s+"").hover(function(){$(this).children(".feedItemEdit").addClass("hoverCraft")},function(){$(this).children(".feedItemEdit").removeClass("hoverCraft")})}if(q=="rPlan"){$("#"+s+"").children(".homeFeedItemEdit").children("a").click(function(){$(this).parent().after(quickInputView.renderReminderFlyoutMenu());$(this).parent().parent().children(".flyout_menu_18").hover(function(){$(this).stop().fadeTo(200,"1.0");$(this).find(".snooze").click(function(){homeControl.snoozeSuggestionFeed(n)});$(this).find(".delete").click(function(){$("#"+s+"").fadeOut(1000);homeControl.removeSuggestionFeed(n)})},function(){var t=$(this);$(this).fadeOut(500,function(){t.remove()})})})}else{if(q=="birthday"){}else{$("#"+s+"").children(".feedItemEdit").children("a").click(function(){$(this).parent().after(quickInputView.renderFriendDetailFlyoutMenu());$(this).parent().parent().children(".flyout_menu_18").hover(function(){$(this).stop().fadeTo(200,"1.0");$(this).find(".delete").click(function(){$(this).trigger("mouseleave");$("#"+s+"").fadeOut(1000);homeControl.deleteFeed(n)});$(this).find(".edit").click(function(){quickInputView.quickInputEventHandlers(n,false,"friendDetail");$("#"+s+"").find(".flyout_menu_18").remove();$("#"+s+"").children(".homeFeedItemEdit").removeClass("hoverCraft")})},function(){var t=$(this);$(this).fadeOut(500,function(){t.remove()})})})}}}};friendListView=new function(){var a=this;this.friend=[];this.renderHeaders=function(c,d){$("#homebody").empty();a.createHeaderHtml(c,d);a.sortHandlers()};this.renderHtml=function(c){a.friend=c;a.createListHtml(c)};this.createHeaderHtml=function(e,c){var d='	<div id="friendListNux"></div>	<div id="friendListFeedback" class="fbbluebox clearfix"></div>	<div id="friendListDivider" class="clearfix">		<h2>Your Friends ('+e+')</h2>		<div class="multipage"></div>	</div>	<div id="friendListHeader" class="clearfix">		<div id="listHeaderName" class="sortUp"><a>Name</a></div>		<div id="listHeaderReminder" class=""><a>Reminders delivered...</a></div>		<div id="listHeaderStars" class=""><a>Priority</a></div>		<div id="listHeaderNext" class=""><a>Next Notice</a></div>		<div id="listHeaderLast" class=""><a>Last Talk</a></div>	</div>	<div id="friendListItems"></div>';$("#homebody").append(d);if(c.step1||c.step2){a.renderNux(c)}$("#nuxImportFriendsButton").click(function(){controlFriendList.loadNuxFriends();$("#nuxImportFriends").html('<p>Loading contacts... <img src="images/indicator_blue_small.gif" border="0"></p>')})};this.nuxAddFriendsCallback=function(c){$("#listHeaderStars").trigger("click");var d="<p>Done loading "+c+" contacts.<br>";$("#nuxImportFriends").html(d);$(".friendListViewTip.inactive").removeClass("inactive").addClass("active")};this.createListHtml=function(g){$("#friendListItems").empty();var f=g.length;for(var d=0;d<f;d++){if(d%2){topy='<div id="friend'+d+'" class="friendListItem clearfix">'}else{topy='<div id="friend'+d+'" class="friendListItem clearfix" style="background-color:#eee;">'}if(g[d].rtd==0){var e="style = color:#3B5998> Today"}else{if(g[d].rtd==1){var e="style = color:#3B5998> Tomorrow"}else{if(g[d].rtd>1){var e="style = color:#3B5998> ~"+g[d].rtd+" days"}else{if(g[d].rtd<0){var e="style = color:#FF0000> <em>~"+g[d].rtd*(-1)+" days ago</em>"}else{var e="style = color:#777777> never"}}}}if(g[d].lt==0){var c="style = color:#777777> Today"}else{if(g[d].lt==-1){var c="style = color:#777777> Yesterday"}else{if(g[d].lt<-1){var c="style = color:#3B5998>"+g[d].lt*(-1)+" days ago"}else{var c=""}}}html='	<div class="friendListName"><a>'+g[d].name+'</a></div>	<div class="friendListReminder"><div class="sliderLeft"><div class="ui-slider-1"><div class="ui-slider-handle"></div></div></div><div class="sliderRight">Off</div></div>	<div class="friendListStars"><div class="star {id:1}"></div><div class="star {id:2}"></div><div class="star {id:3}"></div><div class="star {id:4}"></div><div class="star {id:5}"></div></div>	<div class="friendListNext"'+e+'</div>	<div class="friendListLast"'+c+"</div></div>";$("#friendListItems").append(topy+html);a.setEventHandler(d)}$("#friendListItems").append('<div id="friendListTipBottom" class="fbgreybox clearfix"><strong>Did you know?</strong> &nbsp;&nbsp; You can sort this list by clicking on the top columns (such as \'Name\')</div>')};this.renderNux=function(e){var c="";if(e.importButton){c='<p id="nuxImportFriends"><input type="button" id="nuxImportFriendsButton" value="Let us guess"/> (based on friends that are tagged in your photos)</a></p>'}var d="";if(e.step1){d='<div class="friendListViewTip active"><h3>Step 1: Find at least 10 friends to keep up with</h3>'+c+"<p>Drag sliders to set how often you want to get reminded to keep in touch.</p><p>Priority stars are used if you have too many outstanding reminders.</p></div>"}else{d='<div class="friendListViewTip inactive"><h3>Step 1: Finding important friends</h3><p>Drag sliders to set how often you want to get reminded to keep in touch.</p><p>Priority stars are used if you have too many outstanding reminders.</p></div>'}var g="";if(e.step2&&!e.step1){g='<div class="friendListViewTip active"><h3>Step 2: Select a friend and add notes</h3><p>Click on any friend below to bring up their private feed. From there you can add private notes, events, and more.</p></div>'}else{g='<div class="friendListViewTip inactive"><h3>Step 2: Adding notes to friends</h3><p>After you find friends to keep up with, we\'ll show you how to add private notes to them.</p></div>'}var f=d+g;$("#friendListNux").html(f)};this.renderFeedback=function(c,e){var d="<p><strong>"+c+"</strong> reminders active. On average, you will receive about <strong>"+e+'</strong> reminders per day.</p><a class="example">Tell me more</a></div>';$("#friendListFeedback").html(d)};this.setEventHandler=function(f){$("#friend"+f+" .star").click(function(){var g=$(this).parent().children(".star");var l=$(this).metadata();g.removeClass("star_click");for(var h=0;h<l.id;h++){g.eq(h).addClass("star_click")}controlFriendList.clickRating(f,l.id)}).hover(function(){var g=$(this).parent().children(".star");var l=$(this).metadata();for(var h=0;h<l.id;h++){g.eq(h).addClass("star_hover")}},function(){var g=$(this).parent().children(".star");g.removeClass("star_hover")});$("#friend"+f+" a").click(function(){controlFriendList.friendClick(f)});var e=controlFriendList.days2SliderValue(a.friend[f].period);$("#friend"+f+" .ui-slider-1").slider({startValue:e,max:11,steps:11,slide:function(h,g){$(this).parent().siblings(".sliderRight").text(controlFriendList.sliderValue2TimeScale(g.value));var l=controlFriendList.sliderValue2Days(g.value);if(l==0){$(this).parent().parent().siblings(".friendListNext").html("never").css({color:"#777777"})}else{$(this).parent().parent().siblings(".friendListNext").html("~"+l+" days").css({color:"#3B5998"})}},change:function(h,g){controlFriendList.slideSlider(f,controlFriendList.sliderValue2Days(g.value))}}).parent().siblings(".sliderRight").text(controlFriendList.sliderValue2TimeScale(e));var d=a.friend[f].rating;for(var c=0;c<d;c++){$("#friend"+f+" .star:eq("+c+")").addClass("star_click")}};this.updateControls=function(g){var c=a.friend[g].rating;if(a.getCurrentRating(g)!=c){var f=c-1;$("#friend"+g+" .star:eq("+f+")").trigger("click")}var e=a.friend[g].period;if(a.getCurrentPeriod(g)!=e){var d=controlFriendList.days2SliderValue(e);$("#friend"+g+" .ui-slider-1").slider("moveTo",d)}};this.getCurrentRating=function(d){var c=$("#friend"+d+" .star_click").length;return c};this.getCurrentPeriod=function(e){var c=$("#friend"+e+" .ui-slider-1").slider("value");var d=controlFriendList.sliderValue2Days(c);return d};this.removeSortClasses=function(){$("#listHeaderName").removeClass("sortUp").removeClass("sortDown");$("#listHeaderReminder").removeClass("sortUp").removeClass("sortDown");$("#listHeaderStars").removeClass("sortUp").removeClass("sortDown");$("#listHeaderNext").removeClass("sortUp").removeClass("sortDown");$("#listHeaderLast").removeClass("sortUp").removeClass("sortDown")};this.sortHandlers=function(){$("#listHeaderName").toggle(function(){a.removeSortClasses();$(this).addClass("sortDown");controlFriendList.sortName(-1)},function(){a.removeSortClasses();$(this).addClass("sortUp");controlFriendList.sortName(1)});$("#listHeaderReminder").toggle(function(){a.removeSortClasses();$(this).addClass("sortDown");controlFriendList.sortReminder(-1)},function(){a.removeSortClasses();$(this).addClass("sortUp");controlFriendList.sortReminder(1)});$("#listHeaderStars").toggle(function(){a.removeSortClasses();$(this).addClass("sortDown");controlFriendList.sortRating(-1)},function(){a.removeSortClasses();$(this).addClass("sortUp");controlFriendList.sortRating(1)});$("#listHeaderNext").toggle(function(){a.removeSortClasses();$(this).addClass("sortDown");controlFriendList.sortRtd(-1)},function(){a.removeSortClasses();$(this).addClass("sortUp");controlFriendList.sortRtd(1)});$("#listHeaderLast").toggle(function(){a.removeSortClasses();$(this).addClass("sortDown");controlFriendList.sortLt(-1)},function(){a.removeSortClasses();$(this).addClass("sortUp");controlFriendList.sortLt(1)})}};headerView=new function(){var a=this;this.renderStandAloneHeader=function(){var c='<h2><a><img src="http://social-fly.com/images/about/socialfly.png" width="175" height="50" border="0" /></a></h2><h4><div class="currentlocation">Logged In</div></h4><ul>	<li><a href="../">Home</a></li>	<li><a href="../about.html">About</a></li>	<li><a href="../testimonials.html">Testimonials</a></li>	<li><a href="../blog/">Blog</a></li>	<li><a id="headerLogoutLink" class="connect"><img src="../images/fblogout.gif" width="91" height="27" border="0" /></a></li></ul>';$("#productheader").empty().append(c);$("#productheader .saCurrentlocation").click(function(){controller.viewHandler.showHome()})};this.renderStandAlonePresence=function(e,d,f){var c='<div class="presence" id="fbc_profile">	<div class="fbc_profile_pic"><img src="'+f+'"></div>	'+e+'  <div class="lineabove">Last login: '+d+"</div></div>";$("#presenceSection").html(c);$("#headerLogoutLink").click(function(){headerControl.logout()})};this.refreshStandAloneHeader=function(d){if(d.length>0){var c="Home > <strong>"+d+"</strong>"}else{var c="Home"}$("#productheader .saCurrentlocation").html(c)};this.renderIframeHeader=function(){var c='<h2><a href="../main/"><img src="http://social-fly.com/images/about/socialfly.png" width="175" height="50" border="0" /></a></h2><h4><div class="currentlocation"><a href="../main/">Logged In</a></div></h4><ul>	<li><a href="../">Home</a></li>	<li><a href="../about.html">About</a></li>	<li><a href="../testimonials.html">Testimonials</a></li>	<li><a href="../blog/">Blog</a></li>	<li><a id="headerLogoutLink" class="connect"><img src="../images/fblogout.gif" width="91" height="27" border="0" /></a></li></ul>';$("#productheader").empty().append(c);$("#productheader img").click(function(){controller.viewHandler.showHome()})};this.renderIframePresence=function(e,d){var c='<div class="presence" id="fbc_profile">	'+e+'  <div class="lineabove">Last login: '+d+"</div></div>";$("#presenceSection").html(c)}};homeView=new function(){var f=this;var e=0;this.createHomeView=function(h,o,q,n,l){$("#homebody").empty();f.renderStructure();if(l.step1==true||l.step2==true||l.newUser==true){a(l)}f.renderSuggestions(h,l);if(!l.active&&o.length>0){f.renderSuggestionsMore(o)}f.renderUpcomingWeek(q,l);f.renderHistory(n,l)};this.updateFeedSuggestion=function(h,n,o,l){f.renderSuggestions(h);f.renderSuggestionsMore(n);f.renderUpcomingWeek(o);f.renderHistory(l)};this.renderStructure=function(){var q='<div id="homeNux" class="clearfix"></div>';var o='<div id="autoNotify" class="clearfix"></div>';var l='<div id="homeKeepup" class="clearfix"></div>';var r='<div id="homeUpcomingWeek" class="clearfix"></div>';var n='<div id="homeSocialHistory" class="clearfix"></div>';var h=q+o+l+r+n;$("#homebody").append(h)};var a=function(l){$("#homeNux").addClass("nuxActive");var h="<h1>Welcome to Socialfly</h1><div class=\"welcome\">	<p>Socialfly gives you the tools to remember and keep in touch with your friends.</p>	<p>It'll only take a few minutes to set up your account. Let's get started --</p></div>";var q="";if(l.step1){q='<div id="step1" class="homeViewTip active"><h3>Step 1: Go to the Friends List</h3><p>First, we need your help identifying the people you want to keep in touch with. </p></div>'}else{q='<div id="step1" class="homeViewTip inactive"><h3>Step 1: Finding important friends</h3><p class="nuxInactive"> Great! It looks like you\'ve already set reminders to keep in touch with at least 12 friends. You can always set up more later by going to the friends list.</p></div>'}var o="";if(l.step2&&!l.step1){o='<div id="step2" class="homeViewTip active"><h3>Step 2: Go to the Friends List to take notes</h3><p> Next, lets get to a user\'s private feed. From there you can add private notes, events, and more.</p></div>'}else{o='<div id="step2" class="homeViewTip inactive"><h3>Step 2: Writing notes to remember</h3><p>After you find friends to keep up with, we\'ll show you how to add private notes to them.</p></div>'}var n="";if(!l.step1&&!l.step2){n='<div id="step3" class="homeViewTip active"><h3>Exploring Socialfly</h3><p> When you\'re done, browse around and check out what else Socialfly has to offer. </p></div>'}else{n='<div id="step3" class="homeViewTip inactive"><h3>Exploring Socialfly</h3><p> When you\'re done, browse around and check out what else Socialfly has to offer. </p></div>'}$("#homeNux").html(h+q+o+n).show();$("#step1").hover(function(){$("#friendListLink").animate({backgroundColor:"#ffbbbb"},750).animate({backgroundColor:"#fff"},750).animate({backgroundColor:"#ffbbbb"},750).animate({backgroundColor:"#fff"},750).animate({backgroundColor:"#ffbbbb"},750).animate({backgroundColor:"#fff"},750)},function(){$("#friendListLink").stop().stop().stop().queue(function(){$(this).css({"background-color":""});$(this).stop()})})};this.renderLoading=function(){var h='<style>a {color:#aaa!important}</style><div style="padding:40px 200px;font-size:14px;color:#333;">Loading...</div>';$("#homebody").html(h)};this.renderSuggestions=function(y,o){var s=y.length;var h="<h1>Dashboard</h1>";var B="";var w=homeControl.getModelStats();var o=controller.getNuxState();var l='<p><a class="snoozeall" id="snoozeall">Snooze all</a> | <a class="removeall" id="removeall">Remove all</a></p>';if(w.suggestionCnt==0&&o.active){B='<h2 class="first inactiveText">'+s+' friends to keep up with today</h2><div id="suggestionSection" class="inactiveText"></div>'}else{if(w.suggestionCnt==0){B='<h2 class="first inactiveText">'+s+' friends to keep up with today</h2><div id="suggestionSection"></div>'}else{if(w.suggestionCnt==1){B='<div class="intouchTop"><h2 class="first">One friend to keep up with today</h2></div><div id="intouchTip"><p></p></div><div id="suggestionSection"></div>'}else{B='<div class="intouchTop"><h2 class="first">'+s+' friends to keep up with today</h2></div><div id="intouchTip"><div id="keepupTip"/><div id="batch">'+l+'</div></div><div id="suggestionSection"></div>'}}}$("#homeKeepup").empty().append(h+B);$("#suggestionSection").empty();if(s==0){var q='<div class="homeViewTip fbgreybox"><p><strong>What is this?</strong> &nbsp; When you have set reminders to keep up with friends, they will show up here.</p></div>';$("#suggestionSection").append(q)}else{for(var D=0;D<s;D++){var A="sid"+y[D].id;var t=y[D].uid;var z=y[D].smallPic;var F=y[D].name;var r=dayDiff(new Date(),new Date(model.s[t].lt));var u=dayDiff(new Date(),new Date(model.s[t].rtd));var C="";var E="";var x="";var n="";var v="";if(u<0){E="Reminder is ";if(u==-1){n=" day old"}else{n=" days old"}if(isNaN(r)){x=" (no record of when you last talked)"}else{if(r==-1){x=" (you last talked yesterday)"}else{if(r<-1){x=" (you last talked "+r*(-1)+" days ago)"}}}C='<span class="lastspoke"><span style="color:#e13131">'+E+u*(-1)+n+"</span>"+x+"</span>"}else{if(isNaN(r)){x="No record of when you last talked"}else{if(r==0){x="You last talked <strong>today</strong>"}else{if(r==-1){x="You last talked <strong>yesterday</strong>"}else{if(r<-1){x="You last talked <strong>"+r*(-1)+" days ago</strong>"}}}}C='<span class="lastspoke" style="color:#777">'+x+"</span>"}var q="<div id="+A+' class="intouchReminder">	<img class="userpic" src='+z+" alt="+F+'/>	<div class="content">		<a class="alertName">'+F+'</a> <span class="fstatus"><fb:user-status uid="'+t+'"></fb:user-status></span>		<p class="days">'+C+'</p>	</div>	<div class="actions">		<div class="done"><p>			<div class="icon"><img class="sx_icons sx_talked" src="images/sprite_face.png"/></div>			<a>We talked</a>		</p></div>		<p><a class="snooze">Snooze</a> | <a class="remove">remove</a></p>	</div></div>';$("#suggestionSection").append(q);FB.XFBML.Host.parseDomTree();f.suggestionEventHandlers(A,t);c(A,y[D].sid)}if(s==1){$(".done").hover(function(){$("#batch").hide();$("#keepupTip").html("<p>Closes reminder and updates last talked</p>")},function(){$("#keepupTip").empty()});$(".snooze").hover(function(){$("#batch").hide();$("#keepupTip").html("<p>Delays reminder</p>")},function(){$("#keepupTip").empty()});$(".remove").hover(function(){$("#batch").hide();$("#keepupTip").html("<p>Closes reminder, does not update last talked</p>")},function(){$("#keepupTip").empty()});$(".lastspoke").hover(function(){$("#batch").hide();$("#keepupTip").html("<p>You can update last talked by adding a note</p>")},function(){$("#keepupTip").empty()})}else{$(".done").hover(function(){$("#batch").hide();$("#keepupTip").html("<p>Closes reminder and updates last talked</p>")},function(){$("#batch").show();$("#keepupTip").empty()});$(".snooze").hover(function(){$("#batch").hide();$("#keepupTip").html("<p>Delays reminder</p>")},function(){$("#batch").show();$("#keepupTip").empty()});$(".remove").hover(function(){$("#batch").hide();$("#keepupTip").html("<p>Closes reminder, does not update last talked</p>")},function(){$("#batch").show();$("#keepupTip").empty()});$(".lastspoke").hover(function(){$("#batch").hide();$("#keepupTip").html("<p>You can update last talked by adding a note</p>")},function(){$("#batch").show();$("#keepupTip").empty()})}d(y)}};this.renderSuggestionsMore=function(y){var w=y.length;var z='<p><a class="snoozeall" id="snoozeallM">Snooze additional</a> | <a class="removeall" id="removeallM">Remove additional</a></p>';if(w==0){}else{if(w>1){$("#suggestionSection").append('<div class="intouchTopMore"><h2 class="first inactiveText">'+w+' additional friends</h2></div><div id="intouchMoreOpener">[<a>Show</a>]</div><div id="intouchTipMore"><div id="keepupTipM"/><div id="batchM" style="display:none;">'+z+"</div></div>")}else{if(w==1){$("#suggestionSection").append('<div class="intouchTopMore"><h2 class="first inactiveText">One additional friend</h2></div><div id="intouchMoreOpener">[<a>Show</a>]</div><div id="intouchTipMore"></div>')}}$("#suggestionSection").append('<div id="suggestionMoreSection" style="display:none;"></div><div id="tipSuggestionsMore" class="homeViewTip fbgreybox"><p><strong>What is this?</strong> &nbsp; Every day we group your reminders in two categories: high and low priority. If you have more than 5 high priority reminders on a given day, the rest will appear in this section.</p></div>');if(e==1){$("#intouchMoreOpener").html("[<a>Hide</a>]");if(w>1){$("#batchM").show()}$("#suggestionSection").find(".intouchTopMore h2").removeClass("inactiveText");$("#suggestionMoreSection").show();$("#tipSuggestionsMore").hide()}$("#intouchMoreOpener").toggle(function(){$("#intouchMoreOpener").html("[<a>Hide</a>]");if(w>1){$("#batchM").show()}$("#suggestionSection").find(".intouchTopMore h2").removeClass("inactiveText");$("#suggestionMoreSection").show();$("#tipSuggestionsMore").hide();e=1},function(){$("#intouchMoreOpener").html("[<a>Show</a>]");$("#batchM").hide();$("#suggestionSection").find(".intouchTopMore h2").addClass("inactiveText");$("#suggestionMoreSection").hide();$("#tipSuggestionsMore").show();e=0});for(var s=0;s<w;s++){var o="sid"+y[s].id;var x=y[s].uid;var u=y[s].smallPic;var l=y[s].name;var r=dayDiff(new Date(),new Date(model.s[x].lt));var h=dayDiff(new Date(),new Date(model.s[x].rtd));var v="";var B="";var t="";var A="";var n="";if(h<0){B="Reminder is ";if(h==-1){A=" day old"}else{A=" days old"}if(isNaN(r)){t=" (no record of when you last talked)"}else{if(r==-1){t=" (you last talked yesterday)"}else{if(r<-1){t=" (you last talked "+r*(-1)+" days ago)"}}}v='<span class="lastspokeM"><span style="color:#e13131">'+B+h*(-1)+A+"</span>"+t+"</span>"}else{if(isNaN(r)){t="No record of when you last talked"}else{if(r==0){t="You last talked <strong>today</strong>"}else{if(r==-1){t="You last talked <strong>yesterday</strong>"}else{if(r<-1){t="You last talked <strong>"+r*(-1)+" days ago</strong>"}}}}v='<span class="lastspokeM" style="color:#777">'+t+"</span>"}var q="<div id="+o+' class="intouchReminder">	<img class="userpic" src='+u+" alt="+l+'/>	<div class="content">		<a class="alertName">'+l+'</a> <span class="fstatus"><fb:user-status uid='+x+' linked="false"></fb:user-status></span>		<p class="days">'+v+'</p>	</div>	<div class="actions">		<div class="doneM"><p>			<div class="icon"><img class="sx_icons sx_talked" src="images/sprite_face.png"/></div>			<a>We talked</a>		</p></div>		<p><a class="snoozeM">Snooze</a> | <a class="removeM">remove</a></p>	</div></div>';$("#suggestionMoreSection").append(q);f.suggestionEventHandlers(o,x);c(o,y[s].sid)}if(w==1){$(".doneM").hover(function(){$("#batchM").hide();$("#keepupTipM").html("<p>Closes reminder and updates last talked</p>")},function(){$("#keepupTipM").empty()});$(".snoozeM").hover(function(){$("#batchM").hide();$("#keepupTipM").html("<p>Delays reminder</p>")},function(){$("#keepupTipM").empty()});$(".removeM").hover(function(){$("#batchM").hide();$("#keepupTipM").html("<p>Closes reminder, does not update last talked</p>")},function(){$("#keepupTipM").empty()});$(".lastspokeM").hover(function(){$("#batchM").hide();$("#keepupTipM").html("<p>You can update last talked by adding a note</p>")},function(){$("#keepupTipM").empty()})}else{$(".doneM").hover(function(){$("#batchM").hide();$("#keepupTipM").html("<p>Closes reminder and updates last talked</p>")},function(){$("#batchM").show();$("#keepupTipM").empty()});$(".snoozeM").hover(function(){$("#batchM").hide();$("#keepupTipM").html("<p>Delays reminder</p>")},function(){$("#batchM").show();$("#keepupTipM").empty()});$(".removeM").hover(function(){$("#batchM").hide();$("#keepupTipM").html("<p>Closes reminder, does not update last talked</p>")},function(){$("#batchM").show();$("#keepupTipM").empty()});$(".lastspokeM").hover(function(){$("#batchM").hide();$("#keepupTipM").html("<p>You can update last talked by adding a note</p>")},function(){$("#batchM").show();$("#keepupTipM").empty()})}g(y)}};this.renderUpcomingWeek=function(r,v){var q=r.length;var t="";var u=homeControl.getModelStats();var v=controller.getNuxState();if(u.upcomingCnt==0&&v.active){t='<h2 class="inactiveText">Upcoming</h2><div id="upcomingWeekList" class="inactiveText"></div>'}else{if(u.upcomingCnt==0){t='<h2 class="inactiveText">Upcoming</h2><div id="upcomingWeekList"></div>'}else{t='<h2>Upcoming</h2><div id="upcomingWeekList"></div>'}}$("#homeUpcomingWeek").empty().append(t);$("#upcomingWeekList").empty();if(q==0){var h='<div class="homeViewTip fbgreybox"><p><strong>What is this?</strong> &nbsp; This is a feed of events, plans, and birthdays coming up.  <a id="zeroUpcomingExample" class="example">Show example</a></p></div><div id="zeroUpcomingExampleContainer"></div>';$("#upcomingWeekList").append(h);$("#zeroUpcomingExample").toggle(function(){f.renderZeroUpcomingExample()},function(){$("#zeroUpcomingExampleContainer").empty()})}else{for(var o=0;o<q;o++){var h="<div id="+r[o].id+' class="homeFeedItem clearfix">	<div class="homeFeedItemIcon"><img class="sx_icons sx_'+r[o].type+'" src="images/sprite_face.png"/></div>	<div class="homeFeedItemWrapper">	'+quickInputView.feedTextHomeHtml(r[o])+'	</div>	<div class="homeFeedItemEdit"><a>Options</a></div></div>';$("#upcomingWeekList").append(h);f.feedItemEventHandlers(r[o]);f.feedItemEditEventHandlers(r[o]);var s=r[o].childFeed.length;for(var n=0;n<s;n++){var l="<div id="+r[o].childFeed[n].id+' class="homeFeedItem clearfix child">	<div class="homeFeedChildBackground">		<div class="homeFeedItemIcon"><img class="sx_icons sx_'+r[o].childFeed[n].type+'" src="images/sprite_face.png"/></div>		<div class="homeFeedItemWrapper child">		'+quickInputView.feedTextChildHtml(r[o].childFeed[n])+'		</div>	</div>	<div class="homeFeedItemEdit child"><a>Options</a></div></div>';$("#upcomingWeekList").append(l);f.feedItemEditEventHandlers(r[o].childFeed[n])}}}};this.renderHistory=function(q,u){var o=q.length;var l="";var t=homeControl.getModelStats();var u=controller.getNuxState();if(t.historyCnt==0&&u.active){l='<h2 class="inactiveText">Social History</h2><div id="historyList" class="inactiveText"></div>'}else{if(t.historyList==0){l='<h2 class="inactiveText">Social History</h2><div id="historyList"></div>'}else{l='<h2>Social History</h2><div id="historyList"></div>'}}$("#homeSocialHistory").empty().append(l);$("#historyList").empty();if(o==0){var l='<div class="homeViewTip fbgreybox"><p><strong>What is this?</strong> &nbsp; This is a feed of recently past events and notes you\'ve added.  <a id="zeroHistoryExample" class="example">Show example</a></p></div><div id="zeroHistoryExampleContainer"></div>';$("#historyList").append(l);$("#zeroHistoryExample").toggle(function(){f.renderZeroHistoryExample()},function(){$("#zeroHistoryExampleContainer").empty()})}else{for(var n=0;n<o;n++){var l="<div id="+q[n].id+' class="homeFeedItem clearfix">	<div class="homeFeedItemIcon"><img class="sx_icons sx_'+q[n].type+'" src="images/sprite_face.png"/></div>	<div class="homeFeedItemWrapper clearfix">	'+quickInputView.feedTextHomeHtml(q[n])+'	</div>	<div class="homeFeedItemEdit"><a>Options</a></div></div>';$("#historyList").append(l);f.feedItemEventHandlers(q[n]);f.feedItemEditEventHandlers(q[n]);var s=q[n].childFeed.length;for(var h=0;h<s;h++){var r="<div id="+q[n].childFeed[h].id+' class="homeFeedItem child clearfix">	<div class="homeFeedChildBackground">		<div class="homeFeedItemIcon"><img class="sx_icons sx_'+q[n].childFeed[h].type+'" src="images/sprite_face.png"/></div>		<div class="homeFeedItemWrapper child">		'+quickInputView.feedTextChildHtml(q[n].childFeed[h])+'		</div>	</div>	<div class="homeFeedItemEdit child"><a>Options</a></div></div>';$("#historyList").append(r);f.feedItemEditEventHandlers(q[n].childFeed[h])}}}};this.renderZeroUpcomingExample=function(){var h='<div id="zeroUpcomingExampleList" class="examplebg">	<div class="homeFeedItem clearfix">		<div class="homeFeedItemIcon"><img src="images/sprite_face.png" class="sx_icons sx_rPlan"/></div>		<div class="homeFeedItemWrapper clearfix">	<span class="homeFeedItemText"><span class="preText"><a class="hoverDate">This week</a> remember to plan with <a class="name">Lee Miller</a>:</span> "bar hopping in the city" <span class="date">1/18</span> <a class="note">write a note</a></span></div>	</div>	<div class="homeFeedItem clearfix">		<div class="homeFeedItemIcon"><img src="images/sprite_face.png" class="sx_icons sx_rPlan"/></div>		<div class="homeFeedItemWrapper clearfix">	<span class="homeFeedItemText"><span class="preText"><a class="hoverDate">This week</a> remember to plan with <a class="name">Amy Thompson</a>:</span> "help her on reports" <span class="date">1/12</span> <a class="note">write a note</a></span></div>	</div>	<div class="homeFeedItem clearfix">		<div class="homeFeedItemIcon"><img src="images/sprite_face.png" class="sx_icons sx_birthday"/></div>		<div class="homeFeedItemWrapper clearfix">	<span class="homeFeedItemText"><span class="preText"><a class="hoverDate">Next Mon</a> it\'s <a class="name">David MacGuyver</a>\'s Birthday</span></span>	</div>	</div>	<div class="homeFeedItem clearfix">			<div class="homeFeedItemIcon"><img src="images/sprite_face.png" class="sx_icons sx_note"/></div>		<div class="homeFeedItemWrapper clearfix">	<span class="homeFeedItemText"><span class="preText"><a class="name">Agustin Vilaseca</a> note:</span> "ask him about parties in the city" <span class="date">2/6</span></span>	</div>	</div>	<div class="homeFeedItem clearfix">		<div class="homeFeedItemIcon"><img src="images/sprite_face.png" class="sx_icons sx_event"/></div>		<div class="homeFeedItemWrapper clearfix">	<span class="homeFeedItemText"><span class="preText"><a class="hoverDate">Next Tue</a> event with <a class="name">Linda McGovern</a>:</span> "coffee" <span class="date">1/31</span> <a class="note">write a note</a></span>	</div>	</div></div><div class="homeViewTip fbinfobox"><p><strong>Tip</strong> &nbsp;&nbsp; This view lets you know what to plan for in the next 7 days.</p></div>';$("#zeroUpcomingExampleContainer").html(h)};this.renderZeroHistoryExample=function(){var h='<div id="zeroHistoryExampleList" class="examplebg">	<div class="homeFeedItem clearfix">		<div class="homeFeedItemIcon"><img src="images/sprite_face.png" class="sx_icons sx_event"/></div>		<div class="homeFeedItemWrapper clearfix">	<span class="homeFeedItemText"><span class="preText"><a class="hoverDate">Yesterday</a> event with <a class="name">Marcus Tokugawa</a>:</span> "played board games" <span class="date">today</span> <a class="note">write a note</a></span>	</div>	</div>	<div class="homeFeedItem clearfix">		<div class="homeFeedItemIcon"><img src="images/sprite_face.png" class="sx_icons sx_birthday"/></div>		<div class="homeFeedItemWrapper clearfix">	<span class="homeFeedItemText"><span class="preText"><a class="hoverDate">Yesterday</a> it\'s <a class="name">Javier Legaria</a>\'s Birthday</span></span>	</div>	</div>	<div class="homeFeedItem clearfix">		<div class="homeFeedItemIcon"><img src="images/sprite_face.png" class="sx_icons sx_birthday"/></div>		<div class="homeFeedItemWrapper clearfix">	<span class="homeFeedItemText"><span class="preText"><a class="hoverDate">Yesterday</a> it\'s <a class="name">Irene Kim</a>\'s Birthday</span></span>	</div>	</div>	<div class="homeFeedItem clearfix">			<div class="homeFeedItemIcon"><img src="images/sprite_face.png" class="sx_icons sx_note"/></div>		<div class="homeFeedItemWrapper clearfix">	<span class="homeFeedItemText"><span class="preText"><a class="name">Agustin Vilaseca</a> note:</span> "ask him about parties in the city" <span class="date">2/6</span></span>	</div>	</div>	<div class="homeFeedItem clearfix">		<div class="homeFeedItemIcon"><img src="images/sprite_face.png" class="sx_icons sx_event"/></div>		<div class="homeFeedItemWrapper clearfix">	<span class="homeFeedItemText"><span class="preText"><a class="hoverDate">2/5</a> event with <a class="name">Claude Blanc</a>:</span> "left his job at ascent telecom" <span class="date">2/5</span> <a class="note">write a note</a></span>	</div>		</div> 	<div class="homeFeedItem clearfix">			<div class="homeFeedItemIcon"><img src="images/sprite_face.png" class="sx_icons sx_note"/></div>			<div class="homeFeedItemWrapper clearfix">	<span class="homeFeedItemText"><span class="preText"><a class="name">Irene Kim</a> note:</span> "met new years eve, she\'s fun!" <span class="date">2/3</span></span>	</div>	</div>	<div class="homeFeedItem clearfix">		<div class="homeFeedItemIcon"><img src="images/sprite_face.png" class="sx_icons sx_note"/></div>		<div class="homeFeedItemWrapper clearfix">	<span class="homeFeedItemText"><span class="preText"><a class="name">Gina Arkof</a> note:</span> "knows jane and rich from college" <span class="date">2/2</span></span></div>	</div>	<div class="homeFeedItem clearfix">		<div class="homeFeedItemIcon"><img src="images/sprite_face.png" class="sx_icons sx_event"/></div>		<div class="homeFeedItemWrapper clearfix">	<span class="homeFeedItemText"><span class="preText"><a class="hoverDate">2/4</a> event with <a class="name">Linda McGovern</a>:</span> "saw her at blue chalk cafe" <span class="date">1/31</span> <a class="note">write a note</a></span>	</div>	</div>	<div class="homeFeedItem child clearfix">		<div class="homeFeedChildBackground">			<div class="homeFeedItemIcon"><img src="images/sprite_face.png" class="sx_icons sx_note"/></div>			<div class="homeFeedItemWrapper child">	<span class="homeFeedItemText">Great time catching up. She\'s already past her sales quota this month <span class="date">1/31</span></span></div>		</div>	</div></div><div class="homeViewTip fbinfobox"><p><strong>Tip</strong> &nbsp;&nbsp; This is a useful view if you think you\'ve forgottten something, or want to add another note about someone you saw recently.</p></div>';$("#zeroHistoryExampleContainer").html(h)};this.suggestionEventHandlers=function(l,h){$("#"+l+" .content").click(function(){homeControl.friendClick(h)});$("#"+l+" .userpic").click(function(){homeControl.friendClick(h)})};var d=function(h){$("#snoozeall").click(function(){homeControl.snoozeSuggestionFeed(h)});$("#removeall").click(function(){homeControl.removeSuggestionFeed(h)})};var g=function(h){$("#snoozeallM").click(function(){homeControl.snoozeSuggestionFeed(h)});$("#removeallM").click(function(){homeControl.removeSuggestionFeed(h)})};this.friendClickEventHandler=function(l,h){$("#"+l+"").click(function(){homeControl.friendClick(h)})};this.feedItemEventHandlers=function(h){var l=h.uid;var n=h.id;$("#"+n+" .name").click(function(){homeControl.friendClick(l)});$("#"+n+" .homeFeedItemText .note").click(function(){quickInputView.quickInputEventHandlers(h,true,"home")})};this.feedItemEditEventHandlers=function(h){var q=h.id;var l=h.uid;var o=h.iid;var n=h.type;if(n!="birthday"){$("#"+q+"").hover(function(){$(this).children(".homeFeedItemEdit").addClass("hoverCraft")},function(){$(this).children(".homeFeedItemEdit").removeClass("hoverCraft")})}if(n=="rPlan"){$("#"+q+"").children(".homeFeedItemEdit").children("a").click(function(){$(this).parent().after(quickInputView.renderReminderFlyoutMenu());$(this).parent().parent().children(".flyout_menu_18").hover(function(){$(this).stop().fadeTo(200,"1.0");$(this).find(".snooze").click(function(){$("#"+q+"").fadeOut(1000);homeControl.snoozeSuggestionFeed(h)});$(this).find(".delete").click(function(){$("#"+q+"").fadeOut(1000);homeControl.removeSuggestionFeed(h)})},function(){var r=$(this);$(this).fadeOut(500,function(){r.remove()})})})}else{if(n=="birthday"){}else{$("#"+q+"").children(".homeFeedItemEdit").children("a").click(function(){$(this).parent().after(quickInputView.renderFlyoutMenu());$(this).parent().parent().children(".flyout_menu_18").hover(function(){$(this).stop().fadeTo(200,"1.0");$(this).find(".delete").click(function(){$(this).trigger("mouseleave");$("#"+q+"").fadeOut(1000);homeControl.deleteFeed(h)});$(this).find(".edit").click(function(){quickInputView.quickInputEventHandlers(h,false,"home");$("#"+q+"").find(".flyout_menu_18").remove();$("#"+q+"").children(".homeFeedItemEdit").removeClass("hoverCraft")})},function(){var r=$(this);$(this).fadeOut(500,function(){r.remove()})})})}}};var c=function(l,h){$("#"+l+" .done").click(function(){var n=[];n.push({sid:h});homeControl.talkedSuggestionFeed(n);$("#"+l).fadeOut("fast",function(){$("#"+l).remove()});return false});$("#"+l+" .remove").click(function(){var n=[];n.push({sid:h});homeControl.removeSuggestionFeed(n);$("#"+l).fadeOut("fast",function(){$("#"+l).remove()});return false});$("#"+l+" .snooze").click(function(){var n=[];n.push({sid:h});homeControl.snoozeSuggestionFeed(n);$("#"+l).fadeOut("fast",function(){$("#"+l).remove()});return false});$("#"+l+" .doneM").click(function(){var n=[];n.push({sid:h});homeControl.talkedSuggestionFeed(n);$("#"+l).fadeOut("fast",function(){$("#"+l).remove()});return false});$("#"+l+" .removeM").click(function(){var n=[];n.push({sid:h});homeControl.removeSuggestionFeed(n);$("#"+l).fadeOut("fast",function(){$("#"+l).remove()});return false});$("#"+l+" .snoozeM").click(function(){var n=[];n.push({sid:h});homeControl.snoozeSuggestionFeed(n);$("#"+l).fadeOut("fast",function(){$("#"+l).remove()});return false})}};loaderView=new function(){var a=this;this.timer=0;this.timerId;this.loadingTime=5;this.createIntroHtml=function(){var c='<div id="introHeader"><img src="images/intro/header.gif" width="760" height="86" border="0"/></div><div id="introBody" class="clearfix">	<div class="introLeft">		<h1>Socialfly helps you remember and keep up with the people in your life.</h1>		<img src="images/intro/butterfly-people.png" width="458" height="100" border="0"/>	</div>	<div class="introRight">		<div class="connectButton"><img id="fb_login_image" src="http://static.ak.fbcdn.net/images/fbconnect/login-buttons/connect_white_large_long.gif" alt="Connect"/></div>		<div id="status-notifications_navigation">			<div class="UIRoundedBox_Container clearfix UIRoundedBox_BottomMargin"><div class="UIRoundedBox_Box"><div class="UIRoundedBox_Corner UIRoundedBox_TL"> <!-- 3 divs -->				<div class="UIRoundedBox_Corner UIRoundedBox_TR"><div class="UIRoundedBox_Corner UIRoundedBox_BL"><div class="UIRoundedBox_Corner UIRoundedBox_BR"> <!-- 3 divs -->					<div class="UIRoundedBox_Side UIRoundedBox_LS"><div class="UIRoundedBox_Side UIRoundedBox_RS"><div class="UIOneOff_Container"> <!-- 3 divs -->						<div class="sidebar_item navigate clearfix first">							<div class="sidebar_item_header clearfix"><h2>Navigate</h2></div>							<div class="sidebar_item_body clearfix">								<ul class="icon_list clearfix">									<li><div class="icon"><img class="sx_icons sx_home" src="images/sprite_face.png"/></div> <a><span><strong>Socialfly Home</strong></a></span></li>									<li><div class="icon"><img class="sx_icons sx_personed" src="images/sprite_face.png"/></div> <a><span><strong>Friend Organizer</strong></a></span></li>									<li><div class="icon"><img class="sx_icons sx_note" src="images/sprite_face.png"/></div> <a><span><strong>Start writing notes</strong></a></span></li>									<li><div class="icon"><img class="sx_icons sx_plan" src="images/sprite_face.png"/></div> <span style="color:#999">Make plans (soon)</span></li>									<li><div class="icon"><img class="sx_icons sx_money" src="images/sprite_face.png"/></div> <span style="color:#999">Expenses &amp; owed $ (soon)</span></li>									<li></li>								</ul>							</div>						</div>					</div></div></div> <!-- close 3 divs-->				</div></div></div> <!-- close 3 divs-->			</div></div></div> <!-- close 3 divs-->		</div>	</div>	<div class="introGlass">		<ul class="clearfix">			<li><img src="images/intro/glass-keepup.png" width="139" height="139" border="0"/><h2>Keep Up</h2><p>Set reminders to talk. Never forget a friend.</p></li>			<li><img src="images/intro/glass-organize.png" width="139" height="139" border="0"/><h2>Organize Friends</h2><p>Remember who they are.</p></li>			<li><img src="images/intro/glass-maps.png" width="139" height="139" border="0"/><h2>Friend Maps</h2><p>When you travel you\'ll know who to visit.</p></li>			<li><img src="images/intro/glass-privatefeed.png" width="139" height="139" border="0"/><h2>Private Feed</h2><p>Write notes, make plans and keep track of favors.</p></li>		</ul>	</div></div>';$("#wrapper").append(c);$("body").click(function(){FB.Connect.requireSession();$("body").unbind("click")})};this.createLoaderHtml=function(){var c='<div id="introHeader"><img src="images/intro/header.gif" width="760" height="86" border="0"/></div><div id="introBody" class="clearfix">	<div class="introCentered">		<h1>'+a.randomQuote()+'</h1>		<h3>Loading Socialfly <img src="images/indicator_blue_small.gif"></h3>	<div class="introGlass">		<ul class="clearfix">			<li><img src="images/intro/glass-keepup.png" width="139" height="139" border="0"/><h2>Keep Up</h2><p>Set reminders to talk. Never forget a friend.</p></li>			<li id="loaderImage2" style="display:none"><img src="images/intro/glass-organize.png" width="139" height="139" border="0"/><h2>Organize Friends</h2><p>Remember who they are.</p></li>			<li id="loaderImage3" style="display:none"><img src="images/intro/glass-maps.png" width="139" height="139" border="0"/><h2>Friend Maps</h2><p>When you travel you\'ll know who to visit.</p></li>			<li id="loaderImage4" style="display:none"><img src="images/intro/glass-privatefeed.png" width="139" height="139" border="0"/><h2>Private Feed</h2><p>Write notes, make plans and keep track of favors.</p></li>		</ul>	</div></div>';a.removeHtml();$("#wrapper").append(c);a.timerId=setInterval("loaderView.imageLoader()",(loaderView.loadingTime*10))};this.imageLoader=function(){loaderView.timer++;switch(loaderView.timer){case 25:$("#loaderImage2").show();break;case 50:$("#loaderImage3").show();break;case 75:$("#loaderImage4").show();clearInterval(loaderView.timerId);break}};this.removeHtml=function(){$("#introHeader").remove();$("#introBody").remove();$("#pagefootersf").empty().show()};this.resetView=function(){a.removeHtml();if(controller.iframe==false){a.renderStandAloneFeatures()}$("#productheader").show()};this.renderStandAloneFeatures=function(){};this.randomQuote=function(){var c=[];c.push("True friendship is like sound health; the value of it is seldom known until it be lost. - Charles Caleb Colton");c.push("My friends are my estate. - Emily Dickinson");c.push("A friend is one who walks in when others walk out -Walter Winchell");c.push("Every person is a new door to a different world. - from the movie Six Degrees of Seperation");c.push("Friendship is unnecessary, like philosophy, like art... It has no survival value; rather is one of those things that give value to survival. - C. S. Lewis");c.push("Sometimes you pick your friends, sometimes they pick you.");c.push("A friend is someone who is there for you when he'd rather be anywhere else. - Len Wein");c.push("Treat people as if they were what they ought to be and you help them to become what they are capable of being. -Goethe");c.push("Anybody can sympathise with the sufferings of a friend, but it requires a very fine nature to sympathise with a friend's success. - Oscar Wilde");c.push("Advice is like snow; the softer it falls, the longer it dwells upon, and the deeper it sinks into the mind. - Samuel Taylor Coleridge");c.push("Strangers are just friends you haven't met yet.");c.push("You can use your business card to get the other person's business card. As far as I'm concerned, this is the one truly legitimate benefit of business cards. -  Bob Burg (Endless Referrals)");c.push("The currency of real networking is not greed but generosity. - Keith Ferrazzi (Never eat Alone)");c.push("Poverty, I realized, wasn't only a lack of financial resources; it was isolation from the kind of people that could help you make more of yourself. - Keith Ferrazzi (Never Eat Alone)");c.push("The pros, the champions, the ones who are determined to succeed, do the little things right, consistently. - Bob Burg (Endless Referrals)");c.push("The successful networkers I know, the ones receiving tons of referrals and feeling truly happy about themselves, continually put the other person's needs ahead of their own. - Bob Burg (Endless Referrals)");c.push("The way of the world is meeting people through other people. - Robert Kerrigan");var d=random(c.length-1);return c[d]};this.showCookieErrorLightbox=function(){var c='<div id="lightboxPopupWrapper">We\'re sorry, your Browser\'s security settings do not allow us to set cookies.This is required for your application to work. Please change your security settings and reload this page.<br><br>For Safari for example, go to <em>Safari->Preferences</em>, click on the <em>Security</em> tab, and select <em>Accept cookies: Always</em><br><br>Alternatively, <a href="http://social-fly.com" target="_top">go to our Facebook Connect site</a>. This will work immediately, and will even look prettier!</div>';$.facebox(c)};this.showIELightbox=function(c){var d='<div id="IEPopupWrapper">Hi '+c+',<br><br>Unfortunately, there are still some kinks when accessing <span class="sf header"><b>Sociafly</b></span> through <b>Internet Explorer</b>. <br><br>Altough the key features will work, you might experience some visual problems. Please bear with us until we have solved this.<br><br>In the meantime, we recommend that you load this site through <a href="http://www.mozilla.com/en-US/firefox/"><b>Firefox</b></a> or <a href="http://www.apple.com/safari/"><b>Safari</b></a> for the best performance.<br><br><br>Thank you for your understanding,<br><br><em>The Socialfly Team</em></div>';$.facebox(d)}};mapView=new function(){var f=this;var e=[];this.createMapDivStructure=function(){$("#homebody").html('<div id="mapView"></div>')};this.renderHeaders=function(g){a(g)};this.renderFriendsList=function(g){e=g;d(e)};var a=function(h){var g='	<div id="friendListDivider" class="clearfix">		<h2>View Friend Addresses ('+h+')</h2>		<div class="multipage"></div>	</div>	<div id="friendListHeader" class="clearfix">		<div id="listHeaderMapName" class="sortUp"><div class="icon"><img class="sx_icons sx_map" src="images/sprite_face.png"/></div><a>Name</a></div>		<div id="listHeaderMapAddress"><a>Address</a></div>	</div>	<div id="friendListItems"></div>';$("#mapView").after(g)};var d=function(l){$("#friendListItems").empty();var s=l.length;for(var o=0;o<s;o++){var r=l[o].addresses.length;for(var n=0;n<r;n++){var q=l[o].addresses[n].tfn;var v=l[o].addresses[n].ln;var t=l[o].addresses[n].aan;var h=l[o].addresses[n].pcn;var w=l[o].addresses[n].cnc;if(q!=""&&q){q=q+", "+v}else{q=v}if(h!=""&&h){t=t+" "+h}if(q!=""&&q){q=q+", "+t}else{q=t}if(w!=""&&w){q=q+", "+w}if(q==null){q=""}var g=o+"-"+n;if(o%2){html='<div id="friend'+g+'" class="childListItem clearfix">'}else{html='<div id="friend'+g+'" class="childListItem clearfix" style="background-color:#eee;">'}html+='<div class="childListName clearfix"><a>';if(n==0){html+=l[o].name}html+="</a></div>";html+='<div class="childListData"><ul><li><a>'+q+"</a></li></ul></div>";html+='<div class="childListAction"><a>Edit</a></div></div>';$("#friendListItems").append(html);c(g,o,n)}}var u='<div class="clearfix fbgreybox" id="friendListTipBottom">	<p><strong>Did you know?</strong> &nbsp;&nbsp; Start a note with \'address\' (e.g. <em>address san francisco</em>) to add friends to the map!</p>	<p>Just go to the friend list, click on a friend, and start typing away. <a id="mapExample" class="example">Watch video explanation</a></p></div><div id="mapTipExampleVideo"></div>';$("#friendListItems").append(u);$("#mapExample").toggle(function(){f.renderMapExample()},function(){$("#mapTipExampleVideo").empty()})};this.renderMapExample=function(){var g='	<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="563" height="348" id="howto/clarityMapView" align="middle">	<param name="allowScriptAccess" value="sameDomain" />	<param name="allowFullScreen" value="false" />	<param name="movie" value="images/howto/clarityMapView.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />	<embed src="images/howto/clarityMapView.swf" quality="high" bgcolor="#ffffff" width="563" height="348" name="howto/clarityMapView" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" />	</object>';$("#mapTipExampleVideo").html(g)};var c=function(l,h,g){$("#friend"+l+" .childListName a").click(function(){mapControl.friendClick(h)});$("#friend"+l+" .childListData a").click(function(){mapControl.addressClick(h,g)})}};quickInputView=new function(){var g=this;var f;this.quickInputTips=function(n){switch(n){case"event":var o='<div class="composerFeedbackIcon"><img class="sx_icons sx_event" src="images/sprite_face.png"/></div><div class="composerFeedbackDescription">Events are triggered whenever you start typing a date. We understand lots of dates!</div><div class="composerFeedbackExamples"><h4>Examples</h4><ul><li>december 20 party at matts</li></ul></div>';break;case"talked":var o='<div class="composerFeedbackIcon"><img class="sx_icons sx_talked" src="images/sprite_face.png"/></div><div class="composerFeedbackDescription">Indicates if you talked on this date. Good for keeping track of how frequently you talk.</div><div class="composerFeedbackExamples"><h4>Examples</h4><ul><li>talked last Friday</li><li>talked on 2/12</li></ul></div>';break;case"plan":var o='<div class="composerFeedbackIcon"><img class="sx_icons sx_plan" src="images/sprite_face.png"/></div><div class="composerFeedbackDescription">Plans are things you want to do with people on no particular date</div><div class="composerFeedbackExamples"><h4>Examples</h4><ul><li>plan dinner party</li><li>plan clubbing next week</li><li>plan games night february</li></ul></div>';break;case"date":var o='<div class="composerFeedbackIcon"><img class="sx_icons sx_date" src="images/sprite_face.png"/></div><div class="composerFeedbackDescription">Date - going out on a date? plan your romance here!</div><div class="composerFeedbackExamples"><h4>Examples</h4><ul><li>date next thursday</li></ul></div>';break;case"favor":var o='<div class="composerFeedbackIcon"><img class="sx_icons sx_favor" src="images/sprite_face.png"/></div><div class="composerFeedbackDescription">Favor - when you\'ve done a favor for this person</div><div class="composerFeedbackExamples"><h4>Examples</h4><ul><li>favor gave me lift to airport</li></ul></div>';break;case"note":var o='<div class="composerFeedbackIcon"><img class="sx_icons sx_note" src="images/sprite_face.png"/></div><div class="composerFeedbackDescription">Notes are everything we don\'t classify. Type away!</div><div class="composerFeedbackExamples"><h4>Examples</h4><ul><li>she\'s not feeling well this week</li></ul></div>';break;case"relationship":var o='<div class="composerFeedbackIcon"><img class="sx_icons sx_relationship" src="images/sprite_face.png"/></div><div class="composerFeedbackDescription">Relationships let you remember the people important to this person</div><div class="composerFeedbackExamples"><h4>Examples</h4><ul><li>relationship father rodney</li><li>girlfriend betty</li></ul></div>';break;case"want":var o='<div class="composerFeedbackIcon"><img class="sx_icons sx_want" src="images/sprite_face.png"/></div><div class="composerFeedbackDescription">Want - indicates what this person wants</div><div class="composerFeedbackExamples"><h4>Examples</h4><ul><li>want new jacket</li><li>want help on homework</li></ul></div>';break;case"like":var o='<div class="composerFeedbackIcon"><img class="sx_icons sx_like" src="images/sprite_face.png"/></div><div class="composerFeedbackDescription">Likes - remember what this person likes or dislikes!</div><div class="composerFeedbackExamples"><h4>Examples</h4><ul><li>likes sushi</li><li>likes basketball, rock climbing</li></ul></div>';break;case"meet":var o='<div class="composerFeedbackIcon"><img class="sx_icons sx_meet" src="images/sprite_face.png"/></div><div class="composerFeedbackDescription">Meet - remember each time you\'ve met up</div><div class="composerFeedbackExamples"><h4>Examples</h4><ul><li>meet today talked about her work</li></ul></div>';break;case"address":var o='<div class="composerFeedbackIcon"><img class="sx_icons sx_map" src="images/sprite_face.png"/></div><div class="composerFeedbackDescription">Address - add this person to your map!</div><div class="composerFeedbackExamples"><h4>Examples</h4><ul><li>address 302 Univ Ave, Palo Alto, CA</li><li>address Mexico City</ul></div>';break;case"tag":var o='<div class="composerFeedbackIcon"><img class="sx_icons sx_tag" src="images/sprite_face.png"/></div><div class="composerFeedbackDescription">Tag - assign this person to a category</div><div class="composerFeedbackExamples"><h4>Examples</h4><ul><li>tag family</li></ul></div>';break;default:var o='<div class="composerFeedbackDescription">Sorry, no help for this keyword</div>'}return o};this.feedTextHomeHtml=function(o){var n="write a note";switch(o.type){case"plan":var q='<span class="homeFeedItemText"><span class="preText"><a class="hoverDate">'+o.prettyDate+'</a> plan with <a class="name">'+o.name+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+n+"</a></span>";break;case"rPlan":var q='<span class="homeFeedItemText"><span class="preText"><a class="hoverDate">'+o.prettyDate+'</a> remember to plan with <a class="name">'+o.name+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+n+"</a></span>";break;case"birthday":var q='<span class="homeFeedItemText"><span class="preText"><a class="hoverDate">'+o.prettyDate+'</a> it\'s <a class="name">'+o.name+"</a>'s Birthday</span></span>";break;case"event":var q='<span class="homeFeedItemText"><span class="preText"><a class="hoverDate">'+o.prettyDate+'</a> event with <a class="name">'+o.name+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+n+"</a></span>";break;case"talked":var q='<span class="homeFeedItemText"><span class="preText"><a class="hoverDate">'+o.prettyDate+'</a> talked with <a class="name">'+o.name+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+n+"</a></span>";break;case"date":var q='<span class="homeFeedItemText"><span class="preText"><a class="hoverDate">'+o.prettyDate+'</a> date with <a class="name">'+o.name+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+n+"</a></span>";break;case"favor":var q='<span class="homeFeedItemText"><span class="preText">Favor created between you and <a class="name">'+o.name+'</a> <a class="hoverDate">'+o.prettyDate+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+n+"</a></span>";break;case"note":var q='<span class="homeFeedItemText"><span class="preText"><a class="name">'+o.name+'</a> note:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+"</span></span>";break;case"relationship":var q='<span class="homeFeedItemText"><span class="preText"><a class="name">'+o.name+'</a> relationship:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+n+"</a></span>";break;case"want":var q='<span class="homeFeedItemText"><span class="preText"><a class="name">'+o.name+'</a> wants:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+n+"</a></span>";break;case"like":var q='<span class="homeFeedItemText"><span class="preText"><a class="name">'+o.name+'</a> likes:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+n+"</a></span>";break;case"meet":var q='<span class="homeFeedItemText"><span class="preText">You met <a class="name">'+o.name+'</a> <a class="hoverDate">'+o.prettyDate+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+n+"</a></span>";break;case"address":var q='<span class="homeFeedItemText"><span class="preText">Added <a class="name">'+o.name+"</a>'s address:</span> \""+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+n+"</a></span>";break;case"tag":var q='<span class="homeFeedItemText"><span class="preText">Tagged <a class="name">'+o.name+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+"</span></span>";break;default:var q="This feedTextShow item should never show up. If it does, give us feedback (bottom right corner)"}return q};this.feedTextDataTypeHtml=function(n){switch(n.type){case"note":var o='<span class="homeFeedItemText"><span class="preText"><a class="name">'+n.name+"</a>:</span> "+n.text+' <span class="date">'+n.prettyCreationDate+"</span></span>";break;case"event":var o='<span class="homeFeedItemText"><span class="preText">Event with <a class="name">'+n.name+"</a>:</span> "+n.text+' <span class="date">'+n.prettyCreationDate+"</span></span>";break;case"talked":var o='<span class="homeFeedItemText"><span class="preText">Talked with <a class="name">'+n.name+"</a>:</span> "+n.text+' <span class="date">'+n.prettyCreationDate+"</span></span>";break;case"plan":var o='<span class="homeFeedItemText"><span class="preText">Plan with <a class="name">'+n.name+"</a>:</span> "+n.text+' <span class="date">'+n.prettyCreationDate+"</span></span>";break;case"date":var o='<span class="homeFeedItemText"><span class="preText">Date with <a class="name">'+n.name+"</a>:</span> "+n.text+' <span class="date">'+n.prettyCreationDate+"</span></span>";break;case"meet":var o='<span class="homeFeedItemText"><span class="preText">You met <a class="name">'+n.name+"</a>:</span> "+n.text+' <span class="date">'+n.prettyCreationDate+"</span></span>";break;case"birthday":var o='<span class="homeFeedItemText"><span class="preText"><a class="name">'+n.name+"</a>'s Birthday</span></span>";break;case"favor":if(n.bu==0){var o='<span class="homeFeedItemText"><span class="preText"><a class="name">'+n.name+"</a> did you a favor:</span> "+n.text+' <span class="date">'+n.prettyCreationDate+"</span></span>"}else{if(n.bu==1){var o='<span class="homeFeedItemText"><span class="preText">You did <a class="name">'+n.name+"</a> a favor:</span> "+n.text+' <span class="date">'+n.prettyCreationDate+"</span></span>"}}break;case"relationship":var o='<span class="homeFeedItemText"><span class="preText"><a class="name">'+n.name+"</a>:</span> "+n.text+' <span class="date">'+n.prettyCreationDate+"</span></span>";break;case"want":var o='<span class="homeFeedItemText"><span class="preText"><a class="name">'+n.name+"</a> wants:</span> "+n.text+' <span class="date">'+n.prettyCreationDate+"</span></span>";break;case"like":var o='<span class="homeFeedItemText"><span class="preText"><a class="name">'+n.name+"</a> likes:</span> "+n.text+' <span class="date">'+n.prettyCreationDate+"</span></span>";break;case"dislike":var o='<span class="homeFeedItemText"><span class="preText"><a class="name">'+n.name+"</a> doesn't like:</span> \""+n.text+'" <span class="date">'+n.prettyCreationDate+"</span></span>";break;default:var o="This feedTextShow item should never show up. If it does, give us feedback (bottom right corner)"}return o};this.feedTextDetailHtml=function(o){o.actionNote="write a note";switch(o.type){case"plan":var q='<span class="homeFeedItemText"><span class="preText">Plan on <a class="hoverDate">'+o.prettyDate+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+o.actionNote+"</a></span>";break;case"rPlan":var q='<span class="homeFeedItemText"><span class="preText">Reminder to plan on <a class="hoverDate">'+o.prettyDate+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+o.actionNote+"</a></span>";break;case"birthday":var q='<span class="homeFeedItemText"><span class="preText">Birthday <a class="hoverDate">'+o.prettyDate+"</a>:</span></span>";break;case"event":var q='<span class="homeFeedItemText"><span class="preText">Event on <a class="hoverDate">'+o.prettyDate+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+o.actionNote+"</a></span>";break;case"talked":var q='<span class="homeFeedItemText"><span class="preText">Talked on <a class="hoverDate">'+o.prettyDate+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+o.actionNote+"</a></span>";break;case"date":var q='<span class="homeFeedItemText"><span class="preText">Date on <a class="hoverDate">'+o.prettyDate+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+o.actionNote+"</a></span>";break;case"favor":var q='<span class="homeFeedItemText"><span class="preText">Favor on <a class="hoverDate">'+o.prettyDate+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+o.actionNote+"</a></span>";break;case"note":var q='<span class="homeFeedItemText">'+o.text+' <span class="date">'+o.prettyCreationDate+"</span></span>";break;case"relationship":var q='<span class="homeFeedItemText">'+o.text+' <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+o.actionNote+"</a></span>";break;case"want":var q='<span class="homeFeedItemText"><span class="preText">Wants:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+o.actionNote+"</a></span>";break;case"like":var q='<span class="homeFeedItemText"><span class="preText">Likes:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+o.actionNote+"</a></span>";break;case"meet":var q='<span class="homeFeedItemText"><span class="preText">Met on <a class="hoverDate">'+o.prettyDate+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+o.actionNote+"</a></span>";break;case"address":var q='<span class="homeFeedItemText">'+o.text+' <span class="date">'+o.prettyCreationDate+'</span> <a class="note">'+o.actionNote+"</a></span>";break;case"tag":var q='<span class="homeFeedItemText"><span class="preText">Tagged:</span> '+o.text+' <span class="date">'+o.prettyCreationDate+"</span></span>";break;default:var n="This friendListTextShow item should never show up. If it does, give us feedback (bottom right corner)"}return q};this.feedTextChildHtml=function(o){o.actionNote="write a note";switch(o.type){case"plan":var q='<span class="homeFeedItemText"><span class="preText">Plan on <a class="hoverDate">'+o.prettyDate+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+"</span></span>";break;case"rPlan":var q='<span class="homeFeedItemText"><span class="preText">Reminder to plan on <a class="hoverDate">'+o.prettyDate+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+"</span></span>";break;case"birthday":var q='<span class="homeFeedItemText"><span class="preText">Birthday <a class="hoverDate">'+o.prettyDate+"</a>:</span></span>";break;case"event":var q='<span class="homeFeedItemText"><span class="preText">Event on <a class="hoverDate">'+o.prettyDate+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+"</span></span>";break;case"talked":var q='<span class="homeFeedItemText"><span class="preText">Talked on <a class="hoverDate">'+o.prettyDate+'</a>.</span> <span class="date">'+o.prettyCreationDate+"</span></span>";break;case"date":var q='<span class="homeFeedItemText"><span class="preText">Date on <a class="hoverDate">'+o.prettyDate+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+"</span></span>";break;case"favor":var q='<span class="homeFeedItemText"><span class="preText">Favor on <a class="hoverDate">'+o.prettyDate+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+"</span></span>";break;case"note":var q='<span class="homeFeedItemText">'+o.text+' <span class="date">'+o.prettyCreationDate+"</span></span>";break;case"relationship":var q='<span class="homeFeedItemText">'+o.text+' <span class="date">'+o.prettyCreationDate+"</span></span>";break;case"want":var q='<span class="homeFeedItemText"><span class="preText">Wants:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+"</span></span>";break;case"like":var q='<span class="homeFeedItemText"><span class="preText">Likes:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+"</span></span>";break;case"meet":var q='<span class="homeFeedItemText"><span class="preText">Met on <a class="hoverDate">'+o.prettyDate+'</a>:</span> "'+o.text+'" <span class="date">'+o.prettyCreationDate+"</span></span>";break;case"address":var q='<span class="homeFeedItemText">'+o.text+' <span class="date">'+o.prettyCreationDate+"</span></span>";break;case"tag":var q='<span class="homeFeedItemText"><span class="preText">Tagged:</span> '+o.text+' <span class="date">'+o.prettyCreationDate+"</span></span>";break;default:var n="This feedTextChildShow item should never show up. If it does, give us feedback (bottom right corner)"}return q};this.renderFlyoutMenu=function(){var n='<div class="flyout_menu_18 link_menu feedwall_menu flyout_menu flyout_menu_left"><div class="flyout_menu_header_shadow"><div class="flyout_menu_header clearfix"><div class="flyout_menu_mask"></div><div class="flyout_menu_title">Item Options</div></div></div><div class="flyout_menu_content_shadow"><div class="menu_content"><a class="first edit">Edit Item</a><a class="last delete">Delete Item</a></div></div></div>';return n};this.renderFriendDetailFlyoutMenu=function(){var n='<div class="flyout_menu_18 link_menu feedwall_menu flyout_menu flyout_menu_left"><div class="flyout_menu_header_shadow"><div class="flyout_menu_header clearfix"><div class="flyout_menu_mask"></div><div class="flyout_menu_title">Item Options</div></div></div><div class="flyout_menu_content_shadow"><div class="menu_content"><a class="first edit">Edit Item</a><a class="last delete">Delete Item</a></div></div></div>';return n};this.renderReminderFlyoutMenu=function(){var n='<div class="flyout_menu_18 link_menu feedwall_menu flyout_menu flyout_menu_left"><div class="flyout_menu_header_shadow"><div class="flyout_menu_header clearfix"><div class="flyout_menu_mask"></div><div class="flyout_menu_title">Item Options</div></div></div><div class="flyout_menu_content_shadow"><div class="menu_content"><a class="first snooze">Snooze 1 week</a><a class="last delete">Delete Item</a></div></div></div>';return n};this.renderBirthdayFlyoutMenu=function(){var n='<div class="flyout_menu_18 link_menu feedwall_menu flyout_menu flyout_menu_left"><div class="flyout_menu_header_shadow"><div class="flyout_menu_header clearfix"><div class="flyout_menu_mask"></div><div class="flyout_menu_title">Item Options</div></div></div><div class="flyout_menu_content_shadow"><div class="menu_content"><a class="first ">Send Message</a><a class="last ">View Profile</a></div></div></div>';return n};this.renderMapListFlyoutMenu=function(){var n='<div class="flyout_menu_18 link_menu feedwall_menu flyout_menu flyout_menu_left">	<div class="flyout_menu_header_shadow">		<div class="flyout_menu_header clearfix">			<div class="flyout_menu_mask"></div>			<div class="flyout_menu_title">Item Options</div>		</div>	</div>	<div class="flyout_menu_content_shadow">		<div class="menu_content">				<a class="first ">Edit Address "Home"</a>				<a class=" ">Edit Address "Work"</a>				<a class="last ">View in New Window</a>		</div>	</div></div>';return n};this.renderFriendListFlyoutMenu=function(){var n='<div class="flyout_menu_18 link_menu feedwall_menu flyout_menu flyout_menu_left"><div class="flyout_menu_header_shadow"><div class="flyout_menu_header clearfix"><div class="flyout_menu_mask"></div><div class="flyout_menu_title">Select Sorting Field</div></div></div><div class="flyout_menu_content_shadow"><div class="menu_content"><a class="first "><div class="icon"><img class="sx_icons sx_birthday" src="images/sprite_face.png"/></div> Upcoming Birthday</a><a class=" "><div class="icon"><img class="sx_icons sx_tag" src="images/sprite_face.png"/></div> Tag</a><a class=" "><div class="icon"><img class="sx_icons sx_event" src="images/sprite_face.png"/></div> Last Activity</a><a class=" "><div class="icon"><img class="sx_icons sx_plan" src="images/sprite_face.png"/></div> Next Activity</a><a class=" "><div class="icon"><img class="sx_icons sx_like" src="images/sprite_face.png"/></div> Likes</a><a class=" "><div class="icon"><img class="sx_icons sx_want" src="images/sprite_face.png"/></div> Wants</a></div></div></div>';return n};this.friendDetailViewComposerHtml=function(){var n='<div id="friendDetailViewComposer" class="composer" style="clear:both;">	<div id="composerIconHelp" class="composer_tabs">	</div>	<div class="canvas_container"><div class="composer_rounded"><div class="composer_rounded composer_rounded_tr">		<div class="composer_rounded composer_rounded_bl"><div class="composer_rounded composer_rounded_br">			<div class="composer_well"><div class="well_content">				<div class="status_composer"><div class="status_composer_inner">								<div class="input_wrapper" style="float:left;"><textarea id="quickInput" class="limited" rows="1" cols="45"></textarea></div>								<input type="hidden" name="maxlength" value="100" />								<div id="detailViewQuickInputSubmitButton" class="status_button" style="float:right;"><input style="overflow:visible;width:auto;" class="inputsubmit post_button" type="submit" value="Note" name=""/></div>					<div id="feedbackQuickInput" class="feedback" style="clear:both;"></div>				</div></div>			</div></div>		</div></div>	</div></div></div></div>';return n};this.inlineFullComposer=function(n){var q=n.name;var t=n.text;var r=n.type;var o=n.prettyCreationDate;var u=n.id;prettyType=r;if(prettyType=="rPlan"){prettyType="reminder"}var s='	<div id="inlineFullComposer_'+u+'" class="composer">		<div id="canvas_container" class="canvas_container"><div id="composer_canvas" class="composer_rounded"><div class="composer_rounded composer_rounded_tr">			<div class="composer_rounded composer_rounded_bl"><div class="composer_rounded composer_rounded_br">				<div class="composer_well"><div class="well_content">					<div class="status_composer"><div class="status_composer_inner">						<div class="inlineComposer clearfix">							<div class="inlineComposerName"><a class="name">'+q+'</a></div>							<div class="inlineComposerInfo">'+prettyType+" originally written "+o+'</div>							<div class="inlineComposerCancel"><a id="quickInputCancel_'+u+'">cancel</a></div>						</div>					 	<div class="inlineComposer clearfix">					 		<div id="inlineComposerIcon_'+u+'" class="icon inlineComposerIcon"><img class="sx_icons sx_'+r+'" src="images/sprite_face.png"/></div>					 		<div class="floatLeft"><textarea id="quickInput_'+u+'" class="limited" rows="1" cols="55"></textarea></div>					 		<div class="floatRight"><input id="quickInputSubmitButton_'+u+'" class="inlineComposerSubmit inputsubmit" type="submit" value="Done" name=""/></div>							<input type="hidden" name="maxlength" value="100" />					 	</div>					</div></div>				</div></div>			</div></div>		</div></div></div>	</div>';return s};this.inlineChildComposer=function(n){var o=n.name;var s=n.text;var q=n.type;var t=n.id;prettyType=q;if(prettyType=="rPlan"){prettyType="reminder"}var r='	<div id="inlineFullComposer_'+t+'" class="composer">		<div id="canvas_container" class="canvas_container"><div id="composer_canvas" class="composer_rounded"><div class="composer_rounded composer_rounded_tr">			<div class="composer_rounded composer_rounded_bl"><div class="composer_rounded composer_rounded_br">				<div class="composer_well"><div class="well_content">					<div class="status_composer"><div class="status_composer_inner">						<div class="inlineComposerChild clearfix">							<div class="inlineComposerName"></div>							<div class="inlineComposerInfo">Add a note to this '+prettyType+'</div>							<div class="inlineComposerCancel"><a id="quickInputCancel_'+t+'">cancel</a></div>						</div>					 	<div class="inlineComposerChild clearfix">					 		<div id="inlineComposerIcon_'+t+'" class="icon inlineComposerIcon"><img class="sx_icons sx_note" src="images/sprite_face.png"/></div>					 		<div class="floatLeft"><textarea id="quickInput_'+t+'" class="limited" rows="1" cols="50"></textarea></div>					 		<div class="floatRight"><input id="quickInputSubmitButton_'+t+'" class="inlineComposerSubmit inputsubmit" type="submit" value="Done" name=""/></div>							<input type="hidden" name="maxlength" value="100" />					 	</div>					</div></div>				</div></div>			</div></div>		</div></div></div>	</div>';return r};this.inlineFriendDetailComposer=function(n){var s=n.text;var q=n.type;var o=n.prettyCreationDate;var t=n.id;prettyType=q;if(prettyType=="rPlan"){prettyType="reminder"}var r='	<div id="inlineFriendDetailComposer_'+t+'" class="composer">		<div id="canvas_container" class="canvas_container"><div id="composer_canvas" class="composer_rounded"><div class="composer_rounded composer_rounded_tr">			<div class="composer_rounded composer_rounded_bl"><div class="composer_rounded composer_rounded_br">				<div class="composer_well"><div class="well_content">					<div class="status_composer"><div class="status_composer_inner">						<div class="inlineFriendDetailComposer clearfix">							<div class="inlineComposerInfo">'+prettyType+" originally written "+o+'</div>							<div class="inlineComposerCancel"><a id="quickInputCancel_'+t+'">cancel</a></div>						</div>					 	<div class="inlineFriendDetailComposer clearfix">					 		<div id="inlineComposerIcon_'+t+'" class="icon inlineComposerIcon"><img class="sx_icons sx_'+q+'" src="images/sprite_face.png"/></div>					 		<div class="floatLeft"><textarea id="quickInput_'+t+'" class="limited" rows="1" cols="45"></textarea></div>					 		<div class="floatRight"><input class="inlineComposerSubmit inputsubmit" id="quickInputSubmitButton_'+t+'" type="submit" value="Done" name=""/></div>							<input type="hidden" name="maxlength" value="100" />					 	</div>					</div></div>				</div></div>			</div></div>		</div></div></div>	</div>';return r};this.inlineFriendDetailChildComposer=function(n){var r=n.text;var o=n.type;var s=n.id;prettyType=o;if(prettyType=="rPlan"){prettyType="reminder"}var q='	<div id="inlineFriendDetailComposer_'+s+'" class="composer">		<div id="canvas_container" class="canvas_container"><div id="composer_canvas" class="composer_rounded"><div class="composer_rounded composer_rounded_tr">			<div class="composer_rounded composer_rounded_bl"><div class="composer_rounded composer_rounded_br">				<div class="composer_well"><div class="well_content">					<div class="status_composer"><div class="status_composer_inner">						<div class="inlineFriendDetailChildComposer clearfix">							<div class="inlineComposerInfo">Add a note to this '+prettyType+'</div>							<div class="inlineComposerCancel"><a id="quickInputCancel_'+s+'">cancel</a></div>						</div>					 	<div class="inlineFriendDetailChildComposer clearfix">					 		<div id="inlineComposerIcon_'+s+'" class="icon inlineComposerIcon"><img class="sx_icons sx_note" src="images/sprite_face.png"/></div>					 		<div class="floatLeft"><textarea id="quickInput_'+s+'" class="limited" rows="1" cols="40"></textarea></div>					 		<div class="floatRight"><input class="inlineComposerSubmit inputsubmit" id="quickInputSubmitButton_'+s+'" type="submit" value="Done" name=""/></div>							<input type="hidden" name="maxlength" value="100" />					 	</div>					</div></div>				</div></div>			</div></div>		</div></div></div>	</div>';return q};this.typeToolTips=function(n){switch(n){case"note":var o="Notes are the default way to remember things about your friends";break;case"event":var o="An event is something you are doing with this friend on a specific date. Start by typing a date (e.g. <em>next tuesday</em>).";break;case"talked":var o="'Talked' helps you remember when you've spoken. The last time you talked shows up in the friend list.";break;case"plan":var o="A plan is an event that you haven't finalized all the details on yet. Start by typing <em>plan</em>";break;case"tag":var o="A tag lets you organize friends in groups. Start by typing <em>tag</em>";break;case"like":var o="Like lets you remember what your friends like. Start by typing <em>likes</em>";break;case"want":var o="Want lets you remember what your friend want. Start by typing <em>wants</em>";break;case"address":var o="Use <em>address</em> to remember where your friend lives. Start by typing <em>address</em>";break;default:var o='Other notes we understand:<BR><ul style="list-style-type:none;"><li><img class="sx_icons sx_favor icon" src="images/sprite_face.png"/> <strong>favor</strong></li><li><img class="sx_icons sx_date icon" src="images/sprite_face.png"/> <strong>date</strong></li><li><img class="sx_icons sx_relationship icon" src="images/sprite_face.png"/> relationships, such as <strong>brother, sister, girlfriend, boyfriend, gf, bf, best friend, friend, knows</strong></li><li><img class="sx_icons sx_event icon" src="images/sprite_face.png"/> <strong>met</strong>, for remembering when you last met up with someone</li></ul>'}return o};this.quickInputEventHandlers=function(D,x,z){f=z;if(f=="dataType"){f="home"}switch(f){case"home":var r="inlineFullComposer";var w="inlineChildComposer";var B="homeNoteChild";break;case"friendDetail":var r="inlineFriendDetailComposer";var w="inlineFriendDetailChildComposer";var B="noteChild";break}var o=D.id;var y=D.uid;var C=D.iid;var t=$("#"+o+"");var q=$("#"+r+"_"+o+"");if(x==false){var n=quickInputView[r](D);e(o);var u=D.origText;t.after(n);t.hide()}else{var n=quickInputView[w](D);e(o);var A="<div class ="+B+">"+n+"</div>";t.after(A)}var q=$("#"+r+"_"+o+"");var v=$("#quickInput_"+o+"");var s=$("#quickInputSubmitButton_"+o+"");var E=$("#quickInputCancelButton_"+o+"");if(x==false){v.attr("value",u)}v.focus();v.autogrow({lineHeight:16});v.maxlength({useInput:true});v.keyup(function(F){var G=this.value;if(F.keyCode==13){if(G.length>0){h(D,x);if(x==false){t.show()}}}else{if(F.keyCode==27){e(o);if(x==false){t.show()}}else{quickInput.lookup(G)}}});s.click(function(){h(D,x);if(x==false){t.show()}});v.blur(function(){var F=$(this);$(this).fadeOut(200,function(){e(o);if(x==false){t.show()}})})};var h=function(r,n){var u=r.id;var s=r.uid;var t=$("#quickInput_"+u+"").attr("value");if(n==false){var o=r.iid}if(n==true){q=r.iid}else{if(n==false){var q=r.pid}}quickInput.submit(s,t,n,q,o);e(u)};var e=function(q){if(f=="dataType"){f="home"}switch(f){case"home":var o="inlineFullComposer";var n="homeNoteChild";break;case"friendDetail":var o="inlineFriendDetailComposer";var n="noteChild";break}jqComposer=$("#"+o+"_"+q+"");jqComposer.parent("."+n).remove();jqComposer.remove()};this.mainQuickInputEventHandlers=function(q,r){if(r!=null){var o=$("#friendPopup #quickInput_"+r+"");var n=$("#friendPopup #quickInputSubmitButton_"+r+"")}else{var o=$("#friendPopup #quickInput");var n=$("#friendPopup #detailViewQuickInputSubmitButton")}o.autogrow({lineHeight:16});o.focus();o.maxlength({useInput:true});o.keyup(function(t){var u=this.value;if(t.keyCode==13){a(q,r);return}if(t.keyCode==27){d(r);return}var s=quickInput.lookup(u);if(s!=false){c(s,r)}});o.parents(".canvas_container").blur(function(){d(r)});n.click(function(){a(q,r)})};var d=function(n){if(n!=null){$("#friendPopup #inlineFriendDetailComposer_"+n+"").parent().remove()}else{$("#friendPopup #quickInput").blur(function(){$("#quickInput").attr("value","");l()})}};var a=function(n,q){if(q!=null){var o=$("#friendPopup #quickInput_"+q+"").attr("value");quickInput.submit(n,o,true,q);$("#friendPopup #inlineFriendDetailComposer_"+q+"").parent().remove()}else{var o=$("#friendPopup #quickInput").attr("value");quickInput.submit(n,o,true,q);$("#quickInput").attr("value","");l()}};var c=function(o,q){if(q==null){q=""}var n=quickInputView.quickInputTips(o);$("#feedbackQuickInput"+q+"").html(n);g.createIconHelp(o)};var l=function(){$("#feedbackQuickInput").empty();g.createIconHelp("note")};this.createIconHelp=function(x){var w=["talked","note","event","plan","tag","like","address"];var t=["<u>T</u>alked","Note","<u>E</u>vent","<u>P</u>lan","Tag","<u>L</u>ikes","Address"];var r='<ul class="clearfix">';var u=function(E,C,D){var F='	<li class="selected {type : '+D+'}">		<div class="composer_tab_rounded"><div class="composer_tab_rounded composer_tab_rounded_tr"><div class="composer_tab_rounded composer_tab_rounded_bl"><div class="composer_tab_rounded composer_tab_rounded_br"><div class="composer_tab_arrow">			<div class="tab_link">				<div class="icon" style="margin:-2px 4px 0px 0px"><img class="sx_icons sx_'+E+'" src="images/sprite_face.png"/></div>				'+C+"		</div>	</div></div></div></div></div></li>";return F};var z=function(E,C,D){var F='<li class="icons { type : '+D+' }"><div class="composerIcon"><img class="sx_icons sx_'+E+'" src="images/sprite_face.png"/></div>'+C+"</li>";return F};var y='	<li class="more"><a id="compose_more_container" class="more_composers"> </a></li></ul>';var s=r;for(var o=0;o<w.length;o++){var B=w[o];var v=t[o];if(B==x){s+=u(B,v,o)}else{s+=z(B,v,o)}}s+=y;$("#composerIconHelp").empty().append(s);var A=$("#composerIconHelp .icons");var n=$("#composerIconHelp .selected");if(!$.browser.msie){A.tooltip({track:true,delay:0,showURL:false,fade:250,bodyHandler:function(){var D=$(this).metadata();var F=D.type;var E=w[F];var C=quickInputView.typeToolTips(E);return C}})}var q=$("#friendPopup #quickInput");A.click(function(){var C=$(this).metadata();var E=C.type;var D=w[E].toLowerCase();D=D+" ";q.attr("value",D).focus();q.trigger("keyup")});n.click(function(){var C=$(this).metadata();var E=C.type;var D=w[E].toLowerCase();D=D+" ";q.attr("value",D).focus();q.trigger("keyup")})}};searchBoxView=new function(){var a=this;this.searchBoxHtml='<h2>Search</h2><input type="text" id="searchBox" name="searchBox" value="Search your friends" maxlength="20"/>';this.eventHandlers=function(){$("#searchBox").keyup(function(){searchBoxControl.lookup(this.value)});$("#searchBox").focus(function(){this.value="";$(this).css({color:"black"});var c=$("#side").find("li");c.css({"background-color":"white"})});$("#searchBox").blur(function(){this.value="Search your friends";$(this).css({color:"#999999"})})}};sidebarView=new function(){var e=this;var f="";var d="";this.createNavigation=function(){e.renderNavigation();e.navigationEventHandlers()};this.createFriendsOverview=function(g){e.renderFriendsOverview();e.renderNotesSummary(g);e.friendOverviewHandlers()};this.createAddons=function(){};this.renderNavigation=function(){var g='<div id="presenceSection"></div><h2>Navigate</h2><ul id="menuNavigation" class="icon_list clearfix">	<li id="homeLink">		<div class="icon"><img class="sx_icons sx_home" src="images/sprite_face.png"/></div> <a><span><strong>Dashboard</strong></a></span></li>	<li id="friendListLink">		<div class="icon"><img class="sx_icons sx_personed" src="images/sprite_face.png"/></div> <a><span><strong>Friend List</strong></a></span></li>	<li id="mapLink">		<div class="icon"><img class="sx_icons sx_map" src="images/sprite_face.png"/></div> <a><span><strong>Friend Map</strong></a></span></li>	<li id="tagLink">		<div class="icon"><img class="sx_icons sx_tag" src="images/sprite_face.png"/></div> <a><span><strong>Tag Editor</strong></a></span></li></ul>';var l=searchBoxView.searchBoxHtml;var h=f+g+l+d;$("#side").append(h);searchBoxView.eventHandlers();c($("#homeLink"))};this.renderFriendsOverview=function(){var g="<div id=notesSummary></div><div id=tagItems></div>";var h=f+g+d;$("#side").append(h)};this.renderNotesSummary=function(o){var s=o.idc;var n=o.iec;var r=o.ipc;var l=o.inc;var u=o.ilc;var h=o.iwc;var t=o.irc;var g=o.ifc;var q='<h2>Your Notes</h2><ul class="icon_list clearfix">	<li id="eventsButton"><div class="icon"><img class="sx_icons sx_event" src="images/sprite_face.png"/></div> <a><span><strong>'+n+'</strong> events</a></span></li>	<li id="notesButton"><div class="icon"><img class="sx_icons sx_note" src="images/sprite_face.png"/></div> <a><span><strong>'+l+'</strong> notes</a></span></li>	<li id="plansButton"><div class="icon"><img class="sx_icons sx_plan" src="images/sprite_face.png"/></div> <a><span><strong>'+r+'</strong> plans </a></span></li>	<li id="dateButton"><div class="icon"><img class="sx_icons sx_date" src="images/sprite_face.png"/></div> <a><span><strong>'+s+'</strong> dates</a></span></li>	<li id="likesButton"><div class="icon"><img class="sx_icons sx_like" src="images/sprite_face.png"/></div> <a><span><strong>'+u+'</strong> likes</a></span></li>	<li id="favorsButton"><div class="icon"><img class="sx_icons sx_favor" src="images/sprite_face.png"/></div> <a><span><strong>'+g+'</strong> favors</a></span></li>	<li id="wantsButton"><div class="icon"><img class="sx_icons sx_want" src="images/sprite_face.png"/></div> <a><span><strong>'+h+'</strong> wants</a></span></li>	<li id="relationshipButton"><div class="icon"><img class="sx_icons sx_relationship" src="images/sprite_face.png"/></div> <a><span><strong>'+t+"</strong> relations</a></span></li></ul>";$("#notesSummary").empty().append(q);a()};this.showTags=function(n,q){var v=q.maxShowTags;var t=q.tags.numTags||0;var r='<h2><a id="editTagsLinks">Tags</a></h2>	<ul class="icon_list clearfix">';var h="</ul>";var w="";if(t<=v){var w="</div>"}else{if(n==false){var t=Math.min(t,v);var w='<div class="morecontent_toggle_link more_link"><a id="homepage_bookmarks_show_more" style="overflow: hidden; height: auto; display: block;">more</a></div>'}else{if(n==true){var w='<div class="morecontent_toggle_link less_link"><a id="homepage_bookmarks_show_less" style="overflow: hidden; height: auto; display: block;">less</a></div>'}}}var g="";for(var o=0;o<t;o++){var u=q.tags[o].count;var z='<li id="status-life-tag" class="info {id:'+o+'}"><div class="icon"><img src="images/sprite_face.png" class="sx_icons sx_tag"/></div><a><strong>'+u+"</strong> ";var l="</a></li>";var y=q.tags[o].tag;g+=z+y+l}if(t==0){var x='<div id="tagSideTip" class="fbgreybox clearfix"><p>Tags help you organize groups of friends.</p><p>Useful if you\'re looking for a job, organizing an event, or sorting activity buddies.</p></div>'}else{var x=""}var s=r+g+h+w+x;$("#tagItems").empty().append(s);e.tagEventHandlers()};this.navigationEventHandlers=function(){var g=$("#menuNavigation").children("li");$("#homeLink").click(function(){controller.viewHandler.showHome();c($(this))});$("#friendListLink").click(function(){controller.viewHandler.showFriendList();c($(this))});$("#mapLink").click(function(){controller.viewHandler.showMap();c($(this))});$("#tagLink").click(function(){controller.viewHandler.loadTags();c($(this))})};var c=function(g){var h=$("#side").find("li");h.css({"background-color":""});g.css({"background-color":"#D4E0FF"})};var a=function(){$("#eventsButton").click(function(){controller.viewHandler.showDataTypes("activities","upcoming");c($(this))});$("#notesButton").click(function(){controller.viewHandler.showDataTypes("notes");c($(this))});$("#plansButton").click(function(){controller.viewHandler.showDataTypes("activities","plan");c($(this))});$("#dateButton").click(function(){controller.viewHandler.showDataTypes("activities","upcoming");c($(this))});$("#likesButton").click(function(){controller.viewHandler.showDataTypes("likes","likes");c($(this))});$("#favorsButton").click(function(){controller.viewHandler.showDataTypes("reciprocity");c($(this))});$("#wantsButton").click(function(){controller.viewHandler.showDataTypes("reciprocity","wants");c($(this))});$("#relationshipButton").click(function(){controller.viewHandler.showDataTypes("relations");c($(this))})};this.tagEventHandlers=function(){$("#tagItems #homepage_bookmarks_show_more").click(function(){sidebarControl.refreshTags(true)});$("#tagItems #homepage_bookmarks_show_less").click(function(){sidebarControl.refreshTags(false)});$("#tagItems li").click(function(){var g=$(this).metadata();sidebarControl.loadTagFriends(g.id);c($(this))});$("#side #editTagsLinks").click(function(){controller.viewHandler.loadTags()})};this.friendOverviewHandlers=function(){$("#status-life-fbfriends").click(function(){controller.viewHandler.showFriendList()})}};tagView=new function(){this.renderView=function(n){h(n);g(n)};var h=function(o){var q=o.length;var n='<div id="friendListDivider" class="clearfix">	<h2>Tag Editor ('+q+" tags)</h2></div>";$("#homebody").html(n)};var g=function(o){var s=o.length;if(s==0){var v="<div class=\"listExplanation\">You haven't added a tag to anybody yet. Tags are powerful tools to help you organize your friends. Socialfly users often tag people with:	<ul>		<li>Work</li>		<li>College</li>		<li>Investor</li>		<li>Family</li>		<li>girls / guys</li>	</ul>	Stary by typing 'tag' followed by the tag you want to add to someone (e.g. <em>tag poker</em> for your poker group)</div>";$("#homebody").append(v)}else{for(var r=0;r<s;r++){var n=o[r].friends.length;var q=o[r].name;var u=o[r].id;var t="<div id="+u+'>  <div class="parentListItem parentClosed clearfix">  	<div class="icon"><img class="sx_icons sx_tag" src="images/sprite_face.png"/></div>  	<div class="parentListName">'+q+" ("+n+')</div>  	<div class="parentListAction"></div>  </div>  <div class="tagFriendListSection"></div></div>';$("#homebody").append(t);c(o[r])}}$("#homebody").append('<div id="tagListTipBottom" class="clearfix fbgreybox"><strong>Did you know?</strong> &nbsp;&nbsp; Tags are a great way to sort friends, even if you\'re just doing it temporarily (e.g. if you\'re organizing an activity, looking for a job, etc). You can always rename or delete them later.</div>')};var d=function(x){var w=$("#"+x.id+" .tagFriendListSection");var s=x.friends.length;w.empty();for(var u=0;u<s;u++){var r=x.friends[u];var q=r.id;var n=r.name;var o=r.otherTags.join("</a>, <a>");if(o.length>0){var t="Other tags: <a>"+o+"</a>"}else{var t=""}var v='<div class="childListItem clearfix">	<div class="childListName"><a id='+q+">"+n+'</a></div>	<div class="childListData">'+t+'</div>	<div class="childListAction"><a>Edit</a></div></div>';w.append(v);f(r)}};var c=function(n){var q=$("#"+n.id+"").children(".parentListItem");var u=$("#"+n.id+" .tagFriendListSection");var r=n.name;var s=n.friends.length;var t='	<div class="icon"><img class="sx_icons sx_tag" src="images/sprite_face.png"/></div>	<div class="parentListLargeName">'+r+" ("+s+')<BR>		<p class="renameDelTagSection"><a class="renameTagLink">rename this tag</a> | <a class="deleteTagLink">delete this tag</a></p>	</div>';var o=q.html();q.toggle(function(){$(this).html(t).addClass("parentOpen").removeClass("parentClosed");a($(this).find(".renameDelTagSection"),n);d(n)},function(){$(this).html(o).addClass("parentClosed").removeClass("parentOpen");u.empty()})};var a=function(o,n){o.children(".renameTagLink").click(function(){l($(this).parent(),n);return false});o.children(".deleteTagLink").click(function(){e($(this).parent(),n);return false})};var l=function(o,n){var q='<input type="text" name="tagListRenamer" value="Enter to rename" maxlength="20"/><input type="submit" name="" value="rename" style="color:#fff;" class="inputsubmit post_button"/> <a>cancel</a>';var s=o.html();o.html(q);var u=o.children("input:eq(0)");var r=o.children("input:eq(1)");u.click(function(){u.attr("value","");$(this).css({color:"black"});u.keyup(function(v){if(v.keyCode==27){o.html(s);a(o,n)}if(v.keyCode==13){t(o,u,n)}});return false});r.click(function(){t(o,u,n)});var t=function(){var v=u.attr("value");if(v.length<1){return false}tagControl.renameTag(v,n.tid);o.html(s);a(o,n);return false}};var e=function(o,n){var q="This tag will be removed from "+n.fc+' friends. Are you sure?&nbsp;&nbsp; <a class="confirmYes">yes</a> | <a class="confirmNo">no</a>';var r=o.html();o.html(q);$(".renameDelTagSection .confirmYes").click(function(){model.deleteUserTag(n.tid);o.parents(".parentListItem").parent().remove();return false});$(".renameDelTagSection .confirmNo").click(function(){o.html(r);a(o,n);return false})};var f=function(n){$("#"+n.id).click(function(){homeControl.friendClick(n.uid)})}};controller=new function(){var c=this;this.facebox=false;this.viewHandler;this.iframe=0;this.state=0;var d={getUserInfo:0,getHomeViewData:0};this.load=function(){$.facebox.settings.opacity=0.35;controller.iframe=iframe;model.init();quickInput.init();if(!c.viewHandler){c.viewHandler=new ViewHandler();c.viewHandler.init()}model.getMainPageInformation()};this.recheckUserState=function(){if(!iframe){if(!FB.Facebook.apiClient.get_session()||fbUserId!=FB.Facebook.apiClient.get_session().uid){window.location="index.php"}}};this.getFbCacheCallback=function(){};this.updateFbCacheCallback=function(e){if(e){model.getHomeViewData();model.getAddresses()}model.getFbStatsCache()};this.getUserInfoCallback=function(){d.getUserInfo=1;if(controller.state==0){controller.callbackFinishLoading()}headerControl.createPresence()};this.getHomeViewDataCallback=function(){d.getHomeViewData=1;if(controller.state==0){controller.callbackFinishLoading()}else{if(controller.state==1&&controller.viewHandler.currentView=="home"){homeControl.updateFeedSuggestion()}}this.recheckUserState()};this.getSidebarDataCallback=function(){sidebarControl.refreshInteractionSummary();sidebarControl.refreshTags(0)};this.nuxAddFriendsCallback=function(e){controlFriendList.nuxAddFriendsCallback(e);model.getBackgroundInfo()};this.getInteractionSummaryCallback=function(){sidebarControl.refreshInteractionSummary()};this.getAddressesCallback=function(){if(controller.state==1&&controller.viewHandler.currentView=="map"){c.viewHandler.showMap()}};this.getUserTagsCallback=function(){if(controller.state==1){sidebarControl.refreshTags(0);if(c.facebox==true){friendDetailControl.refreshTagsCallback()}if(controller.viewHandler.currentView=="tagEditor"){tagControl.refresh()}}};this.getFbFriendDataCallback=function(){friendDetailControl.getFbFriendDataCallback()};this.getFriendDetailDataCallback=function(){if(c.facebox==true){friendDetailControl.getFriendDetailDataCallback();if(c.viewHandler.currentView=="home"){homeControl.updateFeedSuggestion()}}};this.getFriendTrackedCallback=function(e){if(c.viewHandler.currentView=="friendList"&&model.fbFriendsTracked.length==12){friendListView.renderNux(c.getNuxState())}};this.addUpdateDeleteInteractionCallback=function(f,g){model.loadInteractionSummary();if(g=="tag"){model.getUserTags()}else{if(g=="address"){model.getAddresses()}}model.getHomeViewData();if(c.viewHandler.currentView=="dataTypes"){var e={notes:"model.loadInteractionsNotes()",activities:"model.loadInteractionsIdates()",likes:"model.loadInteractionsLikes()",reciprocity:"model.loadInteractionsReciprocity()",relations:"model.loadInteractionsRelations()"};var h=new Function(e[c.viewHandler.currentSubView]);h()}if(c.facebox==true){model.getFriendDetailData(f)}};this.loadInteractionsCallback=function(){if(controller.state==1){dataTypeControl.refresh()}};this.callbackFinishLoading=function(){for(var e in d){if(d[e]==0){return}}if($.browser.msie){loaderView.showIELightbox(model.userInfo.fname)}homeControl.init();model.getFbCache();model.getBackgroundInfo();google.load("maps","2",{callback:a});c.state=1};var a=function(){var e=document.createElement("script");e.src="_lib/javascript/maps/labeledmarker.js";e.type="text/javascript";document.getElementsByTagName("head")[0].appendChild(e)};this.getNuxState=function(){var f={step1:false,step2:false,importButton:false,newUser:model.newUser,active:false};var e=model.sffc;var g=model.sfic;if(e<10){f.importButton=true}if(e<10){f.step1=true}if(g<3){f.step2=true}if(f.step1||f.step2){f.active=true}return f}};function ViewHandler(){var a=this;this.callStats=0;this.currentView;this.currentSubView;this.init=function(){loaderView.resetView();headerControl.init();sidebarControl.init();homeView.renderLoading();footerControl.init();a.currentView="home"};this.showHome=function(){if(a.currentView!="home"){a.currentView="home";headerControl.refreshHeader()}homeControl.init()};this.showFriendList=function(){if(a.currentView!="friendList"){a.currentView="friendList";headerControl.refreshHeader()}controlFriendList.init();model.stats("Nav",0,0,0,0,0,0,0,0,0,1,0,0)};this.showMap=function(){if(a.currentView!="map"){a.currentView="map";headerControl.refreshHeader()}mapControl.init();model.stats("Nav",0,0,0,0,0,0,0,0,1,0,0,0)};this.showSearch=function(c){if(a.currentView!="search"){a.currentView="search";headerControl.refreshHeader()}controlFriendList.init(c);if(a.callStats==0){a.callStats=setTimeout(function(){model.stats("Search",0,0,0,0,0,0,0,1,0,0,0,0);controller.viewHandler.callStats=0},3000)}};this.loadTagFriends=function(c){if(a.currentView!="tags"){a.currentView="tags";headerControl.refreshHeader()}controlFriendList.init(c);model.stats("Nav",0,0,0,0,0,0,0,0,0,0,1,0)};this.loadTags=function(){if(a.currentView!="tagEditor"){a.currentView="tagEditor";headerControl.refreshHeader()}tagControl.init();model.stats("Nav",0,0,0,0,0,0,0,0,0,0,1,0)};this.showDataTypes=function(d,c){if(a.currentView!="dataTypes"){a.currentView="dataTypes";headerControl.refreshHeader()}dataTypeControl.init(d,c);model.stats("Nav",0,0,0,0,0,0,0,0,0,0,0,1)}}function TextData(d,a,c){this.tabType=c;this.id=d.tp+a;this.iid=d.eid;this.uid=d.fid;this.name=model.f[d.fid].name;this.creationDate=d.lu;this.prettyCreationDate=getDateDescription(d.lu);this.creationDateInt=date2Int(d.lu);this.type=d.tp;this.text=d.tx;this.origText=html_entity_decode(d.ot,"ENT_QUOTES");this.bu=d.bu}function ActivityData(c,a){this.tabType="activities";this.id=c.tp+a;this.date=c.d;this.prettyDate=getDateDescription(c.d);this.dateInt=date2Int(c.d);this.iid=c.eid;this.uid=c.fid;this.name=model.f[c.fid].name;this.creationDate=c.lu;this.prettyCreationDate=getDateDescription(c.lu);this.creationDateInt=date2Int(c.lu);this.type=c.tp;this.text=c.tx;this.origText=html_entity_decode(c.ot,"ENT_QUOTES")}dataTypeControl=new function(){var d=this;var f=[];var a={notes:{id:0,type:"notes",load:"model.loadInteractionsNotes()",render:"dataTypeView.renderNotesTab()"},activities:{id:1,type:"activities",load:"model.loadInteractionsIdates()",render:"dataTypeView.renderActivitiesTab()"},likes:{id:2,type:"likes",load:"model.loadInteractionsLikes()",render:"dataTypeView.renderLikesTab()"},reciprocity:{id:3,type:"reciprocity",load:"model.loadInteractionsReciprocity()",render:"dataTypeView.renderReciprocityTab()"},relations:{id:4,type:"relations",load:"model.loadInteractionsRelations()",render:"dataTypeView.renderRelationshipsTab()"}};var c=a.notes;var e="";viewData=[];this.init=function(h,g){dataTypeView.renderView(a[h],g)};this.load=function(h,g){if(h!=null){c=a[h]}else{c=a.notes}controller.viewHandler.currentSubView=c.type;e=g;loadData=new Function(c.load);loadData()};this.createView=function(){var g=model.getInteractions();var l=c.type;f=g[l];viewData=[];var n=f.length;for(var h=0;h<n;h++){if(l=="activities"){viewData.push(new ActivityData(f[h],h))}else{viewData.push(new TextData(f[h],h,l))}}renderData=new Function(c.render);renderData()};this.refresh=function(){d.createView()};this.filter=function(o){var g=[];var o=c.type+"-"+o;switch(o){case"activities-upcoming":var l=new Date();((l.getDate()<10?"0":"")+l.getDate());var h=l.getFullYear()+((l.getMonth()<10?"0":"")+l.getMonth())+((l.getDate()<10?"0":"")+l.getDate());g=viewData.filter(function(r){var s=(r.type=="plan");var u=(r.dateInt>=h);var t=((s==false)&&(u==true));return t});break;case"activities-past":var l=new Date();var h=l.getFullYear()+((l.getMonth()<10?"0":"")+l.getMonth())+((l.getDate()<10?"0":"")+l.getDate());g=viewData.filter(function(r){var t=(r.type=="plan");var s=(r.dateInt<=h);var u=((t==false)&&(s==true));return u});break;case"activities-recent":var l=new Date();var n=new Date(l.setDate(l.getDate()-7));var q=n.getFullYear()+((n.getMonth()<10?"0":"")+n.getMonth())+((n.getDate()<10?"0":"")+n.getDate());g=viewData.filter(function(r){var s=(r.creationDateInt>=q);var t=(s==true);return t});break;case"activities-plan":g=viewData.filter(function(r){return(r.type=="plan")});break;case"likes-likes":g=viewData.filter(function(r){return(r.type=="like")});break;case"likes-dislikes":g=viewData.filter(function(r){return(r.type=="dislike")});break;case"reciprocity-favorin":g=viewData.filter(function(r){var t=r.bu;var s=(r.type=="favor");var u=((t==true)&&(s==true));return u});break;case"reciprocity-favorout":g=viewData.filter(function(r){var t=r.bu;var s=(r.type=="favor");var u=((t==false)&&(s==true));return u});break;case"reciprocity-wants":g=viewData.filter(function(r){return(r.type=="want")});break;default:g=viewData}return g};this.friendClick=function(g){friendDetailControl.init(g)};this.deleteFeed=function(g){var n=g.iid;var l=g.type;var h=g.uid;model.deleteInteraction(h,n,l)};this.snoozeSuggestionFeed=function(h){var g=[];g.push(h.sid);model.suggestionSnooze(g)};this.removeSuggestionFeed=function(h){var g=[];g.push(h.sid);model.suggestionClose(g)}};footerControl=new function(){this.init=function(){footerView.createFooter()}};function FriendCard(a){this.name=model.f[a].name;this.uid=a;this.picUrl=model.f[a].ps;this.profileUrl="http://www.facebook.com/profile.php?id="+a;this.composeMessageUrl="http://www.facebook.com/inbox/?compose&id="+a;if(model.friendTags[a]==null){this.tags=[]}else{this.tags=model.friendTags[a].tags}if(model.s[a]!=null){this.period=model.s[a].p;this.rating=model.s[a].i}else{this.period=0;this.rating=0}}function Feed(c,a,q,r,g,e,h,d,n,l,o){this.id=c;this.iid=a;this.uid=n;this.pid=l;this.numChild=d;this.text=r;this.origText=g;this.date=e;this.prettyDate=getDateDescription(e);this.prettyCreationDate=getDateDescription(h);this.type=q;this.childFeed=o;if(q=="plan"){this.prettyDate="~"+this.prettyDate}if(q!="event"){this.iconStr="sx_icons sx_"+q}else{var f=new Date((e||"").replace(/-/g,"/").replace(/[TZ]/g," "));this.iconStr="sx_dateicons sx_"+f.getDate()}}friendDetailControl=new function(){var c=this;c.friendCard;c.futureFeed=[];c.pastFeed=[];this.init=function(e){if(model.s[e]==null){model.addUpdateFriend(e,0,0)}model.getFbFriendData(e);model.getFriendDetailData(e);a(e);controller.facebox=true};this.getFriendDetailDataCallback=function(){if(model.friendFeedFuture==null){var q=0}else{var q=model.friendFeedFuture.length}if(model.friendFeedPast==null){var G=0}else{var G=model.friendFeedPast.length}c.futureFeed=[];c.pastFeed=[];for(var A=0;A<q;A++){var z="popupFeedItemId_"+model.friendFeedFuture[A].eid;var D=model.friendFeedFuture[A].d;var u=model.friendFeedFuture[A].eid;var y=-1;var H=html_entity_decode(model.friendFeedFuture[A].ot,"ENT_QUOTES");var x=model.friendFeedFuture[A].tx;var h=model.friendFeedFuture[A].tp;var n=model.friendFeedFuture[A].nc;var f=model.friendFeedFuture[A].lu;var o=[];var l=parseInt(model.friendFeedFuture[A].nc);for(j=0;j<l;j++){var w="popupFeedItemId_"+model.friendFeedFuture[A].eid+"-"+model.friendFeedFuture[A][j].eid;var t=model.friendFeedFuture[A][j].d;var s=model.friendFeedFuture[A][j].eid;var F=u;var e=html_entity_decode(model.friendFeedFuture[A][j].ot,"ENT_QUOTES");var B=model.friendFeedFuture[A][j].tx;var C=model.friendFeedFuture[A][j].tp;var g=model.friendFeedFuture[A][j].nc;var r=model.friendFeedFuture[A][j].lu;o.push(new Feed(w,s,C,B,e,t,r,g,c.friendCard.uid,F,[]))}c.futureFeed.push(new Feed(z,u,h,x,H,D,f,n,c.friendCard.uid,y,o))}for(var A=0;A<G;A++){var z="popupFeedItemId_"+model.friendFeedPast[A].eid;var D=model.friendFeedPast[A].d;var u=model.friendFeedPast[A].eid;var y=-1;var H=html_entity_decode(model.friendFeedPast[A].ot,"ENT_QUOTES");var x=model.friendFeedPast[A].tx;var h=model.friendFeedPast[A].tp;var n=model.friendFeedPast[A].nc;var f=model.friendFeedPast[A].lu;var E=[];var v=parseInt(model.friendFeedPast[A].nc);for(j=0;j<v;j++){var w="popupFeedItemId_"+model.friendFeedPast[A].eid+"-"+model.friendFeedPast[A][j].eid;var t=model.friendFeedPast[A][j].d;var s=model.friendFeedPast[A][j].eid;var F=u;var e=html_entity_decode(model.friendFeedPast[A][j].ot,"ENT_QUOTES");var B=model.friendFeedPast[A][j].tx;var C=model.friendFeedPast[A][j].tp;var g=model.friendFeedPast[A][j].nc;var r=model.friendFeedPast[A][j].lu;E.push(new Feed(w,s,C,B,e,t,r,g,c.friendCard.uid,F,[]))}c.pastFeed.push(new Feed(z,u,h,x,H,D,f,n,c.friendCard.uid,y,E))}friendDetailView.createInteractions(c.futureFeed,c.pastFeed)};this.getFbFriendDataCallback=function(){var e=c.friendCard.uid;var f=model.friendFbData[e];friendDetailView.updateFbData(f)};var a=function(e){d(e);friendDetailView.createHtml(c.friendCard,controller.getNuxState())};var d=function(e){c.friendCard=new FriendCard(e)};this.updateFriendListControls=function(e,f){if(e==null){e=c.friendCard.rating}if(f==null){f=c.friendCard.period}c.friendCard.rating=e;c.friendCard.period=f;if(controller.viewHandler.currentView=="friendList"){controlFriendList.friendDetailCallback(c.friendCard.uid,e,f)}else{model.addUpdateFriend(c.friendCard.uid,e,f)}};this.refreshTagsCallback=function(){d(c.friendCard.uid);friendDetailView.createFriendTags(c.friendCard)}};function FriendListItem(a){this.name=html_entity_decode(model.f[a].name,"ENT_QUOTES");this.uid=a;this.period=0;this.rating=0;if(model.s[a]!=null){this.period=model.s[a].p;this.rating=model.s[a].i;this.lt=dayDiff(new Date(),new Date(model.s[a].lt));this.rtd=dayDiff(new Date(),new Date(model.s[a].rtd))}}controlFriendList=new function(){var d=this;this.friend=[];this.friendHash=[];this.friendSlice=[];this.maxPerPage=30;this.page=1;this.totalCount=0;var e=["Reminder off","Once a year","Every 9 months","Every 6 months","Every 3 months","Every 2 months","Every 6 weeks","Every 4 weeks","Every 3 weeks","Every 2 weeks","Every week","Every 3 days"];var f=[0,360,270,180,90,60,45,30,21,14,7,3];var c={0:0,360:1,270:2,180:3,90:4,60:5,45:6,30:7,21:8,14:9,7:10,3:11};var a;this.init=function(h){d.page=1;if(h!=null){d.totalCount=h.length;var g=h}else{d.totalCount=model.fdc.length;var g=model.fdc}d.createFriendListItems(g);friendListView.renderHeaders(d.totalCount,controller.getNuxState());d.createView()};this.createView=function(){d.createFriendsArray();friendListView.renderHtml(d.friendSlice);d.pageFlick(d.totalCount)};this.nuxAddFriendsCallback=function(g){this.init();friendListView.nuxAddFriendsCallback(g)};this.loadNuxFriends=function(){model.NUXAddFbFriends()};this.getNumFriendsTracked=function(){return model.fbFriendsTracked.length};this.createFriendListItems=function(g){d.friend=[];d.friendHash=[];for(var h=0;h<d.totalCount;h++){d.friend[h]=new FriendListItem(g[h].uid)}for(var h=0;h<d.totalCount;h++){d.friendHash[d.friend[h].uid]=d.friend[h]}};this.createFriendsArray=function(){if(d.totalCount<=d.maxPerPage*(d.page-1)){d.page=d.page-1}if(d.page<1){d.page=1}var h=d.maxPerPage*(d.page);var g=d.maxPerPage*(d.page-1);d.friendSlice=[];d.friendSlice=d.friend.slice(g,h)};this.clickRating=function(l,h){var g=d.friendSlice[l];model.addUpdateFriend(g.uid,h,g.period);d.friendHash[g.uid].rating=h};this.friendDetailCallback=function(g,h,l){d.friendHash[g].rating=h;d.friendHash[g].period=l;friendListView.updateControls(a)};this.slideSlider=function(l,h){var g=d.friendSlice[l];model.addUpdateFriend(g.uid,g.rating,h);d.friendHash[g.uid].period=h};this.sortName=function(g){if(g==1){d.friend.sort(sortByName)}if(g==-1){d.friend.sort(sortReverseByName)}d.page=1;d.createView()};this.sortReminder=function(g){if(g==1){d.friend.sort(sortByReminder)}if(g==-1){d.friend.sort(sortReverseByReminder)}d.page=1;d.createView()};this.sortRating=function(g){if(g==1){d.friend.sort(sortByRating)}if(g==-1){d.friend.sort(sortReverseByRating)}d.page=1;d.createView()};this.sortActivity=function(g){if(g==1){d.friend.sort(sortByActivity)}if(g==-1){d.friend.sort(sortReverseByActivity)}d.page=1;d.createView()};this.sortLt=function(g){if(g==1){d.friend.sort(sortByLt)}if(g==-1){d.friend.sort(sortReverseByLt)}d.page=1;d.createView()};this.sortRtd=function(g){if(g==1){d.friend.sort(sortByRtd)}if(g==-1){d.friend.sort(sortReverseByRtd)}d.page=1;d.createView()};this.friendClick=function(h){var g=d.friendSlice[h].uid;a=h;friendDetailControl.init(g)};this.sliderValue2TimeScale=function(g){return e[g]};this.sliderValue2Days=function(g){return f[g]};this.days2SliderValue=function(g){return c[g]};this.pageFlick=function(l,h){if(h==null){var h=d.maxPerPage}if(l<=h){d.removeMultiPageSelector()}if(l>h){var g=Math.floor((l-1)/h)+1;d.renderMultiPageSelector(g,d.page);$(".multipage li").click(function(){goToPage=$(this).children("a").text();if(goToPage=="Prev"){goToPage=parseInt(d.page)-1}if(goToPage=="Next"){goToPage=parseInt(d.page)+1}d.renderMultiPageSelector(g,parseInt(goToPage));d.page=goToPage;controlFriendList.createView()})}};this.renderMultiPageSelector=function(g,l){var n=7;d.removeMultiPageSelector();var h='<ul class="pagerpro">';for(i=1;i<=g;i++){if(i==1&&(l>1)){h+="<li><a>Prev</a></li>"}if((i<l||(i>l))&&(i>(parseInt(l)-n+1))&&(i<=Math.max(parseInt(l)+3,n))){h+="<li><a>"+i+"</a></li>"}if(i==l){h+='<li class="current"><a>'+i+"</a></li>"}if(i==g&&(l<g)){h+="<li><a>Next</a></li>"}}h+="</ul">$("#homebody .multipage").append(h)};this.removeMultiPageSelector=function(){$("#homebody .multipage").empty()}};headerControl=new function(){var c=this;var a=0;this.init=function(){if(controller.iframe==true){headerView.renderIframeHeader()}else{var e=d();headerView.renderStandAloneHeader()}};this.createPresence=function(){if(a==0){var e=prettyDate(model.lastLoggedInDay);if(controller.iframe==true){headerView.renderIframePresence(model.userInfo.fname,e)}else{headerView.renderStandAlonePresence(model.userInfo.name,e,model.userInfo.ps)}}a=1};this.refreshHeader=function(){var e=d();if(controller.iframe==false){headerView.refreshStandAloneHeader(e)}};var d=function(){var f=controller.viewHandler.currentView;var e;switch(f){case"friendList":e="Friends List";break;case"map":e="Map";break;case"search":e="Search";break;case"tags":e="Tags";break;case"tagEditor":e="Tag Editor";break;case"dataTypes":e="Friend Notes";break;default:e=""}return e};this.logout=function(){FB.Connect.logoutAndRedirect("../index.php")}};function Suggestion(a){this.id=a;this.sid=model.hpar[a].sid;this.uid=model.hpar[a].fid;this.name=model.f[this.uid].name;this.smallPic=model.f[this.uid].ps;this.rtd=dayDiff(new Date(),new Date(model.s[this.uid].rtd))}function SuggestionMore(a){this.id="sidMore"+a;this.sid=model.lpar[a].sid;this.uid=model.lpar[a].fid;this.name=model.f[this.uid].name;this.smallPic=model.f[this.uid].ps;this.rtd=dayDiff(new Date(),new Date(model.s[this.uid].rtd))}function UpcomingWeekInteraction(q,h,c,f,o,n,d,e,a,g,l){this.id=a;this.iid=q;this.uid=h;this.sid=c;this.pid=g;this.text=f;this.origText=o;this.type=n;this.date=d;if(d==0){this.prettyDate="This week"}else{this.prettyDate=getDateDescription(d)}this.creationDate=e;this.prettyCreationDate=getDateDescription(e);this.name=model.f[h].name;this.childFeed=l}function History(q,h,c,f,o,n,d,e,a,g,l){this.id=a;this.iid=q;this.uid=h;this.sid=c;this.pid=g;this.text=f;this.origText=o;this.type=n;this.date=d;this.prettyDate=getDateDescription(d);this.creationDate=e;this.prettyCreationDate=getDateDescription(e);this.name=model.f[h].name;this.childFeed=l}homeControl=new function(){var a=true;var c=this;c.suggestions=[];c.suggestionsMore=[];c.upcomingWeekInteractions=[];c.history=[];this.init=function(){c.createSuggestions();c.createUpcomingWeekInteractions();c.createHistory();homeView.createHomeView(c.suggestions,c.suggestionsMore,c.upcomingWeekInteractions,c.history,controller.getNuxState())};this.showImportedFriends=function(){var g=[];var e=model.fbFriendsTracked.length;for(var d=0;d<e;d++){var f={};f.uid=model.fbFriendsTracked[d].fid;f.name=model.f[f.uid].name;f.id="importId"+f.uid;g.push(f)}homeView.renderFriendImportSummary(g)};this.updateFeedSuggestion=function(){c.createSuggestions();c.createUpcomingWeekInteractions();c.createHistory();homeView.updateFeedSuggestion(c.suggestions,c.suggestionsMore,c.upcomingWeekInteractions,c.history)};this.getModelStats=function(){var d={suggestionCnt:model.hpar.length||0,upcomingCnt:(model.userUpcomingEvents.Count.Count.count+model.plansReminders.Count)||0,historyCnt:model.userPastEvents.Count.Count.count||0};return d};this.createSuggestions=function(){c.suggestions=[];c.suggestionsMore=[];for(var d=0;d<model.hpar.length;d++){c.suggestions[d]=new Suggestion(d)}for(var d=0;d<model.lpar.length;d++){c.suggestionsMore[d]=new SuggestionMore(d)}};this.createUpcomingWeekInteractions=function(){c.upcomingWeekInteractions=[];var q=model.plansReminders.Count;var x=model.userUpcomingEvents.Count.Count.count;for(var y=0;y<q;y++){var u="upid"+y;var f=model.plansReminders.planReminders[y].sid;var v=model.plansReminders.planReminders[y].eid;var g=model.plansReminders.planReminders[y].fid;var t=-1;var s=model.plansReminders.planReminders[y].tx;var z=model.plansReminders.planReminders[y].tx;var e=model.plansReminders.planReminders[y].tp;var E=0;var d=model.plansReminders.planReminders[y].lu;var n=[];var D=parseInt(model.plansReminders.planReminders[y].nc);for(k=0;k<D;k++){var r="upid"+y+"-"+k;var H=model.plansReminders.planReminders[y][k].eid;var h=model.plansReminders.planReminders[y][k].sid;var G=v;var I=model.plansReminders.planReminders[y][k].tx;var C=html_entity_decode(model.plansReminders.planReminders[y][k].ot,"ENT_QUOTES");var B=model.plansReminders.planReminders[y][k].tp;var o=model.plansReminders.planReminders[y][k].d;var l=model.plansReminders.planReminders[y][k].lu;n.push(new UpcomingWeekInteraction(H,g,h,I,C,B,o,l,r,G,[]))}c.upcomingWeekInteractions.push(new UpcomingWeekInteraction(v,g,f,s,z,e,E,d,u,t,n))}var w=q;for(var y=0;y<x;y++){var u="upid"+w;var f=model.userUpcomingEvents.events[y].sid;var v=model.userUpcomingEvents.events[y].eid;var g=model.userUpcomingEvents.events[y].fid;var t=-1;var s=model.userUpcomingEvents.events[y].tx;var z=html_entity_decode(model.userUpcomingEvents.events[y].ot,"ENT_QUOTES");var e=model.userUpcomingEvents.events[y].tp;var E=model.userUpcomingEvents.events[y].d;var d=model.userUpcomingEvents.events[y].lu;var F=[];var A=parseInt(model.userUpcomingEvents.events[y].nc);for(m=0;m<A;m++){var r="upid"+w+"-"+m;var H=model.userUpcomingEvents.events[y][m].eid;var h=model.userUpcomingEvents.events[y][m].sid;var G=v;var I=model.userUpcomingEvents.events[y][m].tx;var C=html_entity_decode(model.userUpcomingEvents.events[y][m].ot,"ENT_QUOTES");var B=model.userUpcomingEvents.events[y][m].tp;var o=model.userUpcomingEvents.events[y][m].d;var l=model.userUpcomingEvents.events[y][m].lu;F.push(new UpcomingWeekInteraction(H,g,h,I,C,B,o,l,r,G,[]))}c.upcomingWeekInteractions.push(new UpcomingWeekInteraction(v,g,f,s,z,e,E,d,u,t,F));w++}};this.createHistory=function(){c.history=[];var g=model.userPastEvents.Count.Count.count;for(var w=0;w<g;w++){var u="hid"+w;var f=model.userPastEvents.events[w].sid;var v=model.userPastEvents.events[w].eid;var h=model.userPastEvents.events[w].fid;var t=-1;var s=model.userPastEvents.events[w].tx;var x=html_entity_decode(model.userPastEvents.events[w].ot,"ENT_QUOTES");var e=model.userPastEvents.events[w].tp;var B=model.userPastEvents.events[w].d;var d=model.userPastEvents.events[w].lu;var q=[];var A=parseInt(model.userPastEvents.events[w].nc);for(j=0;j<A;j++){var r="hid"+w+"-"+j;var D=model.userPastEvents.events[w][j].eid;var l=model.userPastEvents.events[w][j].sid;var C=v;var E=model.userPastEvents.events[w][j].tx;var z=html_entity_decode(model.userPastEvents.events[w][j].ot,"ENT_QUOTES");var y=model.userPastEvents.events[w][j].tp;var o=model.userPastEvents.events[w][j].d;var n=model.userPastEvents.events[w][j].lu;q.push(new History(D,h,l,E,z,y,o,n,r,C,[]))}c.history.push(new History(v,h,f,s,x,e,B,d,u,t,q))}};this.friendClick=function(d){friendDetailControl.init(d)};this.deleteFeed=function(d){var g=d.iid;var f=d.type;var e=d.uid;model.deleteInteraction(e,g,f)};this.talkedSuggestionFeed=function(d){var e=[];for(var f=0;f<d.length;f++){e.push(d[f].sid)}model.suggestionTalked(e)};this.removeSuggestionFeed=function(d){var e=[];for(var f=0;f<d.length;f++){e.push(d[f].sid)}model.suggestionClose(e)};this.snoozeSuggestionFeed=function(d){var e=[];for(var f=0;f<d.length;f++){e.push(d[f].sid)}model.suggestionSnooze(e)}};function mapFriendListItem(a,c){this.name=model.f[a].name;this.uid=a;this.addresses=c}mapControl=new function(){var h=this;var g;var a={};var d=[];var e=[];var c=[];var f=[];var n=20;var l=1;var o=0;this.init=function(){h.mapInit();h.friendListInit()};this.friendListInit=function(s){if(s!=null){o=s.length;var q=s}else{o=model.friendAddress.length;var q=model.friendAddress}e=[];c=[];for(var r=0;r<o;r++){e[r]=new mapFriendListItem(q[r].uid,q[r].addresses)}for(var r=0;r<o;r++){c[e[r].uid]=e[r]}mapView.renderHeaders(o);h.createFriendListView()};this.createFriendListView=function(){h.createFriendsArray();mapView.renderFriendsList(f);h.pageFlick(o)};this.createFriendsArray=function(){if(o<=n*(l-1)){l=l-1}var r=n*(l);var q=n*(l-1);f=[];f=e.slice(q,r)};this.mapInit=function(){mapView.createMapDivStructure();a=new google.maps.Map2(document.getElementById("mapView"));var q=new GLatLngBounds();var v=[];var x=[];a.addControl(new GLargeMapControl());a.setCenter(new GLatLng(0,0),0);if(model.addresses!=null){var t=model.addresses.count}else{var t=0}for(var u=0;u<t;u++){var y={title:model.f[model.addresses[u].fid].name};x.push(new GLatLng(model.addresses[u].lt,model.addresses[u].lg));q.extend(x[x.length-1]);var w=new GIcon(G_DEFAULT_ICON);w.image="images/maps/orange_circle.png";w.iconSize=new GSize(30,30);w.iconAnchor=new GPoint(15,15);w.shadowSize=new GSize(0,0);var r={labelText:model.f[model.addresses[u].fid].name,icon:w};v.push(h.createMarker(x[x.length-1],r,model.addresses[u].fid));a.addOverlay(v[v.length-1]);a.setCenter(q.getCenter());a.setZoom(a.getBoundsZoomLevel(q));var s=model.f[model.addresses[u].fid].name}};this.createMarker=function(t,s,r){var q=new LabeledMarker(t,s);d[d.length-1]=GEvent.addListener(q,"click",function(){g=r;friendDetailControl.init(r)});return q};this.friendClick=function(r){var q=f[r].uid;g=r;friendDetailControl.init(q)};this.addressClick=function(s,r){var q=f[s].addresses[r];var t=13;a.setCenter(new GLatLng(q.lt,q.lg),t)};this.pageFlick=function(r){if(r<=n){h.removeMultiPageSelector()}if(r>n){var q=Math.floor((r-1)/n)+1;h.renderMultiPageSelector(q,l);$(".multipage li").click(function(){goToPage=$(this).children("a").text();if(goToPage=="Prev"){goToPage=parseInt(l)-1}if(goToPage=="Next"){goToPage=parseInt(l)+1}h.renderMultiPageSelector(q,parseInt(goToPage));l=goToPage;h.createFriendListView()})}};this.renderMultiPageSelector=function(q,s){var t=5;h.removeMultiPageSelector();var r='<ul class="pagerpro">';for(i=1;i<=q;i++){if(i==1&&(s>1)){r+="<li><a>Prev</a></li>"}if((i<s||(i>s))&&(i>(parseInt(s)-t+1))&&(i<=Math.max(parseInt(s)+1,t))){r+="<li><a>"+i+"</a></li>"}if(i==s){r+='<li class="current"><a>'+i+"</a></li>"}if(i==q&&(s<q)){r+="<li><a>Next</a></li>"}}r+="</ul">$("#homebody .multipage").append(r)};this.removeMultiPageSelector=function(){$("#homebody .multipage").empty()}};quickInput=new function(){var c=this;var a="";var d;this.init=function(){d=new phraseNlObj();d.init()};this.submit=function(n,s,l,h,f){s=trimNewline(s);d.analizePhrase(s);var t=d.getMatchedType();var e=d.getDate();var r=d.getDateIsSpecific();var o=d.getPhraseAnalized();var g=d.getShortPhrase();var u=d.getReciprocityIsByUser();var q={friendFbId:n,text:g,originalText:o,date:e,isDateSpecific:r,type:t,isNewInteraction:l,id:f,byUser:u,parentId:h};model.addUpdateInteraction(q)};this.lookup=function(f){if((f.charAt(f.length-1)==" "&&f.length<30)||f.length<10){d.analizePhrase(f);var e=d.getMatchedType();if(a!=e){a=e;return e}else{return false}}else{return false}}};searchBoxControl=new function(){var e=this;var d="";this.lookup=function(g){var f=[];g=g;if(g.length<0){}else{var n=c(g);var l=n.length;for(var h=0;h<l;h++){f.push(n[h])}a(n)}};var c=function(f){var g=[];var f=f.toLowerCase();var l=model.fdc;var n=l.length;for(var h=0;h<n;h++){if(l[h].name!=null){if(l[h].name.toLowerCase().match(f)!=null){g.push(l[h])}}}return g};var a=function(f){controller.viewHandler.showSearch(f)}};function OverviewData(){var a=model.getInteractionSummary();this.idc=a.dc||0;this.iec=a.ec||0;this.ipc=a.pc||0;this.inc=a.nc||0;this.ilc=a.lc||0;this.iwc=a.wc||0;this.irc=a.rc||0;this.ifc=a.fc||0;this.tags=model.userTags;this.maxShowTags=7}sidebarControl=new function(){var a=this;var c;this.init=function(){a.createOverviewData();sidebarView.createNavigation();sidebarView.createFriendsOverview(c);sidebarView.createAddons();sidebarView.showTags(false,c)};this.createOverviewData=function(){c=new OverviewData()};this.refreshInteractionSummary=function(){a.createOverviewData();sidebarView.renderNotesSummary(c)};this.refreshTags=function(d){a.createOverviewData();sidebarView.showTags(d,c)};this.loadTagFriends=function(g){var f=c.tags[g].fbUid.length;var d=[];for(var e=0;e<f;e++){d[e]={uid:c.tags[g].fbUid[e]}}controller.viewHandler.loadTagFriends(d)}};tagControl=new function(){var c=this;this.init=function(){var e=a();tagView.renderView(e)};var a=function(){var z=[];var w=[];var q=model.userTags.numTags;for(var u=0;u<q;u++){var r=model.userTags[u].tagId;var l="tagList"+u;var h=model.userTags[u].tag;var e=model.userTags[u].fbUid.length;var g=[];for(var s=0;s<e;s++){var v=model.userTags[u].fbUid[s];var o="tagListFriend"+v;var y=model.f[v].name;var n=model.friendTags[v].count;if(n>1){var f=model.friendTags[v].tags.slice();var x=model.friendTags[v].tags.indexOf(h);f.splice(x,1)}else{f=[]}var t={id:o,uid:v,name:y,otherTags:f};g.push(t)}w=g;var t={id:l,tid:r,fc:e,name:h,friends:w};z.push(t)}return z};var d=function(e){friendDetailControl.init(e)};this.renameTag=function(f,e){model.updateUserTag(f,e)};this.refresh=function(){c.init()}};function dateNlObject(){var o=this;var a={};var s={};var f={};var v={};var g={};var n=[];var q=[];var u=[];var l={};var c=false;var e=true;var h=false;this.analizeString=function(K){o.ls=K;if(K.length<3){o.isd=false;return false}o.hkw=false;var L=" "+trimAll(K.toLowerCase())+" ";var I=findSpacesInString(L);var H=I.length-1;var R="";for(var M=0;M<H;M++){var O=trimAll(L.slice(I[M],I[M+1]));t(O);var w=trimAll(d(O,o.r));if(w!=""){R=R+" "+w}}if(o.hkw){L=" "+trimAll(R)+" ";I=findSpacesInString(L);H=I.length-1;var C=true;var F=0,J=1,A=0,E=0,G=0;for(var M=0;M<H;M++){var O=trimAll(L.slice(I[M],I[M+1]));var x=o.rsd.get(O);var D=o.tudm.get(O);if(x!=null){F=(F>x.s)?F:x.s;J=J*J*x.d}if(D!=null){A=D.s;E=D.d;G=D.m}if(D==null&&x==null){C=false;break}}if(C){var r=new Date();F=(F==0)?A:F;var y=Math.floor(F*J*E);var z=Math.floor(F*J*G);if(z<1){r.addDays(y)}r.addMonths(z);if(r!=null){o.isd=true;o.dm=r.getFullYear()+"-"+(r.getMonth()+1)+"-"+r.getDate();return true}}}var L=" "+trimAll(K.toLowerCase())+" ";var I=findSpacesInString(L);var H=I.length-1;var R="";for(var M=0;M<H;M++){var O=trimAll(L.slice(I[M],I[M+1]));var w=trimAll(d(O,o.r2));if(w!=""){R=R+" "+w}}var L=trimAll(R);var B=o.yf.length;for(var M=0;M<B;M++){var P=Date.parseDate(L,o.yf[M]);if(P!=null){o.isd=true;o.isDS=true;o.dm=P.getFullYear()+"-"+(P.getMonth()+1)+"-"+P.getDate();return true}}var Q=trimAll(removeSubstringFromString("last",L));var N=true;if(Q.length<L.length){L=Q;N=false}var B=o.mf.length;for(var M=0;M<B;M++){var P=Date.parseDate(L,o.mf[M]);if(P!=null){b=new Date();o.dm=((P<b)&&N)?(P.getFullYear()+1):(P.getFullYear());o.dm=o.dm+"-"+(P.getMonth()+1)+"-"+P.getDate();o.isd=true;o.isDS=true;return true}}var B=o.df.length;for(var M=0;M<B;M++){var P=Date.parseDate(L,o.df[M]);if(P!=null){P=new Date();b=new Date();dayOffset=(Date.dayNumbers[L.substring(0,3)]-b.getDay());P.addDays(dayOffset);P=((P<b)&&N)?P.addDays(7):P;P=((P>b)&&!N)?P.addDays(-7):P;o.dm=P.getFullYear()+"-"+(P.getMonth()+1)+"-"+P.getDate();o.isd=true;o.isDS=true;return true}}o.isd=false;return false};this.isMatched=function(){return o.isd};this.getStringAnalized=function(){return o.ls};this.getDate=function(){return o.dm};this.getDateIsSpecific=function(){return o.isDS};var d=function(r,x){var y=x.get(r);y=(y!=null)?y:r;return y};var t=function(r){var x=o.kws.get(r);if(x!=null){o.hkw=true;o.isDS=(x=="true")}};this.init=function(){o.yf=["F d Y","F d, Y","F Y","F d y","F d, y","M d Y","M d, Y","M d y","M d, y","Y/m/d","m/d/Y","m/d/y","Y-m-d","m-d-Y","m-d-y","M Y"];o.mf=["F d","M d","F","M","m/d","m-d"];o.df=["l","D"];o.rsd=new AArray();o.kws=new AArray();o.r=new AArray();o.r2=new AArray();o.tudm=new AArray();o.rsd.init();o.kws.init();o.r.init();o.r2.init();o.tudm.init();o.kws.add("week","false");o.kws.add("weeks","false");o.kws.add("month","false");o.kws.add("months","false");o.kws.add("days","false");o.kws.add("day","false");o.kws.add("year","false");o.kws.add("soon","false");o.kws.add("tomorrow","true");o.kws.add("today","true");o.kws.add("yesterday","true");o.r.add("wks","weeks");o.r.add("wk","week");o.r.add("on"," ");o.r.add("of"," ");o.r.add("the"," ");o.r.add("these"," ");o.r.add("a"," ");o.r.add("in"," ");o.r.add("from"," ");o.r.add("before"," ");o.r.add("after"," ");o.r.add("now"," ");o.r.add("one","1");o.r.add("two","2");o.r.add("three","3");o.r.add("four","4");o.r.add("five","5");o.r.add("six","6");o.r.add("seven","7");o.r.add("eight","8");o.r.add("nine","9");o.r.add("ten","10");o.r.add("eleven","11");o.r2.add("on"," ");o.r2.add("this"," ");o.r2.add("next"," ");o.r2.add("in"," ");o.r2.add("jan","Jan");o.r2.add("january","January");o.r2.add("feb","Feb");o.r2.add("february","February");o.r2.add("mar","Mar");o.r2.add("march","March");o.r2.add("apr","Apr");o.r2.add("april","April");o.r2.add("may","May");o.r2.add("jun","Jun");o.r2.add("june","June");o.r2.add("jul","Jul");o.r2.add("july","July");o.r2.add("aug","Aug");o.r2.add("august","August");o.r2.add("oct","Oct");o.r2.add("october","October");o.r2.add("nov","Nov");o.r2.add("november","November");o.r2.add("dec","Dec");o.r2.add("december","December");o.r2.add("sun","Sun");o.r2.add("sunday","Sunday");o.r2.add("sat","Sat");o.r2.add("sat","Saturday");o.r2.add("weekend","Saturday");o.r2.add("fri","Fri");o.r2.add("friday","Friday");o.r2.add("thu","Thu");o.r2.add("thursday","Thursday");o.r2.add("wed","Wed");o.r2.add("wednesday","Wednesday");o.r2.add("tue","Tue");o.r2.add("tuesday","Tuesday");o.r2.add("mon","Mon");o.r2.add("monday","Monday");o.rsd.add("coming",{s:"1",d:"1"});o.rsd.add("about",{s:"1.3",d:"1"});o.rsd.add("next",{s:"1",d:"1"});o.rsd.add("this",{s:".5",d:"1"});o.rsd.add("couple",{s:"2",d:"1"});o.rsd.add("few",{s:"3",d:"1"});o.rsd.add("several",{s:"7",d:"1"});o.rsd.add("some",{s:"4",d:"1"});o.rsd.add("many",{s:"9",d:"1"});o.rsd.add("ago",{s:"1",d:"-1"});o.rsd.add("last",{s:"1",d:"-1"});o.rsd.add("1",{s:"1",d:"1"});o.rsd.add("2",{s:"2",d:"1"});o.rsd.add("3",{s:"3",d:"1"});o.rsd.add("4",{s:"4",d:"1"});o.rsd.add("5",{s:"5",d:"1"});o.rsd.add("6",{s:"6",d:"1"});o.rsd.add("7",{s:"7",d:"1"});o.rsd.add("8",{s:"8",d:"1"});o.rsd.add("9",{s:"9",d:"1"});o.rsd.add("10",{s:"10",d:"1"});o.rsd.add("11",{s:"11",d:"1"});o.rsd.add("12",{s:"12",d:"1"});o.rsd.add("-1",{s:"1",d:"-1"});o.rsd.add("-2",{s:"2",d:"-1"});o.rsd.add("-3",{s:"3",d:"-1"});o.rsd.add("-4",{s:"4",d:"-1"});o.rsd.add("-5",{s:"5",d:"-1"});o.rsd.add("-6",{s:"6",d:"-1"});o.rsd.add("-7",{s:"7",d:"-1"});o.rsd.add("-8",{s:"8",d:"-1"});o.rsd.add("-9",{s:"9",d:"-1"});o.rsd.add("-10",{s:"10",d:"-1"});o.rsd.add("-11",{s:"11",d:"-1"});o.rsd.add("-12",{s:"12",d:"-1"});o.tudm.add("soon",{s:"7",d:"1",m:"0"});o.tudm.add("tomorrow",{s:"1",d:"1",m:"0"});o.tudm.add("today",{s:"1",d:"0",m:"0"});o.tudm.add("yesterday",{s:"1",d:"-1",m:"0"});o.tudm.add("day",{s:"1",d:"1",m:"0"});o.tudm.add("week",{s:"1",d:"7",m:"0"});o.tudm.add("month",{s:"1",d:"30",m:"1"});o.tudm.add("days",{s:"3",d:"1",m:"0"});o.tudm.add("weeks",{s:"3",d:"7",m:"0"});o.tudm.add("months",{s:"3",d:"30",m:"1"})}}function phraseNlObj(){var h=this;var a={};var n={};var o=0;var s={};var c="";var l="";var q="note";var g={};var r={};var f=0;this.analizePhrase=function(w){h.phrase=trimAll(w);h.shortPhrase=h.phrase;h.localString=" "+h.phrase+" ";h.spacesArray=findSpacesInString(h.localString);h.spacesCount=h.spacesArray.length;d(h.dateMatcher);e(h.strictTypesMatcher);d(h.reciprocityMatcher);h.hasDate=false;var u=h.strictTypesMatcher.getMatchedType();var v=h.strictTypesMatcher.isMatched();if(v){var x=trimAll(removeSubstringFromString(h.strictTypesMatcher.getStringAnalized(),h.phrase));if(x!=null&&x!=""){h.shortPhrase=x}if(h.dateMatcher.isMatched()&&(("event"==u)||("talked"==u)||("date"==u)||("birthday"==u)||("plan"==u))){h.hasDate=true;var x=trimAll(removeSubstringFromString(h.dateMatcher.getStringAnalized(),h.shortPhrase));if(x!=null&&x!=""){h.shortPhrase=x}}h.iType=u;return}if(h.reciprocityMatcher.isMatched()){h.iType="favor";return}if(h.dateMatcher.isMatched()){var t=h.dateMatcher.getDateIsSpecific();if(t==true){h.iType="event"}else{h.iType="plan"}h.hasDate=true;var x=trimAll(removeSubstringFromString(h.dateMatcher.getStringAnalized(),h.phrase));if(x!=null&&x!=""){h.shortPhrase=x}}else{h.iType="note";h.hasDate=false}return};this.getMatchedType=function(){return h.iType};this.getPhraseAnalized=function(){return h.phrase};this.getShortPhrase=function(){var t=trimAll(h.shortPhrase);if(""==t){h.shortPhrase=h.iType}return h.shortPhrase};this.getDate=function(){if(h.hasDate){return h.dateMatcher.getDate()}else{return getCurrentDate()}};this.getDateIsSpecific=function(){if(h.hasDate){return h.dateMatcher.getDateIsSpecific()}else{return true}};this.getDateString=function(){if(h.dateMatcher.isMatched()){return h.dateMatcher.getStringAnalized()}else{return null}};this.getReciprocityIsByUser=function(){if(h.reciprocityMatcher.isMatched()){return h.reciprocityMatcher.isReciprocityByUser()}else{return false}};var d=function(x){var v=h.spacesCount;for(var u=0;u<v;u++){for(var t=v-1;t>u;t--){var w=h.localString.slice(h.spacesArray[u],h.spacesArray[t]-1);x.analizeString(w);if(x.isMatched()){return true}}}return false};var e=function(v){var t=h.spacesCount;var u=h.localString.slice(h.spacesArray[0],h.spacesArray[1]);v.analizeString(u);return};this.init=function(){h.dateMatcher=new dateNlObject();h.reciprocityMatcher=new reciprocityNlObject();h.strictTypesMatcher=new strictNlObject();h.dateMatcher.init();h.reciprocityMatcher.init();h.strictTypesMatcher.init()}}function reciprocityNlObject(){var e=this;var a={};var d={};var c=false;var f=false;this.analizeString=function(h){e.lookupString=h;var g=trimAll(h.toLowerCase());e.match=e.checkMatching(g)};this.isMatched=function(){return e.match};this.isReciprocityByUser=function(){return e.isByUser};this.getStringAnalized=function(){return e.lookupString};this.checkMatching=function(g){var h=e.matchesStrings.get(g);if(h==null){return false}else{e.isByUser=h;e.match=true;return true}};this.init=function(){e.matchesStrings=new AArray();e.matchesStrings.init();e.matchesStrings.add("I owe","false");e.matchesStrings.add("owe him","false");e.matchesStrings.add("owe her","false");e.matchesStrings.add("owe","false");e.matchesStrings.add("did me favor","true");e.matchesStrings.add("owes me","true");e.matchesStrings.add("owes","true");e.matchesStrings.add("did a favor for","true");e.matchesStrings.add("dollar","true");e.matchesStrings.add("dollars","true");e.matchesStrings.add("usd","true")}}function strictNlObject(){var f=this;var a={};var e={};var c=false;var d="note";this.analizeString=function(h){f.lookupString=h;var g=trimAll(h.toLowerCase());f.match=f.checkMatching(g)};this.isMatched=function(){return f.match};this.getStringAnalized=function(){return f.lookupString};this.getMatchedType=function(){return f.iType};this.checkMatching=function(g){var h=f.matchesStrings.get(g);if(h==null){f.iType="note";return false}else{f.iType=h;return true}};this.init=function(){f.matchesStrings=new AArray();f.matchesStrings.init();f.matchesStrings.add("talked:","talked");f.matchesStrings.add("talked","talked");f.matchesStrings.add("t","talked");f.matchesStrings.add("plan:","plan");f.matchesStrings.add("plans:","plan");f.matchesStrings.add("plan","plan");f.matchesStrings.add("plans","plan");f.matchesStrings.add("p","plan");f.matchesStrings.add("activity:","event");f.matchesStrings.add("event","event");f.matchesStrings.add("event:","event");f.matchesStrings.add("e","event");f.matchesStrings.add("date","date");f.matchesStrings.add("date:","date");f.matchesStrings.add("dates:","date");f.matchesStrings.add("favor:","favor");f.matchesStrings.add("money:","favor");f.matchesStrings.add("note:","note");f.matchesStrings.add("want","want");f.matchesStrings.add("wants","want");f.matchesStrings.add("want:","want");f.matchesStrings.add("likes","like");f.matchesStrings.add("likes:","like");f.matchesStrings.add("like:","like");f.matchesStrings.add("l","like");f.matchesStrings.add("address:","address");f.matchesStrings.add("address","address");f.matchesStrings.add("tag:","tag");f.matchesStrings.add("tag","tag");f.matchesStrings.add("relationship:","relationship");f.matchesStrings.add("husband","relationship");f.matchesStrings.add("wife","relationship");f.matchesStrings.add("boyfriend","relationship");f.matchesStrings.add("bf","relationship");f.matchesStrings.add("girlfriend","relationship");f.matchesStrings.add("gf","relationship");f.matchesStrings.add("fiancee","relationship");f.matchesStrings.add("friend","relationship");f.matchesStrings.add("fwb","relationship");f.matchesStrings.add("bff","relationship");f.matchesStrings.add("buddy","relationship");f.matchesStrings.add("father","relationship");f.matchesStrings.add("dad","relationship");f.matchesStrings.add("mother","relationship");f.matchesStrings.add("mom","relationship");f.matchesStrings.add("son","relationship");f.matchesStrings.add("daughter","relationship");f.matchesStrings.add("nephew","relationship");f.matchesStrings.add("niece","relationship");f.matchesStrings.add("grandson","relationship");f.matchesStrings.add("granddaughter","relationship");f.matchesStrings.add("brother","relationship");f.matchesStrings.add("sister","relationship");f.matchesStrings.add("cousin","relationship")}}function AArray(){var c=this;var a={};this.init=function(){c.values=new Object()};this.add=function(d,e){if(!c.values[d]){c.values[d]=new Object()}c.values[d]=e};this.get=function(d){var e=String(d);return c.values[e]};this.set=function(d,e){c.add(d,e)}}function AArrayAtt(){var d=this;var c={};var a={};this.init=function(){d.values=new Object();d.att=new Object()};this.add=function(e,f,g){if(!d.values[e]){d.values[e]=new Object()}d.values[e]=f;if(!d.att[e]){d.att[e]=new Object()}d.att[e]=g};this.getValue=function(e){var f=String(e);return d.values[f]};this.getAtt=function(e){var f=String(e);return d.att[f]};this.set=function(f,g,e){d.add(f,g,e)}}function html_entity_decode(c,g){if(c==null||c==""){return""}var f={},e="",a="",d=0;a=c.toString();f=get_html_translation_table(g);for(e in f){entity=f[e];a=a.split(entity).join(e)}return a}function get_html_translation_table(f){var e={},d={},a=0,c="";if(f=="ENT_QUOTES"){e["34"]="&quot;";e["39"]="&#039;";e["38"]="&amp;";e["60"]="&lt;";e["62"]="&gt;"}else{e["38"]="&amp;";e["60"]="&lt;";e["62"]="&gt;"}for(a in e){c=String.fromCharCode(a);d[c]=e[a]}return d}Array.prototype.in_array=function(c){for(var a=0;a<this.length;a++){if(this[a]==c){return true}}return false};function indexInArray(a,d){for(var c=0;c<a.length;c++){if(a[c]==d){return c}}return -1}function removeSubstringFromString(d,c){var a=trimAll(d);var e=c;return(e.replace(a,""))}function findSpacesInString(c){var d=c;var a=[];var f=1;var e=0;while(f!=0){var g=d.indexOf(" ",e);if(g!=-1){a.push(g+1)}else{f=0}e=g+1}return a}function leftTrim(a){while(a.substring(0,1)==" "){a=a.substring(1,a.length)}return a}function rightTrim(a){while(a.substring(a.length-1,a.length)==" "){a=a.substring(0,a.length-1)}return a}function trimAll(a){while(a.substring(0,1)==" "){a=a.substring(1,a.length)}while(a.substring(a.length-1,a.length)==" "){a=a.substring(0,a.length-1)}return a}function trimNewline(a){if(a!=null){a=a.replace(/\r\n|\r/g,"").replace(/\n/g,"");return a}}function getDateDescription(w){var q=new Date((w||"").replace(/-/g,"/").replace(/[TZ]/g," "));var d=new Date();var h=q.getHours();var r=q.getMinutes();var v=q.getSeconds();var l=((0==h)&&(0==r)&&(0==v))?false:true;var s=""+q.getFullYear()+"/"+(q.getMonth()+1)+"/"+q.getDate();var u=""+d.getFullYear()+"/"+(d.getMonth()+1)+"/"+d.getDate();var o=u+" "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();var y=Math.floor((new Date(u)).getTime()/(86400000));var n=Math.floor((new Date(s)).getTime()/(86400000));if(isNaN(n)||isNaN(q)){return w}var f=(n-y);if(0==f){var x=(new Date(o)).getTime()/(3600000);var e=q.getTime()/(3600000);var t=Math.floor(x-e);if((t>6)||(t<0)||!l){return"Today"}else{if((t>0)){return""+t+"h ago"}else{var a=Math.floor((new Date(o)).getTime()/(60000));var c=Math.floor(q.getTime()/(60000));var g=(a-c);if(0==g){return"just now"}else{return""+g+"m ago"}}}}else{if(f==1){return"Tomorrow"}else{if(f==-1){return"Yesterday"}else{if((f<=7)&&(f>0)){thisNextDayOfWeek=q.getAbbreviatedDay();str=((q.getDay()<=d.getDay())&&q.getDay())?("Next "+thisNextDayOfWeek):thisNextDayOfWeek;return str}else{str=(q.getMonth()+1)+"/"+q.getDate();return str}}}}}function getCurrentDate(){date=new Date();year=date.getFullYear();month=date.getMonth()+1;day=date.getDate();hour=date.getHours();min=date.getMinutes();sec=date.getSeconds();var a=year+"-"+month+"-"+day+" "+hour+":"+min+":"+sec;return a}function random(a){var c=Math.floor(Math.random()*(a+1));return c}function updateDOM(){if(FB.XFBML.Host.parseDomTree){setTimeout(FB.XFBML.Host.parseDomTree,0)}}function sortByName(e,d){var c=e.name.replace(/\s+/g,"").toLowerCase();var f=d.name.replace(/\s+/g,"").toLowerCase();return((c<f)?-1:((c>f)?1:0))}function sortReverseByName(e,d){var c=e.name.replace(/\s+/g,"").toLowerCase();var f=d.name.replace(/\s+/g,"").toLowerCase();return((c<f)?1:((c>f)?-1:0))}function sortByReminder(e,d){var c=parseInt(e.period);var f=parseInt(d.period);if(c==0){c=9999}if(f==0){f=9999}return((c<f)?-1:((c>f)?1:0))}function sortReverseByReminder(e,d){var c=parseInt(e.period);var f=parseInt(d.period);if(c==0){c=9999}if(f==0){f=9999}return((c<f)?1:((c>f)?-1:0))}function sortByRating(e,d){var c=parseInt(e.rating);var f=parseInt(d.rating);return((c<f)?-1:((c>f)?1:0))}function sortReverseByRating(e,d){var c=parseInt(e.rating);var f=parseInt(d.rating);return((c<f)?1:((c>f)?-1:0))}function sortByLt(e,d){if(isNaN(e.lt)){return 1}var c=parseInt(e.lt);var f=parseInt(d.lt);return((c<f)?-1:((c>f)?1:0))}function sortReverseByLt(e,d){if(isNaN(e.lt)){return 1}var c=parseInt(e.lt);var f=parseInt(d.lt);return((c<f)?1:((c>f)?-1:0))}function sortByRtd(e,d){if(isNaN(e.rtd)){return 1}var c=parseInt(e.rtd);var f=parseInt(d.rtd);return((c<f)?-1:((c>f)?1:0))}function sortReverseByRtd(e,d){if(isNaN(e.rtd)){return 1}var c=parseInt(e.rtd);var f=parseInt(d.rtd);return((c<f)?1:((c>f)?-1:0))}function sortByActivity(e,d){var c=e.date;var f=d.date;return((c<f)?-1:((c>f)?1:0))}function sortReverseByActivity(e,d){var c=e.date;var f=d.date;return((c<f)?1:((c>f)?-1:0))}function prettyDate(e){var c=new Date((e||"").replace(/-/g,"/").replace(/[TZ]/g," ")),d=(((new Date()).getTime()-c.getTime())/1000),a=Math.floor(d/86400);if(isNaN(a)||a<0||a>=31){return}return a==0&&(d<60&&"just now"||d<120&&"1 minute ago"||d<3600&&Math.floor(d/60)+" minutes ago"||d<7200&&"1 hour ago"||d<86400&&Math.floor(d/3600)+" hours ago")||a==1&&"Yesterday"||a<7&&a+" days ago"||a<31&&Math.ceil(a/7)+" weeks ago"}function date2Int(e){var c=String(e);var g=c.slice(0,4);var a=c.slice(5,7);var f=c.slice(8,10);return(g+a+f)}if(typeof jQuery!="undefined"){jQuery.fn.prettyDate=function(){return this.each(function(){var a=prettyDate(this.title);if(a){jQuery(this).text(a)}})}}function createCookie(d,e,f){if(f){var c=new Date();c.setTime(c.getTime()+(f*24*60*60*1000));var a="; expires="+c.toGMTString()}else{var a=""}document.cookie=d+"="+e+a+"; path=/"}function readCookie(d){var a=document.cookie.split(";");var f=d+"=";for(var e=0;e<a.length;e++){var g=a[e];while(g.charAt(0)==" "){g=g.substring(1,g.length)}if(g.indexOf(f)==0){return g.substring(f.length,g.length)}}return null}function eraseCookie(a){createCookie(a,"",-1)}function dayDiff(e,c){var d=1000*60*60*24;return parseInt(Math.ceil((c-e)/d))};