jQuery(document).ready(function(){

    jQuery('.new_p').corner('cc:#ffffff 5px');

    jQuery('div.catalog_item_image,.lightbox_item').lightBox();

    jQuery('input[id*=buy_num_]').each(function() {
        if(jQuery(this).val() === '') {
            jQuery(this).val(jQuery(this).attr('title'));
            jQuery(this).css('background-color', '');
            jQuery(this).css('color', '#7A7A7A');
        }else if(jQuery(this).val() > 0){
                jQuery(this).css('background-color', '#d5f9af');
                jQuery(this).css('color', '#000000');
        }
        jQuery(this).focus(function() {
            if(jQuery(this).val() == jQuery(this).attr('title')) {
                jQuery(this).val('');
                jQuery(this).css('background-color', '');
                jQuery(this).css('color', '#7A7A7A');
            }else if(jQuery(this).val() > 0){
                jQuery(this).css('background-color', '#d5f9af');
                jQuery(this).css('color', '#000000');
            }
        });
        jQuery(this).blur(function() {
            if(jQuery(this).val() === '') {
                jQuery(this).val(jQuery(this).attr('title'));
                jQuery(this).css('background-color', '');
                jQuery(this).css('color', '#7A7A7A');
            }else if(jQuery(this).val() > 0){
                jQuery(this).css('background-color', '#d5f9af');
                jQuery(this).css('color', '#000000');
            }
        });
    });

    jQuery("body").everyTime(30000, function(i) {
        var ret = '';
        jQuery('div[id*=catalog_item_]').each(function(){
            ret = ret + jQuery(this).attr('id')+';';
        });
        jQuery.post("/catalog/update_num", {
            ids:ret
        },
        function(data){
            items = explode(';', data);
            for(i=0; i< items.length; i++){
                info = explode('|', items[i]);
                jQuery('#item_num_'+info[0]).text(info[1]);
                _valid_basket_item('#buy_num_'+info[0], '#item_num_'+info[0]);
            }
        });
    });

});

function explode( delimiter, string ) {    // Split a string by string
    //
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: kenneth
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)

    var emptyArray = { 
        0: ''
    };

    if ( arguments.length != 2
        || typeof arguments[0] == 'undefined'
        || typeof arguments[1] == 'undefined' )
        {
        return null;
    }

    if ( delimiter === ''
        || delimiter === false
        || delimiter === null )
        {
        return false;
    }

    if ( typeof delimiter == 'function'
        || typeof delimiter == 'object'
        || typeof string == 'function'
        || typeof string == 'object' )
        {
        return emptyArray;
    }

    if ( delimiter === true ) {
        delimiter = '1';
    }

    return string.toString().split ( delimiter.toString() );
}


function show_basket_item_descr(id){
    jQuery('#descr_item_'+id).dialog({
        modal:true,
        autoOpen: false,
        position: "center"
    });
    jQuery('#descr_item_'+id).dialog('open');
    jQuery('.ui-dialog-titlebar.ui-widget-header.ui-corner-all.ui-helper-clearfix').hide();
}



function update_basket(num, price, freight){
    var now_num = Number(jQuery('#basket_num').text());
    var now_price = Number(jQuery('#basket_summ').text());

    if(freight == undefined){
        freight = 0;
    }
    
    jQuery('#basket_num, #item_num_basket').text(Number(num));
    jQuery('#basket_summ').text(now_price+Number(price));
    jQuery('#finish_item_price').text(now_price+Number(price)+Number(freight));

}

function is_numb(val){
    numRegExp = /^[0-9]+$/
    return numRegExp.test(val);
}

function valid_max_num(now, max){
    now = Number(now);
    max = Number(max);
    if(now <= max){
        return true
    }else{
        return false
    }
}

function catalog_buy_item(id){
    if(!is_numb(jQuery('#buy_num_'+id).val())){
        jQuery('#buy_num_'+id).css('border', '1px solid red');
        jQuery('#buy_num_'+id).attr('title', '');
    }else{
        if(_valid_basket_item('#buy_num_'+id, '#item_num_'+id)){
            num = jQuery('#old_num_'+id).attr('value');
            jQuery('#buy_num_'+id).css('border', '1px solid #2e9303');
            jQuery('#buy_num_'+id).attr('title', '');
            var num_buy = Number(jQuery('#buy_num_'+id).val());
            var price_item = Number(jQuery('#item_price_'+id).text());
            jQuery('#btn_buy_'+id).hide();
            jQuery('#btn_buy_'+id).after('<img src="/app/modules/catalog/template/site/images/loading.gif" height="18px" width="18px" id="load_buy_'+id+'">');
            jQuery.post("/catalog/op_basket", {
                id:id,
                op:'newOrderItem',
                num:num_buy
            },
            function(data){
                jQuery("#catalog_item_"+id).effect('transfer',{
                    to: "#basket table",
                    className: 'basket-effects'
                },500, function(){
                    //data = Number(jQuery('#basket_num').text());
                    new_pri = (price_item * num_buy) - (price_item * Number(num));
                    update_basket(data, new_pri);
                    jQuery('#old_num_'+id).attr('value', num_buy);
                    jQuery('#load_buy_'+id).hide();
                    jQuery('#btn_buy_'+id).show();
                });
            });
        }
    }
}

function str_replace ( search, replace, subject ) {    // Replace all occurrences of the search string with the replacement string
    //
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Gabriel Paderni

    if(!(replace instanceof Array)){
        replace=new Array(replace);
        if(search instanceof Array){//If search    is an array and replace    is a string, then this replacement string is used for every value of search
            while(search.length>replace.length){
                replace[replace.length]=replace[0];
            }
        }
    }

    if(!(search instanceof Array))search=new Array(search);
    while(search.length>replace.length){//If replace    has fewer values than search , then an empty string is used for the rest of replacement values
        replace[replace.length]='';
    }

    if(subject instanceof Array){//If subject is an array, then the search and replace is performed with every entry of subject , and the return value is an array as well.
        for(k in subject){
            subject[k]=str_replace(search,replace,subject[k]);
        }
        return subject;
    }

    for(var k=0; k<search.length; k++){
        var i = subject.indexOf(search[k]);
        while(i>-1){
            subject = subject.replace(search[k], replace[k]);
            i = subject.indexOf(search[k],i);
        }
    }

    return subject;

}

function login_order(){
    order = jQuery('#num_order').attr('value');
    if(order != '' && order != 'Номер заказа'){
        jQuery.post('/catalog/login_order', {
            order:order
        }, function(data){
            if(data == 'err #1'){
                alert('Данного заказа не существует, либо он уже обработан!');
            }else if(data == 'ok'){
                window.location = '/catalog/basket/';
            }
        });
    }else{
        alert('Введите номер заказа!');
    }
}

function delete_basket(id){
    if(confirm('Точно удалить товар из корзины?')){
        jQuery.post("/catalog/op_basket", {
            op:'deleteBasketItem',
            id:id
        },
        function(freight){
            num = jQuery('#basket_num_'+id).val();
            price = jQuery('#item_price_'+id).text();
            all_item_price = Number(num) * Number(price);
            data = Number(jQuery('#basket_num').text()) - 1;
            update_basket(data, -all_item_price, freight);
            jQuery('#t_freight').text(freight);
            jQuery('#item_basket_'+id).fadeOut();
            if(data == 0){
                jQuery('#no_item_basket').fadeIn();
                jQuery('.basket_element').fadeOut();
            }
        });
    }
}

function _valid_basket_item(id_num, id_item_num){
    val = jQuery(id_num).val();
    if(val == 'кол-во'){
        val = 0;
    }
    if(is_numb(val) && valid_max_num(val, jQuery(id_item_num).text())){
        return true;
    }else{
        jQuery(id_num).css('border', '1px solid red');
        jQuery(id_num).attr('title', 'На складе не достаточно товара!');
        return false;
    }
}

function update_basket_item(id){
    if(_valid_basket_item('#basket_num_'+id, '#item_num_'+id)){
        num = jQuery('#old_num_'+id).attr('value');
        jQuery('#basket_num_'+id).css('border', '1px solid #5984b8');
        jQuery('#basket_num_'+id).attr('title', '');
        var num_buy = Number(jQuery('#basket_num_'+id).val());
        var price_item = Number(jQuery('#item_price_'+id).text());
        jQuery('#btn_buy_'+id).hide();
        jQuery('#btn_buy_'+id).after('<img src="/app/modules/catalog/template/site/images/loading.gif" height="20px" width="20px" id="load_buy_'+id+'">');
        jQuery.post("/catalog/op_basket", {
            id:id,
            op:'updateBasketItem',
            num:num_buy
        },
        function(freight){
            data = Number(jQuery('#basket_num').text());
            new_pri = (price_item * num_buy) - (price_item * Number(num));
            update_basket(data, new_pri, freight);
            jQuery('#t_freight').text(freight);
            jQuery('#old_num_'+id).attr('value', num_buy);
            jQuery('#finish_item_price_'+id).text((price_item * num_buy));
            jQuery('#load_buy_'+id).hide();
            jQuery('#btn_buy_'+id).show();
        });
    }
}

function basket_send_order(){
    var empty = jQuery(".required").filter('[value=""]');
    if(empty.size() > 0){
        empty.each(function(){
            jQuery('#error_'+jQuery(this).attr('id')).show();
            id = jQuery(this).attr('id');
            jQuery('#error_'+id).click(function(){
                jQuery(this).hide();
                jQuery('#'+str_replace('error_', '', jQuery(this).attr('id'))).focus();
            });
        });
    }else{
        jQuery.post('/catalog/send_order', {
            captcha:jQuery('#captcha').attr('value'),
            fio:jQuery('#fio').attr('value'),
            phone:jQuery('#phone').attr('value'),
            email:jQuery('#email').attr('value'),
            address:jQuery('#address').attr('value'),
            way:jQuery('#way').attr('value')
        },
        function(data){
            if(data == 'false'){
                alert('Код введен неверно!');
            }else{
                if(data != ''){
                    alert(data);
                }else{
                    jQuery('#new_form_order').dialog({
                        modal:true,
                        autoOpen: false,
                        position: "center"
                    });
                    jQuery('#new_form_order').dialog('open');
                    jQuery('.ui-dialog-titlebar.ui-widget-header.ui-corner-all.ui-helper-clearfix').hide();
                }
            }
        });
    }
}

function update_basket_num_item_and_send(){
    var ret = '';
    var re = true;
    jQuery('div[id*=item_basket_]').each(function(){
        ret = ret + jQuery(this).attr('id')+';';
    });
    jQuery.post("/catalog/update_num", {
        ids:ret
    },
    function(data){
        items = explode(';', data);
        for(i=0; i< items.length; i++){
            info = explode('|', items[i]);
            jQuery('#item_num_'+info[0]).text(info[1]);
            if(_valid_basket_item('#basket_num_'+info[0], '#item_num_'+info[0]) == false){
                re = false;
            }
        }
        if(re != false){
                basket_send_order();            
        }
    });
}
