/**
 * Search
 * 
 * Please check the javascript code after changes with JSlin
 * (http://jslint.com/). 
 * 
 * @author Chris Müller <mueller@cyperfection.de> 
 * @version $Id: mnogosearch.js 769 2010-02-16 14:34:02Z christian $
 * @package typo3
 * @subpackage cyz_mnogosearch
 */ 

/*jslint
	bitwise: true,
	browser: true,
	eqeqeq: true,
	immed: true,
	newcap: true,
	nomen: true,
	onevar: true,
	plusplus: true,
	regexp: true,
	undef: true
*/
/*global
	window,

	$,
	$$,
	$F,
	Ajax
*/



/***** Constants **************************************************************/

var CyzMnogosearchConfig = {
	// Selector id prefix for the form tag which holds the pids
	extendedSearchId: 'cyz-mnogosearch-extended-search',

	// Style for folded extended search
	extendedSearchFoldedClass: 'extended-search-folded',

	// Parameter class for extended search parameters
	extendedSearchParameterClass: '.params',

	// Sliding
	slideDuration: 0.5
};



/***** Processing *************************************************************/

function CyzMnogosearch() {
	/**
	 * Fold extended search box
	 * @param void
	 */
	function foldExtendedSearch() {
		$(CyzMnogosearchConfig.extendedSearchId).down(CyzMnogosearchConfig.extendedSearchParameterClass).hide();
		$(CyzMnogosearchConfig.extendedSearchId).addClassName(CyzMnogosearchConfig.extendedSearchFoldedClass);
	}



	/**
	 * Callback function on clicking on extended search title
	 * @param {Event}
	 * @private
	 */
	function extendedSearchClick(e) {
		// stop event processing
		e.stop();

		if ($(CyzMnogosearchConfig.extendedSearchId).down(CyzMnogosearchConfig.extendedSearchParameterClass).visible()) {
			$(CyzMnogosearchConfig.extendedSearchId).down(CyzMnogosearchConfig.extendedSearchParameterClass).hide();
			$(CyzMnogosearchConfig.extendedSearchId).addClassName(CyzMnogosearchConfig.extendedSearchFoldedClass);
		} else {
			$(CyzMnogosearchConfig.extendedSearchId).down(CyzMnogosearchConfig.extendedSearchParameterClass).show();
			$(CyzMnogosearchConfig.extendedSearchId).removeClassName(CyzMnogosearchConfig.extendedSearchFoldedClass);
		}
	}



	/**
	 * Initializing
	 * This function will be called when the html code is loaded
	 * @public
	 */
	this.init = function () {
		// Extended Search
		if ($(CyzMnogosearchConfig.extendedSearchId)) {
			foldExtendedSearch();

			// and set observer for clicking the extended search title
			$(CyzMnogosearchConfig.extendedSearchId).down().observe('click', extendedSearchClick);

		}
	};
}



/***** Start ******************************************************************/
document.observe('dom:loaded', function() {
	var cyzMnogosearch = new CyzMnogosearch();
	cyzMnogosearch.init();
});

