function selOn(ctrl)  {
    ctrl.style.backgroundColor = '#e0e0e0';
    ctrl.style.cursor = 'hand';
}

function selOff(ctrl)  {
    ctrl.style.backgroundColor = '#eeeeee';
}

function sprintf(fstring) {

    var pad = function(str,ch,len) {
        var ps='';
        for(var i=0; i<Math.abs(len); i++) ps+=ch;
        return len>0?str+ps:ps+str;
    }
    var processFlags = function(flags,width,rs,arg)
    {
        var pn = function(flags,arg,rs)

        {
            if(arg>=0)

            {
                if(flags.indexOf(' ')>=0) rs = ' ' + rs;
                else if(flags.indexOf('+')>=0) rs = '+' + rs;
            }
            else
                rs = '-' + rs;
            return rs;
        }
        var iWidth = parseInt(width,10);
        if(width.charAt(0) == '0')
        {
            var ec=0;
            if(flags.indexOf(' ')>=0 || flags.indexOf('+')>=0) ec++;
            if(rs.length<(iWidth-ec)) rs = pad(rs,'0',rs.length-(iWidth-ec));
            return pn(flags,arg,rs);
        }
        rs = pn(flags,arg,rs);
        if(rs.length<iWidth)
        {
            if(flags.indexOf('-')<0) rs = pad(rs,' ',rs.length-iWidth);
            else rs = pad(rs,' ',iWidth - rs.length);
        }
        return rs;
    }
    var converters = new Array();
    converters['c'] = function(flags,width,precision,arg)
    {
        if(typeof(arg) == 'number') return String.fromCharCode(arg);
        if(typeof(arg) == 'string') return arg.charAt(0);
        return '';
    }
    converters['d'] = function(flags,width,precision,arg)
    {
        return converters['i'](flags,width,precision,arg);
    }
    converters['u'] = function(flags,width,precision,arg)
    {
        return converters['i'](flags,width,precision,Math.abs(arg));
    }
    converters['i'] =  function(flags,width,precision,arg)
    {
        var iPrecision=parseInt(precision);
        var rs = ((Math.abs(arg)).toString().split('.'))[0];
        if(rs.length<iPrecision) rs=pad(rs,' ',iPrecision - rs.length);
        return processFlags(flags,width,rs,arg);
    }
    converters['E'] = function(flags,width,precision,arg)
    {
        return (converters['e'](flags,width,precision,arg)).toUpperCase();
    }
    converters['e'] =  function(flags,width,precision,arg)
    {
        iPrecision = parseInt(precision);
        if(isNaN(iPrecision)) iPrecision = 6;
        rs = (Math.abs(arg)).toExponential(iPrecision);
        if(rs.indexOf('.')<0 && flags.indexOf('#')>=0) rs = rs.replace(/^(.*)(e.*)$/,'$1.$2');
        return processFlags(flags,width,rs,arg);
    }
    converters['f'] = function(flags,width,precision,arg)
    {
        iPrecision = parseInt(precision);
        if(isNaN(iPrecision)) iPrecision = 6;
        rs = (Math.abs(arg)).toFixed(iPrecision);
        if(rs.indexOf('.')<0 && flags.indexOf('#')>=0) rs = rs + '.';
        return processFlags(flags,width,rs,arg);
    }
    converters['G'] = function(flags,width,precision,arg)
    {
        return (converters['g'](flags,width,precision,arg)).toUpperCase();
    }
    converters['g'] = function(flags,width,precision,arg)
    {
        iPrecision = parseInt(precision);
        absArg = Math.abs(arg);
        rse = absArg.toExponential();
        rsf = absArg.toFixed(6);
        if(!isNaN(iPrecision))
        {
            rsep = absArg.toExponential(iPrecision);
            rse = rsep.length < rse.length ? rsep : rse;
            rsfp = absArg.toFixed(iPrecision);
            rsf = rsfp.length < rsf.length ? rsfp : rsf;
        }
        if(rse.indexOf('.')<0 && flags.indexOf('#')>=0) rse = rse.replace(/^(.*)(e.*)$/,'$1.$2');
        if(rsf.indexOf('.')<0 && flags.indexOf('#')>=0) rsf = rsf + '.';
        rs = rse.length<rsf.length ? rse : rsf;
        return processFlags(flags,width,rs,arg);
    }
    converters['o'] = function(flags,width,precision,arg)
    {
        var iPrecision=parseInt(precision);
        var rs = Math.round(Math.abs(arg)).toString(8);
        if(rs.length<iPrecision) rs=pad(rs,' ',iPrecision - rs.length);
        if(flags.indexOf('#')>=0) rs='0'+rs;
        return processFlags(flags,width,rs,arg);
    }
    converters['X'] = function(flags,width,precision,arg)
    {
        return (converters['x'](flags,width,precision,arg)).toUpperCase();
    }
    converters['x'] = function(flags,width,precision,arg)
    {
        var iPrecision=parseInt(precision);
        arg = Math.abs(arg);
        var rs = Math.round(arg).toString(16);
        if(rs.length<iPrecision) rs=pad(rs,' ',iPrecision - rs.length);
        if(flags.indexOf('#')>=0) rs='0x'+rs;
        return processFlags(flags,width,rs,arg);
    }
    converters['s'] = function(flags,width,precision,arg)
    {
        var iPrecision=parseInt(precision);
        var rs = arg;
        if(rs.length > iPrecision) rs = rs.substring(0,iPrecision);
        return processFlags(flags,width,rs,0);
    }
    farr = fstring.split('%');
    retstr = farr[0];
    fpRE = /^([-+ #]*)(\d*)\.?(\d*)([cdieEfFgGosuxX])(.*)$/;
    for(var i=1; i<farr.length; i++)
    {
        fps=fpRE.exec(farr[i]);
        if(!fps) continue;
        if(arguments[i]!=null) retstr+=converters[fps[4]](fps[1],fps[2],fps[3],arguments[i]);
        retstr += fps[5];
    }
    return retstr;
}

var lastProductId = 0;

Number.prototype.pxToEm = String.prototype.pxToEm = function(settings){
    //set defaults
    settings = jQuery.extend({
        scope: 'body',
        reverse: false
    }, settings);

    var pxVal = (this == '') ? 0 : parseFloat(this);
    var scopeVal;
    var getWindowWidth = function(){
        var de = document.documentElement;
        return self.innerWidth || (de && de.clientWidth) || document.body.clientWidth;
    };

    /* When a percentage-based font-size is set on the body, IE returns that percent of the window width as the font-size.
		For example, if the body font-size is 62.5% and the window width is 1000px, IE will return 625px as the font-size.
		When this happens, we calculate the correct body font-size (%) and multiply it by 16 (the standard browser font size)
		to get an accurate em value. */

    if (settings.scope == 'body' && $.browser.msie && (parseFloat($('body').css('font-size')) / getWindowWidth()).toFixed(1) > 0.0) {
        var calcFontSize = function(){
            return (parseFloat($('body').css('font-size'))/getWindowWidth()).toFixed(3) * 16;
        };
        scopeVal = calcFontSize();
    }
    else {
        scopeVal = parseFloat(jQuery(settings.scope).css("font-size"));
    };

    var result = (settings.reverse == true) ? (pxVal * scopeVal).toFixed(2) + 'px' : (pxVal / scopeVal).toFixed(2) + 'em';
    return result;
};

$.fn.equalHeights = function(px) {
    $(this).each(function(){
        var currentTallest = 0;
        $(this).children().each(function(i){
            if ($(this).height() > currentTallest) {
                currentTallest = $(this).height();
            }
        });
        if (!px || !Number.prototype.pxToEm) currentTallest = currentTallest.pxToEm(); //use ems unless px is specified
        // for ie6, set height since min-height isn't supported
        if ($.browser.msie && $.browser.version == 6.0) {
            $(this).children().css({
                'height': currentTallest
            });
        }
        $(this).children().css({
            'min-height': currentTallest
        });
    });
    return this;
};


$(document).ready ( function() {

    // -- Nifty corners para el paginador.
    Nifty("div.pagination", "small" );

    $("a.addProduct").click (
        function() {

            var productId = this.getAttribute('rel');
            lastProductId = productId;

            var params = {
                "productId" : productId, 
                "operation" : "add"
            };

            updateCartItems ( params, function() {} );

            return false;
        }
        );

    $('a.priceLink').mouseover (
        function() {
            var productId = this.getAttribute('rel');
            var position = $(this).position();

            $('#tooltip_' + productId).css( {
                "left" : position.left + 50, 
                "top" : position.top
            }).slideToggle();
        }
        )

    $("a.open-family-group").click (

        function() {

            var groupId = this.getAttribute("rel");

            var $visibleLevel3 = $("ul.nav-level-3:visible");

            if ( $visibleLevel3.length > 0 ) {

                $visibleLevel3.slideToggle("slow", function() {
                    $("#r_" + groupId ).slideToggle("slow");
                });
            }
            else {
                $("#r_" + groupId ).slideToggle("slow");
            }

            return false;
        }
        );

    $('a.open-level-2').click ( function() {
        $('#nav-families-list').slideToggle();
        $('#nav-brands-list').slideToggle();
        return false;
    }
    );

    // -- Tooltip
    JT_init();

    // -- Mostrar Carro
    if ( typeof(showCart) != 'undefined' && showCart ) {
        $('#cart-container').show();
        $('#cartItems').hide();
        $('#cart').show();
    }    

    // -- Mantenimiento
    $("#openContactForm").live('click', function() {

        $(this).blur();

        // -- Thickbox
        var url = contactFormUrl + "?KeepThis=true&TB_iframe=true&height=300&width=500";
        tb_show(contactFormTitle, url);

        return false;
    }
    );

    $("a").live('click', function() {
        $(this).blur();
    }
    );

    $('a.deleteProductFromCart').live('click',
        function() {

            var productId = this.getAttribute('rel');
            var params = {
                "productId" : productId, 
                "operation" : "delete"
            };

            updateCartItems ( params );

            return false;
        }
        );

    // --
    $('#main-container').equalHeights(true);

    $('#left-products-list h2, #left-brands-list h2').live('click', function() {

        $('#nav-families-list').slideToggle();
        $('#nav-brands-list').slideToggle();
        return false;
    });

    $('form').each(function() {
        
        $(this).submit( function() {
            
            var $this = $(this);
            
            var $submitButton = $("input[type='submit']", $this);
            
            $submitButton.css("color", "#ccc").attr("disabled", "true").blur();
        });        
    });


    $("#frmSearch").submit( function() {
        
        var 
            $form = $(this),
            $input = $("input[name=keyword]", $form),
            searchUrl = $form.attr("action"),
            pattern = $input.val();        

        if ( pattern != '' ) {            

            searchUrl = searchUrl.replace( /replaceme/, pattern);            
            
            parent.location.href = searchUrl;
        }
        
        return false;
    });
		
		
    $("a.open-map").overlay({
		
        oneInstance : false,
        effect : "apple",
        expose : {
            color : "#fff",
            opacity: 0.7,
            closeSpeed : 1000
        },
        onLoad : function() {
				
            var 
                map = new GMap2( $("#map-container")[0] ),				
                pos = new GLatLng(-31.371853, -64.237314),
                marker = new GMarker(pos);
				
            map.setCenter(pos, 15 );
            map.setUIToDefault();				
            map.setMapType(G_NORMAL_MAP);				
            map.addOverlay(marker);
				
            map.openInfoWindow(map.getCenter(), $("#address-container p").html() );
        }
    });		
        
    $(document).trigger("ready.reed");        
})

function getCartState() {
    $('#cart-container').load( cartUrl, {
        "operation" : "getCartState"
    }, updateCartDisplay );
}

function updateCartItems ( params, callback ) {
    $('#cart-container').load( cartUrl , params, updateCartDisplay );
}

function updateCartDisplay() {
    $('#cart').effect('pulsate')
}

function updateCart() {
    $('#cartForm').submit();
}
