/*
 * Master Layout JavaScript
 * http://gigatronshop.com/
 * 
 * Must be loaded after jQuery Library
 *
 * Developed by Codeion SA 
 */
 
 var app_url = "http://www.gigatronshop.com/";
 var cache = new Array();
 
 var flashvars = {};
 var params = {wmode:'transparent'};
 var attributes = {};
 
 $(document).ready(function() {
     
     $("#tabs").tabs({fx: {opacity: 'toggle'}}).tabs('rotate', 8000, 'true')
     .mouseover(function(){
        $(this).tabs('rotate', 0, 'true');
     }).mouseout(function(){
         $(this).tabs('rotate',8000,'true');
     });

     $("#productDetails").tabs({fx: {height: 'toggle'}});
     $("#lokacijeTabs").tabs({fx: {opacity: 'toggle'}});
     $("#banks").tabs();
     
     // IE specific
     if ($.browser.msie) {
         $('li:first-child').addClass('first');
         $('li:last-child, tr:last-child').addClass('last');
     }
     
     // Opera Specific
     if ($.browser.opera) {
         $('ol.topTenList li').addClass('operaFix');
     }
     
     // SIDEBOX LAYOUT ADDITIONS
     $('.sidebox').append('<div class="sideboxTop"></div>');
     $('.sidebox').prepend('<div class="sideboxBottom"></div>');
     
     // WIDE BOX LAYOUT ADDITIONS
     $('.wideBox').prepend('<div class="wideboxTop"></div>');
     $('.wideBox').append('<div class="wideboxBottom"></div>');
     
     // FULL BOX LAYOUT ADDITIONS
     $('.fullBox').prepend('<div class="fullboxTop"></div>');
     $('.fullBox').append('<div class="fullboxBottom"></div>');
     
     // NORMAL BOX LAYOUT ADDITIONS
     $('.normalBox').prepend('<div class="normalBoxTop"></div>');
     $('.normalBox').append('<div class="normalBoxBottom"></div>');
     
     // VIDEO THUMB BOX LAYOUT ADDITIONS
     $('.videoThumbsHolder').prepend('<div class="videoThumbsTop"></div>');
     $('.videoThumbsHolder').append('<div class="videoThumbsBottom"></div>');
     
     // PRODUCT INFO BOX LAYOUT ADDITIONS
     $('#productInfoBox').wrap('<div class="productInfoInner"/>');
     $('.productInfoInner').append('<div class="productInfoBottom"></div>');
     
     // CUSTOM RADIO BUTTONS
     $(".radioButtons").buttonset();
     $(".checkBoxes").buttonset();
     $(".check-boxes").buttonset();
     
     // CUSTOM SELECTS                   
     initCustomSelect();
     
     // SEARCH TRIGGER
     $('#searchTrigger').click(function() {
         $('#searchFormBox').slideToggle('normal');
         $(this).toggleClass('triggerOpen');
         $(".multiSelectOptions").each(function(){
         	if( $(this).height() > 150 ) $(this).height(150);
         });
         return false;
     });
     
     // LOGIN FORM TRIGGER
     $('ul#searchNav li a.login').click(function(){
         $(this).hide("fast");
         $(".wish_list").parent().css("display", "none");
         $("#loginForm").slideDown("slow");
         return false;
     });
     
     // SEND TO A FRIEND TRIGGER
     $('a.posaljiButton').click(function() {
         $(this).next().toggle();
         return false;
     });
     
     // VERTICAL ALIGN FIX
     $.fn.vAlign = function() {
        return this.each(function(i){
            var ah = $(this).height();
            var ph = $(this).parent().height();
            var mh = (ph - ah) / 2;
            $(this).css('margin-top', mh);
        });
     };
     
     $('.imageProdHolder img').vAlign();
     //$('.largeImage img').vAlign();
     //$('.leftInfoBox ul li a img').vAlign();
    
     // FORGOT PASS FORM TRIGGER
     $('a.lozinkaButton').click(function(){
         $(this).parent().hide("fast");
         $("#passForm").slideDown("slow");
         return false;
     });
     
     // BACK TO LOGIN FORM TRIGGER
    $('a.backToLogin').click(function(){
        $(this).parent().hide("fast");
        $("#loginForm").slideDown("slow");
        return false;
    });
     
     // Sidebar expand/collapse boxes
	 $('a.sidebox-trigger').click(function(){
		 $(this).parent().next('.side-container').slideToggle();
		 $(this).toggleClass('expanded');
		 return false;
	 });
     
     $("#accordionMenu, #mainMenu").accordion({autoHeight: false, active:'.menuSelected', collapsible: true, header: 'a.sub'});
    //$("#accordionFilter").accordion({autoHeight: false, active:0, collapsible: true, header: 'a.sub'});
     
     // PRICE TOOLTIP    
     $("ul.productList li span a, div.prodBox span a").hover(
       function () {
           var tooltipValue = $(this).attr('name');
           $(this).after('<cite>' + tooltipValue + '</cite>')
           $(this).next().fadeIn(200);
       }, 
       function () {
           $(this).next().fadeOut(200);
       }
     );
     
     // Minitron footer open-close
     locationCounter = 0;

     $("#locationButton").click(function() {
        if ( locationCounter == 0 ) {
        $("#footerNav").animate({height:150},1000);
        locationCounter = 1;
        return false;
        } 
        else {
        $("#footerNav").animate({height:20},1000);
        locationCounter = 0;
        return false;
        }
     });
     
     //Allow only numbers on entry fields
     $('.only_numbers').ForceNumericOnly();
 });
 
 // FONT REPLACEMENT
 Cufon.replace('#mainNav ul li a, #searchNav li a, #addressList li p, #advancedSearch, .basicSearch label, .contentBox h2, .sidebox h2, .sidebox h3,  a.viseLink, a.kupiButton, .searchButtons a, .searchButtons span, a.uKorpuButton, .rightInfoBox ul li a, a.posaljiButton, .starRating label, .commentsHolder h4, a.obrisiButton, a.backButon, ul.formButtons a', {fontFamily: 'cirTNORnorm'});
 Cufon.replace('#addressList p b', {fontFamily: 'cirTNORcrn'});
 
 function preloadImages( images ) {
        
     for (var i in images) {
         
       var cacheImage = document.createElement('img');
       cacheImage.src = images[i];
       cache.push(cacheImage);
     }
 }
 
 function initCustomSelect() {
     
     // SELECT MENU REPLACEMENT
     $('select.customSelect').selectmenu({style:'dropdown', maxHeight:146});
     
     /*
     $(".customComboHolder select").change(function () {
         var str = "";
         $(this).find("option:selected").each(function () {
             str += $(this).text();
         });
         $(this).parent().find("div").text(str);
     })
     .change();
     */
 }
 
 function resetSearch( type ) {
     
     $("#keyword").val('');
     $(".searchSmallInput input").val('');
     $(".text-field").val('');
     $("#searchFormBox input:radio").removeAttr("checked").button("refresh");
     $("#filterFormBox input:checkbox").removeAttr("checked").button("refresh");
     $("#searchFormBox select").find('option:first').attr('selected','selected').parent('select');
     if( type == 'base' ) $("#subcategory").empty().append('<option value="0" selected="selected">Podkategorija</option>');
     $("#searchFormBox select").selectmenu('destroy').selectmenu({style:'dropdown', maxHeight:162});
     
     currentCategory = 0;
     $("#simpleSearchForm").attr('action', actions[0]);
     $("#advancedSearchForm").attr('action', actions[0]);
     
     $('input[type="checkbox"]').attr('checked', false);
     $("#brandOptions span").text("Proizvođač");
     $("#warrantyOptions span").text("Garancija");
     $("#subcategoryOptions span").text("Podkategorija");
 }
 
 function resetCategorySearch( category ) {
 	
     $("#keyword").val('');
     $(".searchSmallInput input").val('');
     $(".text-field").val('');
     $("#searchFormBox input:radio").removeAttr("checked").button("refresh");
     $("#filterFormBox input:checkbox").removeAttr("checked").button("refresh");
     $("#searchFormBox select").find('option:first').attr('selected','selected').parent('select');
     $('#searchFormBox select.customSelect').each(function(){
         var title = $(this).find('option:first').text();
         $(this).next().children("span:first").text(title);
     });
     
     if( typeof(actions) != 'undefined' ) {
     	$("#simpleSearchForm").attr('action', actions[0]);
     	$("#advancedSearchForm").attr('action', actions[0]);
     }
     
     $('input[type="checkbox"]').attr('checked', false);
     $("#brandOptions span").text("Proizvođač");
     $("#warrantyOptions span").text("Garancija");
     $("#subcategoryOptions span").text("Podkategorija");
     
     // desktop
     if( category == 1 ) {
     	$("#cpuOptions span").text("Procesor");
     	$("#memoryTypeOptions span").text("Tip Memorije");
     	$("#memoryOptions span").text("Memorija");
     	$("#graphicCardOptions span").text("Grafička karta");
     	$("#hdd1Options span").text("Hard disk 1");
     	$("#hdd2Options span").text("Hard disk 2");
     	$("#powerOptions span").text("Napajanje");
     	$("#opticalDriveOptions span").text("Optički uređaj");
     }
     
     // cpu & motherboard
     if( category == 4 || category == 3 ) {
         $("#socketAmdOptions span").text("AMD Socket");
         $("#socketIntelOptions span").text("Intel Socket");         
     }
     
     // notebook & netbook
     if( category == 2 || category == 75 ) {
         $("#cpu_type").empty().append('<option value="0" selected="selected">Tip procesora</option>');
         $("#cpu_type").selectmenu('destroy').selectmenu({style:'dropdown', maxHeight:162});
         $('input[type="checkbox"]').attr('checked', false);
         $("#displayOptions span").text("Ekran");
         $("#cpuAmdOptions span").text("Procesor AMD");
         $("#cpuIntelOptions span").text("Procesor Intel");
         $("#chipsetOptions span").text("Chipset");
         $("#hdd1Options span").text("Hard disk 1");
     	 $("#hdd2Options span").text("Hard disk 2");
         $("#graphicCardOptions span").text("Grafička karta");
         $("#memoryOptions span").text("Memorija");
         $("#opticalDriveOptions span").text("Optički uređaj");
         $("#usbOptions span").text("Broj USB-a");
         $("#osOptions span").text("Operativni sistem");
         $("#additionalOptions span").text("Dodatne opcije");
     }
     
     // graphic card
     if( category == 9 ) {
     	$("#chipManufacturerOptions span").text("Proizvođač čipa");
     	$("#memorySizeOptions span").text("Veličina memorije");
     	$("#connectionOptions span").text("Konekcija");
     }
     
     // hdd
     if( category == 5 ) {
     	$("#typeOptions span").text("Tip");
     	$("#formatOptions span").text("Format");
     	$("#connectionOptions span").text("Konekcija");
     	$("#capacityOptions span").text("Kapacitet");
     }
     
     // memory
     if( category == 10 ) {
     	$("#memoryTypeOptions span").text("Tip memorije");
     	$("#capacityOptions span").text("Kapacitet");
     }
     
     // monitor
     if( category == 6 ) {
     	$("#displayOptions span").text("Dijagonala ekrana");
     	$("#typeOptions span").text("Tip");
     }
 }
 
 function validateEmail( email ) {
      
     var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
     return emailPattern.test(email);  
 }
 
 function urlTitle( title ) {
        
    var url = title
        .toLowerCase() // change everything to lowercase
        .replace(/^\s+|\s+$/g, "") // trim leading and trailing spaces        
        .replace(/[_|\s]+/g, "-") // change all spaces and underscores to a hyphen
        .replace(/[^a-z0-9-]+/g, "") // remove all non-alphanumeric characters except the hyphen
        .replace(/[-]+/g, "-") // replace multiple instances of the hyphen with a single instance
        .replace(/^-+|-+$/g, ""); // trim leading and trailing hyphens
        
    return url;
}

 function formatNumber(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;
 }
 
 function initCities() {
     
     $.post(app_url+'proxy/get_cities', {}, function(data) {
        if(data.length) {
            $("#city").autocomplete(data, {
                width: 200,
                matchContains: true,
                max: 120,
                selectFirst: false,
                formatItem: function(item) {
                    return item.c_name + ' (' + item.p_postal_code + ')';
                }
            });
            $("#city").result(function(event, data, formatted) {
                $("#postal_code_id").val(data.p_id);
            });
        }
    }, "json");
 }
 
 function initCpuLookup() {
     
     $("#manufacturer").change(function() {
        var manufacturer_id = parseInt($(this).val());
        if( manufacturer_id ) {
            // TODO set loader
            
            var category_id = 0;
            switch(manufacturer_id) {
                case 1:
                    category_id = 2;
                    break;
                case 2:
                    category_id = 3;
                    break;
            }
            
            $.post(app_url+'proizvodi/get_cpu_sockets', {category_id: category_id},
                function(data) {
                    // TODO remove loader
                    $("#socket").empty().append('<option value="0">Socket</option>');
                    if( data.length ) {
                        for( var i=0; i<data.length; i++ ) {                 
                            $("#socket").append('<option value="'+data[i].id+'">'+data[i].name+'</option>'); 
                        }
                    }
                    $("#socket-button").remove();
                    $("#socket").selectmenu({style:'dropdown', maxHeight:162});
                }, 'json');
        }
        else {
            $("#socket").empty().append('<option value="0">Socket</option>');
            $("#socket-button").remove();
            $("#socket").selectmenu({style:'dropdown', maxHeight:162});
        }
    });
 }
 
 function initMotherboardLookup() {
     
     $("#cpu_manufacturer").change(function() {
        var manufacturer_id = parseInt($(this).val());
        if( manufacturer_id ) {
            // TODO set loader
            
            var category_id = 0;
            switch(manufacturer_id) {
                case 1:
                    category_id = 2;
                    break;
                case 2:
                    category_id = 3;
                    break;
            }
            
            $.post(app_url+'proizvodi/get_motherboard_sockets', {category_id: category_id},
                function(data) {
                    // TODO remove loader
                    $("#socket").empty().append('<option value="0">Socket</option>');
                    if( data.length ) {
                        for( var i=0; i<data.length; i++ ) {                 
                            $("#socket").append('<option value="'+data[i].id+'">'+data[i].name+'</option>'); 
                        }
                    }
                    $("#socket-button").remove();
                    $("#socket").selectmenu({style:'dropdown', maxHeight:162});
                }, 'json');
        }
        else {
            $("#socket").empty().append('<option value="0">Socket</option>');
            $("#socket-button").remove();
            $("#socket").selectmenu({style:'dropdown', maxHeight:162});
        }
    });
 }
 
 function initNotebookLookup() {
     
     $("#cpu").change(function() {
        var cpu_id = parseInt($(this).val());
        if( cpu_id ) {
            // TODO set loader
            
            var category_id = 0;
            switch(cpu_id) {
                case 11:
                    category_id = 10;
                    break;
                case 12:
                    category_id = 11;
                    break;
            }
            
            $.post(app_url+'proizvodi/get_notebook_cpu_types', {category_id: category_id},
                function(data) {
                    // TODO remove loader
                    $("#cpu_type").empty().append('<option value="0">Tip procesora</option>');
                    if( data.length ) {
                        for( var i=0; i<data.length; i++ ) {                 
                            $("#cpu_type").append('<option value="'+data[i].id+'">'+data[i].name+'</option>'); 
                        }
                    }
                    $("#cpu_type-button").remove();
                    $("#cpu_type").selectmenu({style:'dropdown', maxHeight:162});
                }, 'json');
        }
        else {
            $("#cpu_type").empty().append('<option value="0">Tip procesora</option>');
            $("#cpu_type-button").remove();
            $("#cpu_type").selectmenu({style:'dropdown', maxHeight:162});
        }
    });
 }
 
 function addToCart( obj, product_id ) {
     
     $(obj).addClass('kupiLoading');
     $(obj).text('Trenutak');
     //$.post(app_url+'proxy/add_to_cart', { product_id: product_id },
     $.post(app_url+'korpa/add_product', {product_id: product_id},
        function(data) {
            $(obj).removeClass('kupiLoading');
            $(obj).addClass('uKorpi');
            $(obj).text('U korpi');
            $(".cart").text('Korpa ('+$.trim(data)+')');
        });
 }
 
 function addToCartDetails( obj, product_id ) {
     
     $(obj).addClass('uKorpuLoading');
     $(obj).text('Trenutak');
     //$.post(app_url+'proxy/add_to_cart', { product_id: product_id },
     $.post(app_url+'korpa/add_product', {product_id: product_id},
        function(data) {
            //$(obj).removeClass('kupiLoading');
            //$(obj).addClass('uKorpi');
            $(obj).text('U korpi');
            $(".cart").text('Korpa ('+$.trim(data)+')');
        });
 }
 
 function remove_compare( obj, product_id ) {
    
    $(obj).parent().text('Molimo sačekajte...');    
    $.post(app_url+'proizvodi/remove_compare', {product_id: product_id},
        function(data) {
            $("#compareView").remove();
            if( data.length ) $(".rightColumn").prepend(data);
        });
}

/*
 * PRODUCT DETAILS
 */
 
 function compare( obj, product_id ) {
        
    $(obj).toggleClass('komentarisi loading');
    $.post(app_url+'proizvodi/add_compare', {product_id: product_id},
        function(data) {
            $("#compareView").remove();
            $(".rightColumn").prepend(data);
            $(obj).toggleClass('komentarisi loading');
        });
}

 function openFastBuy( obj, product_id ) {   
    $("#fastBuy").show();
    $(".kolicina").spinner({min: 1}).bind('change', function(event) { 
            
        switch( $(".kolicina").spinner('getStatus') ) {
            
            case 'increment':
                total_price += product_price;
                break;
            case 'decrement':
                total_price -= product_price;
                break;
        }
        $("#total_price").text( formatNumber(total_price, 2, ',', '.') + ' din' );
    });
    initCities();
}

 function closeFastBuy() {
    $("#fastBuy").hide();
}
 
 function validateSendToFriendForm() {
     
     var error = false;
    
     if( !validateEmail($("#friend_email").val()) ){
         $("#friend_email").parent().addClass('smallError');
         error = true;
     }
     else $("#friend_email").parent().removeClass('smallError');
    
     return error;
}
    
 function sendToFriend( obj, product_id ) {
         
     $("#sendToFriendLoader").remove(); 
     if( !validateSendToFriendForm() ) {
         $("#sendToFriendText").after('<span id="sendToFriendLoader" style="color:white">Molimo sačekajte...</span>');
         $.post(app_url+'proizvodi/send_to_friend', {product_id: product_id, email: $("#friend_email").val(), message: $("#friend_message").val()},
             function(data) {
                 $("#sendToFriendLoader").text('Poslato prijatelju!');
                 $("#friend_email").val('E-mail');
                 $("#friend_message").val('Tekst poruke'); 
                 if( parseInt(data) ) {
                     // TODO info
                 }
             });
     }        
 }

jQuery.fn.ForceNumericOnly =
function()
{
    return this.each(function()
    {
        $(this).keydown(function(e)
        {
            var key = e.charCode || e.keyCode || 0;
            // allow backspace, tab, delete, arrows, numbers and keypad numbers ONLY
            return (
                key == 8 ||
                key == 9 ||
                key == 46 ||
                key == 190 ||
                key == 110 ||
                (key >= 37 && key <= 40) ||
                (key >= 48 && key <= 57) ||
                (key >= 96 && key <= 105));
        })
    })
};
