/**
 * @author Shawn Welch <shrimpwagon@yahoo.com>
 */
$(document).ready(function(){
    $.calculator = new Object();
    
    $.calculator.postTimeout = 0;
    
    $.calculator.show = function(sign_code){
        $.fn.colorbox({
            href: '/ajax/ajaxCalculator.php?sign_code='+sign_code,
            speed: "100",
            width: "900px",
            height: "600px",
            open: true
        }, function(){
            $.calculator.load();
            
            // Set bindings
            $('#calc-select-sign-type').bind('change', function(){
                $.calculator.load();
            });
            
            $('#calc-select-size').bind('change', function(){
                $.calculator.getPricing();
            });
            
            $('#calc-select-colors').bind('change', function(){
                $.calculator.getPricing();
            });
            
            $('#calc-select-sides').bind('change', function(){
                $.calculator.getPricing();
            });
            
            $('#calc-input-quantity').bind('keyup', function(){
                $.calculator.getPricing();
            });
            
            $('#calc-span-click-send').bind('click', function(){
                $('#calc-form-send-quote').submit();
            })
            
            $('#calc-span-click-wizard').bind('click', function(){
                window.location.href = '/product_selection.php';
            });
            
            $('#calc-span-click-signmagic').bind('click', function(){
                var pf = $.calculator.getProductsFields();
                $.startSIF4(pf);
            });
            
            // Set validation
            $('#calc-form-send-quote').validateForm({},{
                submitHandler: function(form){
					$('#cboxLoadedContent').blockElement();
					
                    var pf = $.calculator.getProductsFields();
                    var email_address = $('#calc-input-email').val();
                    var email_name = $('#calc-input-name').val();
                    var quantity = $('#calc-input-quantity').val();
                    
                    $.postJSON('/json/jsonCalculatorSendEmail.php', {
                        pf: pf,
                        email_address: email_address,
                        email_name: email_name,
                        quantity: quantity
                    }, function(data){
                        alert(data.message);
						$('#cboxLoadedContent').unblock();
                    });
                }
            });
        });
    }
    
    $.calculator.load = function(){
        // Get sign code from selection
        var sign_code = $('#calc-select-sign-type').selectedValues()[0];
        
        // If there was a loading error, sign_code won't be available
        if (!sign_code) 
            return;
        
        // Get JSON object of sign type and the available sizes
        $.postJSON('/ajax/ajaxCalculatorGetSizes.php', {
            sign_code: sign_code
        }, function(data){
        
            // Check for success
            if (data.status == 'success') {
            
                // Remove current sizes
                $('#calc-select-size').html('');
                
                // Fill new sizes
                $('#calc-select-size').addOption(data.sign_sizes, false);
                
                // Set available sides
                if (data.sides == '1') {
                    document.getElementById('calc-select-sides').selectedIndex = 0;
                    $('#calc-select-sides').enable(false);
                    
                }
                else {
                    $('#calc-select-sides').enable(true);
                    
                }
                
                // Get price
                $.calculator.getPricing();
                
            }
            else {
                alert(data.message);
            }
        });
    }
    
    $.calculator.getPricing = function(){
        // Add the fun price count gifs
        $('#calc-span-std, #calc-span-prm, #calc-span-opt').each(function(i){
            $(this).html('<img src="/images/calculator/price_counter.gif" />');
        });
        
        // Reset the timeout to actually get the price from server
        clearTimeout($.calculator.postTimeout);
        
        // Set timeout request
        $.calculator.postTimeout = setTimeout(function(){
            // Check for valid quantity
            var qty = parseInt($('#calc-input-quantity').val());
            
            if (!isNaN(qty) && qty > 0) {
                //Get sign size selection
                var sign_size_array = $('#calc-select-size').selectedValues()[0].split('|');
                var sign_color_count = $('#calc-select-colors').selectedValues()[0];
                var sign_sides = $('#calc-select-sides').selectedValues()[0];
                
                $.postJSON('/ajax/ajaxCalculate.php', {
                    sign_code: sign_size_array[0],
                    sign_height: sign_size_array[1],
                    sign_width: sign_size_array[2],
                    sign_color_count: sign_color_count,
                    sign_sides: sign_sides,
                    sign_thickness: sign_size_array[3],
                    qty: qty
                }, function(data){
                    if (data.status == 'success') {
                        $('#calc-span-std').html('<p class="calc-price">$' + data.price[0] + '</p>');
                        $('#calc-span-prm').html('<p class="calc-price">$' + data.price[1] + '</p>');
                        $('#calc-span-opt').html('<p class="calc-price">$' + data.price[2] + '</p>');
                    }
                    else {
						$('#calc-span-std').html('');
						$('#calc-span-prm').html('');
						$('#calc-span-opt').html('');
						
                        if (data.code == 2402) {
							alert('Please call, email or chat to get your sign price.');
						}
						else {
							alert(data.message);
						}
                    }
                });
            }
        }, 750);
    }
    
    $.calculator.getProductsFields = function(){
        // Get sign size selection
        var sign_size_array = $('#calc-select-size').selectedValues()[0].split('|');
        
        // Get products fields vars
        var sign_code = sign_size_array[0];
        var sign_sides = $('#calc-select-sides').selectedValues()[0];
        var sign_height = sign_size_array[1];
        var sign_width = sign_size_array[2];
        var sign_thickness = sign_size_array[3];
        
        // Get sign colors
        var sign_color_count = parseInt($('#calc-select-colors').selectedValues()[0]);
        var sign_colors = '';
        for (var i = 1; i < sign_color_count; i++) {
            sign_colors += ',';
        }
        
        // Build products fields
        return sign_code + '|' + sign_sides + '|' + sign_height + '|' + sign_width + '|16777215|' + sign_thickness + '|' + sign_colors + '||0';
    }
});
