$(document).ready(function() { // FadeIn/Out fix for IE<8 (function($){$.fn.fadeIn=function(speed,callback){return this.animate({opacity:"show"},speed,function(){if($.browser.msie){this.style.removeAttribute("filter")}if($.isFunction(callback)){callback.call(this)}})};$.fn.fadeOut=function(speed,callback){return this.animate({opacity:"hide"},speed,function(){if($.browser.msie){this.style.removeAttribute("filter")}if($.isFunction(callback)){callback.call(this)}})};$.fn.fadeTo=function(speed,to,callback){return this.animate({opacity:to},speed,function(){if(to==1&&$.browser.msie){this.style.removeAttribute("filter")}if($.isFunction(callback)){callback.call(this)}})}})(jQuery); // Cookie + Currency + Pulse + Color + Delay jQuery.cookie=function(name,value,options){if(typeof value!="undefined"){options=options||{};if(value===null){value="";options.expires=-1}var expires="";if(options.expires&&(typeof options.expires=="number"||options.expires.toUTCString)){var date;if(typeof options.expires=="number"){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000))}else{date=options.expires}expires="; expires="+date.toUTCString()}var path=options.path?"; path="+(options.path):"";var domain=options.domain?"; domain="+(options.domain):"";var secure=options.secure?"; secure":"";document.cookie=[name,"=",encodeURIComponent(value),expires,path,domain,secure].join("")}else{var cookieValue=null;if(document.cookie&&document.cookie!=""){var cookies=document.cookie.split(";");for(var i=0;i0)?o.runLength*largestArrayLength([o.textColors.length,o.backgroundColors.length,o.borderColors.length,o.opacityRange.length]):false;clearTimeout(recover);if(o.duration){setTimeout(recover,o.duration)}function nudgePulse(textColorIndex,bgColorIndex,borderColorIndex,opacityIndex){if(pulseLimit&&pulseCount===pulseLimit){return $t.recover()}pulseCount++;return $t.animate(getColorsAtIndex(textColorIndex,bgColorIndex,borderColorIndex,opacityIndex),o.speed,function(){nudgePulse(getNextIndex(o.textColors,textColorIndex),getNextIndex(o.backgroundColors,bgColorIndex),getNextIndex(o.borderColors,borderColorIndex),getNextIndex(o.opacityRange,opacityIndex))})}$t.css(getColorsAtIndex(0,0,0,0));nudgePulse(1,1,1,1);function getColorsAtIndex(textColorIndex,bgColorIndex,borderColorIndex,opacityIndex){var params={};if(o.backgroundColors.length){params.backgroundColor=o.backgroundColors[bgColorIndex]}if(o.textColors.length){params.color=o.textColors[textColorIndex]}if(o.borderColors.length){params.borderLeftColor=o.borderColors[borderColorIndex];params.borderRightColor=o.borderColors[borderColorIndex];params.borderTopColor=o.borderColors[borderColorIndex];params.borderBottomColor=o.borderColors[borderColorIndex]}if(o.opacityPulse&&o.opacityRange.length){params.opacity=o.opacityRange[opacityIndex]}return params}function getNextIndex(property,currentIndex){if(property.length>currentIndex+1){return currentIndex+1}else{return 0}}function largestArrayLength(arrayOfArrays){return Math.max.apply(Math,arrayOfArrays)}function recover(){$t.recover()}})}})(jQuery);(function(jQuery){jQuery.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(i,attr){jQuery.fx.step[attr]=function(fx){if(fx.state==0||fx.start.constructor!=Array||fx.end.constructor!=Array){fx.start=getColor(fx.elem,attr);fx.end=getRGB(fx.end)}fx.elem.style[attr]="rgb("+[Math.max(Math.min(parseInt((fx.pos*(fx.end[0]-fx.start[0]))+fx.start[0]),255),0),Math.max(Math.min(parseInt((fx.pos*(fx.end[1]-fx.start[1]))+fx.start[1]),255),0),Math.max(Math.min(parseInt((fx.pos*(fx.end[2]-fx.start[2]))+fx.start[2]),255),0)].join(",")+")"}});function getRGB(color){var result;if(color&&color.constructor==Array&&color.length==3){return color}if(result=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color)){return[parseInt(result[1]),parseInt(result[2]),parseInt(result[3])]}if(result=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color)){return[parseFloat(result[1])*2.55,parseFloat(result[2])*2.55,parseFloat(result[3])*2.55]}if(result=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color)){return[parseInt(result[1],16),parseInt(result[2],16),parseInt(result[3],16)]}if(result=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color)){return[parseInt(result[1]+result[1],16),parseInt(result[2]+result[2],16),parseInt(result[3]+result[3],16)]}if(result=/rgba\(0, 0, 0, 0\)/.exec(color)){return colors.transparent}return colors[jQuery.trim(color).toLowerCase()]}function getColor(elem,attr){var color;do{color=jQuery.curCSS(elem,attr);if(color!=""&&color!="transparent"||jQuery.nodeName(elem,"body")){break}attr="backgroundColor"}while(elem=elem.parentNode);return getRGB(color)}var colors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]}})(jQuery);$.fn.delay=function(time,callback){jQuery.fx.step.delay=function(){};return this.animate({delay:1},time,callback)}; // Expose (function($){$.tools=$.tools||{};$.tools.expose={version:"1.0.5",conf:{maskId:null,loadSpeed:"slow",closeSpeed:"fast",closeOnClick:true,closeOnEsc:true,zIndex:9998,opacity:0.8,color:"#456",api:false}};function viewport(){if($.browser.msie){var d=$(document).height(),w=$(window).height();return[window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,d-w<20?w:d]}return[$(window).width(),$(document).height()]}function Expose(els,conf){var self=this,$self=$(this),mask=null,loaded=false,origIndex=0;$.each(conf,function(name,fn){if($.isFunction(fn)){$self.bind(name,fn)}});$(window).resize(function(){self.fit()});$.extend(this,{getMask:function(){return mask},getExposed:function(){return els},getConf:function(){return conf},isLoaded:function(){return loaded},load:function(e){if(loaded){return self}origIndex=els.eq(0).css("zIndex");if(conf.maskId){mask=$("#"+conf.maskId)}if(!mask||!mask.length){var size=viewport();mask=$("
").css({position:"absolute",top:0,left:0,width:size[0],height:size[1],display:"none",opacity:0,zIndex:conf.zIndex});if(conf.maskId){mask.attr("id",conf.maskId)}$("body").append(mask);var bg=mask.css("backgroundColor");if(!bg||bg=="transparent"||bg=="rgba(0, 0, 0, 0)"){mask.css("backgroundColor",conf.color)}if(conf.closeOnEsc){$(document).bind("keydown.unexpose",function(evt){if(evt.keyCode==27){self.close()}})}if(conf.closeOnClick){mask.bind("click.unexpose",function(e){self.close(e)})}}e=e||$.Event();e.type="onBeforeLoad";$self.trigger(e);if(e.isDefaultPrevented()){return self}$.each(els,function(){var el=$(this);if(!/relative|absolute|fixed/i.test(el.css("position"))){el.css("position","relative")}});els.css({zIndex:Math.max(conf.zIndex+1,origIndex=="auto"?0:origIndex)});var h=mask.height();if(!this.isLoaded()){mask.css({opacity:0,display:"block"}).fadeTo(conf.loadSpeed,conf.opacity,function(){if(mask.height()!=h){mask.css("height",h)}e.type="onLoad";$self.trigger(e)})}loaded=true;return self},close:function(e){if(!loaded){return self}e=e||$.Event();e.type="onBeforeClose";$self.trigger(e);if(e.isDefaultPrevented()){return self}mask.fadeOut(conf.closeSpeed,function(){e.type="onClose";$self.trigger(e);els.css({zIndex:$.browser.msie?origIndex:null})});loaded=false;return self},fit:function(){if(mask){var size=viewport();mask.css({width:size[0],height:size[1]})}},bind:function(name,fn){$self.bind(name,fn);return self},unbind:function(name){$self.unbind(name);return self}});$.each("onBeforeLoad,onLoad,onBeforeClose,onClose".split(","),function(i,ev){self[ev]=function(fn){return self.bind(ev,fn)}})}$.fn.expose=function(conf){var el=this.eq(typeof conf=="number"?conf:0).data("expose");if(el){return el}if(typeof conf=="string"){conf={color:conf}}var globals=$.extend({},$.tools.expose.conf);conf=$.extend(globals,conf);this.each(function(){el=new Expose($(this),conf);$(this).data("expose",el)});return conf.api?el:this}})(jQuery); // jFav (function($){$.fn.jFav=function(d){var e=$.extend({},$.fn.jFav.defaults,d);var f=e.msg;this.each(function(){if(!$(this).attr("href")||$(this).attr("href")=="#"){$(this).attr("href",window.location.href)}if(!$(this).attr("title")){$(this).attr("title",document.title)}if($.browser.opera){$(this).attr("link",$(this).attr("href")).attr("href","").attr("href","javascript:void(0)").attr("onClick",'$.fn.jFav.OperaBookmark(this,"'+$(this).attr("title")+'","'+$(this).attr("link")+'")')}else{$(this).click(addToFavorites)}});function addToFavorites(a){var b=$(this).attr("href");var c=$(this).attr("title");b=b.replace("file:///","http://file/");if($.browser.msie){window.external.AddFavorite(b,c)}else{if($.browser.mozilla){window.sidebar.addPanel(c,b,"")}else{if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){alert(f)}else{if($.browser.safari){alert(f)}}}}a.preventDefault()}return this};$.fn.jFav.defaults={msg:'Нажмите "Ctrl + D" или "CMD + D" на Макинтоше, чтобы уложить эту страницу в Закладки.'};$.fn.jFav.OperaBookmark=function(e,a,b){e.rel="sidebar";e.title=a;e.href="";e.href=b;e.click();return false}})(jQuery); // jQuery fadeToggle plugin jQuery.fn.fadeToggle = function(s, fn){ return (this.is(":visible")) ? this.removeClass("active").fadeOut(s, fn) : this.addClass("active").fadeIn(s, fn); }; // Equal heights http://www.cssnewbie.com/example/equal-heights/ function equalHeight(group){tallest=0;group.each(function(){thisHeight=$(this).height();if(thisHeight>tallest){tallest=thisHeight}});group.height(tallest)}; /* ----------- Операции для всех страниц ----------- */ // Активирую CSS-стили при выключенном Javascript $("body").removeClass("noJS"); // Убираю подчеркивание у ссылок, опирающихся на изображения $('a:has(img)').css("border", "0"); // jFav init $('Уложить в закладки').prependTo($("#ft div:last p")).jFav(); // Поведение ссылок $('a:not("#add2favorites")').live('click', function(e) { if ( e.button != 0 ) return true; // middle-right clicking (Firefox + JQuery.live.click issue) // if ($(this).attr("id") == "add2favorites") { $("#add2favorites").jFav(); } var url = this.href; var domain = this.hostname; // Убираю outline (разницу можно посмотреть, например, в IE) $(this).blur(); // Не даю кликать по ссылке, ссылающейся на себя и на shadowbox if ((document.location.href == url) || ($(this).attr('rel').indexOf("shadowbox") != -1)) {return false;} if ($(this).attr('rel')=='popup') { var width = 750; var height = 565; var left = (screen.width - width)/2; var top = (screen.height - height)/2; var params = 'width='+width+', height='+height; params += ', top='+top+', left='+left; params += ', directories=0'; params += ', location=1'; params += ', menubar=0'; params += ', resizable=1'; params += ', scrollbars=1'; params += ', status=0'; params += ', toolbar=0'; newwindow=window.open(this.href, 'Popup', params); return false; }; // Убираю рефёрер у линков с маркером rel=external и добавляю им открытие в новом окне if ($(this).attr('rel')=='external') { $(this).attr('href', 'http://www.z2g.org/?' + this.href).attr('target', '_blank'); } // (Браузерам, кроме IE) Плавно гасить страницу при клике на ссылки без якорей, внешних переходов, popup, dl if (!jQuery.browser.msie) { if ( !url.match('#') && domain.match(location.hostname) && $(this).attr('rel') != 'popup' && $(this).attr('rel') != 'dl' ) { $('#bd').fadeTo(300, 0.3, function(){document.location.href = url;}); return false; } } // Отслеживание скачиваний PDF файлов через Google Analytics if ($(this).attr('rel').indexOf("dl") != -1) {pageTracker._trackPageview('/dl/'+ $(this).attr('href'));} }); // Плавно заполняю цветом подчеркивая пунктов основного меню $('#menu a').hover( // Over function() { if ($(this).parent().get(0).className == 'current') {$(this).css("cursor", "default"); return false;} else { $(this).animate({ borderBottomColor: "#9f9f9f" }, 'normal');}}, // Out function() { if ($(this).parent().get(0).className == 'current') {return false;} else { $(this).animate({ borderBottomColor: "#dfdfdf" }, 'normal');}} ); // Expose на форме поиска - всем браузерам, кроме IE7 - http://flowplayer.org/tools/using.html if (navigator.appVersion.indexOf("MSIE 7.")!=-1) { } else { var api = $("#cse-search-box").expose({ maskId: 'cse-search-mask', opacity: 0.5, api: true }); $("#cse-search-box input[type=text]").focus(function(){ api.load(); }).blur(function(){api.close();}); }; /* ----------- id=home ----------- */ if ($("body#home").length) { // Дата - словами $.ajaxSetup({async: false}); $.getScript('/inc/js/jquery.timeago.min.js', function() { $('abbr.timeago').timeago(); }); $.ajaxSetup({async: true}); // Аудио-приветствие $.getScript('http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js', function() { var flashvars = {}; var params = {}; params.quality = "high"; params.bgcolor = "#ffffff"; params.menu = "false"; params.allowfullscreen = "false"; params.wmode = "opaque"; var attributes = {}; swfobject.embedSWF("audioplay.swf?playerid=1", "hello", "48", "48", "9.0.0", "expressInstall.swf", flashvars, params, attributes); }); } /* ----------- Услуги --------- */ if ($("body.services").length) { /* Vars */ var serviceNav = $("#service-nav"); // Вставляю в страницу блок с ценой и модификаторами $.ajaxSetup({async: false}); $.get('/inc/html/servicepricemod.js.inc',function(data){ $(data).insertAfter(serviceNav); }); $.ajaxSetup({async: true}); var servicePrice = $("#service-price"); var serviceMod = $("#service-mod"); var serviceBG = $("#service-bg"); var serviceLink = $("#service-link"); $("> li", serviceNav) .find("div").hide().end() // Скрываем неотформатированную информацию по услугам .filter(":not(:first)").find("ul").hide().end().end() .filter(":eq(0)").addClass("current").end() // Выделяем первую услугу .filter(":last").addClass("border-bottom").end() // Подводим черту под последней услугой .each(function(i,n) { // Populate #service-bg $("
  • ").appendTo("#service-bg"); $(this).addClass("slide_"+i); }) .find("div:eq(1)").each(function() { // Populate #service-link $("
  • "+$(this).html()+"
  • ").addClass($(this).clone().attr("class")).appendTo(serviceLink); }).end(); // !!! - Проверить на кэширование. Лучше, чтобы кэшировалось. $.getScript('/inc/js/jquery.innerfade.min.js', function() { /* Мягкая смена изображений, привязанных к услугам */ serviceBG.innerfade({ speed: 1000, timeout: 5000, type: 'sequence', containerheight: '350px', slide_timer_on: 'no', slide_ui_parent: 'service-bg', slide_ui_text: 'service-link', pause_button_id: 'null', slide_nav_id: 'service-nav' }); $.setOptionsButtonEvent(); }); if (navigator.appVersion.indexOf("MSIE 7.")!=-1) { } // В IE7 (возможно, и более ранних версиях, размер файла через мой AJAX не выводится) else { /* Get file size of a[href $='.zip'] */ $("a[rel*='dl']", serviceLink).each(function() { var currentLink = $(this); $.get('/inc/size.php', {'file':currentLink.attr('href')}, function(data){ currentLink.parent().prepend("" + data + " "); }); }); } var modIntro = function(){ var rels = $("li.current div:eq(0)", serviceNav).attr("rel"); if (rels != null) { // Подчеркнём цену, если её можно модифицировать $("#rub", servicePrice).addClass("dashed").attr("title","Подробнее о цене"); // Отобразим моды, если они были скрыты НЕ-пользователем в связи с отсутствием rel if (serviceMod.hasClass("active") && serviceMod.is(":hidden")) {serviceMod.fadeIn(1000);} // Отобразим моды, актуальные только для данной услуги var relsArray = rels.split(" "); $("div", serviceMod).removeClass(); jQuery.each(relsArray, function() {$("label[for=mod-"+ this +"]", serviceMod).parent().addClass("shown");}); if (serviceMod.is(":visible")) {serviceMod.find("div.shown").fadeIn().end().find("div:not(.shown)").fadeOut();} else {serviceMod.find("div.shown").show().end().find("div:not(.shown)").hide();} // Сброс селектов в модах при переключении услуги $("select", serviceMod).attr("selectedIndex", "0").change(); } else { $("#rub", servicePrice).removeClass("dashed"); serviceMod.fadeOut(); }; // Скроем моды, если услуга без rel }; var priceIntro = function () { // Цена услуги (по умолчанию) var priceOriginal = parseInt($.trim($("li.current div:eq(0)", serviceNav).html().replace(/[^\d]/gi, ''))); if (isNaN(priceOriginal) || priceOriginal <= 0) {servicePrice.fadeOut(1000);} else { // Глобальная наценка var changedG = $("#mod-time").val()/100; // Всем изменённым селекторам присвоим класс changed (или же уберём его, если селектор возвращён в состояние по умолчанию) $("select", serviceMod).each(function() { if ($(this).attr("selectedIndex") !== 0) { $(this).addClass("changed").parent().addClass("asterisk"); // Добавим индикатор (мигающую точку) рядом с изменёнными селекторами } else { $(this).removeClass("changed").parent().removeClass("asterisk"); } }); // Построить array из селектов с классом changed, кроме мод-тайма (он считается отдельно, будучи глобальным) var changedArray = [0]; $("select", serviceMod).not("#mod-time").filter(".changed").each(function() { changedArray.push($(this).val());}); // Сумма локальных наценок var localChanges = eval(changedArray.join('+')) / 100 ; // Проценты // Считаем var priceLocal = priceOriginal + (priceOriginal * localChanges); var priceG = Math.round(priceLocal + (priceLocal * changedG)); // alert("Глобальная наценка: "+changedG); // alert("Локальная наценка: "+localChanges); // alert("Итог с учетом только локальных наценок: "+priceLocal); // alert("Последний итог (с глобальной наценкой): "+priceG); // Выводим $('span', servicePrice) .html(priceG) .filter(":eq(1)").convertCurrency().next().convertCurrency().end().end() .parent().fadeIn(); // Глобальный индикатор - мигание изменённой цены $('#rub', servicePrice).recover(); if ($("select", serviceMod).is(".changed")) { $('#rub', servicePrice).pulse({ textColors: ['#000000','#777777'], speed: 500 }); } } } var serviceLinkIntro = function () { // Скроем #service-link, если он пустой и покажем, если не пустой return $("li.current div:eq(1)", serviceNav).is(":empty") ? serviceLink.slideUp(1000) : serviceLink.slideDown(1000); } modIntro(); priceIntro(); serviceLinkIntro(); /* Переключение услуг при клике */ $("> li", serviceNav).live('click', function(e){ if ($(this).hasClass("current")) { return true; } else { if ( e.button != 0 ) return true; // exit if middle-right clicking (Firefox + JQuery live.click issue) $("li.current", serviceNav).find("ul:visible").slideUp(1000).end().removeClass("current"); $(this) .find("h4").animate({backgroundColor: "#f5f5f5"}, 500).end() .addClass("current") .siblings("li:not(.current)").find("h4").animate({backgroundColor: "#fff"}, 500).end().end() .find("ul").slideDown(1000); modIntro(); priceIntro(); serviceLinkIntro(); } return false; }); // Открыть/скрыть модификатор цены при клике $('#rub.dashed', servicePrice).live('click', function(){ serviceMod.fadeToggle(); return false; }); // Менять цену по изменениям модификаторов-селектов $("select", serviceMod).change(function () { priceIntro(); }); } /* ----------- id=contacts ----------- */ if ($("body#contacts").length) { // Вывожу текущее время относительно рабочих часов var weekday = $("#schedule").attr("class"); var weekdaypos = -20; for (i=1; i <= weekday; i++) {weekdaypos=weekdaypos+29.85;} $("#date-now").css({"margin-left": weekdaypos + "px", "padding-bottom": "2px", "background": "url(/i/icons/schedule.png) 1px 100% no-repeat"}); // Выравниваю высоту слоёв с классом eqheight equalHeight($("div.eqheight")); } /* ----------- id=contactform ----------- */ if ($("body#contactform").length) { var said = $("textarea#said").val(""); var signature = $("textarea#signature").val(""); var templates = $('#templates ul'); var formlog = $("").insertAfter("input[type=submit]"); var a, b; $(said).focus(); $(templates).hide(); $('#saidCharCount').html("0 … 600"); $('#signatureCharCount').html("0 … 300"); $('#templates p').css("cursor", "pointer").click(function(){ $(templates).slideToggle(); $(this).blur(); return false; }); $('#templates a').click(function(){ switch ($("#templates a").index(this)) { case 0 : // Не могу дозвониться a = "Не могу найти Вас по телефону.\nПожалуйста, свяжитесь со мной, как получите это сообщение.\n"; b = "Андрей Кирсанов\n+749969050**\nжелательно сегодня до обеда\n"; break; case 1 : // Не хватает услуги a = "Я внимательно изучила прейскурант, однако требуемой мне услуги не обнаружила. Возможно ли её оказать? Речь идёт о…\n"; b = "Марина\n310988*\n(доб. 12)\n"; break; case 2 : // Ошибка на сайте a = "На странице о рабочем процессе заметил отсутствие запятой, из-за чего текст допускает разночтения. Думаю, стоит исправить.\n"; b = "Дима\nkurator@club4x4****.ru\nаська 38239***\n"; break; case 3 : // Пустой a = ""; b = ""; break; } // Если оба поля пусты, if (!$(said).val().length && !$(signature).val().length) { // заполнить их текстом из шаблона, $(said).val(a); $(signature).val(b); } else { // иначе уведомить, что вставка повлечёт удаление раннее введённой информации. var answer = confirm('Текст шаблона заменит уже введённые данные. Продолжить?'); // Если пользователь согласен, заменяю его данные на шаблонные, if (answer){ $(said).val(a); $(signature).val(b); } else { // иначе оставляю всё как есть. } } $(this).blur(); $(signature).blur(); // Для срабатывания подсчета символов $(said).focus(); return false; }); // Считаю символы в textarea, пульсация http://enhance.qd-creative.co.uk/demos/pulse/ $(said).bind('keyup blur focus click change paste mouseover', function() { var charLength = $(this).val().length; $('#saidCharCount').html(charLength + ' … 600'); if($(this).val().length > 600) {$('#saidCharCount').css("color", "#000");} else {$('#saidCharCount').css("color", "#999");} }); // Считаю символы в textarea2 $(signature).bind('keyup blur focus click change paste mouseover', function() { var charLength2 = $(this).val().length; $('#signatureCharCount').html(charLength2 + ' … 300'); if($(this).val().length > 300) {$('#signatureCharCount').css("color", "#000");} else {$('#signatureCharCount').css("color", "#999");} }); // Валидация формы $("form#feedback").validate({ rules: { said: {required: true, rangelength: [1, 600]}, signature: {required: true, rangelength: [1, 300]} }, showErrors: function(errorMap, errorList) { if (this.numberOfInvalids() == 1) {$(formlog).hide().html("Ошибка. Пожалуйста, поправьте содержание одного поля.").fadeIn();} else {$(formlog).hide().html("Ошибка. Пожалуйста, поправьте содержание обоих полей.").fadeIn();} this.defaultShowErrors(); }, highlight: function(element, errorClass) { $(element).pulse({ backgroundColors: ['#f9f9f9','#e9e9e9'], speed: 500, duration: 2000 }); }, unhighlight: function(element, errorClass) { $(element).parent().find("p#" + element.id + "CharCount").recover(); }, errorClass: "hidden", onfocusout: false, onkeyup: false, onclick: false, // focusInvalid: false, submitHandler: function() { //Скрыть предыдущий лог операций с формой $(formlog).hide(); // Блокирую кнопку отправки от повторного нажатия $("input[type=submit], textarea").attr("disabled", "disabled"); // Справа вывожу спиннер $("").insertAfter("input[type=submit]", this); // Отправляю данные на сервер var dataString = '&said='+ said.val() + '&signature='+ signature.val(); $.ajax({ type: "POST", url: "/inc/mailer-feedback.php", data: dataString, // data: $(this).serialize(), в августе 2009 перестала работать, бэкап за июнь тоже отправляет пустое на этой функции success: function(results) { // Если соединение с серверов установленно // Убрать спиннер $("#spinner").hide(); // Вернуть всё в прежнее состояние $("input[type=submit], textarea").attr('disabled', ''); // Вывести вернувшееся сообщение $("#bd") .html(results) .css("margin-top", "20%") .fadeIn(); // Меняю заголовок окна document.title = 'Ваше письмо для Александра Сергеева отправлено'; }, error: function() { // Если случилась ошибка соединения // Убрать спиннер $("#spinner").hide(); // Вывести сообщение об ошибке $(formlog) .html("Ошибка соединения. Попробуйте ещё раз.") .fadeIn(); // С небольшой задержкой включить кнопку для возможности повторной отправки $("textarea").attr('disabled', ''); setTimeout(function(){$("input[type=submit]").attr('disabled', '');}, 1250); } }); return false; } }); } /* ----------- TEMP ----------- */ // Поддержка браузеров http://think2loud.com/build-an-unsupported-browser-warning-with-jquery/ function getBadBrowser(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "="); if (c_start!=-1) { c_start=c_start + c_name.length+1; c_end=document.cookie.indexOf(";",c_start); if (c_end==-1) c_end=document.cookie.length; return unescape(document.cookie.substring(c_start,c_end)); } } return ""; } function setBadBrowser(c_name,value,expiredays) { var exdate=new Date(); exdate.setDate(exdate.getDate()+expiredays); document.cookie=c_name+ "=" +escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()); } function badBrowser(){ if($.browser.msie){ // IE stuff if(Object.prototype.toString.call(self.JSON) === "[object JSON]"){ // IE8 stuff return false; } else { // IE < 8 stuff return true; } } } if(badBrowser() && getBadBrowser('browserWarning') != 'seen' ){ $(function(){ $("
    Обновите Internet Explorer — или присоединяйтесь к современникам, использующим Firefox, Opera и Chrome.   [свернуть]
    ") .css({ backgroundColor: '#fcfdde', 'width': '100%', 'border-bottom': 'solid 1px #000', 'text-align': 'center', 'position': 'absolute', 'top': '0', 'left': '0', 'margin': 'auto', padding:'5px 0px 5px 0px' }) .hide().prependTo("body").slideDown(); $('#warningClose').click(function(){ setBadBrowser('browserWarning','seen'); $('#browserWarning').slideUp('slow'); return false; }); }); } /* ----------- Обязательно последним ----------- */ if( $.browser.opera ){ // Фикс переписать при возможности $(window).unload( function () { $("#bd").css("opacity","1"); }); } // http://www.filamentgroup.com/lab/update_automatically_preload_images_from_css_with_jquery/ jQuery.preloadCssImages=function(settings){settings=jQuery.extend({statusTextEl:null,statusBarEl:null,errorDelay:999,simultaneousCacheLoading:2},settings);var allImgs=[],loaded=0,imgUrls=[],thisSheetRules,errorTimer;function onImgComplete(){clearTimeout(errorTimer);if(imgUrls&&imgUrls.length&&imgUrls[loaded]){loaded++;if(settings.statusTextEl){var nowloading=(imgUrls[loaded])?"Now Loading: "+imgUrls[loaded].split("/")[imgUrls[loaded].split("/").length-1]:"Loading complete";jQuery(settings.statusTextEl).html(''+loaded+' of '+imgUrls.length+' loaded ('+(loaded/imgUrls.length*100).toFixed(0)+'%) '+nowloading+"")}if(settings.statusBarEl){var barWidth=jQuery(settings.statusBarEl).width();jQuery(settings.statusBarEl).css("background-position",-(barWidth-(barWidth*loaded/imgUrls.length).toFixed(0))+"px 50%")}loadImgs()}}function loadImgs(){if(imgUrls&&imgUrls.length&&imgUrls[loaded]){var img=new Image();img.src=imgUrls[loaded];if(!img.complete){jQuery(img).bind("error load onreadystatechange",onImgComplete)}else{onImgComplete()}errorTimer=setTimeout(onImgComplete,settings.errorDelay)}}function parseCSS(sheets,urls){var w3cImport=false,imported=[],importedSrc=[],baseURL;var sheetIndex=sheets.length;while(sheetIndex--){var cssPile="";if(urls&&urls[sheetIndex]){baseURL=urls[sheetIndex]}else{var csshref=(sheets[sheetIndex].href)?sheets[sheetIndex].href:"window.location.href";var baseURLarr=csshref.split("/");baseURLarr.pop();baseURL=baseURLarr.join("/");if(baseURL){baseURL+="/"}}if(sheets[sheetIndex].cssRules||sheets[sheetIndex].rules){thisSheetRules=(sheets[sheetIndex].cssRules)?sheets[sheetIndex].cssRules:sheets[sheetIndex].rules;var ruleIndex=thisSheetRules.length;while(ruleIndex--){if(thisSheetRules[ruleIndex].style&&thisSheetRules[ruleIndex].style.cssText){var text=thisSheetRules[ruleIndex].style.cssText;if(text.toLowerCase().indexOf("url")!=-1){cssPile+=text}}else{if(thisSheetRules[ruleIndex].styleSheet){imported.push(thisSheetRules[ruleIndex].styleSheet);w3cImport=true}}}}var tmpImage=cssPile.match(/[^\("]+\.(gif|jpg|jpeg|png)/g);if(tmpImage){var i=tmpImage.length;while(i--){var imgSrc=(tmpImage[i].charAt(0)=="/"||tmpImage[i].match("://"))?tmpImage[i]:baseURL+tmpImage[i];if(jQuery.inArray(imgSrc,imgUrls)==-1){imgUrls.push(imgSrc)}}}if(!w3cImport&&sheets[sheetIndex].imports&&sheets[sheetIndex].imports.length){for(var iImport=0,importLen=sheets[sheetIndex].imports.length;iImport