
/**
* @version 2.0
* @package PWebContact
* @copyright Copyright (C) 2012 Majestic Media sp. z o.o., All rights reserved.
* @license http://www.perfect-web.pl/licenses/gnu-gpl
* @author http://www.perfect-web.pl
*
* Mootools 1.3.2+
*/
var pwebContact=new Class({Implements:[Options,Events],options:{id:"",prefix:"pwebcontact",basePath:"",baseUrl:"",rootPath:false,reloadToken:false,openFormOnStart:false,charsLimit:0,redirectURL:"",redirectTimeout:500,layout:"default",bgOpacity:0,modal:{x:580,y:320,overlayOpacity:0.7,classWindow:""},onEmailSuccess:$empty},status:0,modal:false,initialize:function(b){this.setOptions(b);this.options.prefix=this.options.prefix+this.options.id;if(!this.options.baseUrl){this.options.baseUrl=document.location.protocol+"//"+document.location.host+this.options.basePath+"/modules/mod_pwebcontact/"}this.Msg=document.id(this.options.prefix+"_msg");this.Form=document.id(this.options.prefix+"_form");this.CharsLeft=document.id(this.options.prefix+"_charsleft");this.ButtonNew=document.id(this.options.prefix+"_new");this.Msg.set("html","");this.Form.reset();if(this.options.layout=="default"){var e=document.id(this.options.prefix+"_box");e.setStyle("display","block");this.BoxMorph=new Fx.Morph(e);this.BoxSize=document.id(this.options.prefix+"_container").getSize();document.id(this.options.prefix+"_bg").setStyles({width:this.BoxSize.x-20,height:this.BoxSize.y-20});this.BoxMorph.set({width:0,height:0,opacity:0});var c=document.id(this.options.prefix).getTop();if(c>0){var a=window.getHeight();var d=a-c-this.BoxSize.y;if(d<0){d=Math.abs(d);if(d<=c){c-=d}else{c=-10}document.id(this.options.prefix).setStyle("top",c)}}if(this.options.bgOpacity>0&&document.id(this.options.prefix+"_bg")){document.id(this.options.prefix+"_bg").setStyle("opacity",this.options.bgOpacity)}this.fixCalendar()}else{if(this.options.layout=="modal"){this.modal=SqueezeBox;this.modal.initialize({})}}if(this.options.layout!="static"){document.id(this.options.prefix).inject($$("body")[0]);$$("."+this.options.prefix+"_toggler").each(function(f){f.addEvent("click",function(g){g.stop();this.toggleForm()}.bind(this))}.bind(this))}if(this.options.reloadToken){this.getToken()}document.id(this.options.prefix+"_form").addEvent("submit",this.submitForm.bind(this));if(this.CharsLeft){document.id(this.options.prefix+"_message").addEvent("keyup",function(h){h.stop();var g=document.id(this.options.prefix+"_message");var f=g.value.length;if(f>=this.options.charsLimit){g.value=g.value.substring(0,this.options.charsLimit)}this.CharsLeft.set("text",this.options.charsLimit-f)}.bind(this))}if(this.ButtonNew){this.ButtonNew.setStyle("display","none").addEvent("click",function(f){f.stop();this.resetForm()}.bind(this))}if(this.options.openFormOnStart){this.toggleForm()}},toggleForm:function(c){if(typeof c!="undefined"){var a=document.id(this.options.prefix+"_mailto");if(a){a.selectedIndex=c}}if(this.options.layout=="default"){var b=document.id(this.options.prefix+"_toggler");if(b.hasClass("active")){b.removeClass("active");this.BoxMorph.start({width:0,height:0,opacity:0});this.resetForm()}else{b.addClass("active");this.BoxMorph.start({width:this.BoxSize.x,height:this.BoxSize.y,opacity:1})}}else{if(this.options.layout=="modal"){this.modal.fromElement(document.id(this.options.prefix+"_modal_clone"),{handler:"clone",size:{x:this.options.modal.x,y:this.options.modal.y},overlayOpacity:this.options.modal.overlayOpacity,classWindow:"pwebContactWindow "+this.options.prefix+"Window "+this.options.modal.classWindow,onOpen:function(){var d=this.modal.element.get("id");if(d&&d.indexOf(this.options.prefix)!=-1){if(document.id(this.options.prefix+"_toggler")){document.id(this.options.prefix+"_toggler").addClass("active")}document.id(this.options.prefix+"_modal").inject(document.id("sbox-content")).setStyle("display","block")}}.bind(this),onClose:function(){var d=this.modal.element.get("id");if(d&&d.indexOf(this.options.prefix)!=-1){if(document.id(this.options.prefix+"_toggler")){document.id(this.options.prefix+"_toggler").removeClass("active")}document.id(this.options.prefix+"_modal").setStyle("display","none").inject(document.id(this.options.prefix));this.resetForm()}}.bind(this)})}}},resetForm:function(){if(this.status==2){this.status=0;if(this.ButtonNew){this.ButtonNew.setStyle("display","none")}if(this.CharsLeft){this.CharsLeft.set("text",this.options.charsLimit)}this.Msg.set("html","").removeClass("success").removeClass("error");this.Form.reset();$$("#"+this.options.prefix+"_form .invalid").each(function(a){a.removeClass("invalid")})}},getToken:function(){this.a=new Request({url:this.options.baseUrl+(this.options.rootPath?"../../mod_pwebcontact_":"")+"ajax.php",method:"get",data:{getToken:1},onComplete:function(a){if(a!=""){document.id(this.options.prefix+"_token").setProperty("name",a)}else{this.Msg.set("html",pwebContactJText.token).addClass("error")}}.bind(this),onFailure:function(a){this.Msg.set("html","Request error: "+a.status+" "+a.statusText).addClass("error");this.debugMsg(a.responseText,true)}.bind(this),onException:function(b,a){this.Msg.set("html","Failed setting request header: "+b+": "+a).addClass("error")}.bind(this)}).send()},submitForm:function(a){a.stop();if(this.status==1){return}else{if(this.status==2){this.resetForm();this.Msg.addClass("success").set("html",pwebContactJText.sent);return}}this.status=1;this.a=new Request({url:this.options.baseUrl+(this.options.rootPath?"../../mod_pwebcontact_":"")+"ajax.php",method:"post",data:document.id(this.options.prefix+"_form"),onRequest:function(){this.Msg.removeClass("success").removeClass("error").set("html",pwebContactJText.sending);new Element("img",{src:this.options.baseUrl+"images/loading.gif",width:16,height:16,border:0}).inject(this.Msg,"top")}.bind(this),onComplete:function(b){if(b!=null){var d=null;try{d=JSON.decode(b)}catch(c){var d=b.match(/{"status":[0-9]+,"msg":".+"}/i);if(d&&d.length){b=b.replace(d,"");d=d[0];d=JSON.decode(d)}this.debugMsg(b,false)}if(d&&d.status==1){this.Msg.set("html",d.msg).addClass("success");if(this.ButtonNew){this.ButtonNew.setStyle("display","")}this.status=2;this.fireEvent("onEmailSuccess");if(this.options.redirectURL){this.redirectOnSuccess()}}else{if(d&&d.status==2&&this.ButtonNew){this.status=2;this.ButtonNew.setStyle("display","")}this.Msg.set("html",d&&d.msg?d.msg:"Turn on debug and see logs!").addClass("error")}}}.bind(this),onFailure:function(b){this.Msg.set("html","Request error: "+b.status+" "+b.statusText).addClass("error");this.debugMsg(b.responseText,true);this.status=0}.bind(this),onException:function(c,b){this.Msg.set("html","Failed setting request header: "+c+": "+b).addClass("error");this.status=0}.bind(this)}).send()},redirectOnSuccess:function(){setTimeout("document.location='"+this.options.redirectURL+"'",this.options.redirectTimeout)},fixCalendar:function(){$$("#"+this.options.prefix+"_form img.calendar").each(function(a){a.addEvent("click",function(b){b.stop();if(!Browser.ie6){(function(){var c=$$("div.calendar");c[c.length-1].setStyle("position","fixed")}).delay(100)}})})},debugMsg:function(b,a){this.debugLogWin=window.open("",this.options.prefix+"Debug","height=500,width=800,scrollbars=yes,menubar=no,toolbar=no,directories=no,status=no");this.debugLogWin.document.write(a?b:('<html><head><meta http-equiv="content-type" content="charset=utf-8"/><title>Debug Form ID: '+this.options.id+"</title></head><body>"+b+"<hr/></body></html>"))}});
