;(function($){$.fn.extend({autocomplete:function(urlOrData,options){var isUrl=typeof urlOrData=="string";options=$.extend({},$.Autocompleter.defaults,{url:isUrl?urlOrData:null,data:isUrl?null:urlOrData,delay:isUrl?$.Autocompleter.defaults.delay:10,max:options&&!options.scroll?10:150},options);options.highlight=options.highlight||function(value){return value;};options.formatMatch=options.formatMatch||options.formatItem;return this.each(function(){new $.Autocompleter(this,options);});},result:function(handler){return this.bind("result",handler);},search:function(handler){return this.trigger("search",[handler]);},flushCache:function(){return this.trigger("flushCache");},setOptions:function(options){return this.trigger("setOptions",[options]);},unautocomplete:function(){return this.trigger("unautocomplete");}});$.Autocompleter=function(input,options){var KEY={UP:38,DOWN:40,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188,PAGEUP:33,PAGEDOWN:34,BACKSPACE:8};var $input=$(input).attr("autocomplete","off").addClass(options.inputClass);var timeout;var previousValue="";var cache=$.Autocompleter.Cache(options);var hasFocus=0;var lastKeyPressCode;var config={mouseDownOnSelect:false};var select=$.Autocompleter.Select(options,input,selectCurrent,config);var blockSubmit;$.browser.opera&&$(input.form).bind("submit.autocomplete",function(){if(blockSubmit){blockSubmit=false;return false;}});$input.bind(($.browser.opera?"keypress":"keydown")+".autocomplete",function(event){lastKeyPressCode=event.keyCode;switch(event.keyCode){case KEY.UP:event.preventDefault();if(select.visible()){select.prev();}else{onChange(0,true);}
break;case KEY.DOWN:event.preventDefault();if(select.visible()){select.next();}else{onChange(0,true);}
break;case KEY.PAGEUP:event.preventDefault();if(select.visible()){select.pageUp();}else{onChange(0,true);}
break;case KEY.PAGEDOWN:event.preventDefault();if(select.visible()){select.pageDown();}else{onChange(0,true);}
break;case options.multiple&&$.trim(options.multipleSeparator)==","&&KEY.COMMA:case KEY.TAB:case KEY.RETURN:if(selectCurrent()){event.preventDefault();blockSubmit=true;return false;}
break;case KEY.ESC:select.hide();break;default:clearTimeout(timeout);timeout=setTimeout(onChange,options.delay);break;}}).focus(function(){hasFocus++;}).blur(function(){hasFocus=0;if(!config.mouseDownOnSelect){hideResults();}}).click(function(){if(hasFocus++>1&&!select.visible()){onChange(0,true);}}).bind("search",function(){var fn=(arguments.length>1)?arguments[1]:null;function findValueCallback(q,data){var result;if(data&&data.length){for(var i=0;i<data.length;i++){if(data[i].result.toLowerCase()==q.toLowerCase()){result=data[i];break;}}}
if(typeof fn=="function")fn(result);else $input.trigger("result",result&&[result.data,result.value]);}
$.each(trimWords($input.val()),function(i,value){request(value,findValueCallback,findValueCallback);});}).bind("flushCache",function(){cache.flush();}).bind("setOptions",function(){$.extend(options,arguments[1]);if("data"in arguments[1])
cache.populate();}).bind("unautocomplete",function(){select.unbind();$input.unbind();$(input.form).unbind(".autocomplete");});function selectCurrent(){var selected=select.selected();if(!selected)
return false;var v=selected.result;previousValue=v;if(options.multiple){var words=trimWords($input.val());if(words.length>1){v=words.slice(0,words.length-1).join(options.multipleSeparator)+options.multipleSeparator+v;}
v+=options.multipleSeparator;}
$input.val(v);hideResultsNow();$input.trigger("result",[selected.data,selected.value]);return true;}
function onChange(crap,skipPrevCheck){if(lastKeyPressCode==KEY.DEL){select.hide();return;}
var currentValue=$input.val();if(!skipPrevCheck&&currentValue==previousValue)
return;previousValue=currentValue;currentValue=lastWord(currentValue);if(currentValue.length>=options.minChars){$input.addClass(options.loadingClass);if(!options.matchCase)
currentValue=currentValue.toLowerCase();request(currentValue,receiveData,hideResultsNow);}else{stopLoading();select.hide();}};function trimWords(value){if(!value){return[""];}
var words=value.split(options.multipleSeparator);var result=[];$.each(words,function(i,value){if($.trim(value))
result[i]=$.trim(value);});return result;}
function lastWord(value){if(!options.multiple)
return value;var words=trimWords(value);return words[words.length-1];}
function autoFill(q,sValue){if(options.autoFill&&(lastWord($input.val()).toLowerCase()==q.toLowerCase())&&lastKeyPressCode!=KEY.BACKSPACE){$input.val($input.val()+sValue.substring(lastWord(previousValue).length));$.Autocompleter.Selection(input,previousValue.length,previousValue.length+sValue.length);}};function hideResults(){clearTimeout(timeout);timeout=setTimeout(hideResultsNow,200);};function hideResultsNow(){var wasVisible=select.visible();select.hide();clearTimeout(timeout);stopLoading();if(options.mustMatch){$input.search(function(result){if(!result){if(options.multiple){var words=trimWords($input.val()).slice(0,-1);$input.val(words.join(options.multipleSeparator)+(words.length?options.multipleSeparator:""));}
else
$input.val("");}});}
if(wasVisible)
$.Autocompleter.Selection(input,input.value.length,input.value.length);};function receiveData(q,data){if(data&&data.length&&hasFocus){stopLoading();select.display(data,q);autoFill(q,data[0].value);select.show();}else{hideResultsNow();}};function request(term,success,failure){if(!options.matchCase)
term=term.toLowerCase();var data=cache.load(term);if(data&&data.length){success(term,data);}else if((typeof options.url=="string")&&(options.url.length>0)){var extraParams={timestamp:+new Date()};$.each(options.extraParams,function(key,param){extraParams[key]=typeof param=="function"?param():param;});$.ajax({mode:"abort",port:"autocomplete"+input.name,dataType:options.dataType,url:options.url,data:$.extend({q:lastWord(term),limit:options.max},extraParams),success:function(data){var parsed=options.parse&&options.parse(data)||parse(data);cache.add(term,parsed);success(term,parsed);}});}else{select.emptyList();failure(term);}};function parse(data){var parsed=[];var rows=data.split("\n");for(var i=0;i<rows.length;i++){var row=$.trim(rows[i]);if(row){row=row.split("|");parsed[parsed.length]={data:row,value:row[0],result:options.formatResult&&options.formatResult(row,row[0])||row[0]};}}
return parsed;};function stopLoading(){$input.removeClass(options.loadingClass);};};$.Autocompleter.defaults={inputClass:"ac_input",resultsClass:"ac_results",loadingClass:"ac_loading",minChars:1,delay:400,matchCase:false,matchSubset:true,matchContains:false,cacheLength:10,max:100,mustMatch:false,extraParams:{},selectFirst:true,formatItem:function(row){return row[0];},formatMatch:null,autoFill:false,width:0,multiple:false,multipleSeparator:", ",highlight:function(value,term){return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)("+term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")+")(?![^<>]*>)(?![^&;]+;)","gi"),"<strong>$1</strong>");},scroll:true,scrollHeight:180};$.Autocompleter.Cache=function(options){var data={};var length=0;function matchSubset(s,sub){if(!options.matchCase)
s=s.toLowerCase();var i=s.indexOf(sub);if(i==-1)return false;return i==0||options.matchContains;};function add(q,value){if(length>options.cacheLength){flush();}
if(!data[q]){length++;}
data[q]=value;}
function populate(){if(!options.data)return false;var stMatchSets={},nullData=0;if(!options.url)options.cacheLength=1;stMatchSets[""]=[];for(var i=0,ol=options.data.length;i<ol;i++){var rawValue=options.data[i];rawValue=(typeof rawValue=="string")?[rawValue]:rawValue;var value=options.formatMatch(rawValue,i+1,options.data.length);if(value===false)
continue;var firstChar=value.charAt(0).toLowerCase();if(!stMatchSets[firstChar])
stMatchSets[firstChar]=[];var row={value:value,data:rawValue,result:options.formatResult&&options.formatResult(rawValue)||value};stMatchSets[firstChar].push(row);if(nullData++<options.max){stMatchSets[""].push(row);}};$.each(stMatchSets,function(i,value){options.cacheLength++;add(i,value);});}
setTimeout(populate,25);function flush(){data={};length=0;}
return{flush:flush,add:add,populate:populate,load:function(q){if(!options.cacheLength||!length)
return null;if(!options.url&&options.matchContains){var csub=[];for(var k in data){if(k.length>0){var c=data[k];$.each(c,function(i,x){if(matchSubset(x.value,q)){csub.push(x);}});}}
return csub;}else
if(data[q]){return data[q];}else
if(options.matchSubset){for(var i=q.length-1;i>=options.minChars;i--){var c=data[q.substr(0,i)];if(c){var csub=[];$.each(c,function(i,x){if(matchSubset(x.value,q)){csub[csub.length]=x;}});return csub;}}}
return null;}};};$.Autocompleter.Select=function(options,input,select,config){var CLASSES={ACTIVE:"ac_over"};var listItems,active=-1,data,term="",needsInit=true,element,list;function init(){if(!needsInit)
return;element=$("<div/>").hide().addClass(options.resultsClass).css("position","absolute").appendTo(document.body);list=$("<ul/>").appendTo(element).mouseover(function(event){if(target(event).nodeName&&target(event).nodeName.toUpperCase()=='LI'){active=$("li",list).removeClass(CLASSES.ACTIVE).index(target(event));$(target(event)).addClass(CLASSES.ACTIVE);}}).click(function(event){$(target(event)).addClass(CLASSES.ACTIVE);select();input.focus();return false;}).mousedown(function(){config.mouseDownOnSelect=true;}).mouseup(function(){config.mouseDownOnSelect=false;});if(options.width>0)
element.css("width",options.width);needsInit=false;}
function target(event){var element=event.target;while(element&&element.tagName!="LI")
element=element.parentNode;if(!element)
return[];return element;}
function moveSelect(step){listItems.slice(active,active+1).removeClass(CLASSES.ACTIVE);movePosition(step);var activeItem=listItems.slice(active,active+1).addClass(CLASSES.ACTIVE);if(options.scroll){var offset=0;listItems.slice(0,active).each(function(){offset+=this.offsetHeight;});if((offset+activeItem[0].offsetHeight-list.scrollTop())>list[0].clientHeight){list.scrollTop(offset+activeItem[0].offsetHeight-list.innerHeight());}else if(offset<list.scrollTop()){list.scrollTop(offset);}}};function movePosition(step){active+=step;if(active<0){active=listItems.size()-1;}else if(active>=listItems.size()){active=0;}}
function limitNumberOfItems(available){return options.max&&options.max<available?options.max:available;}
function fillList(){list.empty();var max=limitNumberOfItems(data.length);for(var i=0;i<max;i++){if(!data[i])
continue;var formatted=options.formatItem(data[i].data,i+1,max,data[i].value,term);if(formatted===false)
continue;var li=$("<li/>").html(options.highlight(formatted,term)).addClass(i%2==0?"ac_even":"ac_odd").appendTo(list)[0];$.data(li,"ac_data",data[i]);}
listItems=list.find("li");if(options.selectFirst){listItems.slice(0,1).addClass(CLASSES.ACTIVE);active=0;}
if($.fn.bgiframe)
list.bgiframe();}
return{display:function(d,q){init();data=d;term=q;fillList();},next:function(){moveSelect(1);},prev:function(){moveSelect(-1);},pageUp:function(){if(active!=0&&active-8<0){moveSelect(-active);}else{moveSelect(-8);}},pageDown:function(){if(active!=listItems.size()-1&&active+8>listItems.size()){moveSelect(listItems.size()-1-active);}else{moveSelect(8);}},hide:function(){element&&element.hide();listItems&&listItems.removeClass(CLASSES.ACTIVE);active=-1;},visible:function(){return element&&element.is(":visible");},current:function(){return this.visible()&&(listItems.filter("."+CLASSES.ACTIVE)[0]||options.selectFirst&&listItems[0]);},show:function(){var offset=$(input).offset();element.css({width:typeof options.width=="string"||options.width>0?options.width:$(input).width(),top:offset.top+input.offsetHeight,left:offset.left}).show();if(options.scroll){list.scrollTop(0);list.css({maxHeight:options.scrollHeight,overflow:'auto'});if($.browser.msie&&typeof document.body.style.maxHeight==="undefined"){var listHeight=0;listItems.each(function(){listHeight+=this.offsetHeight;});var scrollbarsVisible=listHeight>options.scrollHeight;list.css('height',scrollbarsVisible?options.scrollHeight:listHeight);if(!scrollbarsVisible){listItems.width(list.width()-parseInt(listItems.css("padding-left"))-parseInt(listItems.css("padding-right")));}}}},selected:function(){var selected=listItems&&listItems.filter("."+CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE);return selected&&selected.length&&$.data(selected[0],"ac_data");},emptyList:function(){list&&list.empty();},unbind:function(){element&&element.remove();}};};$.Autocompleter.Selection=function(field,start,end){if(field.createTextRange){var selRange=field.createTextRange();selRange.collapse(true);selRange.moveStart("character",start);selRange.moveEnd("character",end);selRange.select();}else if(field.setSelectionRange){field.setSelectionRange(start,end);}else{if(field.selectionStart){field.selectionStart=start;field.selectionEnd=end;}}
field.focus();};})(jQuery);var HomeController={index:function(params,container){return FightController.random(params,container);var element=$d("homepageContainer");var banner=$d("hpBanner");var col=$d("margin:0 auto; position:relative; width:922px;");col.append($h("h3").append("....................................want to go to <span style='color:#3B5998;'>bhutan</span>........"));col.append($h("h3").append(".....want to setup a <span style='color:#3B5998;'>saltwater aquarium</span>..................."));col.append($h("h3").append("............ want to buy a <span style='color:#3B5998;'>laptop</span> ............................"));col.append($h("h1").append("get <span style='color:yellow;'>help</span> from <span style='color:green;'>friends</span>............"));col.append($h("h1").append(".....................create a <span style='color:orange;'>lispt</span>."));banner.append(col);element.append(banner);container.append(element);if(top!=self){banner.css("font-size","80%");}
element.append("<br/>");element.append($d("listHeader clearfix").append($d("listTitle").append($h("h2","padding:0;margin:0;").append("Latest Lispts"))));HomeController.renderLists("/lists","#/home/index/",params,container);},mylists:function(params,container){Lispt.loginFacebook(function(){HomeController.renderLists("/users/"+$.user_id+"/lists","#/home/mylists/",params,container);});},renderLists:function(url,hash,params,container){var element=$d("listsContainer");container.append(element);page=1;if(params.length==3){page=parseInt(params[2]);}
$.getJSON(url+"?page="+page,function(data){var lists=[];for(var i=0;i<data.lists.length;i++){lists.push(new List(data.lists[i]));}
$.lists=lists;$.current_page=page;$.list_count=data.meta.count;$.page_count=Math.ceil(data.meta.count/data.meta.page_size);HomeController.renderHomePage(element,hash);});},renderHomePage:function(container,hash){var lists=$.lists;for(var key=0;key<lists.length;key++){var list=lists[key];container.append(HomeController.renderList(list));}
container.append(this.renderPageNav(hash));},renderList:function(list){var element=$d("miniList");var url="#"+list.getUrl();var title=$d("listFieldTitle").append($h("h3","padding:0;margin:0;").append($h("a","list_link",{"href":url}).append(list.attributes.title).click(function(){Controller.dispatch(list.getUrl());})));var items=$d("listItems");for(var key=0;key<list.items.length;key++){items.append(list.items[key].attributes.title+", ");}
items.append("...");element.append(title);element.append(items);return element;},renderPageNav:function(hash){var table=new $tbl({"align":"center"});var end_page=($.current_page+5<$.page_count)?$.current_page+5:$.page_count;var start_page=(($.current_page-5)>1)?$.current_page-5:1;table.newRow();if($.current_page!=1)
table.newColumn().append(this.createPageLink(hash,$.current_page-1,"Prev"));var i=start_page;while(i<=end_page){if($.current_page!=i)
table.newColumn().append(this.createPageLink(hash,i));else
table.newColumn().append(i);i++;}
if($.current_page!=end_page)
table.newColumn().append(this.createPageLink(hash,$.current_page+1,"Next"));return table.element;},createPageLink:function(hash,num,text){var path=hash+num;text=text||num;return $h("a",{"href":path}).append(text).click(function(){Controller.dispatch(path);return false;});},endObj:function(){}}
var ListController={show:function(params,container){$("#loadingBox").show();$.getJSON("/lists/"+params[2],function(data){var list=new List(data.list);$.obj=list;list.render(container);$("#loadingBox").hide();return false;});},create:function(params,container){var list=new List();list.render(container);Lispt.loginFacebook();},endObj:function(){}}
var FightController={show:function(params,container){var fc=this.renderFC(container);fc.addFight(params[2]);if(!$.user_id&&$.refuser){}},skip:function(params,container){var fw=new FightWall();container.append(fw.render());},create:function(params,container){var fc=this.renderFC(container);fc.addFight(-1);},random:function(params,container){var fc=this.renderFC(container);fc.addFight(0);},manage:function(params,container){$.manage=true;var fc=this.renderFC(container);Lispt.loginFacebook(function(){fc.addFight(-1);});},renderFC:function(container){var fc=new Container();fc.render(container);return fc;},showPopup:function(){var text="Click on your choice to learn what "+$.refuser.first_name+" selected.";var help=$d("clearfix","font-size:20px");if($.refuser.pic_square){help.append($d("float: left;padding:5px;").append($h("img",{"src":$.refuser.pic_square})));}
help.append(text);$popup(help,{top:100,left:"10%"});},endObj:function(){}}
var MyFrameController={show:function(params,container){var fc=this.renderFC(container);fc.addFrame(params[2]);},create:function(params,container){var fc=this.renderFC(container);fc.addFrame(0);},renderFC:function(container){var fc=new Container();fc.render(container);return fc;},endObj:function(){}}
function Model(fieldsHash,attributesHash){Model.loadFields(this,fieldsHash);Model.loadAttributes(this,attributesHash);this.bindPerInstanceMethods();};Model.loadFields=function(instance,fieldsHash){jQuery.extend(instance,fieldsHash);};Model.loadAttributes=function(instance,attributes){instance.attributes={};attributes=attributes||instance.Attributes;jQuery.extend(instance.attributes,attributes);};Model.lockBeforeAsyncCall=function(){return function(instance){instance.lock();}};Model.unlockAfterAsyncCall=function(){return function(instance){instance.unlock();}};Model.prototype.isNewRecord=function(){return this.attributes.id==null;};Model.prototype.bindPerInstanceMethods=function(){for(asyncMethod in this.AsyncMethods){this[asyncMethod]=this.AsyncMethods[asyncMethod](this);}
for(handler in this.EventHandlers){this[handler]=this.EventHandlers[handler](this);}};Model.subclass=function(subclass,meta){subclass.prototype=jQuery.extend(new Model,meta.Properties,meta.Methods);subclass.instanceCount=0;subclass.updateInstanceCount=function(){this.instanceCount++};subclass.prototype.klass=subclass;subclass.prototype.constructor=subclass;subclass.prototype.Attributes=meta.Attributes;subclass.prototype.Fields=meta.Fields;subclass.prototype.AsyncMethods=meta.AsyncMethods;subclass.prototype.EventHandlers=meta.EventHandlers;};$.objects=[];$.lastOid=1;$.createObject=function(object){object.oid="o"+$.lastOid;$.lastOid++;$.objects[object.oid]=object;return object;}
Object.size=function(obj){var size=0,key;for(key in obj){if(obj.hasOwnProperty(key))size++;}
return size;};(function($){$.tipsy=function(input,options){var me=this;input.tipsy=me;me.options=options;me.show=function(){if(!me.element){me.element=$('<div class="tipsy"><div class="tipsy-inner">'+me.options.text+'</div></div>').css({position:'absolute',zIndex:50});}
var pos=$.extend({},$(input).offset(),{width:input.offsetWidth,height:input.offsetHeight});me.element.remove().css({top:0,left:0,visibility:'hidden',display:'block'}).appendTo(document.body);var actualWidth=me.element[0].offsetWidth,actualHeight=me.element[0].offsetHeight;me.visible=true;switch(me.options.gravity.charAt(0)){case'n':me.element.css({top:pos.top+pos.height,left:pos.left+pos.width/2-actualWidth/2}).addClass('tipsy-north');break;case's':me.element.css({top:pos.top-actualHeight,left:pos.left+pos.width/2-actualWidth/2}).addClass('tipsy-south');break;case'e':me.element.css({top:pos.top+pos.height/2-actualHeight/2,left:pos.left-actualWidth}).addClass('tipsy-east');break;case'w':me.element.css({top:pos.top+pos.height/2-actualHeight/2,left:pos.left+pos.width}).addClass('tipsy-west');break;}
me.element.css({visibility:'visible'});}
me.hide=function(){me.element&&me.element.remove();me.visible=false;}
if(me.options.hover){$(input).hover(function(){me.show();},function(){me.visible=false;setTimeout(function(){if(!me.visible)
me.hide();},100);});}}
$.fn.tipsy=function(options){options=options||{};options=$.extend({gravity:'n',text:'Hello',hover:true},options);return this.each(function(){var input=this;new $.tipsy(input,options);});}
$.menu=function(input,options){var me=this;input.menu=me;$(input).find(options.choices).each(function(){var choice=this;choice.select=function(){$(choice).removeClass(options.baseClass);$(choice).addClass(options.selectedClass);$(choice).unbind("click");me.selected=choice;}
choice.deselect=function(){$(choice).removeClass(options.selectedClass);$(choice).addClass(options.baseClass);$(choice).click(function(){if(me.selected){me.selected.deselect();}
choice.select();if(options.onSelect){options.onSelect(choice);}});}
choice.deselect();if(!me.selected&&options.autoSelect)
$(choice).click();});}
$.fn.menu=function(options){options=options||{};options=$.extend({selectedClass:"menu_option_selected",baseClass:"menu_option",autoSelect:true,choices:".menu_choice"},options);return this.each(function(){var input=this;new $.menu(input,options);});}
$.chameleonInput=function(input,options){var me=this;input.chameleonInput=me;input.deselect=function(){if(input.value==""){input.value=options.emptyText;input.unchanged=true;$(input).css("color",options.emptyTextColor);}}
input.select=function(){if(input.unchanged){input.value="";input.unchanged=false;$(input).css("color",options.normalTextColor);}}
input.getValue=function(){if(input.unchanged)
return"";else
return input.value;}
input.setValue=function(val){if(val){input.select();input.value=val;}else{input.value="";input.deselect();}}
$(input).blur(function(){input.deselect();});$(input).focus(function(){input.select();});input.deselect();if(options.normalText){input.select();input.value=options.normalText;}}
$.fn.chameleonInput=function(options){options=options||{};options=$.extend({emptyTextColor:"#BBBBBB",normalTextColor:"black",emptyText:"Click to enter text..."},options);return this.each(function(){var input=this;new $.chameleonInput(input,options);});}
$.toggler=function(input,options){var me=this;input.toggler=me;input.deselect=function(){input.selected=false;$(input).removeClass(options.selectedClass);options.change(input.selected,$(input));}
input.select=function(){input.selected=true;$(input).addClass(options.selectedClass);options.change(input.selected,$(input));}
if(options.selected)
input.select();else
input.deselect();var toggle=$(input).find(options.toggle);if(toggle.size()==0)
toggle=$(input);toggle.click(function(){if(input.selected){input.deselect();}else{input.select();}});}
$.fn.toggler=function(options){options=options||{};options=$.extend({selectedClass:"selected",selected:false,toggle:".toggle",change:function(){}},options);return this.each(function(){var input=this;new $.toggler(input,options);});}})(jQuery);$.tipsify=function(event){var text=event.data.text;if(jQuery.isFunction(event.data.text))
text=event.data.text();$(this).tipsy({text:text,hover:event.data.hover,gravity:event.data.gravity});this.tipsy.show();}
$.untipsify=function(event){if(this.tipsy)
this.tipsy.hide();this.tipsy=null;}
var htmlc=1;$h=function(tag,cls,css,attributes){var element=document.createElement(tag);if(css&&(typeof css=="object")){attributes=css;css=null;}
if(typeof cls=="string"){if(cls.indexOf(":")>=0){css=cls;cls=null;}}else if(typeof cls=="object"){attributes=cls;cls=null;css=null;}
attributes=attributes||{};if(cls){attributes["class"]=attributes["class"]?(attributes["class"]+" "+cls):cls;}
if(css){attributes["style"]=attributes["style"]?(attributes["style"]+";"+css):css;}
attributes.id=attributes.id||htmlc++;$(element).attr(attributes);return $(element);}
$d=function(cls,css,attributes){return $h("div",cls,css,attributes);}
$fbut=function(text){return $d("tl").append($d("tr").append($d("tr").append($d("bl").append($d("br").append($h("span","fbButtonSpan").append(text))))));}
$tbl=function(cls,css,attributes){this.element=$h("table",cls,css,attributes);}
$tbl.prototype={newRow:function(cls,css,attributes){this.lastRow=$h("tr",cls,css,attributes);this.element.append(this.lastRow);return this.lastRow;},newColumn:function(cls,css,attributes){var td=$h("td",cls,css,attributes);this.lastRow.append(td);return td;}}
$popup=function(content,position){var element=$d("background-color: black; color: white; text-align: center;opacity: 0.9; filter: alpha(opacity=90);z-index: 120;position:absolute;max-width:50%;padding:1px;");var close=$h("input","blueButton action","float:right;",{"type":"button","value":"Close"});var element2=$d("border:1px solid #3B5998; padding: 5px;");element.css(position);element.append(element2);element2.append(content);content.append(close).click(function(){element.remove();});setTimeout(function(){element.fadeOut("slow",function(){element.remove();});},5000);$(document.body).append(element);}
var Lispt={friends:{},createObject:function(data,key){if(Lispt.classes[key]){return new Lispt.classes[key](data[key]);}
return undefined;},getObjectFromUrl:function(url,callback){$.getJSON(url,function(data){for(var i=0;i<data.length;i++){if(data[i].constructor==Array){for(var key=0;key<data[i].length;key++){callback(Lispt.createObject(data[i],key));}}else{callback(Lispt.createObject(data,i));}}});},loadFriends:function(callback){if(Lispt.user.friendStatus==2){callback&&callback();return;}
callback&&$("body").bind("loadFriends",callback);if(Lispt.user.friendStatus==1)
return;Lispt.user.friendStatus=1;FB.Facebook.apiClient.fql_query("select uid, first_name, last_name, pic_square, pic_big from user where uid in (SELECT uid2 FROM friend WHERE uid1="
+$.user.fbk_uid+")",function(data){for(var i=0;data&&(i<data.length);i++){Lispt.friends[data[i].first_name.toLowerCase()+" "+data[i].last_name.toLowerCase()]=data[i];}
Lispt.friendsArray=data;Lispt.user.friendStatus=2;$("body").trigger("loadFriends");$("body").unbind("loadFriends");});},setFacebookUser:function(data){if(Lispt.user.loginStatus>1)
return;Lispt.user.loginStatus=2;$.getJSON("/facebook/login",function(data){if(!data.error){$.user_id=data.user.id;$.user=data.user;$.user.recentlogin=data.recentlogin;Lispt.addUser(data.user);Lispt.user.loginStatus=3;Lispt.loadFriends();$.clan.register($.clan.types.LOGIN,data.user.id);$("body").trigger("loginFB");}});},getHost:function(){if(document.location.host.indexOf("lisptdev")!=-1)
return"http://apps.facebook.com/lisptdev?q=";else
return"http://fb.lispt.com/?q=";},isUser:function(user_id){return(($.user_id)&&($.user_id!=0)&&($.user_id==user_id));},loginFacebook:function(callback){if(Lispt.user.loginStatus==3){callback&&callback();return;}
callback&&$("body").bind("loginFB",callback);if(Lispt.user.loginStatus==2)
return;FB.ensureInit(function(){FB.Connect.get_status().waitUntilReady(function(status){if(status==1){Lispt.setFacebookUser();}else if(status==2){alert("Please login to Facebook first.");}else{FB.Connect.requireSession(Lispt.setFacebookUser,true);$("#RES_ID_fb_pop_dialog_table").css("top","70px");window.scroll(0,0);}});});},shout:function(data,pid,pdata,callback){if(!$.user.status_allowed&&!$.user.rejected){FB.Connect.showPermissionDialog("status_update",function(val){if(val){$.user.status_allowed=true;$.post("/facebook/shout",data,callback);}else{$.user.rejected=true;Lispt.publish(pid,pdata,callback);}});$("#RES_ID_fb_pop_dialog_table").css("top","70px");}else if(!$.user.status_allowed){Lispt.publish(pid,pdata,callback);}else{callback&&callback(true);}},publish:function(pid,pdata,callback){FB.Connect.showFeedDialog(pid,pdata,undefined,"",undefined,FB.RequireConnect.require,callback);$("#RES_ID_fb_pop_dialog_table").css("top","70px");},email:function(callback){if(!$.user.email_perm&&!$.user.emaildown){FB.Connect.showPermissionDialog("email",function(val){if(val){$.user.email_perm=true;$.post("/facebook/permission",{email:1},callback);}else{$.user.emaildown=true;callback&&callback();}});$("#RES_ID_fb_pop_dialog_table").css("top","70px");}else{callback&&callback();}},onLogin:function(callback){if(Lispt.user.loginStatus==3){callback&&callback();}else{callback&&$("body").bind("loginFB",callback);}},addUser:function(user){Lispt.users[user.fbk_uid+""]=user;if(user.id){Lispt.userIdIndex[user.id]=user;}},getUserById:function(id){return Lispt.userIdIndex[id];},parseGoogleAutocomp:function(data){var parsed=[];var rows=data[1];for(var i=0;i<rows.length;i++){var row=rows[i];parsed[parsed.length]={data:row,value:row[0],result:row[0]};}
return parsed;},users:{},userIdIndex:{},user:{loginStatus:0,friendStatus:0},classes:{}}
var Routes={home:HomeController,list:ListController,frame:MyFrameController,fight:FightController}
var Controller={dispatch:function(url){var container=$d("homepageContainer");while(url.charAt(0)=="#"||url.charAt(0)=="/")
url=url.slice(1);$.history=$.history||[];$.history.push(url);document.location.hash="#"+url;var params=url.split("/");var controller=params[0];var action=params[1];if(!action||!Routes[controller]){controller="home";action="index";params=[controller,action];}
$("#myheader")[0].scrollIntoView();$("#main").empty().append(container);$.awesomeBar.hide();$("#statusbar").hide();$(".tipsy").remove();$.controller=controller;Routes[controller][action](params,container);return false;},loadFromLocation:function(){var loc=document.location.href;var i;var hash=document.location.hash;if((i=loc.indexOf("&next="))!=-1){loc=unescape(loc.substr(i+6));}else if((i=loc.indexOf("?next="))!=-1){loc=unescape(loc.substr(i+6));}
if((i=loc.indexOf("#"))!=-1){hash=loc.substr(i+1);if((i=hash.indexOf("&"))!=-1)
hash=hash.substr(0,i);}
$.x1=hash;$.x2=loc;if((hash=="")&&((i=loc.indexOf("q="))!=-1)){hash=unescape(loc.substr(i+2));}
if((i=hash.indexOf("&"))!=-1)
hash=hash.substr(0,i);Controller.dispatch(unescape(hash));},classes:{}}
function FightClub(){Model.call(this,{},{});return this;}
Model.subclass(FightClub,{Attributes:{},Fields:{},Properties:{},Methods:{render:function(){this.element=$d("contributorsBox clearfix","border: 1px solid #CFCFCF; margin-top:3px;");Lispt.onLogin(this.renderWidget);return this.element;},unRender:function(){if(this.element){this.element.remove();this.element=undefined;}}},AsyncMethods:{},EventHandlers:{renderWidget:function(widget){return function(){Lispt.loadFriends(function(){widget.element.append($d("background-color:#CFCFCF; padding:2px;font-size:80%;").append("Fight Club"));var container=$d("padding:2px; font-size:80%;");var friends=Lispt.friends;var i=0;for(var key in friends){var user=friends[key];var pic_square=user.pic_square||"http://static.ak.fbcdn.net/pics/q_default.gif";container.append($d("float: left;padding:1px;border: 1px solid #CFCFCF; margin:3px;").append($h("img","width:30px;height:30px;",{"src":pic_square})));i++;if(i==10)
break;}
widget.element.append(container);});}}}});function Intro(list,msg){Model.call(this,{},{});this.list=list;this.msg=msg||"Lispt lets you ask your friends a <b>question</b> and get the <b>best answer</b>.";return this;}
Model.subclass(Intro,{Attributes:{},Fields:{},Properties:{},Methods:{render:function(){var element=$d("introBox clearfix","margin-top:3px;");element.append($d("padding:2px;font-size:80%;font-weight:bold;border-bottom:2px solid black;").append("Quick Help"));var user=Lispt.getUserById(this.list.attributes.user_id||(this.list.connected_list&&this.list.connected_list.attributes.user_id));var pic_square=(user&&user.pic_square)||"http://static.ak.fbcdn.net/pics/q_default.gif";var container=$d("padding:2px; font-size:80%;");container.append($d("float: right;padding:1px;border: 1px solid #C7DBFF; margin:3px;").append($h("img","width:40px;height:40px;",{"src":pic_square})));container.append(this.msg);element.append(container);this.element=element;return element;},unRender:function(){if(this.element){this.element.remove();this.element=undefined;}}},AsyncMethods:{},EventHandlers:{}});function ManageFights(fc){Model.call(this,{},{});this.fc=fc;this.page=0;return this;}
Model.subclass(ManageFights,{Attributes:{},Fields:{},Properties:{},Methods:{render:function(){var element=$d("ManageFightsBox clearfix","border: 1px solid orange;margin-top:3px;");element.append($d("background-color:orange; padding:2px;font-size:80%;").append("Manage Fights"));element.append($d("action").append("Next").click(this.getFights));this.element=element;this.getFights();return element;},unRender:function(){if(this.element){this.element.remove();this.element=undefined;}}},AsyncMethods:{},EventHandlers:{getFights:function(fight){return function(){fight.element.find(".flt").remove();fight.page+=1;$.getJSON("/fight?manage=1&page_size=50&page="+fight.page,function(data){var container=$d("flt","padding:2px; font-size:80%;");for(var i=0;i<data.fights.length;i++){var txt=data.fights[i].a+" vs "+data.fights[i].b;var obj=$h("a","fight_link",{"fight_id":data.fights[i].id}).append((i+1)+". "+txt).click(function(){fight.fc.addFight($(this).attr("fight_id"));return false;});if(data.fights[i].status==1)
obj.css({color:"red"});else if(data.fights[i].status==2)
obj.css({color:"orange"});else if(data.fights[i].status==3)
obj.css({color:"yellow"});else if(data.fights[i].status==4)
obj.css({color:"green"});container.append(obj);container.append("<br />");}
fight.element.append(container);});}}}});function FunnyFightAd(fc){Model.call(this,{},{});this.fc=fc;return this;}
Model.subclass(FunnyFightAd,{Attributes:{},Fields:{},Properties:{},Methods:{render:function(){var me=this;var element=$d("FunnyFightAdBox clearfix","margin-top:3px;");element.append($d("padding:2px;font-size:80%;font-weight:bold;border-bottom:2px solid black;").append("Competition"));var container=$d("padding:2px; font-size:80%;");element.append(container);container.append($h("img","action","text-decoration:none;",{"src":"http://media.threadless.com/imgs/logo.gif"})).click(function(){me.fc.addFight(-1);$.getJSON("/fight/10?sr=threadless",function(){});return false;});container.append($h("span","action","text-decoration:none;color:#777777; font-weight:bold;").append("Create the funniest fight and win a t-shirt of your choice from ").click(function(){me.fc.addFight(-1);$.getJSON("/fight/10?sr=threadless",function(){});return false;}));container.append("<a href='http://www.threadless.com' target='_blank>Threadless</a>.");this.element=element;return element;},unRender:function(){if(this.element){this.element.remove();this.element=undefined;}}},AsyncMethods:{},EventHandlers:{}});function FightWall(){Model.call(this,{},{});this.lh=0;return this;}
Model.subclass(FightWall,{Attributes:{},Fields:{},Properties:{},Methods:{renderFight:function(fight){var a_img_loc=fight.a_img;var b_img_loc=fight.b_img;var a_img=$d().append($h("img","a_img fightImgMtg",{"src":a_img_loc}));var b_img=$d().append($h("img","b_img fightImgMtg",{"src":b_img_loc}));var element=$d("float:left;background-color: black;cursor: pointer; width:134px;").append(a_img).append(b_img);fight.element=element;element.tipsy(({text:fight.a+" vs "+fight.b,hover:true,gravity:'s'}));element.click(function(){Lispt.loginFacebook(function(){Controller.dispatch("/fight/show/"+fight.id);});});return element;},render:function(){var me=this;var element=$d("clearfix"," padding:2px;");$.getJSON("/fight?page=1&page_size=50",function(data){me.fights=data.fights;for(var i=0;i<data.fights.length;i++){element.append(me.renderFight(data.fights[i]));}
me.highlight();});return element;},cselect:function(fight){var me=this;if(fight.b_count>fight.a_count)
return"b_img";return"a_img";},unRender:function(){if(this.element){this.element.remove();this.element=undefined;}}},AsyncMethods:{highlight:function(widget){return function(){var f=widget.fights[widget.lh];f.element.find("."+widget.cselect(widget.fights)).show();widget.lh=Math.floor(Math.random()*widget.fights.length);f=widget.fights[widget.lh];f.element.find("."+widget.cselect(widget.fights)).hide();setTimeout(widget.highlight,700);}}},EventHandlers:{}});function TopFights(fc){Model.call(this,{},{});this.fc=fc;return this;}
Model.subclass(TopFights,{Attributes:{},Fields:{},Properties:{},Methods:{renderFight:function(fight){var a_img_loc=fight.a_img;var b_img_loc=fight.b_img;var a_img=$d().append($h("img","fightImgSmall",{"src":a_img_loc}));var b_img=$d().append($h("img","fightImgSmall",{"src":b_img_loc}));var table=new $tbl("smallFightBox","text-align:center;",{"cellspacing":"0px","cellpadding":"0"});var row=table.newRow();table.newColumn().append(a_img);table.newColumn("padding:0 5px;").append("vs");table.newColumn().append(b_img);return table.element;},render:function(){var me=this;var element=$d("InterestingFightsBox clearfix","margin-top:3px; padding-bottom: 3px; border-bottom: 1px solid #EFEFEF;");element.append($d("padding:2px;font-size:80%;font-weight:bold;border-bottom:2px solid black;").append("Top Fights"));$.getJSON("/fight?page=1",function(data){var x=1;var container=$d("padding:2px; font-size:80%;");for(var i=0;i<data.fights.length;i++){var obj=$h("a","fight_link",{"fight_id":data.fights[i].id}).append(me.renderFight(data.fights[i])).click(function(){me.fc.addFight($(this).attr("fight_id"));return false;});container.append(obj);if(x++==3)
break;}
element.append(container);});this.element=element;return element;},unRender:function(){if(this.element){this.element.remove();this.element=undefined;}}},AsyncMethods:{},EventHandlers:{}});function NewFight(fc){Model.call(this,{},{});this.fc=fc;return this;}
Model.subclass(NewFight,{Attributes:{},Fields:{},Properties:{},Methods:{render:function(){var me=this;var element=$d("clearfix","margin-top:10px; cursor: pointer;");element.append($h("span","NewFightBox","padding:2px;font-size:80%;font-weight:bold;").append("Create Video Fight"));element.append($h("span","padding:2px;font-size:80%;color:red;").append(" - <i>NEW!</i>"));element.click(function(){me.fc.addFight(-1,"video");return false;});this.element=element;return element;},unRender:function(){if(this.element){this.element.remove();this.element=undefined;}}},AsyncMethods:{},EventHandlers:{}});function InterestingLists(list){Model.call(this,{},{});this.list=list;return this;}
Model.subclass(InterestingLists,{Attributes:{},Fields:{},Properties:{},Methods:{render:function(){var me=this;var element=$d("clearfix","margin-top:3px;");element.append($d("padding:2px;font-size:80%;font-weight:bold;border-bottom:2px solid black;").append("Top Questions"));$.getJSON("/lists?page=1",function(data){var x=1;var container=$d("padding:2px; font-size:80%;");for(var i=0;i<data.lists.length;i++){var list=new List(data.lists[i]);if(!me.list||me.list.attributes.id!=list.attributes.id){var url="#"+list.getUrl();var obj=$h("a","list_link",{"href":url}).append(x+". "+list.attributes.title).click(function(){Controller.dispatch($(this).attr("href"));});container.append(obj);container.append("<br />");if(x++==5)
break;}}
element.append(container);});this.element=element;return element;},unRender:function(){if(this.element){this.element.remove();this.element=undefined;}}},AsyncMethods:{},EventHandlers:{}});function AwesomeBar(){Model.call(this,{},{});this.keyword="";this.searcher=new Searcher(this.keyword);this.searcher.onSearch(this.searched);this.reset();return this;}
Model.subclass(AwesomeBar,{Attributes:{},Fields:{},Properties:{},Methods:{renderContainer:function(){return $d("awesomeBar").append($d("webResultsBox")).append(this.renderFooter());},reset:function(){this.srs={"web":{},"image":{},"video":{}};this.item=undefined;this.searchType="GimageSearch"||"GwebSearch";this.searcher.start=0;this.results=[];},link:function(item){this.item=item;this.srs={};var ids=item.item_descriptions;for(var i in ids){this.srs[i]={};for(var j in ids[i]){this.srs[i][j]=true;}}
this.position();},delink:function(item){if(this.item==item){this.reset();}},renderFooter:function(){var element=$d("searchBar","background-color: #fff9d7;padding:5px;");var searchBox=$h("input","searchInput",{"type":"text"});searchBox[0].value=this.keyword;var form=$h("form","margin:0px;padding:0px;").submit(this.newSearch);var me=this;form.append(searchBox);form.append($h("input","greyButton","margin-left:10px;",{"type":"submit"}).click(this.searchFormSubmitHandler));element.append($h("span","hideButton").append($h("img",{"src":"/images/cross.png"})).click(this.hide));element.append($h("input","blueButton","float:right; margin-right:10px;",{"type":"button","value":"Image"}).click(function(){me.searchType="GimageSearch";me.newSearch();}));element.append($h("input","blueButton","float:right; margin-right:10px;",{"type":"button","value":"Web"}).click(function(){me.searchType="GwebSearch";me.newSearch();}));element.append($h("input","blueButton","float:right; margin-right:10px;",{"type":"button","value":"Video"}).click(function(){me.searchType="GvideoSearch";me.newSearch();}));element.append($d("margin-top: 5px;").append(form));return element;},setKeyword:function(keyword){this.element.find(".searchInput")[0].value=keyword;this.keyword=keyword;return this.keyword;},setSearchType:function(type){this.searchType=type;},getKeyword:function(){this.keyword=this.element.find(".searchInput")[0].value||"Lispt";this.element.find(".searchInput")[0].value=this.keyword;return this.keyword;},render:function(){if(!this.element){this.element=this.renderContainer();$("body").append(this.element);var content=$d("font-size:120%;width:330px;").append($d("border:2px solid #666666; padding: 2px;margin-right:2px;").append($h("img",{"src":"/images/deschelp.jpg"}))).append("Easily describe your recommendation by adding images and links.(<a>close</a>)");}
return this.element;},renderResults:function(){var element=this.element.find(".webResultsBox").empty();element.append($d("lessButton").click(this.searchPrev));for(var i=0;i<this.results.length;i++){var result=this.results[i];if(this.srs[result.attributes.info][result.getUniquenessId()])
result.selected=true;else
result.selected=false;element.append(result.render());result.onAdd(this.resultAdded);result.onRemove(this.resultRemoved);}
element.append($d("moreButton").click(this.searchNext));element.append($d("clearFloatDiv"));},unRender:function(){if(this.element){this.element.remove();this.element=undefined;}}},AsyncMethods:{searched:function(widget){return function(results){if(widget.results!=results){widget.results=results;widget.renderResults();}}}},EventHandlers:{removeResult:function(widget){return function(item,id){for(var i=0;(item==widget.item)&&(i<this.results.length);i++){if(widget.results[i].getUniquenessId()==id.getUniquenessId())
widget.results[i].element.find(".toggle").eq(0).click();}}},resultAdded:function(widget){return function(result){widget.srs[result.attributes.info][result.getUniquenessId()]=true;if(widget.item){widget.item.addResult(result);}}},position:function(widget){return function(result){if((top!=self)||($.browser.msie&&$.browser.version=="6.0")){if(widget.item){var abpos=widget.item.element.offset().top+widget.item.element.height()+20;widget.element.css({'position':'absolute','top':abpos});setTimeout(widget.position,1000);}}else{widget.element.css({'position':'fixed','bottom':'0'});}}},resultRemoved:function(widget){return function(result){delete widget.srs[result.attributes.info][result.getUniquenessId()];if(widget.item){widget.item.removeResult(result);}}},newSearch:function(widget){return function(){var kw=widget.getKeyword();widget.searcher.search({keyword:kw,searchType:widget.searchType});return false;}},show:function(widget){return function(){widget.element.show();}},hide:function(widget){return function(){widget.element.hide();}},searchPrev:function(widget){return function(){widget.searcher.search({start:widget.searcher.start-4});}},searchNext:function(widget){return function(){widget.searcher.search({start:widget.searcher.start+4});}}}});function Countdown(timeout,onExpire){Model.call(this,{},{});this.timeout=timeout;this.onExpire=onExpire;this.stopped=false;return this;}
Model.subclass(Countdown,{Attributes:{},Fields:{},Properties:{},Methods:{render:function(){var element=$d("countdownBox");element.append("Timeout ").append($h("span","cdTime","color:black;").append(this.timeout));this.element=element;this.down();return element;},stop:function(){this.stopped=true;},unRender:function(){if(this.element){this.element.remove();this.element=undefined;}}},AsyncMethods:{},EventHandlers:{down:function(cd){return function(){if(cd.stopped==true)
return;if(cd.timeout==0){cd.onExpire();return;}
cd.element.find(".cdTime").empty().append(cd.timeout);if(cd.timeout==6)
cd.element.find(".cdTime").css({color:"red"});cd.timeout--;setTimeout(cd.down,1000);}}}});function ClickAnalytics(url,session_id){Model.call(this,{},{});this.mtTimeout=300;this.mps="";this.mpsc=0;this.regmX=0;this.regmY=0;this.url=url;this.session_id=session_id;$().mousemove(this.mouseMoved);$("body").click(this.trackMouseClick);setTimeout(this.trackMousePos,this.mtTimeout);this.types={"MOUSEPOS":1,"MOUSECLK":2,"FIGHTSHOW":3,"LOGIN":4,"SUPPORT":5}
return this;}
Model.subclass(ClickAnalytics,{Attributes:{},Fields:{},Properties:{},Methods:{mouseMoved:function(){if(this.element){this.element.remove();this.element=undefined;}},register:function(type,data){$.ajax({url:this.url,dataType:"jsonp",data:{session_id:this.session_id,type:type,data:data}});}},AsyncMethods:{},EventHandlers:{mouseMoved:function(ca){return function(e){ca.mouseX=e.pageX;ca.mouseY=e.pageY;}},trackMousePos:function(ca){return function(e){if(ca.mouseX&&(Math.abs(ca.mouseX-ca.regmX)>10||Math.abs(ca.mouseY-ca.regmY)>10)){ca.mps=ca.mps+ca.mouseX+","+ca.mouseY+":";ca.regmX=ca.mouseX;ca.regmY=ca.mouseY;ca.mpsc++;}
if(ca.mpsc>10){ca.mpsc=0;ca.register(ca.types.MOUSEPOS,ca.mps);ca.mps="";}
setTimeout(ca.trackMousePos,ca.mtTimeout);}},trackMouseClick:function(ca){return function(e){ca.register(ca.types.MOUSECLK,e.pageX+","+e.pageY);}}}});window.onerror=function(m,f,l){$.post("/facebook/jserror",{msg:m,file:f,link:l},function(data){},"json");};function Item(attributes,list){Model.call(this,{},attributes);this.item_descriptions={"web":{},"image":{},"video":{}};this.comments=[];this.list=list;this.events={};this.events.onRemove=[];this.events.onSave=[];this.mode="none";if(this.attributes.item_descriptions){var ids=this.attributes.item_descriptions;this.attributes.item_descriptions=undefined;for(var key=0;key<ids.length;key++){ids[key].item_description_id=this.attributes.id;var id=new ItemDescription(ids[key],this);this.item_descriptions[id.attributes.info][id.getUniquenessId()]=id;id.onRemove(this.removeID);}}
if(this.attributes.comments){var comments=this.attributes.comments;this.attributes.comments=undefined;for(var key=0;key<comments.length;key++){this.comments.push(new Comment(comments[key],this));}}
return this;}
Item.find=function(id,callback){$.getJSON("/"+Item.controller+"/"+id,function(data){item=new Item(data.item);callback(item);});}
Item.find_by_list=function(list,callback){$.getJSON(list.getUrl()+"/"+Item.controller,function(data,textStatus,xhr){var items=[];for(var i=0;i<data.items.length;i++){items.push(new Item(data.items[i],list));}
callback(items);});}
Item.controller='items';Item.name='Item';Lispt.classes["item"]=Item;Model.subclass(Item,{Attributes:{id:0,title:"",score:undefined,user_id:undefined},Fields:{},Properties:{getUrl:function(){return"/"+Item.controller+'/'+this.attributes.id;},getTitle:function(){var itemBox=this.element.find(".inputItemTitle");if(itemBox.size()>0){return itemBox[0].getValue();}else
return this.attributes.value;}},Methods:{renderUser:function(){var user=Lispt.getUserById(this.attributes.user_id);var pic_square=user.pic_square||"http://static.ak.fbcdn.net/pics/q_default.gif";var prof=$d("userProfile","float: right;");prof.append($d("float: left;").append($h("img","width:40px;height:40px;",{"src":pic_square})));prof.append($d("margin-left:2px;float: left;").append(user.first_name));return prof;},renderInfo:function(){var element=$d("itemInfoBar clearfix");var me=this;var commentText="Discuss";if(this.comments.length>0){commentText="Comments ("+this.comments.length+")";}
var comment=$h("span","action infoBarButton","padding:3px 3px 0 0;font-size:7pt;");comment.toggler({selectedClass:"commentSelected",change:function(select){if(select){comment.empty().append("Hide Comments");me.element.find(".itemCommentsBox").empty();me.element.find(".itemCommentsBox").show();me.comment();}else{comment.empty().append(commentText);me.element.find(".itemCommentsBox").empty();me.element.find(".itemCommentsBox").hide().css("display","none");}}});element.append(comment);element.append(this.renderUser());return element;},renderHeader:function(){var title=$d("itemTitle clearfix").append($h("h2","padding:0; margin:0; float: left;").append(this.attributes.title));if(Lispt.isUser(this.attributes.contributor)){title.append($h("span","action itemTitleButton","color: red;").append("Delete").click(this.remove));title.append($h("span","action itemTitleButton").append("Edit").click(this.edit));}
this.element.find(".itemHeader").empty().append(title);},renderVote:function(){var element=this.element.find(".itemVote");if(element.size()==0)
element=$d("itemVote");element.empty();if(this.attributes.voted||Lispt.isUser(this.attributes.user_id)){element.append($h("img",{"src":"/images/vote-arrow-up-on.png"}));}else{element.append($h("img","cursor:pointer;",{"src":"/images/vote-arrow-up.png"}).click(this.vote));}
var text="vote";if(this.attributes.score>1)
text+="s";element.append($h("span","itemScore").append(this.attributes.score+""));element.append($h("span","itemScore").append(text));return element;},renderMain:function(){var element=this.element.find(".itemMain").empty();element.append(this.renderVote());if(this.attributes.description)
element.append($d("itemDesc").append(this.attributes.description));element.append(this.renderIDS());element.append(this.renderInfo());element.append($d("itemCommentsBox").hide().css("display","none"));return element;},renderShow:function(){this.mode="show";this.renderHeader();this.renderMain();},renderEdit:function(){var me=this;var element=$d("itemFormContainer");var searchBox=$h("input","inputItemTitle","float: left;",{"type":"text"}).autocomplete("http://clients1.google.com/complete/search?hl=en",{parse:function(data){var parsed=[];var rows=data[1];var items=me.list.items;for(var i=0;i<items.length;i++){if(items[i]!=me&&(items[i].attributes.title.indexOf(data[0])==0)){var row=[items[i].attributes.title,items[i]];parsed[parsed.length]={data:row,value:row[0],result:row[0]};}}
for(var i=0;i<rows.length;i++){var row=rows[i];parsed[parsed.length]={data:row,value:row[0],result:row[0]};}
return parsed;},scroll:false,selectFirst:false,dataType:"jsonp"}).blur(function(){if(me.getTitle()!=me.attributes.title){me.search();me.attributes.title=me.getTitle();}
me.element.find(".searchButton")[0].tipsy.hide();}).result(function(x,y){if(typeof y[1]!="string")
alert(y[0]+" has already been added. Just VOTE for it.");});var cancel=$h("span","cancelLink action","padding-left:10px;").append("Cancel").click(this.cancel);var loading=$h("img","loading",{"src":"/images/loading.gif"}).hide().css("display","none");var text="<b>Answer</b>";var me=this;searchBox.chameleonInput({emptyText:"Title",normalText:this.attributes.title}).focus(function(){me.element.find(".searchButton")[0].tipsy.show();});if(!this.attributes.id){element.append($d("color: black;font-size:130%;").append(text));}
var sbStyle="margin-top:5px;";var sbc=$d("clearfix").append(searchBox).append($d("searchButton",sbStyle).append($h("img",{"src":"/images/search.gif"})).click(this.search).tipsy({text:"Click search to give description.",hover:false,gravity:'s'}));var form=$h("form","margin:0px;padding:0px;").submit(this.search);form.append(sbc);form.append($h("textarea","itemFormDesc",{"rows":"4"}).chameleonInput({emptyText:"Description",normalText:this.attributes.description}));form.append("<br />");$.mrc=$d("miniResultsContainer").hide().css("display","none").append($d("mriBox clearfix"));form.append($.mrc);form.append($h("input","blueButton","margin-left:10px;",{"type":"button","value":"Save"}).click(this.save));if(this.attributes.id!=0)
form.append(cancel);form.append(loading);element.append(form);element.append($d("endMarker"));this.renderMiniResults(element);this.element.find(".itemHeader").empty();this.element.find(".itemMain").empty().append(element);this.mode="edit";return element;},renderContainer:function(){var element=$d("itemContainer");element.append($d("itemHeader"));element.append($d("itemMain clearfix"));return element;},render:function(container,prepend){if(this.element){this.element.remove();}
this.element=this.renderContainer();if(prepend)
container.prepend(this.element);else
container.append(this.element);if(this.attributes.id==0){this.renderEdit();}else{this.renderShow();}
return this.element;},renderIDS:function(){var element=$d("itemDescriptionBox");var wdb=$d("webDescriptionBox");var idb=$d("imageDescriptionBox clearfix");var more=0;var me=this;for(var key in this.item_descriptions["web"]){if(!this.item_descriptions["web"][key].deleted){more++;wdb.append(this.item_descriptions["web"][key].render());if(more>1)
this.item_descriptions["web"][key].element.addClass("itemMore").hide();}}
if(more>1){var moreBox=$d("clearfix").append($d("toggle","float:right;color:orange;cursor:pointer;"));wdb.append(moreBox);moreBox.toggler({selectedClass:"moreSelected",change:function(select){if(select){moreBox.find(".toggle").empty().append("<<< Less");me.element.find(".itemMore").show();}else{moreBox.find(".toggle").empty().append("More >>>");me.element.find(".itemMore").hide();}}});}
for(var key in this.item_descriptions["image"]){if(!this.item_descriptions["image"][key].deleted)
idb.append(this.item_descriptions["image"][key].render());}
element.append(wdb).append(idb);return element;},serialiseIds:function(){var serialisedItem={};var key=0;var ids=this.item_descriptions;for(var i in ids){for(var j in ids[i]){$.extend(serialisedItem,ids[i][j].serialise("item[ids]["+key+"]"));key+=1;}}
return serialisedItem;},serialise:function(){var serialisedItem={};for(var key in this.attributes){if(this.attributes[key])
serialisedItem["item["+key+"]"]=this.attributes[key];}
serialisedItem["position"]=this.attributes.position;$.extend(serialisedItem,this.serialiseIds());if(this.attributes.id!=0){serialisedItem["_method"]="put";}else if(serialisedItem["_method"]){delete serialisedItem["_method"];}
return serialisedItem;},addResult:function(result){var exist_id=this.item_descriptions[result.attributes.info][result.getUniquenessId()];var element=$.mrc;element.show();if(result.attributes.info=="image")
element=element.find(".mriBox");if(exist_id){exist_id.deleted=false;}else{exist_id=new ItemDescription(result.attributes,this);this.item_descriptions[result.attributes.info][result.getUniquenessId()]=exist_id;exist_id.onRemove(this.removeID);}
element.append(exist_id.render(true));},removeResult:function(result){var id=this.item_descriptions[result.attributes.info][result.getUniquenessId()];$.x=result;$.y=this.item_descriptions;if(id){id.fadeOut();id.deleted=true;}},refreshAttributesFromForm:function(){this.attributes.title=this.element.find(".inputItemTitle")[0].getValue();this.attributes.description=this.element.find(".itemFormDesc")[0].getValue();},unRender:function(){this.element.remove();this.element=undefined;},renderMiniResults:function(container){var ids=this.item_descriptions;for(var i in ids){for(var j in ids[i]){this.addResult(ids[i][j]);}}},finishedEditing:function(){this.element.find(".searchButton")[0].tipsy.hide();this.renderShow();$.awesomeBar.delink(this);$.awesomeBar.hide();},onRemove:function(callback){this.events.onRemove.push(callback);},onSave:function(callback){this.events.onSave.push(callback);},shout:function(callback){var url='http://fb.lispt.com?refuser='+$.user_id+'&q=/list/show/'+this.list.attributes.id+'&sr=feedx&dt='+$.svrdt;var data={list:'<a href="'+url+'">'+this.list.attributes.title+'</a>',item:'<a href="'+url+'">'+this.attributes.title+'</a>',lispt:'<a href="'+url+'">Lispt</a>',images:[{src:"http://lispt.com/images/lispt-logo.png",href:url}]};Lispt.shout({type:2,list_id:this.attributes.id},$.itemaddedid,data,function(){Lispt.email(function(){callback&&callback();});});}},AsyncMethods:{edit:function(item){return function(event){item.renderEdit();item.element.find(".inputItemTitle").focus();}},comment:function(item){return function(event){var element=$d();var is_form=true;for(var key=0;key<item.comments.length;key++){element.append(item.comments[key].render());if(item.comments[key].attributes.id==0)
is_form=false;}
if(is_form){var comment=new Comment(undefined,item);element.append(comment.render());item.comments.push(comment);}
item.element.find(".itemCommentsBox").append(element);}},vote:function(item){return function(event){var url="/lists/"+item.list.attributes.id
+"/items/"+item.attributes.id+"/vote";item.attributes.voted=true;item.attributes.score+=1;item.renderVote();Lispt.loginFacebook(function(){$.post(url,function(data){},"json");});}},move:function(item){return function(position){var url="/lists/"+item.list.attributes.id
+"/items/"+item.attributes.id+"/move";$.post(url,{position:position},function(data){},"json");}},destroy:function(item){return function(callback){if(item.attributes.id!=0){var url="/lists/"+item.list.attributes.id
+"/items/"+item.attributes.id;$.post(url,{"_method":"delete"},function(data){callback(item);},"json");}else{callback(item);}}},search:function(item){return function(){if(item.mode="edit"){$.awesomeBar.link(item);$.awesomeBar.setKeyword(item.getTitle());$.awesomeBar.newSearch();$.awesomeBar.show(false);}}},cancel:function(item){return function(){if(item.attributes.id==0){item.remove();item.mode="none";$.awesomeBar.delink(this);$.awesomeBar.hide();}else{item.finishedEditing();}}},save:function(item){return function(event){var url="/lists/"+item.list.attributes.id+"/items";Lispt.loginFacebook(function(){for(var key=0;key<item.events.onSave.length;key++){item.events.onSave[key](item);}
item.element.find(".loading").show();item.refreshAttributesFromForm();url+=(item.attributes.id==0)?"":"/"+item.attributes.id;$.post(url,item.serialise(),function(data){Model.loadAttributes(item,data.item);item.attributes.score=item.attributes.score||1;item.attributes.contributor=item.attributes.contributor||$.user_id;item.element.find(".loading").hide().css("display","none");item.finishedEditing();item.shout();},"json");});return false;}}},EventHandlers:{remove:function(item){return function(event){item.destroy(function(){item.unRender();for(var key=0;key<item.events.onRemove.length;key++){item.events.onRemove[key](item);}});}},removeID:function(item){return function(id){id.fadeOut();$.awesomeBar.removeResult(item,id);}}}});function List(attributes,connected_list){Model.call(this,{},attributes);List.updateInstanceCount();this.events={};this.events.onClick=[];this.items=[];this.widgets=[];this.contributors={};this.connected_list=connected_list;if(this.attributes.items){var items=this.attributes.items;this.attributes.items=undefined;for(var key=0;key<items.length;key++){var item=new Item(items[key],this);item.onRemove(this.itemRemovedHandler);this.items.push(item);}}
if(this.attributes.contributors){var contributors=this.attributes.contributors;this.attributes.contributors=undefined;for(var key=0;key<contributors.length;key++){Lispt.addUser(contributors[key]);}}}
List.controller='lists';List.name='List';Lispt.classes["list"]=List;Model.subclass(List,{Attributes:{id:0,title:""},Fields:{url:null,itemsUrl:null,items:null,hostElement:null,klass:null},Properties:{getUrl:function(){this.url="/list/show";this.url+=this.attributes.id==null?"":"/"+this.attributes.id;return this.url;},getTitle:function(){var title=this.attributes.title;return title;}},Methods:{renderShareButton:function(){return $fbut("Share with Friends").click(this.share);},renderHeader:function(){var element=$d("listHeader clearfix");var inner=$d("clearfix","padding:10px;");var title=$d("footerHelp listTitle","font-size:200%;color:#38599E;").append("Q: "+this.attributes.title.toLowerCase());var user=Lispt.getUserById(this.attributes.user_id||(this.connected_list&&this.connected_list.attributes.user_id));var pic_square=(user&&user.pic_square)||"http://static.ak.fbcdn.net/pics/q_default.gif";inner.append(title);inner.append(this.renderDescription());element.append(inner);return element;},renderDescription:function(){var element=$d("listDesc").append(this.attributes.description).hide().css("display","none");if(this.attributes.description)
element.show();return element;},render:function(container){this.element=$d("listContainer");container.append(this.element);var header=$d("mainHeader");var left=$d("mainLeft");var right=$d("mainRight");if(this.attributes.id==0){this.element.append(header.append(this.renderEditForm()));this.element.find(".inputListTitle");}else{this.element.append(header.append(this.renderHeader()));this.element.append(right);this.element.append(left);this.renderItems(left);this.addWidget(new Intro(this));this.addWidget(new InterestingLists(this));right.append($d("margin-top:10px;").append($fbut("Answer").click(this.recommendItem)));right.append($d("margin-top:10px;").append($fbut("Share with Friends").click(this.share)));}
return this.element;},renderItems:function(container){var element=$d("listItems");var me=this;container.append(element);for(var key=0;key<this.items.length;key++){this.items[key].render(element);}
if(this.items.length>2){var recommendItemLink=$h("span","action","margin:2%;font-size:160%;").append("Answer");recommendItemLink.click(function(){me.recommendItem();});container.append(recommendItemLink);}
this.addNewItem();return element;},addNewItem:function(){var item=new Item(undefined,this);item.onRemove(this.itemRemovedHandler);item.onSave(this.itemSavedHandler);var container=$(this.element.find(".listItems")[0]);item.render(container,true);this.items.push(item);},renderEditForm:function(){var element=$d("listFormContainer");var titleBox=$h("input","inputListTitle iLF",{"type":"text"});var cancel=$h("span","cancelLink action","padding-left:10px;").append("Cancel").click(this.cancel);var loading=$h("img","loading",{"src":"/images/loading.gif"}).hide().css("display","none");if(!this.attributes.id){element.append($d("font-size:130%;font-weight:bold;").append("Question?"));}
titleBox.chameleonInput({emptyText:"Eg. Which is the best digital camera?",normalText:this.getTitle()});var form=$h("form","margin:0px;padding:0px;").submit(this.save);form.append(titleBox);form.append("<br />");form.append("<br />");form.append("Description");form.append("<br />");form.append($h("textarea","listFormDesc iLF",{"rows":"4"}).chameleonInput({emptyText:"Eg. Looking for a point & shoot camera. Around 200$ and small in size.",normalText:this.attributes.description}));form.append("<br />");var savebutText="Save";if(this.attributes.id==0){var itemsBox=$h("input","inputTags iLF",{"type":"text"});itemsBox.chameleonInput({emptyText:"Eg. camera, tech"});form.append("<br />");form.append("Tags");form.append($h("span","exampleText").append("&nbsp;(better tags will get you a better answer)"));form.append("<br />");form.append(itemsBox);form.append("<br />");form.append("<br />");savebutText="Next";}
form.append($h("input","blueButton","margin:3px;",{"type":"button","value":savebutText}).click(this.save));form.append(cancel);form.append(loading);element.append(form);return element;},tutBox:function(no,text,img){var element=$d("tutBox");var noBox=$d("noBox").append(no);element.append(noBox);element.append(text);element.append($d("clearFloatDiv"));element.append($h("img",{"src":img}));return element;},onClick:function(callback){this.events.onClick.push(callback);},serialise:function(){var listAttributes=this.attributes;var serialisedList={};for(var key in listAttributes){if(this.attributes[key])
serialisedList['list['+key+']']=listAttributes[key];}
if(this.attributes.id!=0){serialisedList["_method"]="put";}
return serialisedList;},refreshAttributesFromForm:function(){this.attributes.title=this.element.find(".inputListTitle")[0].getValue();this.attributes.description=this.element.find(".listFormDesc")[0].getValue();if(this.attributes.id==0)
this.attributes.tags=this.element.find(".inputTags")[0].getValue();},addWidget:function(widget,options){options=options||{};this.widgets.push(widget);var element=widget.render();if(widget.position){element.css("position","absolute");element.css("top",widget.position);}
element.width($(".mainRight").width()-10);$(".mainRight").append(element);},removeWidget:function(widget){for(var key=0;key<this.widgets.length;key++){if(this.widgets[key]==widget){widget.unRender();this.widgets.splice(key,1);break;}else{this.widgets[key].element.show();}}},shout:function(callback){var url='http://fb.lispt.com?refuser='+$.user_id+'&q=/list/show/'+this.attributes.id+'&sr=feedx&dt='+$.svrdt;var data={list:'<a href="'+url+'">'+this.attributes.title+'</a>',lispt:'<a href="'+url+'">Lispt</a>',images:[{src:"http://lispt.com/images/lispt-logo.png",href:url}]};Lispt.shout({type:1,list_id:this.attributes.id},$.listcreateid,data,function(){Lispt.email(function(){callback&&callback();});});}},AsyncMethods:{itemRemovedHandler:function(list){return function(item){var new_items=[];for(var i=0;i<list.items.length;i++){if(item!=list.items[i])
new_items.push(list.items[i]);}
list.items=new_items;}},itemSavedHandler:function(list){return function(item){if(item.attributes.id==0)
list.addNewItem();list.scrollNewItemIntoView();}},edit:function(list){return function(event){list.element.find(".mainHeader").empty().append(list.renderEditForm());list.element.find(".listDesc").hide().css("display","none");list.element.find(".inputListTitle").focus();}},cancel:function(list){return function(event){if(list.attributes.id!=0){list.element.find(".mainHeader").empty().append(list.renderHeader());list.element.find(".listDesc").show();}else{var url="";$.history.pop();url=$.history.pop()||"";Controller.dispatch(url);}}},save:function(list){return function(event){var url="/lists";list.element.find(".loading").show();list.refreshAttributesFromForm();url+=(list.attributes.id==0)?"":"/"+list.attributes.id;Lispt.loginFacebook(function(){$.post(url,list.serialise(),function(data){Model.loadAttributes(list,data.list);list.shout(function(){Controller.dispatch(list.getUrl());});},"json");});return false;}}},EventHandlers:{moveHandler:function(list){return function(event,uiData){newItemsList=list.element.children(".listItems").children(".itemContainer");for(var key=0;key<newItemsList.length;key++){newItemsList[key].obj.attributes.position=key+1;if(newItemsList[key].obj.attributes.id==uiData.helper.attr("item_id"))
newItemsList[key].obj.move(key+1);}}},click:function(list){return function(event,uiData){for(var key=0;key<list.events.onClick.length;key++){list.events.onClick[key](event,list);}}},share:function(list){return function(event,uiData){Lispt.loginFacebook(function(){var url=Lispt.getHost()+list.getUrl();var title=list.attributes.title.replace(/["']/g,"");var inviteString="Hey! <a href='"+url+"'>"+title+"</a>. What is your recommendation?<fb:req-choice url='"+url+"' label='Check it out' />";var content='<fb:request-form method="GET" action="'+"http://"+document.location.host+"/#"+list.getUrl()+'" content="'+inviteString+'" type="Lispt" invite="false"> <fb:multi-friend-selector "'+'actiontext="Select the friends you want to share with." rows="3"/></fb:request-form>';var pp=new FB.UI.FBMLPopupDialog("Share with Friends",content);pp.setContentHeight(550);pp.setContentWidth(700);pp.set_placement(FB.UI.PopupPlacement.topCenter);pp.show();if(!$.browser.msie||(top!=self)){}
return false;});}},scrollNewItemIntoView:function(list){return function(event,uiData){var item=list.items[list.items.length-1];item.element.find(".inputItemTitle").focus();item.element[0].scrollIntoView();if(top!=self)
window.scrollBy(0,-200);}},recommendItem:function(list){return function(event,uiData){Lispt.loginFacebook(function(){var lastItem=list.items[list.items.length-1];if(lastItem.attributes.id!=0){list.addNewItem();}
list.scrollNewItemIntoView();});}}}});var ItemDescription=function(attributes,item){Model.call(this,{},attributes);this.item=item;this.events={};this.events.onRemove=[];this.mode="display";return this;}
ItemDescription.find=function(id,callback){$.getJSON("/"+ItemDescription.controller+"/"+id,function(data){item_description=new ItemDescription(data.item_description);callback(item_description);});}
ItemDescription.find_by_item=function(item,callback){$.getJSON(item.getUrl()+"/"+ItemDescription.controller,function(data){var item_descriptions=data;for(var i in item_descriptions){item_description=new ItemDescription(item_descriptions[i].item_description,item);callback(item_description);}});}
ItemDescription.name='ItemDescription';ItemDescription.controller='item_descriptions';Model.subclass(ItemDescription,{Attributes:{id:0,title:undefined,link:undefined,content:undefined,image:undefined,height:undefined,width:undefined,info:undefined,user_id:undefined,item_id:undefined},Fields:{},Properties:{getUniquenessId:function(){if(this.attributes.info=="web"){return this.attributes.link;}else if(this.attributes.info=="image"){return this.attributes.image;}}},Methods:{render:function(mini){this.element=$d("itemDescriptionContainer");if(this.attributes.info=="web"){this.element.append(this.renderWebItemDescription(mini));}else if(this.attributes.info=="image"){this.element.append(this.renderImageItemDescription(mini));}else if(this.attributes.info=="video"){this.element.append(this.renderVideoItemDescription(mini));}
return this.element;},renderWebItemDescription:function(mini){var element;if(mini){element=$d("miniResult");element.append($d("miniResultLink").append(this.attributes.link));element.append($d("miniResultContent").append(this.attributes.content));element.click(this.remove);}else{element=$d("webItemDescription");element.append($h("p","webDescPara").append($h("a",{"href":this.attributes.link,"target":"_blank"}).append(this.attributes.title)));element.append(this.attributes.content);element.append($d("webItemDescriptionLink").append(this.attributes.link));}
this.mode="display";return element;},renderImageItemDescription:function(mini){var itemDescriptionBox=$d("imageItemDescription");var image=$h("img","itemDescriptionImg",{"width":80,"height":80,"src":this.attributes.image});itemDescriptionBox.append(image);if(mini){image.attr("width","40");image.attr("height","40");image.css("width","40px");image.css("height","40px");var cross=$h("img","imageResultCross",{"src":"/images/cross.png"});itemDescriptionBox.append(cross);itemDescriptionBox.click(this.remove);}
return itemDescriptionBox;},renderVideoItemDescription:function(mini){var itemDescriptionBox=$d("videoItemDescription");if(mini){var image=$h("img","itemDescriptionVideo",{"width":80,"height":80,"src":this.attributes.image});itemDescriptionBox.append(image);image.attr("width","40");image.attr("height","40");image.css("width","40px");image.css("height","40px");var cross=$h("img","imageResultCross",{"src":"/images/cross.png"});itemDescriptionBox.append(cross);itemDescriptionBox.click(this.remove);}else{var vid=$d();vid.flash({swf:this.attributes.link,flashvars:{allowFullScreen:'true',allowscriptaccess:'always'},width:'200',height:'180'});itemDescriptionBox.append(vid);}
return itemDescriptionBox;},renderEditForm:function(){var idEditBox=$d("idEditBox");var table=new $tbl();table.newRow();table.newColumn().append($h("span","action").append("Save").click(this.doSave));table.newColumn().append($h("span","action").append("Cancel").click(this.cancel));table.newColumn().append($h("img","loading",{"src":"/images/loading.gif"}).hide());idEditBox.append(table.element);idEditBox.append("Title");idEditBox.append($h("input","inputIDTitle",{"type":"text","value":this.attributes.title,"size":"50"}));idEditBox.append("Link");idEditBox.append($h("input","inputIDLink",{"type":"text","value":this.attributes.link,"size":"50"})).append($h("br"));idEditBox.append("Description");idEditBox.append($h("textarea","inputIDContent",{"value":this.attributes.content,"rows":"5","cols":"50"}));this.mode="edit";return idEditBox;},serialise:function(tag){var serialisedID={};tag=tag||"item_description";for(var key in this.attributes){if(this.attributes[key])
serialisedID[tag+"["+key+"]"]=this.attributes[key];}
serialisedID[tag+"[method]"]="save";if(this.attributes.id==0&&this.deleted)
serialisedID[tag+"[method]"]="ignore";else if(this.deleted)
serialisedID[tag+"[method]"]="delete";else if(this.attributes.id!=0){serialisedID["_method"]="put";serialisedID[tag+"[method]"]="put";}
return serialisedID;},destroy:function(callback){var me=this;var url="/items/"+this.item.attributes.id+"/item_descriptions";url+="/"+this.attributes.id;if(this.attributes.id!=0){$.post(url,{"_method":"delete"},function(data){callback&&callback(me,true);},"json");}else{callback&&callback(this,true);}},refreshAttributesFromForm:function(){this.attributes.title=this.element.find(".inputIDTitle")[0].value;this.attributes.link=this.element.find(".inputIDLink")[0].value;this.attributes.content=this.element.find(".inputIDContent")[0].value;},save:function(callback){var url="/items/"+this.item.attributes.id+"/item_descriptions";url+=(this.attributes.id==0)?"":"/"+this.attributes.id;var me=this;if(me.mode=="edit"){me.refreshAttributesFromForm();}
if((me.attributes.id==0||me.edited)&&!me.deleted){var serialisedItem=me.serialise();$.post(url,serialisedItem,function(data){Model.loadAttributes(me,data.item_description);if(me.mode=="edit"){me.element.empty().append(me.renderWebItemDescription());}
callback&&callback(me);},"json");}else if(me.deleted){me.destroy(callback);}else{callback&&callback(me);}},fadeOut:function(){if(this.element){this.element.fadeOut("slow");this.element=undefined;}},unRender:function(){if(this.element){this.element.remove();this.element=undefined;}},onRemove:function(callback){this.events.onRemove.push(callback);}},AsyncMethods:{doSave:function(item_description){return function(event,uiData){item_description.save(function(){});}},cancel:function(item_description){return function(event,uiData){item_description.element.empty().append(item_description.renderWebItemDescription());}}},EventHandlers:{remove:function(item_description){return function(event,uiData){item_description.deleted=true;for(var key=0;key<item_description.events.onRemove.length;key++){item_description.events.onRemove[key](item_description);}}},edit:function(item_description){return function(event,uiData){item_description.edited=true;item_description.element.empty().append(item_description.renderEditForm());}}}});function Searcher(keyword){this.keyword=keyword||"Google";this.start=0;Model.call(this,{},{});this.events={};this.events.onSearch=[];this.events.onAdd=[];this.results=[];return this;}
Model.subclass(Searcher,{Attributes:{},Fields:{},Properties:{},Methods:{search:function(options){var i;options=options||{};var oldKw=this.keyword;if(options.keyword==this.keyword&&options.searchType==this.searchType&&options.start==undefined){this.triggerOnSearch();return;}
this.keyword=options.keyword||this.keyword||"Google";this.searchType=options.searchType||this.searchType||"GwebSearch";if(options.start!=undefined){if(options.start>=0)
this.start=options.start;else
return;}else if(this.keyword!=oldKw){this.start=0;}
this.results=[];$.get("http://www.google.com/uds/"+this.searchType+"?rsz=small&hl=en&v=1.0&start="+this.start,{"q":this.keyword},this.searched,"jsonp");},onSearch:function(callback){this.events.onSearch.push(callback);},triggerOnSearch:function(){for(var key=0;key<this.events.onSearch.length;key++){this.events.onSearch[key](this.results);}},onAdd:function(callback){this.events.onAdd.push(callback);}},AsyncMethods:{searchPrev:function(searcher){return function(result){searcher.search({start:searcher.start-4});}},searchNext:function(searcher){return function(result){searcher.search({start:searcher.start+4});}}},EventHandlers:{searched:function(searcher){return function(data){var j;var rs=data.responseData.results;searcher.results=[];for(j=0;j<rs.length;j++){searcher.results.push(new SearchResult(rs[j]));}
searcher.triggerOnSearch();}}}});var SearchResult=function(result){var attributes={};attributes.content=result.content;attributes.title=result.title;attributes.id=0;if(result.GsearchResultClass=="GwebSearch"){attributes.info="web";attributes.height=0;attributes.width=0;attributes.image="";attributes.link=result.url;}else if(result.GsearchResultClass=="GimageSearch"){attributes.info="image";attributes.height=result.tbHeight;attributes.width=result.tbWidth;attributes.image=result.tbUrl;attributes.link=result.originalContextUrl;}else if(result.GsearchResultClass=="GvideoSearch"){attributes.info="video";attributes.height=result.tbHeight;attributes.width=result.tbWidth;attributes.image=result.tbUrl;attributes.link=result.playUrl.substring(0,result.playUrl.indexOf('autoplay')-1);}
Model.call(this,{},attributes);this.events={};this.events.onAdd=[];this.events.onRemove=[];return this;}
Model.subclass(SearchResult,{Attributes:{title:undefined,link:undefined,content:undefined,image:undefined,height:undefined,width:undefined,info:undefined},Fields:{},Properties:{getUniquenessId:function(){if(this.attributes.info=="web"){return this.attributes.link;}else if(this.attributes.info=="image"||this.attributes.info=="video"){return this.attributes.image;}}},Methods:{renderImageResult:function(){var me=this;var element=$d("imageResult");var img=$d("toggle").append($h("img",{"src":this.attributes.image}));var toggle=$h("img","toggle action imageResultCross",{"src":"/images/add.png"});element.append(img);element.append($d().append(toggle).append($h("span","toggle addbut").append("Add")));element.toggler({selectedClass:"dummyClass",selected:this.selected,change:function(select){if(select){element.find(".imageResultCross")[0].src="/images/cross.png";element.find(".addbut").empty().append("Remove");me.added();}else{element.find(".imageResultCross")[0].src="/images/add_att.gif";element.find(".addbut").empty().append("Add");me.removed();}}});me.element=element;return element;},renderVideoResult:function(){var me=this;var element=$d("videoResult");var vid=$d();vid.flash({swf:this.attributes.link,flashvars:{allowFullScreen:'true',allowscriptaccess:'always'},width:'150',height:'120'});var toggle=$h("img","toggle action imageResultCross",{"src":"/images/add.png"});element.append(vid);element.append($d().append(toggle).append($h("span","toggle addbut").append("Add")));element.toggler({selectedClass:"dummyClass",selected:this.selected,change:function(select){if(select){element.find(".imageResultCross")[0].src="/images/cross.png";element.find(".addbut").empty().append("Remove");me.added();}else{element.find(".imageResultCross")[0].src="/images/add_att.gif";element.find(".addbut").empty().append("Add");me.removed();}}});me.element=element;return element;},renderWebResult:function(){var element=$d("webResult");var toggle=$h("img","toggle action imageResultCross","float:right;",{"src":"/images/add.png"});element.append($h("p").append(toggle).append($h("a",{"href":this.attributes.link,"target":"_blank"}).append(this.attributes.title)));element.append($d("clearFloatDiv"));element.append($d("toggle").append(this.attributes.content));element.append($d("webItemDescriptionLink").append(this.attributes.link));element.append($d("toggle addbut").append("Add"));var me=this;element.toggler({selectedClass:"resultSelected",selected:this.selected,change:function(select){if(select){element.find(".imageResultCross")[0].src="/images/cross.png";element.find(".addbut").empty().append("Remove");me.added();}else{element.find(".imageResultCross")[0].src="/images/add_att.gif";element.find(".addbut").empty().append("Add");me.removed();}}});me.element=element;return element;},render:function(options){options=options||{};if(this.attributes.info=="web"){return this.renderWebResult();}else if(this.attributes.info=="image"){return this.renderImageResult();}else if(this.attributes.info=="video"){return this.renderVideoResult();}},onAdd:function(callback){this.events.onAdd.push(callback);},onRemove:function(callback){this.events.onRemove.push(callback);},unRender:function(){if(this.element){this.element.remove();this.element=undefined;}}},AsyncMethods:{},EventHandlers:{added:function(result){return function(event,uiData){for(var key=0;!result.selected&&key<result.events.onAdd.length;key++){result.events.onAdd[key](result);}
result.selected=true;}},removed:function(result){return function(event,uiData){for(var key=0;result.selected&&key<result.events.onRemove.length;key++){result.events.onRemove[key](result);}
result.selected=false;}}}});var Comment=function(attributes){Model.call(this,{},attributes);this.events={};this.events.onSave=[];return this;}
Model.subclass(Comment,{Attributes:{},Fields:{},Properties:{},Methods:{render:function(){this.element=$d("commentbox clearfix");this.element.append($d("imgbox","float:left;"));this.element.append($d("txtbox","float:right;font-size:11px;"));if(!this.attributes.text){this.renderEditForm();}else{this.renderText();}
return this.element;},renderEditForm:function(){var me=this;var cta=$h("textarea","cta",{rows:1}).chameleonInput({emptyText:"Write a comment..."});cta.focus(function(){if(!me.imgVis){var pic="http://static.ak.fbcdn.net/pics/q_default.gif";if($.user&&$.user.pic_square)
pic=$.user.pic_square;me.element.find(".imgbox").append($h("img","width:35px;height:35px;margin-right: 5px;",{"src":pic}));cta.css({width:350,height:28}).attr({rows:2});me.imgVis=true;var cbutton=$h("input","blueButton action","margin-top:5px;float:right;font-size:8px;",{"type":"button","value":"Comment"}).click(me.save);me.element.append(cbutton);}}).blur(function(){if(cta[0].getValue()==""){me.element.find(".imgbox").empty();cta.css({width:390,height:14}).attr({rows:1});me.imgVis=false;me.element.find(".blueButton").remove();}});this.element.find(".txtbox").append(cta);},renderText:function(){var user=Lispt.getUserById(this.attributes.user_id);var name="<b>"+user.first_name+" "+user.last_name+":</b> ";var pic=user.pic_square||"http://static.ak.fbcdn.net/pics/q_default.gif";this.element.find(".txtbox").css({width:350}).append(name+this.attributes.text);this.element.find(".imgbox").append($h("img","width:35px;height:35px;margin-right: 5px;",{"src":pic}));},unRender:function(){this.element.remove();this.element=undefined;},onSave:function(callback){this.events.onSave.push(callback);}},AsyncMethods:{save:function(comment){return function(event,uiData){Lispt.loginFacebook(function(){comment.attributes.text=comment.element.find(".cta")[0].getValue();comment.attributes.user_id=$.user_id;comment.element.find(".txtbox").empty();comment.element.find(".imgbox").empty();comment.element.find(".blueButton").remove();comment.renderText();for(var key=0;key<comment.events.onSave.length;key++){comment.events.onSave[key](comment);}});}}},EventHandlers:{}});function MyFrame(attributes,fc){Model.call(this,{},attributes);this.events={};this.fc=fc;this.points=[];this.marks=[];$xx=this;if(this.attributes.points){var pts=this.attributes.points;for(var key in pts){var pt=new Point(pts[key],this);this.points.push(pt);}}
this.attributes.points=undefined;}
MyFrame.controller='myframes';MyFrame.name='MyFrame';Lispt.classes["myframe"]=MyFrame;Model.subclass(MyFrame,{Attributes:{id:0},Fields:{},Properties:{getUrl:function(){this.url="/frame/show";this.url+=this.attributes.id==null?"":"/"+this.attributes.id;return this.url;},getFirstName:function(){var inx=this.attributes.username.indexOf(" ");var name=this.attributes.username||"My";if(inx>0){name=name.substring(0,inx);}
return name;}},Methods:{render:function(container){this.element=$d("myFrameContainer");this.element.append($h("img","loading",{"src":"/images/saving.gif"}).hide().css("display","none"));container.prepend(this.element);this.renderFrame(this.element);for(var i=0;i<this.points.length;i++){this.points[i].render();}
this.labelFrame();var buttons=$d("clearfix");var me=this;if(this.attributes.countdown){this.countdown=new Countdown(15,function(){me.fc.addFrame(0);});buttons.append($d("float:right;").append(this.countdown.render()));}
buttons.append($d("fightLink").append("publish").click(this.publish));buttons.append($d("fightLink","margin-right: 10px;").append(","));buttons.append($d("fightLink").append("compare with friends").click(this.share));buttons.append($d("fightLink","margin-right: 10px;").append(","));buttons.append($d("fightLink").append("create your iGraph").click(function(){me.countdown&&me.countdown.stop();me.fc.addFrame(0);}));this.element.append(buttons);return this.element;},label:function(loc,content){var element=$d("position:absolute;").append(content);element.css({top:this.scaleUp(loc.y),left:this.scaleUp(loc.x)});element.appendTo(this.element);},labelFrame:function(){if(!this.attributes.id){this.label({x:175,y:600},$d("gphLbl","max-width: 300px; text-align: center;").append("Click anywhere on the graph and add anything about yourself(eg. music, habits, clothes, movies...)"));var title="Create your own iGraph";}else if($.user_id==this.attributes.user_id){var title="Your iGraph";}else{var title=this.getFirstName()+"'s iGraph";}
this.label({x:320,y:30},$d("gphLbl","font-size: 14px; color: #38599E;").append(title));this.label({x:20,y:190},$d("gphLbl").append("always"));this.label({x:25,y:290},$d("gphLbl").append("often"));this.label({x:15,y:390},$d("gphLbl").append("sometimes"));this.label({x:25,y:490},$d("gphLbl").append("never"));},renderFrame:function(container){var rcnt=25;var lcnt=22;var x=new $tbl({"cellspacing":"0px"});container.append(x.element);for(var i=0;i<rcnt;i++){x.newRow();for(var j=0;j<lcnt;j++){var css="border-bottom: 1px dashed #cdcdcd; border-right: 1px dotted #cdcdcd; width: 20px; height: 20px;";if(i>2&&i<23&&j==4)
css=css+"border-left: 1px solid black;";if(j>3&&j<21&&i==22)
css=css+"border-bottom: 1px solid black;";if(j>2&&j<5&&(i==6||i==10||i==14||i==18))
css=css+"border-bottom: 1px solid black;";var col=x.newColumn(css).append("&nbsp;");if(j==4&&(i==7||i==11||i==15||i==19||i==23))
this.marks.push(col.offset());}
x.newColumn("border-bottom: 1px dashed #CDCDCD; width: 20px; height: 20px;").append("&nbsp;");}
x.newRow();for(var j=0;j<lcnt;j++){x.newColumn("border-right: 1px dotted #cdcdcd; width: 20px; height: 20px;").append("&nbsp;");}
this.x=this.marks[4].left;this.y=this.marks[4].top;this.scale=this.marks[4].top-this.marks[3].top;var me=this;if(($.user_id==this.attributes.user_id)||!this.attributes.id){x.element.click(function(event){var pt=new Point({x:me.scaleDown(event.pageX-10-me.x),y:me.scaleDown(me.y-(event.pageY-10))},me);pt.render();me.points.push(pt);});}},scaleUp:function(val){return parseInt(parseInt(val)*(this.scale/100));},scaleDown:function(val){return parseInt(parseInt(val)*(100/this.scale));},serialise:function(){var serialisedList={};if(this.attributes.id!=0){serialisedList["_method"]="put";}
return serialisedList;}},AsyncMethods:{share:function(frame){return function(event,uiData){Lispt.loginFacebook(function(){Lispt.shared=true;frame.countdown&&frame.countdown.stop();var url=Lispt.getHost()+'/frame/show/'+frame.attributes.id+'&refuser='+$.user_id+'&fmid='+frame.attributes.id+'&sr=sharequest&dt='+$.svrdt;var inviteString="I created my Personality Graph using Lispt. Come and check it out. <fb:req-choice url='"+url+"' label='See the Graph' />";var content='<fb:request-form method="GET" action="'+"http://"+document.location.host+'" content="'+inviteString+'" type="Lispt" invite="false"> <input type="hidden" name="q" value="'+
frame.getUrl()+'"/><fb:multi-friend-selector "'+'actiontext="Select the friends you want to challenge." rows="3"/></fb:request-form>';var pp=new FB.UI.FBMLPopupDialog("Challenge Friends",content);pp.setContentHeight(550);pp.setContentWidth(730);pp.set_placement(FB.UI.PopupPlacement.topCenter);pp.show();if(!$.browser.msie||(top!=self)){}
return false;});}},publish:function(frame){return function(callback){var url='http://fb.lispt.com?refuser='+$.user_id+'&fmid='+frame.attributes.id+'&q=/frame/show/'+frame.attributes.id+'&sr=feedx&dt='+$.svrdt;var data={frame:'<a href="'+url+'">has created a Personality Graph</a>',lispt:'<a href="'+url+'">Lispt</a>',frame_details:'<b><a href="'+url+'">Click here to know more about me.</a></b>',images:[{src:"http://lispt.com/images/smpfrm.jpg",href:url}]};FB.Connect.showFeedDialog($.frmid,data,undefined,"",undefined,FB.RequireConnect.require,undefined);$("#RES_ID_fb_pop_dialog_table").css("top","70px");}},save:function(frame){return function(callback){var url="/frame";url+=(frame.attributes.id==0)?"":"/"+frame.attributes.id;frame.element.find(".loading").show();Lispt.loginFacebook(function(){$.post(url,frame.serialise(),function(data){Model.loadAttributes(frame,data.frame);frame.element.find(".loading").hide();if(!$.user.status_allowed){FB.Connect.showPermissionDialog("status_update",function(val){if(val){var url="/frame/shout/"+frame.attributes.id;$.user.status_allowed=true;$.post(url,callback);}else{$.user.rejected=true;frame.publish(callback);}});}else{callback&&callback();}},"json");});return false;}}},EventHandlers:{}});function Point(attributes,frame){Model.call(this,{},attributes);this.events={};this.frame=frame;}
Model.subclass(Point,{Attributes:{},Fields:{},Properties:{},Methods:{render:function(){this.element=$d("PointBox","z-index:100;font-weight:bold;font-size: 12px;position:absolute;");this.x=this.frame.scaleUp(this.attributes.x);this.y=this.frame.scaleUp(this.attributes.y);var offX=this.frame.element.offset().left;var offY=this.frame.element.offset().top;this.element.css({top:this.frame.y-offY-this.y,left:this.frame.x-offX+this.x});this.element.appendTo(this.frame.element);if(!this.attributes.text){this.renderForm();}else{this.renderText();}
return this.element;},renderForm:function(){var inp=$h("input","pointInput","width: 60px;border: 1px solid #333333;font-weight: bold;",{"type":"text"});var form=$h("form","margin:0px;padding:0px;").append(inp).submit(function(){me.focussed=false;me.done();return false;});if(this.attributes.text)
inp[0].value=this.attributes.text;this.element.empty().append(form);var me=this;this.editing=true;inp.focus(function(){me.focussed=true;}).blur(function(){me.focussed=false;setTimeout(me.done,1000);});inp.focus();},renderText:function(){var txt=$d("text-align:center;max-width: 80px;").append(this.attributes.text);this.element.empty().append(txt);txt.click(this.edit);this.editing=false;},serialise:function(){var attribs=this.attributes;var serialisedList={};for(var key in attribs){if(this.attributes[key])
serialisedList['point['+key+']']=attribs[key];}
serialisedList['point[x]']=this.frame.scaleDown(this.x);serialisedList['point[y]']=this.frame.scaleDown(this.y);return serialisedList;},refreshAttributesFromForm:function(){this.attributes.text=this.element.find(".pointInput")[0].value;}},AsyncMethods:{edit:function(point){return function(event){point.element.empty().append(point.renderForm());}},done:function(point){return function(event){if(!point.focussed&&point.editing){var oldtext=point.attributes.text||"";point.refreshAttributesFromForm();point.renderText();if(oldtext!=point.attributes.text){if(!point.frame.attributes.id)
point.frame.save(point.save);else
point.save();}}}},save:function(point){return function(){var url="/frame/setpoint?id="+point.frame.attributes.id;Lispt.loginFacebook(function(){$.post(url,point.serialise(),function(data){Model.loadAttributes(point,data.point);},"json");});return false;}}},EventHandlers:{}});var Container=function(){Model.call(this,{},{});this.events={};return this;}
Model.subclass(Container,{Attributes:{},Fields:{},Properties:{fightCount:0,supportCount:0,frameCount:0},Methods:{render:function(container){var element=$d();var header=$d("mainHeader");var left=$d("mainLeft");var right=$d("mainRight");var me=this;element.append(header);element.append(right);element.append(left);container.append(element);this.element=element;if($.manage){this.addWidget(new ManageFights(this));}else{this.addWidget(new TopFights(this));this.addWidget(new NewFight(this));}},addWidget:function(widget,options){options=options||{};var element=widget.render();element.width($(".mainRight").width()-10);$(".mainRight").append(element);},addTip:function(){if(this.tipped)
return;this.tipped=true;var element=$d("postIt action","margin: 0 auto");element.append($h("img","float: right;",{"src":"/images/friendfight.jpg"}));element.append("<strong>Create a fight between your friends.</strong>");$(".mainLeft").prepend(element);var me=this;element.click(function(){me.addFight(-1);});},addListHelp:function(){var element=$d("border:3px solid #38599E; padding: 20px; margin: 5px 20px;");var newQuestFunc=function(){Controller.dispatch("/list/create");}
element.append("Hi,<br/><br/>Lispt lets you ask a question and get an answer from your friends. If you have a question you need answered <span><b><u>click here</u></b></span>.<br/><br/>Thanks,<br/>Akshat");element.find("span").css({cursor:"pointer"}).click(newQuestFunc);var con=$d("margin: 10px auto 0px; width: 70%;");var me=this;con.append($h("input","blueButton","margin-left:10px;cursor:pointer;",{"type":"button","value":"Ask a question"}).click(newQuestFunc));con.append($h("span","cancelLink action","margin-left:10px;").append("Show me another fight").click(function(){me.addFight(0);}));element.append(con);$(".mainLeft").prepend(element);},addFight:function(id,tag){var me=this;var loadingBox=$d("margin: 30px auto; width: 20px;").append("Loading...");loadingBox.append($h("img","loading",{"src":"/images/loading.gif"}));this.fightCount++;$(".mainLeft").prepend(loadingBox);if(id<0){Lispt.loginFacebook(function(){var fight=new Fight(undefined,me);if(tag=="video")
fight.searchType="GvideoSearch";$(".mainLeft").prepend(fight.render());loadingBox.remove();});return;}
var url="/fight/"+id+"?dummy=1";if(tag)
url=url+"&tag="+tag;if(this.fightCount==1&&($.user_id||$.refuser)){url=url+"&supporters=1";if(!$.user_id){url=url+"&refuser="+$.refuser.id;}}
$.getJSON(url,function(data){var fight=new Fight(data.fight,me,data.supporters);$(".mainLeft").prepend(fight.render());loadingBox.remove();return false;});},addFrame:function(id){var me=this;var loadingBox=$d("margin: 30px auto; width: 20px;").append("Loading...");loadingBox.append($h("img","loading",{"src":"/images/loading.gif"}));if(id==0&&$.user_id){$.getJSON("/frame/"+id+"?user_id="+$.user_id,function(data){var frame=new MyFrame(data.frame,me);frame.render(me.element.find(".mainLeft"));loadingBox.remove();return false;});return;}
if(id==0){var frame=new MyFrame(undefined,me);frame.render(me.element.find(".mainLeft"));loadingBox.remove();return;}
$.getJSON("/frame/"+id,function(data){var frame=new MyFrame(data.frame,me);if($.user_id!=frame.attributes.user_id&&!Lispt.user.fcnt){frame.attributes.countdown=true;Lispt.user.fcnt=true;}
frame.render(me.element.find(".mainLeft"));loadingBox.remove();return false;});},unRender:function(){if(this.element){this.element.remove();this.element=undefined;}}},AsyncMethods:{},EventHandlers:{}});function Fight(attributes,fc,supporters){Model.call(this,{},attributes);this.events={};this.fc=fc;this.a_id=null;this.b_id=null;this.searchType="GimageSearch";if(this.attributes.a_info)
this.a_id=new ItemDescription(attributes.a_info,this);if(this.attributes.b_info)
this.b_id=new ItemDescription(attributes.b_info,this);this.item_descriptions={"web":{},"image":{},"video":{}};if(this.a_id||this.b_id){var ad_loc="/facebook/adframe?fight="+this.attributes.id;this.adframe=$d("z-index:100;position:absolute;").append($h("iframe",{"src":ad_loc,"width":234,"height":60,"scrolling":"no","frameborder":0,"marginwidth":0,"marginheight":0}));$("body").append(this.adframe);}
this.def_img="http://tbn2.google.com/images?q=tbn:vuOm3449NNyj3M:https://access.coffeyville.edu/ics/uploads/question_mark.jpg";if(this.attributes.users){var users=this.attributes.users;this.attributes.users=undefined;for(var key=0;key<users.length;key++){Lispt.addUser(users[key]);}}
this.comments=[];this.supporters=supporters||[];var cmt;if(this.attributes.comments){var comments=this.attributes.comments;this.attributes.comments=undefined;for(var key=0;key<comments.length;key++){cmt=new Comment(comments[key]);this.comments.push(cmt);}}
var cmt=new Comment({});cmt.onSave(this.comment);this.comments.push(cmt);}
Fight.controller='fights';Fight.name='Fight';Lispt.classes["fight"]=Fight;Model.subclass(Fight,{Attributes:{id:0,title:""},Fields:{a:null,b:null,a_img:null,b_img:null,a_count:0,b_count:0,question:null,tags:null,klass:null},Properties:{getUrl:function(){this.url="/fight/show";this.url+=this.attributes.id==null?"":"/"+this.attributes.id;return this.url;},getKeyword:function(){return this.element.find(".fighterInput")[0].getValue();}},Methods:{renderVideo:function(link){var vid=$d();vid.flash({swf:link,flashvars:{allowFullScreen:'true',allowscriptaccess:'always'},width:'200',height:'180'});return vid;},renderVideoFighters:function(table){var a_img_loc=this.attributes.a_img||this.def_img;var b_img_loc=this.attributes.b_img||this.def_img;var a_img=$d().append($h("img","fightImg a_img",{"src":a_img_loc})).append($d("fightText a_text").append(this.attributes.a||""));var b_img=$d().append($h("img","fightImg b_img",{"src":b_img_loc})).append($d("fightText b_text").append(this.attributes.b||""));a_img=$d("text-decoration: underline;").append($d("fightText a_text").append(this.attributes.a+"<br/>(Click here to support)")).append(a_img.hide().css("display","none"));b_img=$d("text-decoration: underline;").append($d("fightText b_text").append(this.attributes.b+"<br/>(Click here to support)")).append(b_img.hide().css("display","none"));a_img[0].selector="a";b_img[0].selector="b";table.newRow();table.newColumn().append($d("fightImg").append(this.renderVideo(this.attributes.a_video)));table.newColumn("padding:0 5px;").append("vs");table.newColumn().append($d("fightImg").append(this.renderVideo(this.attributes.b_video)));var row=table.newRow();table.newColumn("fightBox clickable a_box").append(a_img)[0].selector="a";table.newColumn("padding:0 5px;");table.newColumn("fightBox clickable b_box").append(b_img)[0].selector="b";var me=this;row.menu({choices:".fightBox",selectedClass:"selImg",autoSelect:me.editmode,onSelect:function(choice){var inp=me.element.find(".fighterInput");if(me.editmode==false){me.cur_elem=choice.selector;me.attributes[me.cur_elem+"_count"]++;me.support();}else if(inp.size()>0){$.awesomeBar.delink(me);$.awesomeBar.hide();if(me.cur_elem){me.attributes[me.cur_elem]=inp[0].getValue();me.element.find("."+me.cur_elem+"_text").empty().append(me.attributes[me.cur_elem]);}
inp[0].setValue(me.attributes[choice.selector]);}
me.cur_elem=choice.selector;return false;}});},renderFighters:function(table){if(this.attributes.a_video&&this.attributes.b_video){return this.renderVideoFighters(table);}
var a_img_loc=this.attributes.a_img||this.def_img;var b_img_loc=this.attributes.b_img||this.def_img;var a_img=$d().append($h("img","fightImg a_img",{"src":a_img_loc})).append($d("fightText a_text").append(this.attributes.a||""));var b_img=$d().append($h("img","fightImg b_img",{"src":b_img_loc})).append($d("fightText b_text").append(this.attributes.b||""));if(this.attributes.a_video){a_img=$d("fightImg").append(this.renderVideo(this.attributes.a_video)).append($d("fightText a_text").append(this.attributes.a||"")).append(a_img.hide().css("display","none"));}
if(this.attributes.b_video){b_img=$d("fightImg").append(this.renderVideo(this.attributes.b_video)).append($d("fightText b_text").append(this.attributes.b||"")).append(b_img.hide().css("display","none"));}
var row=table.newRow();a_img[0].selector="a";b_img[0].selector="b";table.newColumn("fightBox clickable a_box").append(a_img)[0].selector="a";table.newColumn("padding:0 5px;").append("vs");table.newColumn("fightBox clickable b_box").append(b_img)[0].selector="b";if(this.attributes.id!=0){if(this.a_id)
table.element.find(".a_box").hover(this.showInfo,this.hideInfo);if(this.b_id)
table.element.find(".b_box").hover(this.showInfo,this.hideInfo);}
var me=this;row.menu({choices:".fightBox",selectedClass:"selImg",autoSelect:me.editmode,onSelect:function(choice){var inp=me.element.find(".fighterInput");if(me.editmode==false){me.cur_elem=choice.selector;me.attributes[me.cur_elem+"_count"]++;me.support();}else if(inp.size()>0){$.awesomeBar.delink(me);$.awesomeBar.hide();if(me.cur_elem){me.attributes[me.cur_elem]=inp[0].getValue();me.element.find("."+me.cur_elem+"_text").empty().append(me.attributes[me.cur_elem]);}
inp[0].setValue(me.attributes[choice.selector]);}
me.cur_elem=choice.selector;return false;}});},renderFightersForm:function(table){var me=this;me.cur_elem=me.cur_elem||"a";var a_inp=$h("input","fighterInput a_inp","float:left;margin:0px 5px;",{"type":"text"}).autocomplete("http://clients1.google.com/complete/search?hl=en",{parse:function(data){var parsed=[];var rows=data[1];var d=data[0].toLowerCase();var friends=Lispt.friends;for(var key in friends){if(key.indexOf(d)==0){var row=[key,friends[key]];parsed[parsed.length]={data:row,value:row[0],result:row[0]};}}
for(var i=0;i<rows.length;i++){var row=rows[i];parsed[parsed.length]={data:row,value:row[0],result:row[0]};}
return parsed;},selectFirst:false,scroll:false,dataType:"jsonp"});a_inp.chameleonInput({emptyText:"",normalText:me.attributes[me.cur_elem]}).result(this.search).bind("focus",{hover:false,gravity:'e',text:function(){if(me.cur_elem=="a"){return"<b>First</b> fighter";}else{return"<b>Second</b> fighter";}}},$.tipsify).blur($.untipsify);var searchbox=$h("form").append(a_inp);searchbox.append($h("input","greyButton action","float:left;",{"type":"submit","value":"Search"}).click(this.search));var tags=$h("input","fighterInput tags",{"type":"text"}).chameleonInput({emptyText:"Tags",normalText:this.attributes.tags});tags.bind("focus",{hover:false,gravity:'e',text:"Tags"},$.tipsify).blur($.untipsify);var question=$h("input","fighterInput question",{"type":"text"}).chameleonInput({emptyText:"Question",normalText:this.attributes.question});question.bind("focus",{hover:false,gravity:'e',text:"Question"},$.tipsify).blur($.untipsify);var stat=$h("input","fighterInput status",{"type":"text"}).chameleonInput({emptyText:"Status",normalText:this.attributes.status});table.newRow();table.newColumn("padding:5px 0; background-color: #CFEFFF",{"colSpan":"3"}).append(searchbox);table.newRow();table.newColumn("padding:5px 0;",{"colSpan":"3"}).append(tags);table.newRow();table.newColumn("padding:5px 0 10px 0;",{"colSpan":"3"}).append(question);if($.manage){table.newRow();table.newColumn("padding:5px 0 10px 0;",{"colspan":"3"}).append(stat);}
table.newRow();var saveButton=$h("input","blueButton action",{"type":"button","value":"Save"}).click(this.save);table.newColumn().append(saveButton);table.newColumn();var cancelButton=$h("input","greyButton action",{"type":"button","value":"Cancel"}).click(function(){me.fc.addFight(0);});table.newColumn().append(cancelButton);table.element.find(".a_img")[0].web_id=this.a_id;table.element.find(".b_img")[0].web_id=this.b_id;},drawGraph:function(){var element=$d("fgBox clearfix");var a=this.attributes.a_count;var b=this.attributes.b_count;var cur=this.attributes[this.cur_elem+"_count"];var perc=Math.ceil((cur/(a+b))*100);var txt=(perc>=50)?"WIN":"LOSE";var win=$d("width:40%;float:left;").append($d("font-size:120%; margin: 0px auto; width: 50%").append("you")).append($d("font-size:300%;font-weight:bold;color: red;").append(txt));if(perc>=50){win.append($d("font-size:120%; margin: 0px auto; width: 85%").append("10 points"));}
element.append(win);element.append($d("padding:10px;").append("<b>"+perc+"%</b> support <b>"+this.attributes[this.cur_elem]+"</b>"));element.append($d("action","color:#3B5998;text-decoration:underline;").append("Share")).click(this.share);this.element.prepend(element);element.hide();element.slideDown("slow");},shout:function(callback){var url='http://fb.lispt.com?refuser='+$.user_id+'&q=/fight/show/'+this.attributes.id+'&sr=feedx&dt='+$.svrdt;var id=0;var me=this;var data={fight:'<a href="'+url+'">'+this.attributes.a+' and '+this.attributes.b+'</a>',quest:'<a href="'+url+'">'+this.attributes.question+'</a>',lispt:'<a href="'+url+'">Lispt</a>',images:[{src:this.attributes.a_img,href:url},{src:this.attributes.b_img,href:url}]};var params={type:3,fight_id:this.attributes.id};if(this.cur_elem){id=$.shoutid;data.candidate='<a href="'+url+'">'+this.attributes[this.cur_elem]+'</a>';data.other_fights="Hello World!";params.sel=this.cur_elem;}else{id=$.createid;}
Lispt.shout(params,id,data,function(not_prompted){if(not_prompted&&!$.user.shared&&!$.user.recentlogin){me.share();callback&&callback();}else{Lispt.email(function(){callback&&callback();});}});},support:function(){this.fc.supportCount++;var url="/fight/support/"+this.attributes.id+"?c="+this.cur_elem+"&supcount="+this.fc.supportCount;var me=this;this.countdown&&this.countdown.stop();me.attributes[this.cur_elem+"_count"]++;me.element.find(".loading").show();Lispt.loginFacebook(function(){$.clan.register($.clan.types.SUPPORT,me.attributes.id);$.post(url,function(data){me.shout(me.skip);},"json");});return false;},render:function(){this.element=$d("fightContainer");this.element.append($h("img","loading",{"src":"/images/saving.gif"}).hide().css("display","none"));if(this.attributes.id==0){this.element.append(this.renderEditForm());}else{this.element.append(this.renderFight());}
$.clan.register($.clan.types.FIGHTSHOW,this.attributes.id);return this.element;},renderEditForm:function(){this.editmode=true;var element=$d("margin: 0 auto; width: 80%;");var table=new $tbl("text-align:center;",{"cellspacing":"0px","cellpadding":"0"});this.renderFighters(table);this.renderFightersForm(table);element.append("<h1>Create a new fight</h1>");element.append(table.element);element.append("<br/>");return element;},renderFight:function(){this.editmode=false;var element=$d("margin: 0 auto; width: 100%;");var table=new $tbl("text-align:center;",{"cellspacing":"0px"});this.renderFighters(table);var skip=$h("input","blueButton action",{"type":"button","value":"Skip Fight"}).click(this.skip);table.newRow();if(this.fc.fightCount<5&&!$.manage&&!$.user_id){this.countdown=new Countdown(20,this.skip);table.newColumn().append(this.countdown.render());}else{table.newColumn();}
table.newColumn();table.newColumn("padding:10px 0;").append(skip);element.append($h("b","font-family:Trebuchet MS,Helvetica,sans-serif;").append(this.attributes.question));element.append(table.element);element.append(this.renderStats());var buttons=$d("clearfix");var me=this;buttons.append($d("fightLink").append("share").click(this.share));buttons.append($d("fightLink","margin-right: 10px;").append(","));buttons.append($d("fightLink").append("shout").click(this.publish));buttons.append($d("fightLink","margin-right: 10px;").append(","));buttons.append($d("fightLink").append("create new fight").click(function(){me.countdown&&me.countdown.stop();me.fc.addFight(-1);}));element.append(buttons);element.append(this.renderComments());if($.manage){element.append("Status: "+this.attributes.status);element.append($d("margin-top:10px;width:80px;").append($fbut("Edit").click(this.edit)));}
return element;},renderComments:function(){var element=$d("commentsContainer");for(var key=0;key<this.comments.length;key++){element.append(this.comments[key].render());}
return element;},renderStats:function(){var element=$d("statsContainer");if(this.attributes.a_count){width=Math.ceil((this.attributes.a_count/(this.attributes.a_count+this.attributes.b_count)*100))+"%;";element.append($d("color:red;font-size:8pt;margin:3px 0;border-bottom:3px solid red;width:"+width).append(this.attributes.a));}
if(this.attributes.b_count){width=Math.ceil((this.attributes.b_count/(this.attributes.a_count+this.attributes.b_count)*100))+"%;";element.append($d("color:blue;font-size:8pt;margin:3px 0;border-bottom:3px solid blue;width:"+width).append(this.attributes.b));}
var con=$d();con.append($h("span","font-size:20px;font-weight:bold;").append(this.attributes.a_count+this.attributes.b_count));con.append($h("span").append(" participants"));element.append(con);if(this.supporters.length>0){var supporters=$h("span").append(" including ");for(var key=0;key<this.supporters.length-1;key++){supporters.append(this.supporters[key]+", ");}
supporters.append(this.supporters[this.supporters.length-1]);element.append(supporters);}
return element;},addResult:function(result){var element=this.element.find("."+this.cur_elem+"_img");if(result.attributes.info=="web"){element[0].web_id=new ItemDescription(result.attributes,this);this.element.append(result.attributes.link);return;}
if(result.attributes.info=="video"){element[0].video_id=new ItemDescription(result.attributes,this);}
if(element[0].result){$.awesomeBar.removeResult(this,element[0].result);}
element.attr("src",result.attributes.image);element[0].result=result;if(this.cur_elem=="a"){this.element.find(".b_box").click();}else if(this.cur_elem=="b"){this.element.find(".a_box").click();}},removeResult:function(result){var element=this.element.find("."+this.cur_elem+"_img");if(element[0].result==result){element.attr("src",this.def_img);element[0].result=null;}},serialise:function(){var fightAttribs=this.attributes;var serialisedList={};this.attributes.a_info=undefined;this.attributes.b_info=undefined;for(var key in fightAttribs){if(this.attributes[key])
serialisedList['fight['+key+']']=fightAttribs[key];}
if(this.element.find(".a_img")[0].web_id){$.extend(serialisedList,this.element.find(".a_img")[0].web_id.serialise("fight[a_info]"));}
if(this.element.find(".b_img")[0].web_id){$.extend(serialisedList,this.element.find(".b_img")[0].web_id.serialise("fight[b_info]"));}
if(this.attributes.id!=0){serialisedList["_method"]="put";}
return serialisedList;},refreshAttributesFromForm:function(){if(this.cur_elem){var inp=this.element.find(".fighterInput");this.attributes[this.cur_elem]=inp[0].getValue();this.element.find("."+this.cur_elem+"_text").empty().append(this.attributes[this.cur_elem]);}
if(this.element.find(".a_img")[0].video_id){this.attributes.a_video=this.element.find(".a_img")[0].video_id.attributes.link;}
if(this.element.find(".b_img")[0].video_id){this.attributes.b_video=this.element.find(".b_img")[0].video_id.attributes.link;}
this.attributes.a_img=this.element.find(".a_img").attr("src").replace(/profile.ak.facebook.com/,"fbimg.lispt.com");this.attributes.b_img=this.element.find(".b_img").attr("src").replace(/profile.ak.facebook.com/,"fbimg.lispt.com");this.attributes.tags=this.element.find(".tags")[0].getValue();this.attributes.question=this.element.find(".question")[0].getValue();if($.manage)
this.attributes.status=this.element.find(".status")[0].getValue();}},AsyncMethods:{edit:function(fight){return function(event){fight.element.empty().append(fight.renderEditForm());}},comment:function(fight){return function(cmt){fight.countdown&&fight.countdown.stop();$.post("/fight/comment/"+fight.attributes.id,{comment:cmt.attributes.text},function(data){},"json");var cmt=new Comment({});cmt.onSave(fight.comment);fight.comments.push(cmt);fight.element.find(".commentsContainer").append(cmt.render());}},skip:function(fight){return function(event){fight.element.find(".loading").hide();fight.countdown&&fight.countdown.stop();if(fight.fc.fightCount==3&&$.user)
fight.fc.addListHelp();else
fight.fc.addFight(0);}},search:function(fight){return function(event){fight.element.find(".a_inp").blur();var friend=Lispt.friends[fight.getKeyword().toLowerCase()];if(friend){fight.addResult({attributes:{image:friend.pic_big||friend.pic_square||"http://static.ak.fbcdn.net/pics/q_default.gif"}});}else{$.awesomeBar.link(fight);$.awesomeBar.setKeyword(fight.getKeyword());$.awesomeBar.setSearchType(fight.searchType);$.awesomeBar.newSearch();$.awesomeBar.show(false);}
return false;}},share:function(fight){return function(event,uiData){FB.CanvasClient.setSizeToContent();Lispt.loginFacebook(function(){Lispt.shared=true;$.user.shared=true;fight.countdown&&fight.countdown.stop();var url=Lispt.getHost()+'/fight/show/'+fight.attributes.id+'&refuser='+$.user_id+'&ftid='+fight.attributes.id+'&sr=sharequest&dt='+$.svrdt;var title="'"+fight.attributes.a+" and "+fight.attributes.b+"'";var inviteString="<a href='"+url+"'>"+title+"</a> are fighting. "+fight.attributes.question+"<fb:req-choice url='"+url+"' label='Get Fighting' />";var content='<fb:request-form method="GET" action="'+"http://"+document.location.host+'" content="'+inviteString+'" type="Lispt" invite="false"> <input type="hidden" name="q" value="'+
fight.getUrl()+'"/><fb:multi-friend-selector "'+'actiontext="Select the friends you want to challenge." rows="3"/></fb:request-form>';var pp=new FB.UI.FBMLPopupDialog("Share",content);pp.setContentHeight(550);pp.setContentWidth(730);pp.set_placement(FB.UI.PopupPlacement.topCenter);pp.show();return false;});}},publish:function(fight){return function(event){var me=fight;var url='http://fb.lispt.com?refuser='+$.user_id+'&q=/fight/show/'+fight.attributes.id+'&sr=feedx&dt='+$.svrdt;var data={fight:'<a href="'+url+'">'+fight.attributes.a+' and '+fight.attributes.b+'</a>',quest:'<a href="'+url+'">'+fight.attributes.question+'</a>',lispt:'<a href="'+url+'">Lispt</a>',images:[{src:fight.attributes.a_img,href:url},{src:fight.attributes.b_img,href:url}]};Lispt.loginFacebook(function(){Lispt.publish($.createid,data,function(){});});}},save:function(fight){return function(event){var url="/fight";fight.refreshAttributesFromForm();fight.cur_elem=null;url+=(fight.attributes.id==0)?"":"/"+fight.attributes.id;fight.element.find(".loading").show();$.post(url,fight.serialise(),function(data){Model.loadAttributes(fight,data.fight);fight.shout();fight.element.empty().append(fight.renderFight());},"json");return false;}}},EventHandlers:{showInfo:function(fight){return function(event){var obj=$(this);var pos=obj.position();var elem=$d("infoBox","padding:5px;font-size:70%;position:absolute;zIndex:100;background-color: #CFEFFF;width:250px;");elem.css("top",pos.top);elem.css("left",pos.left+this.offsetWidth-5);$("body").append(elem);obj.css("background-color","#CFEFFF");elem.append(fight[this.selector+"_id"].render());elem.append("<br/>");elem.append("<br/>");elem.append("<br/>");elem.append("<br/>");elem.append("<br/>");elem.append("<br/>");var abpos=0;var element=fight[this.selector+"_id"].element;var abpos=element.offset().top+element.height()+20;fight.adframe.css({'position':'absolute','top':abpos,'left':pos.left+this.offsetWidth-5});fight.adframe.show();elem.hover(function(event){$.dontHideInfo=true;},function(event){var obj2=$(this);var pos=obj2.position();if(event.pageX>pos.left&&event.pageX<pos.left+this.offsetWidth&&event.pageY>pos.top&&event.pageY<pos.top+this.offsetHeight)
return;$.dontHideInfo=false;obj.css("background-color","white");fight.adframe.hide();$(".infoBox").remove();});}},hideInfo:function(fight){return function(event){if($.dontHideInfo)
return;var obj=$(this);var pos=obj.position();if(event.pageX>pos.left&&event.pageX<pos.left+this.offsetWidth&&event.pageY>pos.top&&event.pageY<pos.top+this.offsetHeight)
return;obj.css("background-color","white");fight.adframe.hide();$(".infoBox").remove();}}}});