/*
 * displayTagAjax.js
 *
 * ajaxify your displayTag pagination & sorts
 *
 * Copyright (c) 2008, 2009 Vijay Karthik, Wim.Gillis@UGent.be
 * Licensed under GPL (GPL-LICENSE.txt) license.
 */


/*
 * Usage:
 * 
 *	<script>
 *	  $(document).ready(function(){
 *		changeLinks('someTableId');
 *	  });
 *  </script>
 */

function changeLinks(container)
{
    done=true;
    var linkData, queryArr, action, qryStr;
    // selector = 'div#' + container + ' span.pagelinks>a[href]'; // => breaks in IE6/7, for some reason!:p
    selector = 'div#' + container + ' span.pagelinks a[href]';
    changeUsingSelector(selector, container);
    selector = 'div#' + container + ' table.dispTable>thead>tr>th>a[href]';
    changeUsingSelector(selector, container);
}

function changeUsingSelector(selector, container)
{
    $(selector).each(function(i)
    {
        linkData = $(this).attr("href");
        queryArr = linkData.split("?");
        action = queryArr[0];
        qryStr = queryArr[1];
        newStr = "JavaScript:doAjaxDisplaytag('"+action+"','"+qryStr+"','" + container + "');";
        $(this).attr("href",newStr);
    });    

}

function doAjaxDisplaytag(url, data, eleId)
{
	addLoadingIndicator(eleId);
    //if you need additional params to be passed - add to the data variable
    $.ajax
    ({
        url: url,
        data:  data,
        dataType: 'html',
        async: false,
        success: function(resp){
            var newnode = $(resp).find("div#" + eleId);
            var htmlStr = newnode.html();
            $('div#'+eleId).html(htmlStr);            
            changeLinks(eleId);
            // SI specific: reinitialize T-ypestrain cluetip popup
            //cluetip_popup("div#" + eleId + " sup.typestrain a.t");  
            //--> no longer needed, as cluetip is now initialized inline; see main.jsp decorator & strainNumber.tag
            deleteLoadingIndicator(eleId);
        }
    });
}

function addLoadingIndicator(eleId) {
	jQuery('<div class="loading"></div>').prependTo(jQuery(($('div#'+eleId).parent().get(0))));
}

function deleteLoadingIndicator(eleId){

	var parent = jQuery($('div#' + eleId).parent().get(0));
	var loading = $('.loading', parent);
	loading.remove();
	// $('.loading', parent).remove(); wouldve been nicer, but IE doesnt play along
}