/*
 * Lamps search
 */

var LAMP = {
};

var search;
var cart;

$(document).ready(function(){
search = new LAMP.Search();
cart = new LAMP.Cart();
});

function toAlias(n) {
	n = n.toLowerCase()
		.replace(/\+/g,'-plus-')
//		.replace(/[^A-Za-z0-9]/g,'-')
		.replace(/\s/g,'_')
		.replace(/-{1,}/g,'-')
		.replace(/^-+/,'')
		.replace(/-+$/,'');
	return n;
}

// Please Wait Indicator
function setPosition(evt) {
    var ele = document.getElementById("PleaseWait");
    var x, y;

    if (ele && evt) {
        if (evt.pageX && evt.pageY) {
            x = evt.pageX;
            y = evt.pageY;
        } else {
            x = evt.clientX + (document.documentElement.scrollLeft ?
                               document.documentElement.scrollLeft :
                               document.body.scrollLeft);
            y = evt.clientY + (document.documentElement.scrollTop ?
                               document.documentElement.scrollTop :
                               document.body.scrollTop);
        }

        $(ele).css({'left': x + 20, 'top': y + 20});
    }
}

function progressShow() {
	var ele = document.getElementById("PleaseWait");
    if (!ele) {
        ele = $('<div id="PleaseWait" style="display: none;">Идет загрузка...</div>').prependTo("body");
    }

    $(document).bind('mousemove.PleaseWait', setPosition);
    $(ele).fadeIn('fast');
}

function progressHide() {
	var ele = document.getElementById("PleaseWait");
    if (ele) {
        $(ele).fadeOut('slow', function () {
            $(document).unbind('mousemove.PleaseWait');
        });
    }
}

(function () {

    $(document).bind('click.PleaseWait', setPosition);

    $.ajaxSetup({
        global: false,
        beforeSend: function () {
            // show "please wait" label
            //progressShow();
        },
        complete: function (req, status) {
            // hide label
            //progressHide();

            if (status !== "success") {
                throw new Error("jQuery.ajax: " + status);
            }
        }
    });
})();

//Search
(function () {
	//constructor
	LAMP.Search = function() {

		// public fields

		var modelDisabled = true;
		var curBrand;
		var curBrandName;
		var curLamp;
		var curLampName;

		var selBrandOptions = {
		    url:'/search_lamps.php?data=brands',
		    fillin: true,
		    delay: 100,
		    width: 160,
		    type: 'json',
	       	onSelect:function(){
//	       		if(pageTracker) {pageTracker._trackPageview('/ajax/selectbrand')};
		        //alert(toAlias(this.ac.val()));

		        //$("#selmodel").autocomplete(selModelOptions);

		        if(modelDisabled) {
		        	//$("#selmodeltd").html("<b>Hello!</b>");
		        }

		        $("#selmodeltd").html('<input type="text" id="selmodel"/>');

		        selModelOptions.url = '/search_lamps.php?data=models&brand=' + toAlias(this.ac.val());
		        $("#selmodel").autocomplete(selModelOptions);

		        curBrandName = this.ac.val();
		        curBrand = toAlias(this.ac.val());
		        curLamp = null;
		        curLampName = null;

		    },
		    onSuggest:function(){
	           this.ac.css({'background-image': 'url("/images/progress.gif")'})
	       	},
			onDisplay:function(list){
	        	this.ac.css({'background-image':'none'});
	       		if(!list)
	    	   		this.ul.append("<div style='line-height:100px;text-decoration:underline;text-align:center;'>[Не найдено]</div>");
		    },
		    onError:function(XMLHttpRequest, textStatus, errorThrown){
	            this.ac.val(textStatus);
	            this.ac.attr({disabled:"disabled"}).css({'background-color':'#d0d0d0','background-image':'none'});
	            this.ul.hide();
	            this.img.unbind("click");
	        }
		};

		var selModelOptions = {
		    url:'/search_lamps.php?data=models&brand=1',
		    fillin: true,
		    delay: 100,
		    width: 160,
		    type: 'json',
		    onSelect:function(){
		    	progressShow();
//		    	if(pageTracker) {pageTracker._trackPageview('/ajax/selectmodel')};

		    	curLampName = this.ac.val();
		    	curLamp = toAlias(this.ac.val());

		    	$("#CONTENT").load('/good.php?model='+curLamp+'&brand='+curBrand, function() { progressHide(); });
		    	$("#r_col").hide();
		    },
		    onSuggest:function(){
	           this.ac.css({'background-image': 'url("/images/progress.gif")'})
	       	},
			onDisplay:function(list){
	        	this.ac.css({'background-image':'none'});
	       		if(!list)
	    	   		this.ul.append("<div style='line-height:100px;text-decoration:underline;text-align:center;'>[Не найдено]</div>");
		    },
		    onError:function(XMLHttpRequest, textStatus, errorThrown){
	            this.ac.val(textStatus);
	            this.ac.attr({disabled:"disabled"}).css({'background-color':'#d0d0d0','background-image':'none'});
	            this.ul.hide();
	            this.img.unbind("click");
	        }
		};

		// init

		$("#selbrand").autocomplete(selBrandOptions);

		// private fields

		var self = this;

		// private methods
	};

	// public methods

})();

//Cart
(function () {
	//constructor
	LAMP.Cart = function() {

		var redrawCount = function(cnt) {
			var b = '<a href="#" onClick="cart.showCart(); return false;">Корзина '+cnt;

			var b_end = ' товаров';
			if((cnt > 4) && (cnt < 21)) {
				b_end = ' товаров';
			} else if((cnt % 10) == 1) {
				b_end = ' товар';
			} else if(((cnt % 10) >= 2) && ((cnt % 10) <= 4)) {
				b_end = ' товара';
			}

			$('#basket').html(b+b_end+'</a>');
		};

		var drawCart = function(cnt,price,items) {
			if(cnt == '0') {
				$('#CONTENT').html('<div class="crumb"><a href="/">Главная</a> / Корзина </div><div class="clear"></div><p class="Tahoma11">Ваша корзина пуста.</p><p class="Tahoma11">Воспользуйтесь нашим каталогом либо <a href="/">конфигуратором</a> для того чтобы найти необходимый товар и добавить его в корзину.</p>');
				return;
			}

			var b_beg = '<div class="crumb"><a href="/">Главная</a> / Корзина </div>'+
                        '<div class="clear"></div>'+
//                        '<br><div class="Tahoma11"><a href="#">Назад к списку товаров</a></div><br><br>'+
                        '<div class="posTit" style="height:auto;">'+
                        	'<div class="pos1">Наименование товара</div>'+
                            '<div class="pos2">Кол-во</div>'+
                            '<div class="pos3" align="right"><strong>Стоимость</strong></div>'+
                        '</div>';

            var b = '';
			for(i=0; i < items.length; i++) {
				b += '<div class="posTitNbg" style="height:auto;">'+
					'<div class="pos1">'+items[i][3]+'</div><div class="pos2"><input class="cnt" type="text" id="'+items[i][0]+'" name="'+items[i][1]+'" value="'+items[i][2]+'"></div><div class="pos3" align="right">'+(items[i][2]*items[i][4])+' руб.</div>'+
					'</div>';
			}

			var b_end = '<div class="clear"><img src="images/x.gif" width="1" height="5" alt=""></div>'+
                        '<div class="posTit" style="height:auto;">'+
                        	'<div class="pos1">Общая стоимость заказа<br>(без учета доставки)</div>'+
                            '<div class="pos4">'+price+' руб.</div>'+
                        '</div><div id="ORDER"></div>'+
                        '<div id="BUTTONS" align="right" style="margin-top:16px;"><input type="image" style="margin:0px 25px 0px 0px;" src="images/calc.gif" onClick="cart.updateCart(); return false;"><input type="image" style="margin:0px 25px 0px 0px;" namee="act" src="images/z.gif" onClick="cart.showOrder(); return false;"></div>'+
                        '<div class="clear"></div>'+
                        '<br>'+
                        '<p id="HELP" class="Tahoma11" style="color:#787878;">Для того чтобы изменить количество, введите нужное число в поле "кол-во" напротив товарной позиции (для того чтобы удалить товар введите 0) и нажмите кнопку <Пересчитать>. Для того чтобы добавить в корзину еще какой либо товар(ы) нажмите на ссылку "Назад к списку товаров". Чтобы продолжить оформление заказа, нажмите кнопку "Оформить заказ".</p>'+
                        '<p id="HELP" class="Tahoma11" style="color:#787878;">* Стоимость доставки в пределах МКАД составляет 300руб, стоимость доставки по России уточняйте у менеджеров.<br><br>* Доставка товаров под заказ осуществляется только по предоплате, размер предоплаты уточняйте у менеджеров.</p>';

			$('#CONTENT').html(b_beg + b + b_end);
   		};

   		var drawOrderForm = function(cnt,price,items) {
   		};

		// public methods

		this.showCart = function() {
			var url = '/cart.php';
			url += '?rnd=' + ('' + Math.random()).substring(10);
            progressShow();

			$.getJSON(url, function(data) {
				drawCart(data.cnt,data.price,data.items);
				progressHide();
			});
		}

		this.toCart = function(id) {
            progressShow();

			var col = $(":radio[name=col]").filter(":checked").val();
			var url = '/put.php?id='+id+'&col='+col;

			$.getJSON(url, function(data) {
				redrawCount(data.cnt);
				progressHide();
			});
		};

		this.updateCart = function() {
			var url = '/update.php';
			url += '?rnd=' + ('' + Math.random()).substring(10);

			var data = new Object();
			data.ids = new Array();
			data.cnts = new Array();
			data.cols = new Array();

			var ids = new Array();
			var cnts = new Array();
			var cols = new Array();

			progressShow();

			$('.cnt').each(function(i) {
				ids.push(this.id);
				cnts.push(this.value);
				cols.push(this.name);
			});

			data.ids = ids.join(',');
			data.cnts = cnts.join(',');
			data.cols = cols.join(',');

			$.post(url, data , function(r) {
				drawCart(r.cnt,r.price,r.items);
				redrawCount(r.cnt);
				progressHide();
			},'json');
		};

		this.showOrder = function () {
			$('.cnt').each(function(i) {
          		val = this.value;
          		$(this).replaceWith('<span style="padding-left:6px;">'+val+'</span>');
			});

			order = '<div class="clear"><img src="images/x.gif" width="1" height="35" alt=""></div><div class="posTitNbg"><div class="form2"><b>Оформление заказа</b></div></div>'+
						'<form id="orderForm" action="#" method="POST">'+
						'<div class="posTitNbg">'+
                        	'<div class="form2">Ваше имя</div><div class="form3"><input type="text" id="fio" name="fio" value="" maxlength="255" > </div>'+
                        '</div>'+
                        '<div class="posTitNbg">'+
                        	'<div class="form2">E-mail</div><div class="form3"><input type="text" id="mail" name="mail" value="" maxlength="80" > </div>'+
                        '</div>'+
                        '<div class="posTitNbg">'+
                        	'<div class="form2">Контактный телефон</div><div class="form3"><input type="text" id="tel" name="phone" value="" maxlength="40" > </div>'+
                        '</div>'+
                        '<div class="posTitNbg">'+
                        	'<div class="form2">Адрес доставки</div><div class="form3"><textarea id="addr" name="addr" cols="30" rows="2" ></textarea></div>'+
                        '</div>'+
                        '<div class="posTitNbg">'+
                        	'<div class="form2">Ближайшая станция метро<br><small>( Только для жителей Москвы )</small></div><div class="form3"><input type="text" id="metro" name="metro" value="" maxlength="100" > </div>'+
                        '</div>'+
                        '<div class="posTitNbg">'+
                        	'<div class="form2">Дополнительная информация<br><br>** Если вы хотите оплатить по без/нал., введите в это поле ваши банковские реквизиты.<br><br>Также напоминаем, что курс конвертации безналичных средств равен 6% (на эту сумму увеличивается стоимость при заказе по безналу).</div><div class="form3"><textarea id="extra" name="extra" cols="30" rows="6" ></textarea></div>'+
                        '</div>'+
                        '<div class="posTitNbg">'+
                        	'<div class="form2"></div><div class="form3"><input type="image" src="images/order.gif" border="0" name="submit" style="padding-top:20px;"></div>'+
                        '</div>'+
                        '</form>';

			$('.crumb').html('<a href="/">Главная</a> / Оформление заказа ');
			$('#BUTTONS').hide();
			$('#HELP').hide();
   			$('#ORDER').hide();
   			$('#ORDER').html(order);
  			$('#ORDER').slideDown();

			var options = {
				target: '#CONTENT',
				url: 'order.php',
				dataType: 'json',
				success: function(data) {
						redrawCount('0');
						$('#CONTENT').html(data.res);
						progressHide();
 					 }
			};

			$('#orderForm').submit(function() {
						progressShow();
						$(this).ajaxSubmit(options);
 						return false;
		    });
		};

	};

})();

