var BNal = 0;

jQuery(function(){

	var url_without_rand = document.location.href.replace(/[\?&]rand=[^&]+/, '').replace("?&", "?").replace("&&", "&");

	jQuery(window).scroll(function(){
		window.name = url_without_rand + "[[DELIMETER]]" + jQuery(window).scrollTop();
	});
	
	if (typeof window["name"] != "undefined" && window.name.length > 0 && document.location.href.match(/[\?&]rand=[^&]+/)) {
		var _spl = window.name.split("[[DELIMETER]]");
		if (typeof _spl[1] != "undefined" && !isNaN(_spl[1]) && _spl[0] == url_without_rand) {
			jQuery(window).scrollTop(_spl[1]);
		}
	}
	
	// increment value
    jQuery('.buy .plus').click(function () {
        jQuery(this).prev().val(jQuery(this).prev().val() * 1 + 1).change();
        return false;
    });
    jQuery('.buy .minus').click(function () {
        if (jQuery(this).prev().prev().val() > 0) {
            jQuery(this).prev().prev().val(jQuery(this).prev().prev().val() * 1 - 1).change();
        }
        return false;
    });
    
    jQuery('div.buy input[id*=citm_]').each(function(){
    	jQuery(this).change(function(){
    		window.setTimeout(function(){
				document.location.href = url_without_rand + (url_without_rand.indexOf("?") > 0 ? "&" : "?") + 'rand=' + Math.random();
//				document.location.href = document.location.href.replace(/\?.+/, '') + '?rand=' + Math.random();
    		}, 200);
    	}).keypress(function(evt){
            if (evt.which == 13) {
            	jQuery(this).change();
	        }
        });
    });
    
    // adding to basket...
    jQuery("div.buy[name*=addtobasket_area_] a[class*=submit]")
    .not('a.submit_2')
    .unbind("click")
    .removeAttr("onclick")
    .bind("click", function(){ })
    .click(function() {
        var id = jQuery(this).parent().attr("name").match(/(\d+)/img);
        var cnt = jQuery(this).prev().prev().prev().val();
        cnt = !isNaN(cnt) ? parseInt(cnt) : 1;

		var old_onAfterAddElement = umiBasket.prototype.onAfterAddElement;
		umiBasket.prototype.onAfterAddElement = function (iElementId, iCount) {
			jQuery("#addtobasket_area_" + iElementId + " div.success").slideDown('slow');
			jQuery("#addtobasket_area_" + iElementId + ">*:not(div.success)").remove();
			jQuery("#addtobasket_area_" + iElementId).append('<a class="submit_2" style="display:none" href="/eshop/basket/">Товар в корзине</a>').unbind('click');
			
			jQuery('div.cart').load('/eshop/mod_update_basket/?' + Math.random());
			
			window.setTimeout(function(){
				jQuery("#addtobasket_area_" + iElementId + " div.success").hide('600');
				jQuery("#addtobasket_area_" + iElementId + " .submit_2").show('600');
				
				window.setTimeout(function(){ 
					document.location.href = url_without_rand + (url_without_rand.indexOf("?") > 0 ? "&" : "?") + 'rand=' + Math.random();
//					document.location.href = document.location.href.replace(/\?.+/, '') + '?rand=' + Math.random();
				}, 600);
				
			}, 1200);
			return false;
		}

        umiBasket.getInstance().addElement(id, cnt);
//        window.setTimeout(function(){ window.location.reload(); }, 100);
        return false;
    });

	// submitting forms
    jQuery('form').submit(function(){
        if (jQuery(this).children().hasClass('webform')) {
            var input = jQuery('input', this);
            var select = jQuery('select', this);
            for (var i = 0; i < input.length; i++) {
                if (input.eq(i).val().length == 0 || input.eq(i).attr('title') && input.eq(i).val() == input.eq(i).attr('title')) {
                    alert('Не все обязательные поля заполнены.');
                    input.eq(i).focus();
                    return false;
                }
            }
        }
    }); 
    
    // TODO: Download price-list...

	// basket manipulations
    var for_basket = jQuery('#for_basket');
    if (for_basket.length != 0) {
        jQuery('.inserts a', for_basket).click(function(){
            jQuery('.inserts .active', for_basket).removeClass('active');
            jQuery(this).parent().addClass('active');
            if (jQuery(this).parent().hasClass('in_2')) {
                jQuery('.insert_1', for_basket).hide();
                jQuery('.insert_2', for_basket).show();
                jQuery('.inserts', for_basket).addClass('form_2');
	            jQuery.cookie("for-basket_active-tab", "2", { path: '/' });
            } else {
                jQuery('.insert_2', for_basket).hide();
                jQuery('.insert_1', for_basket).show();           
                jQuery('.inserts', for_basket).removeClass('form_2');                
	            jQuery.cookie("for-basket_active-tab", "1", { path: '/' });
            }
            return false;
        });
		var __for_basket_active_tab = jQuery.cookie("for-basket_active-tab");
		if (typeof __for_basket_active_tab == "string" && __for_basket_active_tab != null) {
			jQuery('.inserts a', for_basket).click();
		}

        jQuery('ul.insert_2 input', for_basket).change(function(){
            jQuery('ul.insert_2 .active', for_basket).removeClass('active');
            jQuery(this).parent().addClass('active');
        });
        
		// switching organization type
		jQuery('#account_1').click(function(){
			if (this.checked) {
				jQuery('tr.__bn__ input, tr.__bn__ textarea').attr('disabled', 'disabled');
				jQuery('tr.__bn__').hide();
			}
		});
		jQuery('#account_2').click(function(){
			if (this.checked) {
				jQuery('tr.__bn__ input, tr.__bn__ textarea').removeAttr('disabled');
				jQuery('tr.__bn__').show();
			}
		});
		jQuery('input[id^=account_]').filter('[checked]').click();

		// form submitting
		jQuery('#for_basket input[type=submit]')
		.each(function(){
			jQuery(this.form).removeAttr('action').submit(function(){ return false; });
		})
		.click(function(){
			activeForm = this.form;
			jQuery.post("/eshop/mod_checker/", jQuery(this.form).serialize(), function(data){
				jQuery('head').append(data);
			});
			jQuery(this).parent().addClass('submitting');
			return false;
		});

        //самовывоз
        jQuery('input[type=checkbox]').click(function(){
            var tr, name, _select;
			if (this.checked) {
                tr = jQuery(jQuery(this).parents('tr'));
                jQuery('td:eq(0) .red', tr).remove();
                name = jQuery('td:eq(1) textarea', tr).attr('name').replace(/\*/, '#');
				jQuery('td:eq(1) textarea', tr).attr('name', name).attr('readonly', 'readonly');
				
				_select = jQuery('select[name^="data[Ближайшая станция метро]"]');
				tr = _select.parent().parent();
				jQuery('td:eq(0) .red', tr).remove();
                name = _select.attr('name').replace(/\*/, '#');
				_select.attr('name', name);				
				_select.attr('disabled', 'disabled');
			} else {
                tr = jQuery(jQuery(this).parents('tr'));
                jQuery('td:eq(0)', tr).append('<span class="red">*</span>');
                name = jQuery('td:eq(1) textarea', tr).attr('name').replace(/\#/, '*');
				jQuery('td:eq(1) textarea', tr).attr('name', name).removeAttr('readonly');          

				_select = jQuery('select[name^="data[Ближайшая станция метро]"]');
				tr = _select.parent().parent();
                jQuery('td:eq(0)', tr).append('<span class="red">*</span>');
                name = _select.attr('name').replace(/\#/, '*');
				_select.attr('name', name).removeAttr('disabled');
            }
		});
    }
    
    // switching payment type (nal/beznal)
    jQuery('input#account_1').click(function(){
        if (this.checked) {
        	var exp = new Date();
        	exp.setMinutes(exp.getMinutes() + 15);
            jQuery.cookie("ptype", this.id, { expires: exp, path: '/' });
            // Если СуммаБНал попадает в интервал (СуммаПерехода +/- какой-то процент)
            var _Sum = jQuery('#basket_order_price').text().replace(/\s+/img, "");
            var _SBNal = parseFloat(_Sum, 10);
            if (0 < _SBNal && 0.8 * BNal <= _SBNal && _SBNal <= 1.2 * BNal ) {
				var _url = document.location.href.replace(/[\?&]rand=[^&]+/, '').replace("?&", "?").replace("&&", "&");
				document.location.href = _url + (_url.indexOf("?") > 0 ? "&" : "?") + "rand=" + Math.random();
				return false;
            }
            // меняем суммы
            jQuery(".__price__").each(function(){
                var __span = jQuery(this);
                if (typeof __span.attr('base') == 'string') {
                    __span.text(__span.attr('base'));
                }
            });
            jQuery('.active', jQuery(this).parents('table')).removeClass('active');
            jQuery(this).parent().parent().addClass('active');
        }
    });
    jQuery('input#account_2').click(function(){
        if (this.checked) {
        	var exp = new Date();
        	exp.setMinutes(exp.getMinutes() + 15);
            jQuery.cookie("ptype", this.id, { expires: exp, path: '/' });
            // если СуммаНал <= СуммаПерехода и СуммаПерехода <= СуммаБНал, перегружаем страницу
            var _Sum = jQuery('#basket_order_price').text().replace(/\s+/img, "");
            var _SNal = parseFloat(_Sum, 10);
            var _SBNal = parseFloat(makeBNal(_Sum).replace(/\s+/img, ""));
            if (_SNal <= BNal && BNal <= _SBNal && 0 < BNal) {
				var _url = document.location.href.replace(/[\?&]rand=[^&]+/, '').replace("?&", "?").replace("&&", "&");
				document.location.href = _url + (_url.indexOf("?") > 0 ? "&" : "?") + "rand=" + Math.random();
				return false;
            }
            // меняем суммы
            jQuery(".__price__").each(function(){
                var __span = jQuery(this);
                if (typeof __span.attr('base') != 'string') {
                    __span.attr('base', __span.text());
                }
                __span.text(makeBNal(__span.attr('base')));
            });
            jQuery('.active', jQuery(this).parents('table')).removeClass('active');
            jQuery(this).parent().parent().addClass('active');
        }
    });
    
    var __ptype = jQuery.cookie("ptype");
   	jQuery(".__price__").each(function(){
        var $t = jQuery(this);
        if (!isNaN($t.text())) {
            $t.text(number_format($t.text(), 2, '.', ' '));
        }
		$t.attr('base', $t.text());
	    if (typeof __ptype == "string" && __ptype != null) {
	    	if (__ptype == "account_2") {
		    	$t.text(makeBNal($t.attr('base')));
		    }
	    }
	});
	
    if (typeof __ptype == "string" && __ptype != null) {
        jQuery("input#" + __ptype).attr('checked', 'checked').click();
    }  
    jQuery('.price4').each(function(){
		var zeroT = jQuery(this).find('span').text()
    	if( zeroT == '0.00' ){
			jQuery(this).html('&mdash;') 
		}
	});
	
	// get BNal
	(function($){
		var _sum = parseFloat($('#bnal').text(), 10);
		if (!isNaN(_sum)) BNal = _sum;		
	})(jQuery);
	
	
	// search page
	if (document.location.href.match(/search\/search_do/)) {
		var _href = document.location.href.replace(/[&]?p=[^&]+&?/, '');
		_href += ((_href.indexOf('?') > 0) ? "&" : "?") + "p=all";
		
		var _is_all = (document.location.href.match(/[\?&]p=all&?/));
		
		jQuery('li.all a[href="?p=all"]').each(function(){
			if (_is_all) {
				var _obj = jQuery(this).parent();
				_obj.addClass("active").html(_obj.text()).css({ textAlign: 'center', padding: '1px 10px 0', marginLeft: '23px' });
			} else {
				jQuery(this).attr("href", _href);
			}
		});
	}
	
	// skachat_prajs
	(function($){
		$('a[href$=xls]').each(function(){
			this.href = this.href + "?ts=" + (new Date()).getTime();
		});
	})(jQuery);
	
	// сохранение данных форм
	(function($){
		$('#for_basket input, #for_basket textarea').each(function(i){
			if (typeof this.id != 'string' || this.id.length < 1) {
				this.id = 'for-basket_f' + i;
			}
			var __val = $.cookie(this.id);
			if (typeof __val == "string" && __val != null) {
				this.value = __val;
			}
		}).change(function(){
			$.cookie(this.id, this.value, { path: '/' });
		});
	})(jQuery);
});


// format number with multuplying
function makeBNal(text) {
	text = text.replace(/\s+/img, "");
	text = parseFloat(text);
	var percent = parseFloat(document.getElementById('percent').innerHTML) / 100
	text = text + text * percent;
	return number_format(text, 2, '.', ' ');
}

jQuery.download = function(url, data, method){
	//url and data options required
	if( url && data ){ 
		//data can be string of parameters or array/object
		data = typeof data == 'string' ? data : jQuery.param(data);
		//split params into form inputs
		var inputs = '';
		jQuery.each(data.split('&'), function(){ 
			var pair = this.split('=');
			inputs+='<input type="hidden" name="'+ pair[0] +'" value="'+ pair[1] +'" />'; 
		});
		//send request
		jQuery('<form action="'+ url +'" method="'+ (method||'post') +'">'+inputs+'</form>')
		.appendTo('body').submit().remove();
	};
};


// switching order type in basket
var activeForm = false;
function proceed_chResponse(response) {
	if (typeof response != 'object' || typeof activeForm != 'object') return false;
	// remove loaders
	jQuery('.req_err').removeClass('req_err');
	jQuery('.submitting').removeClass('submitting');
	// checking for filling required fields
	if (typeof response['required'] == 'string') {
		var reqs = response['required'].split('|');
		for (var i = 0; i < reqs.length; i++) {
			jQuery('input[name="' + reqs[i] + '"]', activeForm).parent().parent().addClass('req_err');
			jQuery('textarea[name="' + reqs[i] + '"]', activeForm).parent().parent().addClass('req_err');
			jQuery('select[name="' + reqs[i] + '"]', activeForm).parent().parent().addClass('req_err');
		}
	} else if (typeof response['error'] == 'string') {
	
	} else if (typeof response['ticket'] == 'string') {
		jQuery(activeForm).attr("action", '/eshop/mod_order/' + response['ticket'] + '/');
		activeForm.submit();
	}
}

// number_format
function number_format (number, decimals, dec_point, thousands_sep) {
    var n = number, prec = decimals;

    var toFixedFix = function (n,prec) {
        var k = Math.pow(10,prec);
        return (Math.round(n*k)/k).toString();
    };

    n = !isFinite(+n) ? 0 : +n;
    prec = !isFinite(+prec) ? 0 : Math.abs(prec);
    var sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep;
    var dec = (typeof dec_point === 'undefined') ? '.' : dec_point;

    var s = (prec > 0) ? toFixedFix(n, prec) : toFixedFix(Math.round(n), prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;

    var abs = toFixedFix(Math.abs(n), prec);
    var _, i;

    if (abs >= 1000) {
        _ = abs.split(/\D/);
        i = _[0].length % 3 || 3;

        _[0] = s.slice(0,i + (n < 0)) +
              _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
        s = _.join(dec);
    } else {
        s = s.replace('.', dec);
    }

    var decPos = s.indexOf(dec);
    if (prec >= 1 && decPos !== -1 && (s.length-decPos-1) < prec) {
        s += new Array(prec-(s.length-decPos-1)).join(0)+'0';
    }
    else if (prec >= 1 && decPos === -1) {
        s += dec+new Array(prec).join(0)+'0';
    }
    return s;
}


