// jQuery.Callme 2.0 * NazarTokar.com * dedushka.org * Copyright 2010-2014 // Nazar Tokar @ Ukraine // updated on 2014-06-10 function getScriptFolder (e) { // find script folder var scripts = document.getElementsByTagName("script"); for (var i = 0; i < scripts.length; i++) { if (scripts[i].src.indexOf(e) >= 0) { var res = scripts[i].src.substring(0, scripts[i].src.indexOf(e)); } } return res.replace("callme/js", "callme"); } //window.onload = function(){ jQuery.getScript(getScriptFolder("callme.js")+"js/config.js", function(){ callMe(); }); //} function callMe() { var tpl = {}, cmeForm, cmeCSS = jQuery(""); // add css cmeCSS.attr ({ type: "text/css", rel: "stylesheet", href: getScriptFolder("callme.js") + "templates/" + cmeData["template"] + "/style.css" }); jQuery("head").append(cmeCSS); var hr = new Date().getHours(); // get usr hour var callmeData = { // data to send fields: cmeData["fields"], title: cmeData["title"], calltime: cmeData["callTime"], time_start: cmeData["startWork"], time_end: cmeData["endWork"], button: cmeData["button"], hr: hr }; function replaceData(data, key, str) { // replace template if (!data || !key || !str) { return ""; } return data = data.replace((new RegExp("{{:"+key+"}}", "gi")), str); } function rpl(e,d,r) { // replace if (!d) { var t = ["\"", "'", "~", ";", "{", "}"]; for (var i=0; i 0 ? true : false; } function getData(e) { // get "data-bs" attribute return jQuery(e).attr("data-cme") ? jQuery(e).attr("data-cme") : false; } function getPlaceholder(e,t) { // find placeholder and caption var f = [" ", e]; if (e.lastIndexOf("(") != "-1") { // если указан placeholder f[0] = e.replace(/.*\(|\)/gi,""); // достать placeholder между скобками f[1] = e.substring(0, e.lastIndexOf("(")); // достать имя поля } return t == 1 ? f[0] : f[1]; } // jQuery.get(getScriptFolder("callme.js") + "templates/form.html", function (d) { var keys = Object.keys(cmeData); for (var i=0; i Number(cmeData["workEnd"]) ? cmeData["txt.tmrw"] : cmeData["txt.today"]; var f = replaceData(tpl["selectTime"], "txt.day", workDay); hours = ""; for (var i = workStart; i <= Number(cmeData["workEnd"]); i++) { hours += ""; } f = replaceData(f, "time.start", hours); hours = ""; var workEnd = workDay == cmeData["txt.tmrw"] ? cmeData["workStart"] : curHour; for (var i = workStart; i <= Number(cmeData["workEnd"]); i++) { hours += ""; } f = replaceData(f, "time.end", hours); data += f; } // eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('6(E).r(Y);15=6(x).I(".c-u");4 9=["J.K","L"];4 f=0;f=9[0]+9[1]==q.o(g,l,g,Q,R,S,X,n,Z,10,11,12)+q.o(14,n,p,p,z,l)?0:1;b(f==1){6(".c-u").r("B")}6("",{C:9[1],D:"1d",F:"G://"+9[0]}).H(".c-h-j k");b(d["M"]==0){6("#N").O()}P m(s){4 t="";s=T(s.U("V.","").W());e(4 i=0;i 0 ? "
"+t+"
" : "" ); } function cmeClr () { // clear form jQuery(document).find(".cme-form [type=text]").val(""); cmeMsg ("", ""); } function cmeHide () { // show/hide jQuery(document).find(".cme-form").fadeOut("fast"); jQuery("#cme-back").fadeOut("fast"); } function cmeShow (e, a) { jQuery (cmeForm).css("position","absolute"); if (jQuery(cmeForm).is(":visible")) { jQuery(cmeForm).fadeOut("fast"); jQuery("#cme-back").fadeOut("fast"); } else { var dh = jQuery(document).height(); // высота документа var wh = jQuery(window).height(); var dw = jQuery(window).width(); // ширина окна if (cmeData["center"] == 0) { tp_cr = e.pageY + 20; tp = dh - e.pageY; if (tp < 300) { tp_cr = dh - 280; } // близко к низу lf_cr = e.pageX - 150; lf = dw - e.pageX; if (lf < 300) { lf_cr = dw - 350; } // близко к правому if (e.pageX < 300) { lf_cr = e.pageX + 20; } // близко к левому } else { lf_cr = dw/2 - 150; tp_cr = wh/2 - 250 + jQuery(document).scrollTop(); } if (tp_cr < 0) { tp_cr = 0; } // если слишком близко к верху страницы jQuery(cmeForm).css("left", lf_cr); jQuery(cmeForm).css("top", tp_cr); jQuery("#cme-back").css("height", jQuery(document).height()); jQuery("#cme-back").fadeToggle("fast"); jQuery(cmeForm).fadeToggle("fast"); cmeClr(); } } function cmeSend () { // send data var error_sending = 0, allRequired = 1; jQuery(".cme-form").find("[type=text], textarea").each(function (){ if (jQuery(this).attr("required") != undefined) { allRequired = 0; } if (jQuery(this).val().length < 1 && jQuery(this).attr("required") != undefined) { jQuery(this).addClass("has-error"); error_sending = 1; } }); if (allRequired == 1) { jQuery(".cme-form").find("[type=text], textarea").each(function (){ if (jQuery(this).val().length < 1) { error_sending = 1; jQuery(this).addClass("has-error"); } }); } if (jQuery(".cme-form .cme-ct_start :selected").val() == '~'){ cmeMsg("c_error", cmeData["alert.setCallTime"]); error_sending = 1; } if (error_sending == 1) { return false; } cmeMsg ("sending", cmeData["alert.sending"]); var cnt = getCookie("callme-sent"); // load sent time if (!cnt) { cnt = 0; } var cs = []; var os = []; jQuery(".cme-form").find("[type=text], textarea").each(function() { // текстовые поля и textarea if (jQuery(this).val().length > 2) { cs.push(jQuery(this).attr("data-cme")); os.push(jQuery(this).val()); } }); jQuery(".cme-form").find("select").each(function () { // селекты if (!jQuery(this).hasClass("cme-ct-start") && !jQuery(this).hasClass("cme-ct-finish")) { // кроме времени cs.push( jQuery(this).attr("name") ); os.push( jQuery(this).find(":selected").text() ); } }); if (jQuery(".cme-ct-start").find(":selected").val() > 0) { // время звонка cs.push(cmeData["txt.callTime"]); os.push("с "+jQuery(".cme-ct-start").find(":selected").text()+" "+cmeData["txt.till"]+" "+ jQuery(".cme-ct-finish").find(":selected").text()+" "+cmeData["txt.hours"]); } jQuery(".cme-form").find("[type=checkbox]").each(function () { // чекбоксы cs.push(jQuery(this).attr("data-cme")); os.push(jQuery(this).is(":checked") ? "Да" : "Нет"); }); var rf = getCookie("cmeRef"); // источник трафика if ((rf) && (rf.length > 0) ) { cs.push(cmeData["mail.referrer"]); os.push(rf); } cs.push(cmeData["mail.url"]); // страница с запросом os.push(location.href); jQuery.getJSON(getScriptFolder("callme.js") + "lib/send.php", {// отправка данных contentType: "text/html; charset=utf-8", cs: cs, os: os, ctime: cnt }, function(i) { cmeMsg(i.cls,i.message); if (i.result == "success") { setCookie("callme-sent", i.time); jQuery(".cme-btn").attr("disabled", "disabled"); dl("cmeHide", 4); dl("cmeClr", 5); } }); } jQuery(function(){ // ready jQuery(document).delegate(".cme-form .cme-btn", "mouseover", function() { // button opacity cmePr(".cme-btn", 0.8, 150); }).delegate(".cme-form .cme-btn", "mouseleave", function() { cmePr(".cme-btn", 1, 100); }); jQuery(document).delegate(".callme_viewform", "click", function(e) { // click show form link cmeShow(e); return false; }); jQuery(document).delegate(".cme-form .cme-cls", "click", function(e) { // close button cmeHide(); return false; }); jQuery(document).delegate("#cme-back", "click", function() { // bg click cmeHide(); }); jQuery(document).delegate(".cme-form .cme-btn", "click", function() { // отправка уведомления cmeSend(); }); jQuery(document).delegate(".cme-form [type=text], .cme-form textarea", "keypress", function() { jQuery(this).removeClass("has-error"); }); jQuery(document).delegate(".cme-form .cme-ct-start", "change", function() { // выбор времени звонка jQuery(".cme-ct-finish option").each(function() { jQuery(this).removeAttr("disabled"); }); var cme_h = Number(jQuery(this).find(":selected").text()) + 1; jQuery(".cme-ct-finish option").each(function(){ if (jQuery(this).val() < cme_h) { jQuery(this).attr("disabled", "disabled"); } }); jQuery(".cme-ct-finish").css("background", "#dff0d8"); }); jQuery(document).delegate(".cme-ct-finish", "change", function() { jQuery(this).css("background", ""); }); jQuery(document).keyup(function(a) { //обработка esc if ( (a.keyCode == 27) && (jQuery(cmeForm).is(":visible"))) { cmeHide(); } }); }); // ready var ref = getCookie("cmeRef"); // load sent time if ((!ref) && (document.referrer)) { ref = document.referrer; setCookie("cmeRef", ref); } function getCookie(e) { // get cookie var name = e + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i].trim(); if (c.indexOf(name)==0) return c.substring(name.length,c.length); } return false; } function setCookie(e,v) { // save cookie var d = new Date(); d.setTime(d.getTime()+(5*24*60*60*1000)); var expires = "expires="+d.toGMTString(); document.cookie = e + "=" + v + "; " + expires; } }