var checkedItemsHash = new Hash();


function toggleItemCheckbox(checkboxElem, itemId, fToggle)
{
	// convert element-id to element if needed
	if(typeof(checkboxElem) == 'string')
		checkboxElem = $(checkboxElem);

	// adjust our hash set of selected links
	if(fToggle)
		checkboxElem.checked = !checkboxElem.checked
	if (checkboxElem.checked)
		checkedItemsHash.set(itemId, true);
	else
		checkedItemsHash.unset(itemId);
}



function ajaxReq_multiItemAction(sActionName)
{
	// any items selected at all
	if(checkedItemsHash.size() == 0) {
		alert("No items selected -- use the checkboxes on the left");
		return;
	}
	
	// join ids into a single string: 1,2,3
	sItemIds = checkedItemsHash.keys().join('_');
	checkedItemsHash = new Hash();

	// loading message and make sure form div shows
	showLoadingMessage('itemsTable');
	
	// do ajax call
	var paramHash = new Hash();
	paramHash.set('itemIds', sItemIds);
    try {
        var request = new Ajax.Request(
            '/librarian/items/'+sActionName,
            {
                method: 'get',
                parameters: paramHash,
                onComplete: ajaxResp_refreshItemsTable
            }
        );
    }
    catch (e) {
        alert('Error: ' + e.toString());
    }
}




/*
 */
function ajaxReq_refreshItemsTable()
{
	// loading message and make sure form div shows
	showLoadingMessage('itemsTable');
	
	// do ajax call
    try {
        var request = new Ajax.Request(
            '/librarian/items/getItemsTableHtml',
            {
                method: 'get',
                onComplete: ajaxResp_refreshItemsTable
            }
        );
    }
    catch (e) {
        alert('Error: ' + e.toString());
    }
}	

function ajaxResp_refreshItemsTable(reply)
{
    $('itemsTable').innerHTML = "";
    
    try {
	    var responseData = eval('(' + reply.responseText + ')');
	    $('itemsTable').innerHTML = responseData.html;
    }
    catch (e) {
    	if (!checkTimeout(reply.responseText))
        	alert('Error: ' + e.toString());
    }
}



/*
 */
function ajaxReq_loadItemDetails(id)
{
	// loading message and make sure form div shows
	$('itemDetailsContainer').className = 'visible';
	showLoadingMessage('itemDetailsContent');
	
	// do ajax call
    try {
        var request = new Ajax.Request(
            '/librarian/items/getItemDetailsHtml',
            {
                method: 'get',
                parameters: {itemId:id},
                onComplete: ajaxResp_loadItemDetails
            }
        );
    }
    catch (e) {
        alert('Error: ' + e.toString());
    }
}	

function ajaxResp_loadItemDetails(reply)
{
    try {
	    $('itemDetailsContainer').className = 'invisible';
	    var responseData = eval('(' + reply.responseText + ')');
	    $('itemDetailsContainer').className = 'visible';
	    $('itemDetailsContent').innerHTML = responseData.html;
    }
    catch (e) {
        alert('Error: ' + e.toString());
    }
}



/*
 */
function ajaxReq_setItemsFilter()
{
	// loading message and make sure form div shows
	showLoadingMessage('itemsTable');
	
	// extract filter values
	var paramHash = $('Librarian_ItemsFilterForm').serialize(true);
	
	// do ajax call
    try {
        var request = new Ajax.Request(
            '/librarian/items/setItemsFilter',
            {
                method: 'get',
                parameters: paramHash, 
                onComplete: ajaxResp_refreshItemsTable		// this is on purpose
            }
        );
    }
    catch (e) {
        alert('Error: ' + e.toString());
    }
}	


/*
 */
function ajaxReq_setCommItemsFilter()
{
	// loading message and make sure form div shows
	showLoadingMessage('itemsTable');
	
	// extract filter values
	var paramHash = $('Librarian_CommItemsFilterForm').serialize(true);
	
	// do ajax call
    try {
        var request = new Ajax.Request(
            '/librarian/comm-items/setItemsFilter',
            {
                method: 'get',
                parameters: paramHash, 
                onComplete: ajaxResp_refreshItemsTable		// this is on purpose
            }
        );
    }
    catch (e) {
        alert('Error: ' + e.toString());
    }
}	



/*
 *
 */
function showLoadingMessage(sElementId)
{
    $(sElementId).innerHTML = "<p><img src='/assets/images/loading.gif' alt=''/></p>";
}	




/*
 * Grabs the content of a input text field and opens it as a URL 
 */
 function goToUrl(sElementId, fNewWindow)
 {
 	// grab url
 	sUrl = $(sElementId).value;
 	
 	// missing http://
 	if(sUrl.substr(0,4) != 'http')
 		sUrl = 'http://' + sUrl;
 	
	 // check 
 	if(sUrl.length == 0)
 		alert('URL is empty');
 	else {
	 	// do it
	 	if(fNewWindow)
	 		window.open(sUrl);
	 	else
	 		window.location = sUrl;
	}
 }
 
 
 
 /*
 *  
 */
 function previewTextArea(sTextAreaId, sTargetDivId)
 {
 	// loading message and make sure form div shows
 	$(sTargetDivId).className = 'visible';
	showLoadingMessage(sTargetDivId+'Content');
	
	// extract textarea values
	sTextContent = $(sTextAreaId).value;
	
	// do ajax call
    try {
        var request = new Ajax.Request(
            '/services/html/convertPseudoToHtml',
            {
                method: 'post',
                parameters: {'pseudo':sTextContent, 'targetDivId':sTargetDivId}, 
                onComplete: ajaxResp_previewTextArea		
            }
        );
    }
    catch (e) {
        alert('Error: ' + e.toString());
    }
 }
 
 function ajaxResp_previewTextArea(reply)
{
    try {
	    var responseData = eval('(' + reply.responseText + ')');
		var sTargetDivId = responseData.targetDivId + 'Content';
		var sHtml = responseData.html;
		$(sTargetDivId).innerHTML = sHtml;
    }
    catch (e) {
        alert('Error: ' + e.toString());
    }
}
 
function checkTimeout (responseContent) {
	var trimmedString = jQuery.trim(responseContent);
	if (trimmedString.substring(0,9)=='<!DOCTYPE') {
		top.location.href="/login";
		return true;
	}
	return false
}
 