$(document).ready(function () { basket_form_refresh(); }); //Показываем корзину function show_basket() { $.get("/ajax/shop.php", { act : 'show_basket' }, function(data) { $('#shop_basket_main_cont').show("slow").html(data); scroll_inicialisation(); check_form_add_order('basket_form_add_order'); //alert(data); }); } //Закрываем и сохраняем данные корзины function hide_basket() { $('#shop_basket_main_cont').hide("slow"); $('#shop_basket_main_cont').html(''); } //Добавляем в корзину function add_basket(id) { $.get("/ajax/shop.php", { act : 'add_basket', id : id }, function(data) { set_addbasket_button(id); basket_form_refresh(); }); } //Обновляем верхнюю информационную форму корзины function basket_form_refresh() { $.get("/ajax/shop.php", { act : 'basket_form_refresh' }, function(data) { $('#basket_for_refresh').html(data); }); } //Проверяем кнопку добавления в корзину function set_addbasket_button(id) { $.get("/ajax/shop.php", { act : 'set_add_basket_button', id : id }, function(data) { if (data.indexOf('1')!=-1) { $('#add_basket_button_'+id).html('Добавлено'); $('#add_basket_button_'+id).removeAttr('onclick'); } else if (data.indexOf('0')!=-1) { $('#add_basket_button_'+id).html('Добавить в корзину'); $('#add_basket_button_'+id).attr('onclick','add_basket('+id+')'); } }); } //Удаляем из корзины function basket_delete_item(id,item_id) { $.get("/ajax/shop.php", { act : 'delete_from_basket', id : item_id }, function(data) { $('#basket_item_tr_'+id).hide("slow").remove(); $('#basket_item_separate_'+id).hide("fast").remove(); basket_form_refresh(); set_addbasket_button(item_id); }); } //Изменяем количество function basket_change_count(id, item_id, obj) { var count = parseInt(obj.value, 10); var summ = 0; if(!isNaN(count)) { $.get("../ajax/shop.php", { act : 'basket_change_count', id : item_id, key : id, count : count }, function(data) { basket_form_refresh(); $('#basket_item_summ_'+item_id).html($('#basket_item_price_'+item_id).html()*1*count); //Считаю общую сумму $('span[name=basket_item_summ]').each(function(index) { summ = summ + ($(this).text() * 1); }); $('#shop_basket_summ').html(summ+' руб.'); }); } } //Проверка заполнености формы заказа function check_order_form(form_id) { if (!check_form_add_order(form_id)) { alert('Не все необходимые поля формы заполнены'); return false; } return true; } //проверка валидности полей function check_input(obj) { var checker = true; if ($(obj).attr("name") == 'file' && !check_upload_file_extention(obj,['doc','docx','xls','xlsx','pdf'])) {alert('Неверный формат файла');$(obj).val('');} if ($(obj).attr("name") == 'name' && !($(obj).val() != '')) checker = false; if ($(obj).attr("name") == 'email' && !($(obj).val() != '')) checker = false; if ($(obj).attr("name") == 'phone' && !($(obj).val() != '')) checker = false; if ($(obj).attr("name") == 'adress' && !($(obj).val() != '')) checker = false; if (checker == false) { $(obj).css('background-color','#ffbbbb'); $('#basket_error_field').html('Не все обязательные поля заполнены'); return false; } else { $(obj).css('background-color','#FFFFFF'); $('#basket_error_field').html(''); return true; } } //проверяем все поля указанной формы function check_form_add_order(id) { var checker = true; $('#'+id+' input,textarea').each(function(index) { if (check_input(this) == false) checker = false; }); return checker; } //Проверка допустимости разширения файла function check_upload_file_extention(obj,accept_ext) { if ($(obj).val() !='') { var checker = false; var uploadedFileType = $(obj).val().substring($(obj).val().length - 4); for (var key in accept_ext) { var accept_extention = accept_ext[key]; if(uploadedFileType.indexOf(accept_extention) + 1) { checker = true; } } return checker; } else return true; } //######################################################################## //######################################################################## //######################################################################## //######################################################################## //######################################################################## //######################################################################## //СКРОЛ######################################################### function get(id) { return document.getElementById(id); } var scroller ; var scrollBar ; var container ; var content ; var scrollerTrackHeight ; var scrollerHeight ; var objectTrackHeight; var objectHeight ; var delta; var canDrag = false; var shift_x; $(document).ready(function () { scroll_inicialisation(); }); function scroll_inicialisation() { if ((get('shop_basket_scroll')=='undefined')||(get('shop_basket_scroll')==null)) return; scroller = get('shop_basket_scroller'); scrollBar = get('shop_basket_scroll_bar'); container = get('shop_basket_container'); content = get('shop_basket_content'); if (container.offsetHeight < content.offsetHeight) scrollBar.style.display = "block"; // Высота видимой части объекта objectHeight = container.offsetHeight; // Высота объекта целиком objectTrackHeight = content.offsetHeight; //Высота прокрутки scrollerTrackHeight = scrollBar.offsetHeight; // На каждый пиксель сдвига бегунка мы будем сдвигать меню на величину delta delta = objectTrackHeight / scrollerTrackHeight; //Изменяем размер скролла scrollerHeight = Math.round ((objectHeight / objectTrackHeight ) * scrollerTrackHeight); scroller.style.height = Math.round ((objectHeight / objectTrackHeight ) * scrollerTrackHeight) + "px"; // Учтем, что максимальная ширина ползунка - это ширина полосы прокрутки scrollerHeight = (scrollerHeight > scrollerTrackHeight) ? scrollerTrackHeight : scrollerHeight; // Захватить scroller.onmousedown = drag; scrollBar.onmousedown = function (event){ blockEvent(event); return false;} // Перетащить document.body.onmousemove = move; // Бросить document.body.onmouseup = drop; scroller.style.top = "0px" // Для Mozilla необходимо создать EventListener: if (content.addEventListener) { content.addEventListener('DOMMouseScroll', wheel, false); } // Для всех остальных браузеров подойдет вот такая инициализация: content.onmousewheel = wheel; } function blockEvent(event) { if (!event) { event = window.event; } if(event.stopPropagation) event.stopPropagation(); else event.cancelBubble = true; if(event.preventDefault) event.preventDefault(); else event.returnValue = false; } function drag(event) { if (!event) { event = window.event; } canDrag = true; shift_x = event.clientY - parseInt(scroller.style.top); blockEvent(event); return false; } function move(event) { if (!event) { event = window.event; } // Здесь мы как раз и проверяем: // Сдвигать ли нам ползунок вслед за мышью, или оставить его неподвижным if (canDrag) { setPosition(event.clientY - shift_x); } return false; } function drop() { // Освобождаем ползунок canDrag = false; } function setPosition(newPosition) { if ( (newPosition <= scrollerTrackHeight - scrollerHeight) && (newPosition >= 0) ) { scroller.style.top = newPosition + "px"; } else if (newPosition > scrollerTrackHeight - scrollerHeight ) { scroller.style.top = (scrollerTrackHeight - scrollerHeight) + "px"; } else { scroller.style.top = 0 + "px"; } // Вслед за ползунком передвинем меню: content.style.marginTop = Math.round( parseInt(scroller.style.top) * delta * (-1) ) + "px"; return false; } function wheel(event) { // Переменная, в которой будем хранить сдвиг var wheelDelta = 0; // Шаг меню при прокрутке var step = 20; if (!event) { event = window.event; } if (event.wheelDelta) { // В IE и Opera при сдвиге колеса на один шаг event.wheelDelta принимает значение 120 // Значения сдвига в этих двух браузерах совпадают по знаку. wheelDelta = -event.wheelDelta/120; } else if (event.detail) { // В Mozilla, значение wheelDelta отличается по знаку от значения в IE. // Сдвиг колеса на один шаг соответствует значению 3 параметра event.detail wheelDelta = event.detail/3; } // При скроллинге вверх wheelDelta > 0 // При скролинге вниз - wheelDelta < 0 if (wheelDelta) { var currentPosition = parseInt(scroller.style.top); var newPosition = wheelDelta*step + currentPosition; setPosition(newPosition); } // Убиваем событие (чтобы страница не скроллилась) if (event.preventDefault) { event.preventDefault(); } event.returnValue = false; blockEvent(event); }