var makeTab=function(a){loadingBox();$$(".tab").invoke("removeClassName","tab");Event.element(a).parentNode.className="tab";new Ajax.Updater("block_box",Event.element(a).href,{asynchronous:true,evalScripts:true});Event.stop(a)};function loadingBox(a){if(!a){a="block"}$(a+"_box").update('<img src="/images/indicator_big.gif" alt="Loading..." id="indicator" />')}function setButton(){$("win").hide();$("mac").hide();$("linux").hide();var a="unknown";if(navigator.appVersion.indexOf("Win")!=-1){a="win"}if(navigator.appVersion.indexOf("Mac")!=-1){a="mac"}if(navigator.appVersion.indexOf("Linux")!=-1||navigator.appVersion.indexOf("X11")!=-1){a="linux"}if(a!=="unknown"){$(a).show();if(a=="linux"){$("linux_header").show()}}else{$("win").show();$("mac").show();$("linux").show()}}Event.observe(window,"load",function(){$$("#tab_navigation li a").each(function(a){Event.observe(a,"click",makeTab.bindAsEventListener())})});document.observe("dom:loaded",function(){$$(".handle").each(function(a){new HeaderMenu(a,a.id)});$$("#title .iconlink, #content .iconlink").each(function(a){if(a.parentNode.href){new IconMenu(a,a.parentNode.href+"/iconmenu")}});$$(".friend_list").each(function(a){a.select("a").each(function(b){$(b).observe("click",function(e){var d=b;var c=d.classNames().toArray().join(".");if(c){var f=(d.innerHTML=="Overview")?"&hellip;pick a service<b></b>":d.innerHTML+"<b></b>";$("service_selector").update(f);$$(".find_users div").invoke("setStyle",{height:0,overflow:"hidden"});$$("div."+c).invoke("setStyle",{height:"auto",display:"block"});inviteDropdown.close()}Event.stop(e)})})});$$(".add_friend a").each(function(a){$(a).observe("click",function(c){var b='<li><label for="invite_name">Name: <input type="text" name="invite[][name]" /></label><label for="invite_email"> E-mail: <input type="text" name="invite[][email]" /></label></li>';$$(".invite_person").first().insert({bottom:b});Event.stop(c)})});inviteDropdown=new inviteDropdown();if($("invite_email")){inviteMail=new inviteMail()}logoFaceBox=new LogoFaceBox();largeDescription=new LargeDescription("description_span",400);yourTags=new softwareButtonToggle("tags_button","user_tags");favoriteSoftware=new softwareButtonToggle("favs_button","user_favs");privacySettings=new softwareButtonToggle("privacy_button","user_privacy");if($("recentlyticker")){new RecentlyTicker("recentlyticker")}});function trackAjaxPageView(a){if(typeof(pageTracker)!=="undefined"){pageTracker._trackPageview(a)}}function clearInput(b,a){if(!a){a="666666"}if(b.className!="focussed"){b.style.color="#"+a;b.value="";b.className+="focussed"}}var Button=Class.create({initialize:function(a){this.btn=$(a);this.btn.caption=this.btn.innerHTML;this.btn.addClassName("loading");this.btn.update("<span>Loading</span>");this.btn.disabled="disabled";if(this.btn.type=="submit"&&this.btn.form.onSubmit==""){this.btn.form.submit()}if(this.btn.onclick){this.btn.form.submit()}},reset:function(){this.btn.removeClassName("loading");this.btn.update(this.btn.caption);this.btn.disabled=""},loading:function(){this.initialize(this.btn)}});var LogoFaceBox=Class.create({initialize:function(){this.logoWasClosed=false;if($("logo")){$("logo").oncontextmenu=this.showLogoBox.bindAsEventListener(this);$("facebox_close").onclick=this.closeLogoBox.bindAsEventListener(this)}},showLogoBox:function(){if(!this.logoWasClosed){$("facebox_logo").show();return false}},closeLogoBox:function(){$("facebox_logo").hide();this.logoWasClosed=true;return false}});var inviteDropdown=Class.create({initialize:function(){this.shown=false;$$(".find_users div").invoke("setStyle",{height:0,overflow:"hidden"});var b=["windowslive","yahoo","gmail_api","twitter","facebook","flickr"];var c=window.location.href.split("#")[1];if(b.include(c)){$$("div."+c+"-s").invoke("setStyle",{height:"auto"});var a=($$("a."+c+"-s").first().innerHTML=="Overview")?"&hellip;pick a service<b></b>":$$("a."+c+"-s").first().innerHTML+"<b></b>";$("service_selector").update(a)}else{$$(".find_users div:first-child").invoke("setStyle",{height:"auto"})}if($("service_selector")){$("service_selector").observe("click",this.toggle.bindAsEventListener(this))}},toggle:function(a){if(this.shown){this.close()}else{this.open()}Event.stop(a)},open:function(){$("service_selector").addClassName("opened");new Effect.Morph("friend_list",{style:"height:168px",duration:0.4});this.shown=true},close:function(){this.shown=false;new Effect.Morph("friend_list",{style:"height:0px",duration:0.4});$("service_selector").removeClassName("opened")}});var inviteMail=Class.create({initialize:function(){this.shown=false;$("invite_email").setStyle({height:0,overflow:"hidden"});if($("open_invitemail")){$("open_invitemail").observe("click",this.toggle.bindAsEventListener(this))}},toggle:function(a){if(this.shown){this.close()}else{this.open()}Event.stop(a)},open:function(){new Effect.Morph("invite_email",{style:"height:240px",duration:0.4});$("open_invitemail").update("hide example");this.shown=true},close:function(){this.shown=false;new Effect.Morph("invite_email",{style:"height:0px",duration:0.4});$("open_invitemail").update("example")}});var softwareButtonToggle=Class.create({initialize:function(a,b){this.shown=false;this.buttonid=a;this.divid=b;if($(this.buttonid)){$(this.buttonid).observe("click",this.toggle.bindAsEventListener(this))}},toggle:function(a){if(this.shown){this.close()}else{this.open()}Event.stop(a)},open:function(){trackAjaxPageView("/javascript/software/open-box-"+this.buttonid);new Effect.BlindDown(this.divid,{duration:0.4});this.shown=true},close:function(){this.shown=false;new Effect.BlindUp(this.divid,{duration:0.4})}});function showSubmit(a){if(a){a.addClassName("submitted_button")}}function activateSubmit(a){if(a){a.disabled=false;a.removeClassName("submitted_button")}}var LargeDescription=Class.create({initialize:function(b,a){this.elm=$(b);if(!this.elm){return}if(this.elm.innerHTML.length<a){this.elm.innerHTML=this.elm.innerHTML.stripTags();return}this.large_text=this.elm.innerHTML;this.small_text=this.large_text.substring(0,a);this.small_text=this.small_text.substring(0,this.small_text.lastIndexOf(" "))+" &hellip;";this.small_text=this.small_text.stripTags();this.elm.innerHTML='<span id="'+b+'_span"></span> <a id="'+b+'_link" href="#more">More</a>';this.span=$(b+"_span");this.link=$(b+"_link");this.span.innerHTML=this.small_text;this.link.onclick=this.toggle.bindAsEventListener(this);this.isFull=false},toggle:function(){this.span.innerHTML=(this.isFull)?this.small_text:this.large_text;this.link.innerHTML=(this.isFull)?"More":"Less";this.isFull=!this.isFull;return false}});function toggleDescr(){if($("descr").hasClassName("descr_closed")){$("more_link").innerHTML="Less";$("descr").removeClassName("descr_closed");$("descr").addClassName("descr_open")}else{$("descr").removeClassName("descr_open");$("descr").addClassName("descr_closed");$("more_link").innerHTML="&hellip; More"}}var search_running=false;function searchSoftware(b){var a=$F("search_query");if(!search_running&&a.length>=3){new Ajax.Request(b,{method:"post",postBody:"query="+escape(a),onLoading:function(){$("spinner").show();search_running=true},onComplete:function(){search_running=false;$("spinner").hide()},onSuccess:function(c){$("search_hits").innerHTML=c.responseText||"Nothing found :(";trackAjaxPageView("/javascript/ajax-search-box")}})}else{$("search_hits").innerHTML=""}}function observePicker(d,c){var b=$F(c+"_input");var a=$(c+"_hits");var e=$(c+"_spinner");if(!search_running&&b.length>=3){new Ajax.Request(d,{method:"post",postBody:"query="+escape(b),onLoading:function(){e.show();search_running=true},onComplete:function(){search_running=false;e.hide();a.show()},onSuccess:function(f){a.innerHTML=f.responseText||"Nothing found :(";trackAjaxPageView("/javascript/ajax-search-box")}})}else{a.hide();a.innerHTML=""}}function setApp(c,a,b,d){if(field=$(b)){$(b+"_hits").innerHTML=field.innerHTML;field.innerHTML="<span>"+c.innerHTML+'<input type="hidden" name="split[similar_software_id]" value="'+a+'" /></span>';field.innerHTML+=' - <a href="#developers" onclick="setPicker(\''+b+"')\">change</a>"}$(b+"_hits").hide();if($("devbadge_code")){setDevWidget(d)}}function setPicker(a){if(field=$(a)){field.innerHTML=$(a+"_hits").innerHTML;$(a+"_input").className="greyed";$(a+"_hits").innerHTML="";new Form.Element.Observer(a+"_input",1,function(b,c){observePicker("/search/autocomplete?field_id="+a,a)})}}function setBlockStatus(h,d,b){var a="usage_spinner_"+h;var c="usage_software_"+h;var f="block_"+h;var e="unblock_"+h;var g="flag_description_"+h;new Ajax.Request("/account/display_settings",{method:"post",postBody:"id="+escape(h)+"&display_flag="+escape(d),onLoading:function(){$(a).show()},onSuccess:function(i){$(a).hide();if(b){if(d==-1){$(f).show();$(e).hide()}else{$(f).hide();$(e).show();$(g).innerHTML=i.responseText}}else{if(d==-1){$(c).remove();if($("currently_blocked").childNodes.length<=1){$("none_blocked").show()}}else{$("none_blocked").hide();$(f).hide();$(g).innerHTML=i.responseText;$(e).show();$("currently_blocked").appendChild($(c))}}},on403:function(){$(a).hide()}})}function osChecker(){var b=null;if(navigator.appVersion.indexOf("Win")!=-1){b="win"}if(navigator.appVersion.indexOf("Mac")!=-1){b="mac"}if(navigator.appVersion.indexOf("Linux")!=-1||navigator.appVersion.indexOf("X11")!=-1){b="linux"}var a=["win","mac","linux"];if(b){$(a).each(Element.hide);var c=window.location.href.split("#")[1];if(a.include(c)){$$("div#"+c+"").invoke("show")}else{$(b).show()}}$$(".view_all_os").each(function(d){$(d).observe("click",function(e){$("win","mac","linux").invoke("show");$$(".view_all_os").invoke("hide")})})}var WakoopaConnectButton={toggle:function(c,e,g){var b=g.keepAround||false;var a=c.href;var d=c.href.match(/(?:\/)(connect|unconnect)(?:\?quick=)/)[1];var f=c.select("img").first();new Ajax.Request(a,{onLoading:function(){f.src="/images/indicator.gif"},onSuccess:function(){if(d=="connect"){f.src="/images/icon_mincontact.gif";c.title="Remove as contact";c.href=c.href.gsub(/\/connect\?quick/,"/unconnect?quick");trackAjaxPageView("/javascript/profile/add-as-contact")}else{if(d=="unconnect"){f.src="/images/icon_pluscontact.gif";c.title="Add as contact";c.href=c.href.gsub(/\/unconnect\?quick/,"/connect?quick");trackAjaxPageView("/javascript/profile/remove-as-contact")}}if($(e)&&!b){$(e).fade()}}})}};function inviteFormSubmit(form){var results_container=$("invitevia_result");var header_type=$$(".box_title h2, .box_title h3").first().tagName;var service=$(form).select('input[name="invite_via[via]"]').first().value.capitalize();new Ajax.Request("/account/invite/find_users",{asynchronous:true,evalScripts:true,onLoading:function(request){if($("found_users")){$("found_users").hide()}results_container.update("loading");results_container.addClassName("loading")},onComplete:function(request){eval(request.responseText);results_container.insert({top:"<"+header_type+">Found "+service+" contacts on Wakoopa</"+header_type+">"});results_container.removeClassName("loading")},onFailure:function(request){results_container.update('<p class="empty">Oops something went wrong, maybe the username you entered does not exist or '+service+" is down :(</p>");results_container.removeClassName("loading")},parameters:Form.serialize(form)});return false}var num=0;function userCarousel(b){var c=$("mostactive"),a=$$("#mostactive li").size()*60,d=num;if(b.id=="uprev"){num=num+420}else{num=num-420}if(num<=0){if(num>-a){new Effect.Morph(c,{style:"margin-left:"+num+"px",duration:0.3});if(num-420<=-a){$("inext").addClassName("faded")}else{$("inext").removeClassName("faded")}}else{num=d;$("inext").addClassName("faded")}if(num==0){$("iprev").addClassName("faded");$("inext").removeClassName("faded")}else{$("iprev").removeClassName("faded")}}else{num=0}trackAjaxPageView("/javascript/software/user-carousel");return false}var screenshotnum=0;function screenshotCarousel(b){var c=$("screenshot_scroller"),a=$$("#screenshot_scroller li").size()*99+15,d=screenshotnum;if(b.id=="suprev"){screenshotnum=screenshotnum+297}else{screenshotnum=screenshotnum-297}if(screenshotnum<=0){if(screenshotnum>-a){new Effect.Morph(c,{style:"margin-left:"+screenshotnum+"px",duration:0.3});if(screenshotnum-297<=-a){$("sinext").addClassName("faded")}else{$("sinext").removeClassName("faded")}}else{screenshotnum=d;$("inext").addClassName("faded")}if(screenshotnum==0){$("siprev").addClassName("faded");$("sinext").removeClassName("faded")}else{$("siprev").removeClassName("faded")}}else{screenshotnum=0}trackAjaxPageView("/javascript/software/screenshot-carousel");return false}var iphoneLatestAppsCarousel=Class.create({initialize:function(){$$("ul.latest_iphone_avatars li a").each(function(d){d.observe("click",function(f,e){window.iphoneCarousel=false;this.changeItem(e);Event.stop(f);return false}.bindAsEventListener(this,d))}.bind(this));var a=$$("ul.latest_iphone_avatars li a")[0];if(a){var c='<a class="url" href=""></a>: <em></em>';var b=new Element("div",{id:"iphone_tagline"}).update(c);$("latest_iphone_apps").insert({bottom:b});this.changeItem(a);window.iphoneCarousel=true;setTimeout(this.binderFunction.bind(this,1),4000)}},favCycle:function(a){var c=a,b=$$("ul.latest_iphone_avatars li a");this.changeItem(b[a]);c=(c<b.length-1)?c+1:0;setTimeout(this.binderFunction.bind(this,c),4000)},binderFunction:function(a){var b=$$("ul.latest_iphone_avatars li a");if(window.iphoneCarousel&&b.length>1){this.favCycle(a)}},changeItem:function(d){$$("ul.latest_iphone_avatars li a").each(function(f){$(f).removeClassName("active")});d.addClassName("active");var b=d.immediateDescendants(),a=d.readAttribute("href"),c=b[1].innerHTML,e=b[0].readAttribute("alt");tagline=$("iphone_tagline").immediateDescendants();tagline[0].innerHTML=e;tagline[0].writeAttribute("href",a);tagline[1].innerHTML=c}});var check=0;var checkC=0;var checkE=0;var errored=false;var forbidden_usernames=["images","javascripts","files","software","people","teams","reviews","developers","developer_account","home","beta","account","search","categories","post","help","about","dashboard","news","versions","explore","tags","admin","windows","mac","web"];var name_taken="This name is already taken!<br />Could you try again please?";var name_empty="Please fill in<br />a username";var pass_error="Type in the same<br />password twice please";var pass_empty="Please fill in<br />a password";var name_errored="A name can only contain letters<br /> from a to z, 0 to 9 and dashes!";var username_pattern=/^[\w\-]+$/i;var email_pattern=/^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9_]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/i;var email_empty="Please fill in<br />your e-mail address";var email_error="Please fill in<br />a valid e-mail address";var last_checked_username="";var button=false;function checkAvailability(a,b){if(b){clearTimeout(check);checkName(a)}else{clearTimeout(check);check=setTimeout(function(){checkName(a)},700)}}function showError(b,c){$("user_"+b).className="errored";var a=$(b+"_error");a.innerHTML=c;Effect.Appear(a,{duration:0.2});errored=true;if(button){button.reset()}}function hideError(a){$("user_"+a).className="confirmed";if(a=="password"){$("user_password_confirmation").className="confirmed"}element=$(a+"_error");if(element.visible()){Effect.Fade(element,{duration:0.2});if(!$$(".error_box:not(#"+a+"_error)").map(function(c){return c.visible()}).include(true)){errored=false}}}function checkName(a){var b=$F("user_username").strip().toLowerCase();if(b===""){showError("username",name_empty)}else{if(b.length<3){showError("username","Your username must be<br />longer than three characters!")}else{if(forbidden_usernames.indexOf(b)!==-1){showError("username",name_taken)}else{if(!b.match(username_pattern)){showError("username",name_errored)}else{if(last_checked_username!=b){a.className="loading";new Ajax.Request("/account/signup/validate",{onSuccess:function(c){if(c.responseText=="0"){hideError("username")}else{if(c.responseText=="1"){showError("username",name_taken)}}},parameters:"check=name&name="+encodeURIComponent(a.value)})}last_checked_username=b}}}}}function checkConfirmation(){clearTimeout(checkC);checkC=setTimeout(checkPasswords,300)}function checkPasswords(){if($("user_password").value===""||$("user_password_confirmation").value===""){$("user_password").className="";$("user_password_confirmation").className="";Effect.Appear("password_notify",{duration:0.2});errored=true}else{Effect.Fade("password_notify",{duration:0.2});errored=false;if($("user_password").value==$("user_password_confirmation").value){hideError("password")}else{showError("password",pass_error)}}}function validateEmail(){clearTimeout(checkE);checkE=setTimeout(checkEmail,300)}function checkEmail(){var a=$("user_email").value;if(a==""){showError("email",email_empty)}else{if(!a.match(email_pattern)){showError("email",email_error)}else{hideError("email")}}}function validate(a){if(!button){button=new Button($("button"))}if(errored===false){name=checkName($("user_username"))}if(errored===false){pass=checkPasswords()}if(errored===false){email=checkEmail()}if(errored===false){button.loading()}else{button.reset()}return !errored};
