String.prototype.f = function() {
    var txt = this, i = arguments.length;
    while (i--) txt = txt.replace(new RegExp('\\{' + i + '\\}', 'gm'), arguments[i]);
    return txt;
};

/*
 * Log wrapper
 */
(function(){
  var log,
    history,
    window = this,
    con = window.console;
    
  window.log = log = function() {
    history.push( arguments ); 
    con && con.log[ con.firebug ? 'apply' : 'call']( 
		con, 
		Array.prototype.slice.call( arguments ) 
	);
  };
   
  window.logargs = function( context ) {
    log( context, arguments.callee.caller.arguments );
  };
  
  log.history = history = [];
})();

/*
 * Equalises heights of columns in multi column layouts
 */
function equalheight() {
    var one = "#main", two = "#right", three = "#main_inner";
    var onepadding = 0, twopadding = 0, threepadding = 0;
    var h = Math.max($(one).height() + onepadding, $(two).height() + twopadding );
    h = Math.max(h, $(three).height() + threepadding );
    var property = (jQuery.browser.msie && jQuery.browser.version < 7) ? 'height' : 'min-height';
    var e = jQuery.Event("equalheight");
    e.height = h;
    $(one).css(property, h - onepadding).trigger(e);
    $(two).css(property, h - twopadding).trigger(e);
    $(three).css(property, h - threepadding).trigger(e);
}

function apply_no_print_temp(){
    $('.no_print_temp').addClass('no_print');
}

function remove_no_print_temp(){
    $('.no_print_temp').removeClass('no_print');
}

$(function() {
    
    // if (jQuery.browser.msie && jQuery.browser.version < 7){
    if (jQuery.browser.msie){
        //ie max-width hack - before equal heights
        $('ul#footnav li.column').each(function(){
            w = $(this).width();
            if(w > 76){
                $(this).width(76);
            }
        });
    }
  
    $("ul#footnav li.column").equalHeights();

    /*
     * Sidebar login help text
     */
    var text = "SCHOOL NAME";
    var origColor = $('#login_form #signin_username').css('color');
    var otherColor = $('#login_form #signin_password_placeholder').css('color');

    $('#login_form #signin_username').focus(function(){
        if($(this).val() == text){		
            $(this).css('color',origColor).val("");
        }
    });
    $('#login_form #signin_username').blur(function(){
        if($(this).val() == ""){
            $(this).css('color',otherColor).val(text);
        }
    });
    $('#login_form #signin_password_placeholder').click(function(){
        $(this).hide();
        $('#login_form #signin_password').focus();
    });
    $('#login_form #signin_password').focus(function(){
        $('#login_form #signin_password_placeholder').hide();
    });
    $('#login_form #signin_password').blur(function(){
        if($(this).val() == ""){ 
            $('#login_form #signin_password_placeholder').show();
        }
    });
    $('#login_form input:submit').click(function(e){
        e.preventDefault();
        if ($('#login_form #signin_username').val()==text) {
            $('#login_form #signin_username').val("");
        }
        $('form#login_form').submit();
    });

    /*
     * Sidebar 'refer to a friend' help text
     */
    $('#refer_form #refer_to').focus(function(){
        if($(this).val() == "TO"){
            $(this).css('color',origColor).val("");
        }
    });
    $('#refer_form #refer_to').blur(function(){
        if($(this).val() == ""){
            $(this).css('color',otherColor).val("TO");
        }
    });
    $('#refer_form #refer_email').focus(function(){
        if($(this).val() == "EMAIL"){
            $(this).css('color',origColor).val("");
        }
    });
    $('#refer_form #refer_email').blur(function(){
        if($(this).val() == ""){
            $(this).css('color',otherColor).val("EMAIL");
        }
    });
    $('#refer_form #refer_from_placeholder').click(function(){
        $(this).hide();
        $('#refer_form #refer_from').focus();
    });
    $('#refer_form #refer_from').focus(function(){
        $('#refer_form #refer_from_placeholder').hide();
    });
    $('#refer_form #refer_from').blur(function(){
        if($(this).val() == ""){
            $('#refer_form #refer_from_placeholder').show();
        }
    });
    $('#refer_form input:submit').click(function(e){
        e.preventDefault();
        if ($('#refer_form #refer_to').val()=="TO") {
            $('#refer_form #refer_to').val("");
        }
        if ($('#refer_form #refer_email').val()=="EMAIL") {
            $('#refer_form #refer_email').val("");
        }
        $('form#refer_form').submit();
    });
  

    // Select_jump_url
    $('select.select_jump_url').change(function(){
        $(location).attr('href',$(this).val());
    });
  
    // Select_submit_form 
    $('select.select_submit_form').change(function(){
        $(this).parents('form').submit();
    });
  
    /*
     * Accordion sliding
     */
    $(".accordion:not(.accordion_adv)").accordion({
        header : '.accordion_handle', 
        navigation: true,
        collapsible: true,
        active: false,
        autoHeight: false,
        change : function (event, ui){
            if( ui.newHeader.find('a')[0]){
                window.location.hash = ui.newHeader.find('a')[0].hash;
            }
        }
    });

    $(".accordion_adv").accordion({
        header : ' .accordion_handle',
        navigation: true,
        collapsible: true,
        active: false,
        autoHeight: false,
        change : function (event, ui){
            if( ui.newHeader.find('a')[0]){
                window.location.hash = ui.newHeader.find('a')[0].hash;
            }
            ui.newContent.children('.drawer_only').fadeIn(250);
        },
        changestart : function (event, ui){
      
            ui.newHeader.nextAll('.teaser').hide();
      
            if(ui.oldHeader && ui.oldHeader.nextAll){
                ui.oldHeader.nextAll('.teaser').show();
            }
      
            ui.oldContent.children('.drawer_only').hide();
      
            ui.newHeader.parents('li.accordion_li').removeClass('accordion_closed').addClass('accordion_open');
            if(ui.oldHeader && ui.oldHeader.nextAll){
                ui.oldHeader.parents('li.accordion_li').removeClass('accordion_open').addClass('accordion_closed');
            }
        }
    });
  
    $('.accordion_adv li.accordion_li').addClass('accordion_closed');
    $('.accordion_adv .ui-state-active').parents('.accordion li').removeClass('accordion_closed').addClass('accordion_open');
  
    $('.accordion_adv li.accordion_open .teaser').hide();
    $('.accordion_adv li.accordion_closed .drawer_only').hide();
    
    // accordion_print
    $('.accordion_print').click(function(){
        apply_no_print_temp();
        $(this).parents('li.accordion_open').removeClass('no_print');
        window.print();
        return false;
    });  
  
    /*
     * Dialog
     */
    $('.dialog').dialog({
        closeOnEscape:  true,
        resizable:      false,
        show:           'fade',
        hide:           'fade',
        autoOpen:       false,
        zIndex:         10000
    });
  
    $('#dialog_news_image').dialog( "option", "width", 630);
	
    $('.dialog_news_image_trigger').click(function(e){
        e.preventDefault(); 
        
        index_click = $('.accordion_adv li').index($(this).parents('.accordion li'));
        index_current = $('.accordion_adv li').index($('.accordion_adv li.accordion_open')); //dont use active option, it gives wrong index with navigation option
	  
        delay = 0;
        if(index_click != index_current){
            delay = 250;
            $(".accordion_adv").accordion('activate', index_click);
        }
	  
        $('#dialog_news_image').find('img').attr('src', $(this).attr('href'));
        $('#dialog_news_image').find('.notes').html($(this).siblings('.accordion_drawer').children('.dialog_image_notes').html());
        
        if(! $('#dialog_news_image').dialog( "isOpen" )){
            setTimeout(function(){
                $('#dialog_news_image').dialog('open');
            }, delay);
        }
    });
	
    /*
     * Preload certain images
     */
    icons = ['icon-pdf.png', 'icon-photo.png', 'icon-print.png', 'icon-video.png', 'icon-comment.png', 'icon-pencil.png' ];
    paths = ['/images/icons/', '/images/icons-light/', '/images/icons-small/', '/images/icons-small-light/'];
    var preloads = [];
    $(icons).each(function(icons_index, icon){
        $(paths).each(function(paths_index, path){
            preloads.push(path + icon);
        });	  
    });
	
    $.preloadimages(preloads);
	
	
    /*
     * Window print
     */
    $('.window_print').click(function(){	  
        window.print();
        return false;
    });	    
	
    window.onblur = remove_no_print_temp;
    window.onfocus = remove_no_print_temp;

    $('#aboutFlash').flash({swf: '/images/vid-pres.swf', width: 630, height: 504, scale: "showall"});
});


/*
 * Setup help text for sidebar login and refer forms 
 */
$(window).load(function() {
    //equalheight();

    var text = "SCHOOL NAME";
  
    if ($('#login_form #signin_username').val() == "" || $('#login_form #signin_username').val() == text) {
        $('#login_form #signin_username').val(text).css('color',$('#login_form #signin_password_placeholder').css('color'));
    }
    if ($('#login_form #signin_password').val() == "") {
        $('#login_form #signin_password_placeholder').show();
    }

    if ($('#refer_form #refer_to').val() == "" || $('#refer_form #refer_to').val() == 'TO') {
        $('#refer_form #refer_to').val('TO').css('color',$('#refer_form #refer_from_placeholder').css('color'));
    }
    if ($('#refer_form #refer_email').val() == "" || $('#refer_form #refer_email').val() == 'EMAIL') {
        $('#refer_form #refer_email').val('EMAIL').css('color',$('#refer_form #refer_from_placeholder').css('color'));
    }
    if ($('#refer_form #refer_from').val() == "") {
        $('#refer_form #refer_from_placeholder').show();
    }
});

/*
 * Functions to preload images
 */
$.extend({
  
    preload_images_cache : [],
  
    loadimage: function(img) {
        var cacheImage = document.createElement('img');
        cacheImage.src = img;
        $.preload_images_cache.push(cacheImage);
    },
  
    preloadimages: function(){
        $(arguments).each(function(i, arg){
            if($.isArray(arg)){ 
                $.preloadImagesArray($(arg));
            }else{     
                $.loadimage(arg);
            }
        });
    },
    
    preloadImagesArray : function(images){
        images.each(function(i, img){
            $.loadimage(img);      
        });  
    }
});

/*
 * XHR request need dev env too sometimes
 */
(function($) {
    $.extend({
        urlFor : function(url){
            return (window.location.pathname.indexOf('_dev.php') > -1 ? '/cms_dev.php/' : '/cms.php/') + url;
        }
    });
})(jQuery);

/*
 * Shuffle array
 */
(function($){
    $.fn.shuffle = function() {
        return this.each(function(){
            var items = $(this).children();
            return (items.length)
            ? $(this).html($.shuffle(items))
            : this;
        });
    }

    $.shuffle = function(arr) {
        for(
            var j, x, i = arr.length; i;
            j = parseInt(Math.random() * i),
            x = arr[--i], arr[i] = arr[j], arr[j] = x
        );
        return arr;
    }
})(jQuery);
