var Viralite={url:"/services/send-email?random="+Math.random(),errors:new Array(),initialize:function(selectors){var selectors=selectors||{};if(typeof selectors.ids!="undefined"){selectors.ids.each(function(node){var elto=$(node);if(elto){elto.observe("click",Viralite.renderForm);}});}if(typeof selectors.classNames!="undefined"){$$(selectors.classNames).invoke("observe","click",this.renderForm);}},renderForm:function(e){e.stop();Viralite._requestForm(this.readAttribute("href").toQueryParams());},renderFormCallBack:function(dom_elto_id){var trigger=$(dom_elto_id);if(!trigger){return false;}Viralite._requestForm(trigger.readAttribute("href").toQueryParams());},_requestForm:function(params){if($("mailing-dialog")){return false;}var dialog=new ResizableBox("mailing-dialog",_("enviar por e-mail"));if(params.type==="geo_map"||params.type==="user_map"){params.map=window.location.href;}if(params.type==="kategory_list"||params.type==="kategory_map"||params.type==="user_list"||params.type==="url"){params.url=window.location.href;}params.title=encodeURIComponent(document.title);var renderReq=new Ajax.Request(Viralite.url,{method:"get",parameters:params,onSuccess:function(transport){dialog.setContents(transport.responseText);if($("mailing-list")){dialog.resize([550]);}Viralite.enableSubmit(dialog);},onFailure:function(transport){var text='<p class="error" style="padding:10px">'+_("algo no ha ido bien y no hemos podido enviar tu e-mail,")+"<br />"+_("si vuelve a ocurrir ponte en <a href='/interaction' class='action'>contacto con nosotros</a>, gracias!")+"</p>";dialog.setContents(text);}});},enableSubmit:function(dialog){var form=dialog.getForm();form.observe("submit",function(e){e.stop();if(!Viralite._validateForm(form)){return false;}$("submitting").show();var submitButton=this.getInputs("submit").first();submitButton.disable();var submitReq=new Ajax.Request(Viralite.url,{method:"post",parameters:this.serialize(),onSuccess:function(transport){$$(".ajax-controls").first().insert(transport.responseText);$("submitting").hide();submitButton.enable();form.hide();$("re-send").observe("click",function(e){e.stop();form.show();form.reset();$("re-send-wrapper").remove();});}});});},_validateForm:function(form){var errors=form.select("p.error");if(errors.length>0){errors.each(function(error){error.remove();});}Viralite.errors.clear();var mailing=form.getInputs("checkbox","contacts");var fields=form.getInputs("text");var to=fields.find(function(node){return node.id==="to";});var from=fields.find(function(node){return node.id==="from";});if(mailing.size()>0){var checks=mailing.findAll(function(item){return item.checked;});if(to.getValue().blank()&&!(checks.size()>0)){Viralite.errors.push({elto:to.id,msg:_("escribe la dirección de e-mail de algún amigo, o al menos selecciona un contacto de la lista")});}else{Viralite._validateMails(to);}}else{if(to.getValue().blank()){Viralite.errors.push({elto:to.id,msg:_("escribe la dirección de e-mail de alguno de tus amigos")});}else{Viralite._validateMails(to);}}if(from!=undefined){if(from.getValue().blank()){Viralite.errors.push({elto:from.id,msg:_("escribe tu dirección de e-mail")});}else{Viralite._validateMails(from);}}if(Viralite.errors.size()>0){Viralite._showErrors();return false;}else{return true;}},_validateMails:function(element){var mails=element.getValue().trim().split(/\s*[,;]\s*/);if((mails.size()>1)&&element.id==="from"){Viralite.errors.push({elto:element.id,msg:_("escribe sólo una dirección de e-mail como remitente")});return true;}mails.each(function(mail){if(!mail.blank()){if(!mail.match("^([_a-zA-Z0-9-+]+)(\\.[_a-zA-Z0-9-+]+)*@([a-zA-Z0-9-]+)(\\.[a-zA-Z0-9-]+)*(\\.[a-zA-Z]{2,4})$")){Viralite.errors.push({elto:element.id,msg:mail+_(" : no es una dirección de e-mail válida")});}}});},_showErrors:function(){Viralite.errors.each(function(error){var show_error=new Element("p",{className:"error"}).update(error.msg);var label=$(error.elto).up().select("label")[0];label.insert({after:show_error});show_error=null;});}};OOS.Share=Class.create({close_button:"/static/imgs/ddm-close.png",sharer_prefix:"sharer_",initialize:function(elto,offsetLeft){if(!elto){return false;}this.id=elto.identify();this.built=false;this.params=elto.href.toQueryParams();this.offsetLeft=offsetLeft||null;this.pageTitle=$$("title").first().innerHTML;$(document.body).insert(this.template(this.id));var sharer=$(this.sharer_prefix+this.id);[elto,sharer].invoke("observe","click",this.handle_click.bind(this));},template:function(id){var close_msg=_("cerrar");var h=[];h.push('<div style="display:none" class="sharer" id="');h.push(this.sharer_prefix+id);h.push('">');h.push('<img class="close" src="');h.push(this.close_button);h.push('" alt="');h.push(close_msg);h.push('" title="');h.push(close_msg);h.push('" /><div class="inner-sharer"><p class="loading"><img src="/static/imgs/spinner.gif" />');h.push(_("un momento..."));h.push("</p></div>");h.push("</div>");return h.join("");},handle_click:function(e){var el=e.element();if(el.hasClassName("close")){e.stop();this.toggle();}else{if(this.id===el.identify()){e.stop();if(!this.built){this.build_sharer();}else{this.toggle();}}}},build_sharer:function(){var trigger=$(this.id),req=new Ajax.Request("/services/shortenUrl",{method:"post",parameters:trigger.href.toQueryParams(),onSuccess:function(transport){this.built=true;this.update_content(transport.responseText);this.toggle();var sharer=$(this.sharer_prefix+this.id);sharer.down(".twitter").href+=" "+encodeURIComponent(this.pageTitle);sharer.down(".facebook").href+="&t="+encodeURIComponent(this.pageTitle);var sendLink=sharer.down(".send-link");if(sendLink){sendLink.href=sendLink.href+"?"+$H(this.params).toQueryString();Viralite.initialize({classNames:["#"+this.sharer_prefix+this.id+" .send-link"]});}}.bind(this)});},update_content:function(c){var sharer=$(this.sharer_prefix+this.id);sharer.down(".inner-sharer").remove();sharer.insert('<div class="inner-sharer">'+c+"</div>");},toggle:function(){var sharer=$(this.sharer_prefix+this.id);var offset=$(this.id).cumulativeOffset();var oTop=offset.top+15;var oLeft=(this.offsetLeft!=null)?(offset.left-this.offsetLeft):offset.left;sharer.setStyle({position:"absolute",top:oTop+"px",left:oLeft+"px"});sharer.toggle();}});
