function preloadImages() {
    for (var i = 0; i < arguments.length; i++) {
        $("<img/>").attr("src", arguments[i])
    }
}
function preloadImagesList(list) {
    for (var i = 0; i < list.length; i++) {
        $("<img/>").attr("src", list[i])
    }
}

function setCur(obj) {
    var path = ''+window.location
    path = path.split('/')
    if (path.length > 3 && path[3]) {
        path = path[3]
        var sel = 'a[href^=/'+path+'/]'
        // alert(sel)
        $(sel, obj).addClass('current')
    }
}

function printVersion() {
    $('.print-hide').hide()
    $('#col-l').text('')
    $('#col-r').text('')
}

function showTip() {
    $('#tip').show()
}

function hideTip() {
    $('#tip').hide()
}


///////////////////

function arrRemove(a, find) {
    var result = []
    for (i in a) {
        if (find != a[i]) {
            result.push(a[i])
        }
    }
    return result
}


function preDetect() {
        hu = window.location.search.substring(1)
        //console.log("h232=" + hu.substr(0,2))
        if (hu.substr(0,2) == 's=') {
                data = hu.substr(2, hu.length)
                
                fdata = data.split('-')
        
                persons = fdata[0].substr(4, fdata[0].length)
                lines = fdata[1]
                fax = parseInt(fdata[2]) ? true : false
                email = parseInt(fdata[3]) ? true : false

                numids = fdata[4].split(',')
                devids = fdata[5].split(',')

                $('#person-count').val(persons)
                $('#is-fax').attr('checked', fax)
                $('#is-email').attr('checked', email)
                $('#extra-line-count').val(lines)

                for (i = 0; i < devids.length; i++) {
                        devs = devids[i].split(':')
                        
                        device_id = devs[0]
                        device_count = devs[1];

                        if (!device_id)
                                continue
                        
                        (function (device_count) {
                                $.ajax({
                                        url: '/catalog/pr/' + device_id + '/',
                                        dataType: 'json',
                                        success: function(data, textstatus) {
                                                wiz3Add2(data.cat_id, data.id, data.title, data.price, device_count)
                                        }
                                });
                        })(device_count)
                }
                for (var i in numTypePriceList) {
                        for (j = 0; j < numids.length; j++) {
                                item = numids[j]
                                $('.modal-num-inner.'+i+' input').each(function() {
                                        var id = $(this).val()
                                        if (id == item ) {
                                                $(this).attr('checked', true)
                                        }
                        
                                })
                        }
                }
                
                wiz1Update()
                wiz2Update()

                predetect = true
                switchWizard(3)
        }
        //console.log("h=" + hu)
}


var predetect = false
var pricePerson = {{ pricePerson }}
var priceFax = {{ priceFax }}
var priceEmail = {{ priceEmail }}
var priceLine = {{ priceLine }}
var numTypePriceList = [{% for t in typeList %}{{ t.price }}{% if not forloop.last %},{% endif %}{% endfor %}]
var productCatIdList = [{% for cat in catList %}{{ cat.id }}{% if not forloop.last %},{% endif %}{% endfor %}]

var numTypeCount = {{ typeList|length }}
var numChoosenIdList = []
var numSumAll = 0
var personCount = 1
var isFax = 0
var isEmail = 0
var personSumAll = 0
var extraLineCount = 0
var freeLineCount = 2
var productIdToCount = {}
var productIdCountStr = ''

var numOrPersonSum = 0
var lineSumAll = 0

function switchWizard(i) {
    if (i == 2) { 
        wiz2Update()
    }
    if (i == 3) { 
        if (personCount < 1) {
            alert('Сотрудников должно быть 1 и более')
            return
        }
        wiz3Update()
    }
    $('.wizard').hide()
    // $('.wizard').show()
    $('.wizard.'+i).show()
}

function modHide() {
    $('#TB_closeWindowButton').click()
}

function wiz1ModCancel() {
    modHide()
    wiz1Rollback()
}

function wiz1ModOk() {
    wiz1Update()
    modHide()
}

function wiz1NumDel(id, price) {
    numChoosenIdList = arrRemove(numChoosenIdList, id)
    wiz1Rollback()
    wiz1Update()
}

function wiz1Update() {
    numChoosenIdList = []
    numSumAll = 0
    for (var i in numTypePriceList) {
        var sum = 0
        $('.modal-num-inner.'+i+' input.check:checked').each(function(){
            numChoosenIdList.push($(this).val())
            sum += numTypePriceList[i]
        })
        $('.num-sum.'+i).text(sum)
        numSumAll += sum
    }
    $('#num-sum-all').text(numSumAll)
    
    $('.div-num').hide()
    for (var i in numChoosenIdList) {
        $('.div-num.'+numChoosenIdList[i]).show()
    }
}

function wiz1Rollback() {
    $('.modal-num-inner .check').removeAttr('checked')
    for (var i in numChoosenIdList) {
        $('.modal-num-inner .check.'+numChoosenIdList[i]).attr('checked', 'checked')
    }
}

tb_onshow = function(){
    wiz1Rollback()
}

function wiz2Update() {
    personCount = $('#person-count').val()
    personCount = personCount ? personCount : 0
    isFax = $('#is-fax').attr('checked') ? 1 : 0
    isEmail = $('#is-email').attr('checked') ? 1 : 0
    personSumAll = personCount*(pricePerson+isFax*priceFax+isEmail*priceEmail)
    numCountSumAll = numChoosenIdList.length*1000
    extraLineCount = $('#extra-line-count').val()
    extraLineCount = extraLineCount ? extraLineCount : 0
    //freeLineCount = Math.max(2, Math.ceil(personCount/4))
    
    lines = extraLineCount*1
    lvar = Math.max(personCount, numChoosenIdList.length, lines)
 //   numOrPersonSum = Math.max(numCountSumAll, personSumAll)
    numOrPersonSum = personSumAll
 //   lineSumAll = extraLineCount*priceLine
    lineSumAll = (lvar - personCount)*priceLine
    
    $('#person-sum').text(personCount*pricePerson)
    $('#fax-sum').text(isFax*personCount*priceFax)
    $('#email-sum').text(isEmail*personCount*priceEmail)
    $('#person-sum-all').text(personSumAll)
    $('#free-line-count').text(freeLineCount)
    $('#line-sum').text(lineSumAll)
    $('#month-sum').text(numOrPersonSum+lineSumAll)
}

var prodTemplate = 
    '<tr class="tr-product $id">'+
        '<td><img src="/img/icon-delete.png" alt="-" onclick="wiz3Del($id)" title="Удалить"/>&nbsp;$title</td>'+
        '<td><input class="count" value="1" maxlength="3"/><input type="hidden" class="id" value="$id"/><input type="hidden" class="price" value="$price"/></td>'+
        '<td><span class="price prod-price">$price</span>&nbsp;<span class="price">руб</span></td>'+
    '</tr>'
    
function wiz3Add(catId, id, title, price) {
    modHide()
    productIdToCount[id] = 1
    var tr = prodTemplate.replace('$id', id).replace('$id', id).replace('$id', id).replace('$title', title).replace('$price', price).replace('$price', price)
    $('.tbl-product.'+catId+' tbody').append(tr)
    $('.tr-product.'+id+' input.count').keyup(wiz3Update).numeric()
    wiz3Update()
}
function wiz3Add2(catId, id, title, price, count) {
    productIdToCount[id] = count
    var tr = prodTemplate.replace('$id', id).replace('$id', id).replace('$id', id).replace('$title', title).replace('$price', price).replace('$price', price)
    $('.tbl-product.'+catId+' tbody').append(tr)
    $('.tr-product.'+id+' input.count').keyup(wiz3Update).numeric()
    $('.tr-product.'+id+' input.count').val(count)
    wiz3Update()
}

function wiz3Del(id) {
    productIdToCount[id] = 0
    $('.tr-product.'+id).replaceWith('')
    wiz3Update()
}

function wiz3Update() {
    var sumAll = 0
    var str = []
    for (var i in productCatIdList) {
        var catId = productCatIdList[i]
        var sum = 0
        $('.tbl-product.'+catId+' .tr-product').each(function(){
            var id = $('input.id', this).val()
            var count = $('input.count', this).val()
            var price = $('input.price', this).val()
            sum += count*price
            productIdToCount[id] = count
            str.push(''+id+':'+count)
        })
        $('#product-sum-'+catId).text(sum)
        sumAll += sum
    }
    $('#product-sum-all').text(sumAll)
    productIdCountStr = str.join(',')
}

function submitWizard() {
    var numbers = numChoosenIdList.join(',')
    var url = '/wizard/numbers-'+numbers+'/persons-'+personCount+'/fax-'+isFax+'/email-'+isEmail+'/lines-'+extraLineCount+'/catalog-'+productIdCountStr+'/'
    document.location = url
}


$(function(){
    if (!predetect) {
    wiz1Rollback()
    wiz1Update()
    
    $('#person-count').val(1)
    $('#is-fax').removeAttr('checked')
    $('#is-email').removeAttr('checked')
    $('#extra-line-count').val(0)
    wiz2Update()
    }    

    $('#person-count').keyup(wiz2Update).numeric()
    $('#is-fax').click(wiz2Update)
    $('#is-email').click(wiz2Update)
    $('#extra-line-count').keyup(wiz2Update).numeric()
    if (!predetect)
            $('.wizard.1').show()
})


