$(function() {
    
    //$("img").lazyload({ 
    //    //placeholder : "img/grey.gif",
    //    effect : "fadeIn"
    //});
    
    if ($('#columns').length > 0)
    {
        $("#columns").css('left','-9999px');
    
        arrange.offy = $('#allposts').offset().top;
        arrange.offx = $('#allposts').offset().left;
        
        if ($('.col img').length > 0)
        {
            $('.col').onImagesLoad({ 
                selectorCallback: arrange.main 
            });
        }
        else
        {
            arrange.main();
        }

        arrange.static_nav();
    }
    
    if ($('.blog_title').length > 0)
    {
        $(".entry a:has('img.alignnone')").colorbox({maxWidth:'90%', maxHeight:'90%', scrolling:'false', transition:'fade', rel:'gallery'});
        $(".entry .gallery-icon a").colorbox({maxWidth:'90%', maxHeight:'90%', scrolling:'false', transition:'fade', rel:'gallery'});
    }
});

// on window resize, call again

$(window).resize( function() {
    
    if ($('#columns').length > 0)
    {
        arrange.columnWidthMin = 149;
        //$('.col').onImagesLoad({ 
        //    selectorCallback: arrange.main 
        //});
        arrange.main();
        arrange.static_nav();
    }
});

var arrange = {
    
    maxy: new Array(),
    colWrap: 0,
    colNum: 0,
    colFixed: 0,
    
    offx: 0,
    offy: 0,
    
    columnWidthMin: 149,
    minCols: 4,
    
    main: function(){
        //$("#columns").css('background-color','green');
        
        arrange.colWrap = $("#columns").width();
        arrange.colNum = Math.floor(arrange.colWrap / arrange.columnWidthMin);
        arrange.colFixed = Math.floor(arrange.colWrap / arrange.colNum);
        
        // how many columns fits here?
		
        var columns = Math.max(arrange.minCols, parseInt(arrange.colWrap / arrange.colFixed));
        
        $('#columns .col.onecol').css('width',arrange.colFixed*2  + 'px');
        $('#columns .col.twocols').css('width', arrange.colFixed*4  + 'px');
        
        for (x=0; x < columns; x++) {
            arrange.maxy[x] = 0;
        }
        
        // lets iterate over all posts
		
        iMaxY = 0;
        $('#columns .col').each(function(i) {
        
            var pos, cursor, w, altura= 0;
        
            w = (Math.floor($(this).outerWidth() / arrange.colFixed));
            cursor = 0;
        
            if (w>1) {
                for (x=0; x < columns-(w-1); x++) {
                    cursor = arrange.maxy[x] < arrange.maxy[cursor] ? x : cursor;
                }
                pos = cursor;
                
                for (var x=0; x<w; x++) {
                    altura = Math.max(altura, arrange.maxy[pos+x]);
                }
                for (var x=0; x<w; x++) 
                    arrange.maxy[pos+x] = parseInt($(this).outerHeight()) + altura;
                    
                $(this).css('left', pos*arrange.colFixed + arrange.offx).css('top',altura + arrange.offy);
            }
            else {
            
                for (x=0; x < columns; x++) {
                    cursor = arrange.maxy[x] < arrange.maxy[cursor] ? x : cursor;
                }
        
                $(this).css('left', cursor*arrange.colFixed + arrange.offx).css('top',arrange.maxy[cursor] + arrange.offy);
                arrange.maxy[cursor] += $(this).outerHeight();
                iMaxY = arrange.maxy[cursor];
            }
        });
        
        var iMaximumY = 0; 
        for (j=0; j < arrange.maxy.length; j++)
        {
            if (arrange.maxy[j] > iMaximumY)
            {
                iMaximumY = arrange.maxy[j];
            }
        }
        
        $('#columns').css('height',iMaximumY + 'px');
        //$('.container_mask').css('height',iMaximumY + 'px');
        
        arrange.check_columns();
    },
    
    check_columns: function(){
        var iMaxWidth = 0;
        var iMaxHeight = 0;
        var iCurrTop = 0;
        var h = 0;
        
        $('#columns .col').each(function(i) {
           
            var t = general.extract_num($(this).css('top'));
            if (t == 0) iMaxWidth += $(this).width();
        });
        
        if (iMaxWidth < arrange.colWrap && (arrange.colWrap-iMaxWidth) >= arrange.columnWidthMin)
        {
            arrange.columnWidthMin = arrange.colWrap / (arrange.colNum-1);
            arrange.main();
        }
        else
        {
            general.remove_mask();
            $("#columns").css('left','0px');
        }
    },
    
    static_nav: function(){
        
        var sidenavHeight = $("#sidebar").height();
        var winHeight = $(window).height();
        var browserIE6 = (navigator.userAgent.indexOf("MSIE 6")>=0) ? true : false;
    
        if (browserIE6) {
            $("#sidebar").css({'position' : 'absolute','left' : '-261px'});
        } else {
            $("#sidebar").css({'position' : 'fixed','left' : '0'});
        }
    
        if (sidenavHeight > winHeight) {
            $("#sidebar").css({'position' : 'absolute', 'left' : '-261px'});
        }
    }
	/*,
    
    image_width_fix: function(){
        
        var ln = $('.block img').length - 1;
        
        $('.block img').each(function(i){
            $(this).attr("style","width: 95%; height: auto;");
            if (i==ln)
            {
                var timeoutID = window.setTimeout(arrange, 20);
            }
        });
    }*/
};

var general = {

    mask_fade: 500,
    
    remove_mask: function(){
        
        $('.container_mask').animate({
            opacity: 0
        }, general.mask_fade, function() {
            if ($('.container_mask').length > 0) $('.container_mask').remove();
        });
    },
    
    lightbox: function(objContainer){
        
    },
    
    extract_num: function(sNum){
        var re = /px/;
        var aNum = sNum.replace(re,'');
        iNum = aNum - 0; // cast to int
        return iNum;
    }
};

$(function() {
		   
	// Opens a link in a new window when class = external_link

    if($('a.external_link')){
		$('a.external_link').each(function(i){
			var tmp = $(this).html();
			$(this).html( tmp +'<span class="external_icon"> - (Opens in a new window)</span>');
			tmp = null;
		});
		$('a.external_link').click(function(){
			window.open(this.href);
			return false;
		});
    }
	
	// $("ul#utils_navigation li a").each(function () {
	//	 $(this).wrapInner("<span></span>")
	// });

});
