// Java Script Document

/**
 * Constructor, to be able to define methods.
 */
function ListAction() {
}

ListAction.pageStructureChangeEventOccured = function(anEvent) {

    var myEventElement = anEvent.getElement();
    var myElement;


    // init 'ul' elements
    var myElements = myEventElement.getElementsByTagName("ul");    

    for(var i=0;i<myElements.length;i++) {
        myElement = myElements[i];
        ListAction.initUlElement(myElement);
    }
    $("a.DeleteAction", myEventElement).click(ListAction.confirmDelete);
    
//	$(".filterBtn", myEventElement).click(ListAction.filterFormSubmit);

	$('.filterBtn').parents("form:first").submit(ListAction.filterFormSubmit);

    $(".refreshBtn", myEventElement).click(ListAction.refreshBtnOnclick);
}    


ListAction.refreshBtnOnclick = function() {
    var container = AjaxRequestManager.getParentContainerForElement(this);
    AjaxRequestManager.reloadCurrent(container, new Object());
    return false;
}

/**
 * filter btn onclick.
 * 
 * searches for parent tr element
 * find all nested input elements
 * if id matches with filter_*, add these params to ajax request
 *       
 */ 
ListAction.filterFormSubmit = function() {

    var myRowElement = $("tr.filter", $(this))[0];// ListAction.fetchRowElement(this);
    
    var myElement;
    var myAdditionalParams = new Object(); 

    var myElements = myRowElement.getElementsByTagName("input");
    for(var i=0;i<myElements.length;i++) {
        myElement = myElements[i];
        
        if (myElement.id.match("filter_")) {
            myAdditionalParams[myElement.id]=myElement.value;
        }            
    }

    var myElements = myRowElement.getElementsByTagName("select");
    for(var i=0;i<myElements.length;i++) {
        myElement = myElements[i];
        
        if (myElement.id.match("filter_")) {
            myAdditionalParams[myElement.id]=myElement.value;
        }            
    }
    
    if (typeof(AjaxRequestManager) != 'undefined') {
	    var myContainerElement = AjaxRequestManager.getParentContainerForElement(this);
	    AjaxRequestManager.reloadCurrent(myContainerElement, myAdditionalParams);
        return false;
    }
    
    return true;
}

/**
 * fetches a parent TR element (finds parent node with tagname 'TR').
 */
ListAction.fetchRowElement = function(anElement) {
    var myRet=null;
    if (anElement.parentNode!=null) {
        if (anElement.parentNode.tagName=="TR") {
            myRet=anElement.parentNode;
        } else {
            myRet=ListAction.fetchRowElement(anElement.parentNode);
        }
    }
    
    return myRet;
}

/**
 * Initializes pageNumbers list.
 */
ListAction.initUlElement = function(anUlElement) {
    if (anUlElement.className.match("dataNavigation"))  {
        var myElements=anUlElement.getElementsByTagName("a");
        for(var i=0;i<myElements.length;i++) {
            myElements[i].onclick = ListAction.gotoPageOnclick;
        }
    }
}    


/**
 * Goes to a certain page.
 */
ListAction.gotoPageOnclick = function(aParam) {
    this.className="action reload";
    //this.ajaxActionOnclick=AjaxAction.linkOnclick;
    return  true;//this.ajaxActionOnclick(aParam);
}

/**
 * Ask for confirmation to delete
 */
ListAction.confirmDelete = function(event) {
    var ret = confirm(event.target.title+" ?");
    if (!ret) {
        event.stopPropagation();
    }
    return ret;
}

/**
 * Add event listeners.
 */
PageRequest.addOnPageStructureChangeEvent(ListAction.pageStructureChangeEventOccured);

