$.fn.bindLink = function(){ $('tbody a', this).each(function(i){ var url = this.href; $(this).parent().parent().add(' > td').click(function(event){ window.location = url; return false; }); }); return this; } $.fn.initFancyBox = function(){ var conteiner = $(this); var images = $('a[href]:has(img)', conteiner); images.each(function(i) { var a = $(this); if(a.attr('rel') == undefined || a.attr('rel') == 'nofollow') { a.attr('rel', 'js_group_1'); a.attr('title', a.parent().parent().next().find('p, strong').text() || a.text()); } }); images.add('div.art div.picstore a').fancybox({ 'transitionIn' : 'none', 'transitionOut' : 'none', 'titlePosition' : 'over', }); } $.fn.initSearchForm = function(){ var form = $(this); form.submit(function(){ $('input[value=""],select:has(option:selected[value=""]),input[type="checkbox"]:not(:checked)').attr('disabled','disabled'); }); $('div.full-search a', form).click(function(){ $('div', form).slideDown(); $(this).slideUp(); return false; }); $('select[name="filter[mark]"]',form).selectMarkNew(false, $('select[name="filter[model]"]',form)); $('select[name="filter[mark]"] option:selected').loadModels($('select[name="filter[model]"]',form)); $('select[name="filter[area_id]"]',form).selectMicroarea(false, $('select[name="filter[microarea_id]"]',form)); $('select[name="filter[city_id]"]',form).selectArea(false, $('select[name="filter[area_id]"]',form)); } $.fn.initSearchFormNew = function(){ var form = $(this); form.submit(function(){ $('input[value=""],select:has(option:selected[value=""]),input[type="checkbox"]:not(:checked)').attr('disabled','disabled'); }); $('div.full-search a', form).click(function(){ $('div', form).slideDown(); $(this).slideUp(); return false; }); $('select[name="filter[mark]"]',form).selectMarkNew(false, $('select[name="filter[model]"]',form)); $('select[name="filter[mark]"] option:selected').loadModels($('select[name="filter[model]"]',form)); $('select[name="filter[city_id]"]',form).selectArea(false, $('select[name="filter[area_id]"]',form)); // $('select[name="filter[model]"]',form).selectBodyNew(false, $('select[name="filter[body]"]',form)); } $.fn.initSearchFormDealers = function(){ var form = $(this); form.submit(function(){ $('input[value=""],select:has(option:selected[value=""]),input[type="checkbox"]:not(:checked)').attr('disabled','disabled'); }); $('div.full-search a', form).click(function(){ $('div', form).slideDown(); $(this).slideUp(); return false; }); $('select[name="filter[mark]"]',form).selectMarkDealers(false, $('select[name="filter[model]"]',form)); $('select[name="mark"]',form).selectMarkDealers('all', $('select[name="model"]',form)); $('select[name="filter[mark]"] option:selected').loadModelsDealers($('select[name="filter[model]"]',form)); } $.fn.initAddForm = function(){ var form = $(this); try{ $('select[name="mark"]',form).selectMark('all', $('select[name="model"]')); $('select[name="area_id"]',form).selectMicroarea(false, $('select[name="microarea_id"]',form)); } catch(e) {} $('a[href*="/complain/delete/"]',form).bind('click', function(){ var a = $(this); if(confirm('Удалить безвозвратно?')){ $.ajax({ url: a.attr('href'), success: function(json){ a.parent().parent().slideUp().remove(); } }); } return false; }); $('div.images',form).initImg(); $('input.nums,input.cost,input.litres',form).allowNums(); $('input.decmal,input.cubsm',form).allowDecmal(); $('select[name=displacement_extent]').change(function(){ switch ($(this).val()) { case '1': $('input[name=displacement]').attr('class','litres').val(''); $('input.litres',form).allowNums(); break; case '2': $('input[name=displacement]').attr('class','cubsm').val(''); $('input.cubsm',form).allowDecmal(); break; default: $('input[name=displacement]').attr('class','litres').val(''); $('input.litres',form).allowNums(); break; } }); $('input[type=checkbox][name$=_nf]',form).change(function(){ var chbx = $(this); $(this).parents('div:has( > label)').removeClass('error').find('span').slideUp().text(''); $('input,select,textarea', chbx.parent()).not(chbx).attr('disabled', chbx.is(':checked')?'disabled':''); }); $('p.rules_chk input',form).change(function(){ if(!$('p.rules_chk input:not(:checked)').length){ $('input.submit').removeAttr('disabled'); } else { $('input.submit').attr('disabled','disabled'); } }) form.dblclick(function(){return false;}); form.submit(function(){ if(form.initCheck()){ $('input[type=submit]',form).disabled(); return true; } else { $('.layers ul li:eq(0)').click(); return false; } }); } $.fn.initImg = function(){ var container = $(this); var _cover = $('a[href*="/cover/"]', container); var _delete = $('a[href*="/image/delete/"]', container); _cover.click(function(){ var a = $(this); if(confirm('Сделать обложкой?')){ $.ajax({ url: a.attr('href'), success: function(json){ a.addClass('cover'); _cover.not(a).removeClass('cover'); } }); } return false; }); _delete.click(function(){ var a = $(this); if(confirm('Удалить фото?')){ $.ajax({ url: a.attr('href'), success: function(json){ a.parent().slideUp(); } }); } return false; }); } $.fn.initCheck = function(){ var form = $(this); var check_required = $('label > b',form).parent().parent().find('select,input,textarea').not(':not([name=model]):disabled').checkRequired(function(input){ return (input.val() == '' && !(input.is('[name^="seller_phone"]') || input.is('[name^="phone"]') || input.is('[type="file"]') || input.is('[name="price"]'))) || (input.is('select') && input.val() == 0) || (input.is('[type="text"]') && $('input[name="' + input.attr('name') + '_nf"]').is(':checked')) || (input.is('[name^="seller_phone"]') && $('input[name^="seller_phone"][value!=""]').length == 0) || (input.is('[name^="phone"]') && $('input[name^="phone"][value!=""]').length == 0) || (input.is('[type="file"]') && $('input[name="' + input.attr('name') + '"][value!=""]').length == 0) || (input.is('[name="price"]') && input.val() == '' && $('input[name="price_chaffer"]').is(':not(:checked)')); }); var check_format = $('input[type=text]',form).checkFormat(function(input){ return (input.is('.decmal') && input.val() != '' && !(/^\d+((\.|,)\d+)?$/.test(input.val()))) || (input.is('.nums') && input.val() != '' && !(/^[\d\s]+$/.test(input.val()))) || (input.is('.email') && input.val() != '' && !(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(input.val()))) || (input.is('.litres') && input.val() != '' && !(/^\d{1,2}((\.|,)\d+)?$/.test(input.val()))) || (input.is('.cubsm') && input.val() != '' && !(/^[0-9]{3,5}$/.test(input.val()))) || (input.is('.cost') && input.val() != '' && $('[name=price_id]').val() == '1' && !(/^[0-9]{5,}$/.test(input.val()))) }, { 'email': 'Введите E-mail в формате name@domen.ru', 'decmal': 'Введите число', 'nums': 'Введите целое число', 'litres': 'Введите число в формате 0.00', 'cubsm': 'Введите целое число, минимум три знака', 'cost': 'Введите целое число, минимум пять знаков' }); return (check_required && check_format); } $.fn.loadModels = function(model_list){ mark = $(this).attr("value"); if(model_list == undefined) model_list = $('select[name="filter[model]"]'); if(mark!='Выберите марку'&&mark!=''&&mark!='undefined'){ if($.browser.msie) mark = encodeURI(mark); $.ajax({ url: '/ob/auto/' + mark + '/', beforeSend: function(x) { if(x && x.overrideMimeType) { x.overrideMimeType("application/j-son;charset=UTF-8"); } }, error: function(xhr, textStatus){ if(textStatus == 'parsererror') { try { var args = eval('(' + xhr.responseText + ')'); this.success(args); } catch (e) {} } else { model_list.html(''); model_list.attr('disabled','disabled'); } }, success: function(json){ model_list.html(""); $('').appendTo(model_list); $.each(json.list, function(i,val) { if(val.name == 'model'){ $('').appendTo(model_list); model_list.next().html(model); } else { $('').appendTo(model_list); } }); model_list.removeAttr('disabled'); } }); } } $.fn.loadModelsDealers = function(model_list){ mark = $(this).attr("value"); if(model_list == undefined) model_list = $('select[name="filter[model]"]'); if(mark!='Выберите марку'&&mark!=''&&mark!='undefined'){ if($.browser.msie) mark = encodeURI(mark); $.ajax({ url: '/dealers/auto/modelList/' + mark, beforeSend: function(x) { if(x && x.overrideMimeType) { x.overrideMimeType("application/j-son;charset=UTF-8"); } }, error: function(xhr, textStatus){ if(textStatus == 'parsererror') { try { var args = eval('(' + xhr.responseText + ')'); this.success(args); } catch (e) {} } else { model_list.html(''); model_list.attr('disabled','disabled'); } }, success: function(json){ model_list.html(""); $('').appendTo(model_list); $.each(json.list, function(i,val) { if(val.name == 'model'){ $('').appendTo(model_list); model_list.next().html(model); } else { $('').appendTo(model_list); } }); model_list.removeAttr('disabled'); } }); } } $.fn.selectMarkNew = function(param, model_list){ $(this).change(function(){ var mark = $(this).attr('value'); if(model_list == undefined) model_list = $('select[name=model]'); //model_list.arrt('disabled','disabled').html(''); if($.browser.msie) mark = encodeURI(mark); $.ajax({ url: '/ob/auto/' + mark + '/?' + param, beforeSend: function(x) { if(x && x.overrideMimeType) { x.overrideMimeType("application/j-son;charset=UTF-8"); } }, error: function(xhr, textStatus){ if(textStatus == 'parsererror') { try { var args = eval('(' + xhr.responseText + ')'); this.success(args); } catch (e) {} } else { model_list.html(''); model_list.attr('disabled','disabled'); } }, success: function(json){ model_list.html(""); //var sFirst = " selected='selected' "; $('').appendTo(model_list); $.each(json.list, function(i,val) { $('').appendTo(model_list); //sFirst = ""; }); model_list.removeAttr('disabled'); } }); return false; }); // form.submit(function(){ // // return false; // }); return this; } $.fn.selectMarkDealers = function(param, model_list){ $(this).change(function(){ var mark = $(this).attr('value'); if(model_list == undefined) model_list = $('select[name=model]'); //model_list.arrt('disabled','disabled').html(''); if($.browser.msie) mark = encodeURI(mark); $.ajax({ url: '/dealers/auto/modelList/' + mark + '/?' + param, beforeSend: function(x) { if(x && x.overrideMimeType) { x.overrideMimeType("application/j-son;charset=UTF-8"); } }, error: function(xhr, textStatus){ if(textStatus == 'parsererror') { try { var args = eval('(' + xhr.responseText + ')'); this.success(args); } catch (e) {} } else { model_list.html(''); model_list.attr('disabled','disabled'); } }, success: function(json){ model_list.html(""); //var sFirst = " selected='selected' "; $('').appendTo(model_list); $.each(json.list, function(i,val) { $('').appendTo(model_list); //sFirst = ""; }); model_list.removeAttr('disabled'); } }); return false; }); // form.submit(function(){ // // return false; // }); return this; } $.fn.selectBodyNew = function(param, model_list){ $(this).change(function(){ var model = $(this).attr('value'); if(model_list == undefined) model_list = $('select[name=body]'); //model_list.arrt('disabled','disabled').html(''); if($.browser.msie) model = encodeURI(model); $.ajax({ url: '/dealers/auto/body/' + model + '/?' + param, beforeSend: function(x) { if(x && x.overrideMimeType) { x.overrideMimeType("application/j-son;charset=UTF-8"); } }, error: function(xhr, textStatus){ if(textStatus == 'parsererror') { try { var args = eval('(' + xhr.responseText + ')'); this.success(args); } catch (e) {} } else { model_list.html(''); model_list.attr('disabled','disabled'); } }, success: function(json){ model_list.html(''); $.each(json.list, function(i,val) { $('').appendTo(model_list); }); model_list.removeAttr('disabled'); } }); return false; }); // form.submit(function(){ // // return false; // }); return this; } $.fn.selectArea = function(param, area_list){ $(this).change(function(){ var city_id = $(this).attr('value'); if(area_list == undefined) area_list = $('select[name=filter[area_id]]'); if(city_id!==28){ area_list.attr('disabled','disabled'); } if(city_id==28){ area_list.removeAttr('disabled'); } /* if($.browser.msie) city_id = encodeURI(city_id); $.ajax({ url: '/ob/garage/area/' + city_id + '/?' + param, beforeSend: function(x) { if(x && x.overrideMimeType) { x.overrideMimeType("application/j-son;charset=UTF-8"); } }, error: function(xhr, textStatus){ if(textStatus == 'parsererror') { try { var args = eval('(' + xhr.responseText + ')'); this.success(args); } catch (e) {} } else { area_list.html(''); area_list.attr('disabled','disabled'); } }, success: function(json){ area_list.html(''); $.each(json.list, function(i,val) { $('').appendTo(area_list); }); area_list.removeAttr('disabled'); } }); */ return false; }); return this; } $.fn.selectMicroarea = function(param, microarea_list){ $(this).change(function(){ var area_id = $(this).attr('value'); if(microarea_list == undefined) microarea_list = $('select[name=filter[microarea]]'); //model_list.arrt('disabled','disabled').html(''); if($.browser.msie) area_id = encodeURI(area_id); $.ajax({ url: '/ob/garage/area/' + area_id + '/?' + param, beforeSend: function(x) { if(x && x.overrideMimeType) { x.overrideMimeType("application/j-son;charset=UTF-8"); } }, error: function(xhr, textStatus){ if(textStatus == 'parsererror') { try { var args = eval('(' + xhr.responseText + ')'); this.success(args); } catch (e) {} } else { microarea_list.html(''); microarea_list.attr('disabled','disabled'); } }, success: function(json){ microarea_list.html(''); $.each(json.list, function(i,val) { $('').appendTo(microarea_list); }); microarea_list.removeAttr('disabled'); } }); return false; }); // form.submit(function(){ // // return false; // }); return this; } var popup_complain = $('#popup-ob-complain').Popup(); $.fn.initComplain = function(){ $(this).bind('click',function(){ popup_complain.Popup('show',{ title:'Связаться с администрацией', content: $(this).next('div').html() }); var form = $('#popup-ob-complain form'); $('input.nums',form).allowNums(); $('img[src*=kcaptcha]', form).UpdateCatcha(); form.initComplainSubmit(); }); return this; }; $.fn.initComplainSubmit = function(){ var form = $(this); form.dblclick(function(){return false;}); //form.live('submit', function(){ form.submit(function(){ $.ajax({ type: "post", url: form.attr("action"), data: form.serialize(), beforeSend: function(XMLHttpRequest){ form.lockForm(true); }, complete: function(XMLHttpRequest, Status){ form.lockForm(false); }, success: function(json){ form.showErrors(json.errors); if(json.response == 'success'){ form.clearForm(); $('#popup-ob-complain').Popup('hide'); } else if(json.response == 'error') { //alert(json.message); //заглушка } form.lockForm(false); } }); return false; }); return this; }; (function($){ $.fn.smsCost = function(method){ var $this = this; var settings = { popup: $('#popup-smscost').Popup(), popup_qrcode: $('#popup-qrcode').Popup(), url: '/sms/cost/' } var tmp; $.get(settings.url, function(data){ tmp = $(data); return tmp; }, 'html'); var methods = { init: function(options){ if(options){$.extend(settings, options);} $('> div', $this).each(function(i) { //alert(tmp); var div = $(this); var number = $('.number',div).text(); methods.showCostMax(number, $('.cost',div),tmp); $('.costlist',div).click(function(){ methods.showCostList(number,tmp); return false; }); $('.qrcode',div).click(function(){ methods.showQRcode(number, $('.code',div).text()); return false; }); }); $('#qr-code').live('click', function(){ var text = '
Для того чтобы не набирать SMS сообщение вручную, можно воспользоваться программой распознавания QR-кодов. Если в вашем телефоне есть такая программа, просто запустите ее и наведите камеру своего телефона на QR-код. Программа распознает его, и вы получите готовое к отправке SMS сообщение.
'; text += 'Если в вашем телефоне нет программы распознавания QR-кодов, вы можете установить её.
'; text += ''; settings.popup_qrcode.Popup('show',{ title: 'Что такое QR-код', content: text }); return false; }); return $this; }, showCostMax: function (number, el){ $.get(settings.url/* + number*/, function(data){ var temp = $(data); var table = $('a[name="'+number+'"]', temp).parent().next().next(); var cost = 0; var num_cost = 0; var new_cost = 0; $('tr', table).each(function(i){ if($('td:eq(0)',$(this)).text() != 'UTEL' && $('th:eq(0)',$(this)).text() != 'Оператор'){ new_cost = parseFloat($('td:eq(2)',$(this)).text()); cost += new_cost; //cost = new_cost > cost ? new_cost : cost; num_cost++; } }); cost=cost/num_cost; el.text(cost.toFixed(2) + ' руб.'); }, 'html'); }, showCostList: function (number, tmp){ // $.get(settings.url/* + number*/, function(data){ //var tmp = $(data); /*$(tmp).append('
\n\
\n\
Как этим пользоваться?\n\