/*
 * register widget observers
 */
document.observe("dom:loaded", function() {
    registerWidgetObservers();
});

function registerWidgetObservers() {
    if ($('addressSearchButton'))
        $('addressSearchButton').observe('mouseup', submitForm);
    /*
     * ... add observers here
     */
}

function submitForm(event) {
  var element = Event.element(event);
  //reference form that is the wrapper (parent) of the button
  element.up('form').submit();
}

/*
* function: toggle function for advanced search
*
*  parameters:
*  element: the reference to the element itself (use 'this' in code)
*  container: the class-Name of the sourounding container, e.g. 'userComment'
*  the target container that contains the elements to be registered for folding
*/

function showAdvancedSearch(element, container, target){
    Element.extend(element);
    /* target */
    target = $(target);
    var container = element.up(container);
    container.down('.bottom').toggle();
    /* expand containers by changing styles */
    container.toggleClassName('expanded');
    /* toggle advanced search container*/
    element.toggleClassName('advancedSearchLinkExpanded');
    target.toggle();
}

/*
* function: piano fold function for user comments
*
*  parameters:
*  element: the reference to the element itself (use 'this' in code)
*  container: the class-Name of the sourounding container, e.g. 'userComment'
*/

function pianoFold(element, container) {
    var trigger = element;
    Element.extend(trigger);
    trigger.toggleClassName('labelExpanded');

    // update status of container
    var contentId   = $(element).id.replace("togglable-", "");
    var containerId = "togglableitem-" + contentId;
    if ($(containerId) && $(containerId).innerHTML.strip() == "") {
        new Ajax.Updater(containerId, './do?page=kommentardetails', {
            parameters: { markerId: contentId }
        });
    }

	// get folder level 0
    var folderLevel0 = trigger.up(container).up('.folderLevel0');

    // get the foldable element
    var foldable = element.up(container).down('.foldable');

	// toggle label and header style
    foldable.toggle();
    element.up(container).down('.header').toggleClassName('closed');
    
    // get folder state: display: none | block
    var elementState = foldable.getStyle('display');

	// fold piano
    folderLevel0.select('.foldable').each(function(elem){
        if ( (foldable != elem) && elementState=='block'){
            
            var folderLevel1 = elem.up('.folderLevel1');
            
            if(elem.getStyle('display') != 'none'){
                folderLevel1.toggleClassName('labelExpanded');
                folderLevel1.removeClassName('closed');
                folderLevel1.addClassName('opened');
            }
			
			elem.up(container).down('.foldable').setStyle({'display':'none'});
           	folderLevel1.removeClassName('opened');
            folderLevel1.addClassName('closed');
           	folderLevel1.toggleClassName('labelExpanded');
            // toggle +/- labels
            folderLevel1.down('.label').addClassName('labelExpanded');
        	folderLevel1.down('.header').addClassName('closed');
        }
    });
    return;
}


/*
* function: single fold function
*
*  parameters:
*  element: the reference to the element itself (use 'this' in code)
*  container: the class-Name of the sourounding container, e.g. 'userComment'
*/

function singleFold(element, container) {
    Element.extend(element);
    element.toggleClassName('labelExpanded');
    element.up('.'+container).down('.foldable').toggle();

    return;

}
