/*
**************************************************************************
 Dies ist UNVEROEFFENTLICHTER URHEBERRECHTLICH GESCHUETZTER QUELLCODE der
 eWerk IT GmbH, der Inhalt dieser Datei darf ohne die ausdrueckliche
 Erlaubnis der eWerk IT GmbH nicht an Dritte weitergegeben, kopiert oder
 in sonstiger Form, im Ganzen oder in Teilen weitergegeben werden.

 Eine Weitergabe an Dritte, oder Veraenderungen am Programm duerfen nur
 mit ausdruecklicher Genehmigung der eWerk IT GmbH erfolgen.

 Copyright 2007-2008, eWerk IT GmbH,
 Alle Rechte vorbehalten

 This is UNPUBLISHED PROPRIETARY SOURCE CODE of eWerk IT GmbH, the
 contents of this file may not be disclosed to third parties, copied or
 duplicated in any form, in whole or in part, without the prior written
 permission of eWerk IT GmbH.

 Distribution to a third party or changes at the data file are only
 allowed with the explicit permission of eWerk IT GmbH.

 Copyright 2007-2008, eWerk IT GmbH,
 All rights reserved
***************************************************************************/

/**
 *
 * Leipzig Liest Webseite: Bookfair Notepad - AJAX Client
 *
 * This JavaScript file holds the client side logic to note bookfair events.
 *
 * @package    module:product
 * @version    $Id: ll_notepad_lists.js,v 1.1.2.11 2011/02/10 13:42:56 m.ruehle Exp $
 * @author     Michael Werner <m.werner@ewerk.com>
 * @copyright  2007-2008 eWerk IT GmbH
 */

	/*
	* - could be used for debugging an object
	*
	* @params	object 	$obj
	*/
	function vardump(obj)
	{
	    var a= new Array();
	    for (var p in obj) a[a.length]= p;
	    	a.sort();
	    var w= window.open ('','vardumper');
	    w.document.write('<dl><dt>'+obj+'</dt>');
	    for (var i=0; i<a.length; i++) w.document.write('<dd>'+a[i]+'<i>= '+obj[a[i]]+'</i></dd>');
	    w.document.write('</dl>');
	    w.document.onclick= function () {w.close();};
	}

	/********************************************************************/
	/*																    */
	/*			  	Step: actions in notepad box					    */
	/*			  	@see: template notepad_showNoteBox				    */
	/*			  	-> set variable: server_path_note_box			    */
	/*																    */
	/********************************************************************/


    /*
	* AJAX-REQUEST
	* - get tags for first load
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @uses		showSessionNote (RESPONSE)
	*/
	function getSessionNotepad(prefix)
	{
		var params  = prefix+"[action]=load_session_note";
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");

		new Ajax.Request(server_path_note_box,
			   {method: "post",
				parameters: params,
				onSuccess: showSessionNote});
	}

	/*
	* AJAX-REQUEST
	* - add new session entry
	* - called from any list view or detail view of an entity
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @uses     showSessionNote (RESPONSE)
	* 
	* @params   string 	$prefix
	* @params   string 	$params_encoded
	* @params   int 	$entity_id
	*/
	function addSessionEntity(prefix, params_encoded, entity_id)
	{
		var params  = prefix+"[action]=add_session_entity";
			params += "&"+prefix+"[params_encoded]="+params_encoded;
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");
		
		$(entity_id+'_is_marked_in_notepad').setStyle({display:'inline'});
			
		//action: insert/update user voting
		new Ajax.Request(server_path_note_box,
						   {method: "post",
							parameters: params,
							onSuccess: showSessionNote});
	}

	/*
	* AJAX-REQUEST
	* - add new session entry
	* - called from any list view or detail view of an entity
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @uses     showSessionNote (RESPONSE)
	* @params   string 	$prefix
	* @params   int 	$entity_id
	*/
	function deleteSessionEntity(prefix, entity_id)
	{
		var clear_session_entity = confirm(unescape("Wollen Sie wirklich diesen Eintrag löschen?"));

		if (!clear_session_entity)
		{
			return false;
		}
		
		if ($(entity_id+'_is_marked_in_notepad') != undefined)
		{
			$(entity_id+'_is_marked_in_notepad').setStyle({display:'none'});
		}

		var params  = prefix+"[action]=delete_session_entity";
			params += "&"+prefix+"[entity_id]="+entity_id;
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");

		//action: insert/update user voting
		new Ajax.Request(server_path_note_box,
						   {method: "post",
							parameters: params,
							onSuccess: showSessionNote});
	}

	/*
	* AJAX-REQUEST
	* - add new session entry
	* - called from any list view or detail view of an entity
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @uses     showSessionNote (RESPONSE)
	* @params   string 	$prefix
	* @params   int 	$entity_id
	*/
	function deleteAllSessionEntities(prefix)
	{
		var clear_session_entities = confirm(unescape("Wollen Sie wirklich alle Einträge im Merkzettel löschen?"));

		if (!clear_session_entities)
		{
			return false;
		}

		var params  = prefix+"[action]=delete_all_session_entities";
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");

		//action: insert/update user voting
		new Ajax.Request(server_path_note_box,
						   {method: "post",
							parameters: params,
							onSuccess: showSessionNote});
	}

	/*
	* AJAX-RESPONSE
	* - show short summary of session notepad
	* - see 'll_notepad_showNoteBox_ajax'
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @see 		getSessionNote
	* @see 		addSessionEntry
	*/
	function showSessionNote(request)
	{
		var response = request.responseXML;
		//use it for mozilla debugging
		//console.log(response);

		//get first level of main variables
		for (var i = 0; i < response.childNodes[0].childNodes.length; i++)
		{
			switch (response.childNodes[0].childNodes[i].tagName)
			{
				case 'html':
					var html = response.childNodes[0].childNodes[i].textContent;
					if (html == undefined) html = response.childNodes[0].childNodes[i].text;
					$('showSessionNotepad').innerHTML = html;
				break;
			}
		}

		return true;
	}


	/********************************************************************/
	/*																    */
	/*			  	Step: actions in 'all notepad list'				    */
	/*			  	@see: template notepad_showAllNotepads			    */
	/*			  	-> set variable: server_path_notepad_list		    */
	/*																    */
	/********************************************************************/

    /*
	* AJAX-REQUEST
	* - get tags for first load
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @uses		showSessionNote (RESPONSE)
	*/
	function getAllNotepads(prefix)
	{
		var params  = prefix+"[action]=load_all_notepads";
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");

		new Ajax.Request(server_path_notepad_list,
			   {method: "post",
				parameters: params,
				onSuccess: showAllNotepads});
	}

    /*
	* AJAX-REQUEST
	* - get tags for first load
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @uses		showSessionNote (RESPONSE)
	*/
	function getNotepadEntities(prefix, notepad_id)
	{
		var params  = prefix+"[action]=load_one_notepad";
			params += "&[notepad_id]="+notepad_id;
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");

		new Ajax.Request(server_path_notepad_list,
			   {method: "post",
				parameters: params,
				onSuccess: showOneNotepad});
	}

	/*
	* AJAX-REQUEST
	* - add new session entry
	* - called from any list view or detail view of an entity
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @uses     showAllNotepads (RESPONSE)
	* @params   string 	$prefix
	* @params   int 	$entity_id
	*/
	function deleteSessionEntityInMainList(prefix, entity_id)
	{
		var clear_session_entity = confirm(unescape("Wollen Sie wirklich diesen Eintrag löschen?"));

		if (!clear_session_entity)
		{
			return false;
		}

		var params  = prefix+"[action]=delete_session_entity_in_main_list";
			params += "&"+prefix+"[entity_id]="+entity_id;
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");

		//action: insert/update user voting
		new Ajax.Request(server_path_notepad_list,
						   {method: "post",
							parameters: params,
							onSuccess: showAllNotepads});
	}

	/*
	* AJAX-REQUEST
	* - add new session entry
	* - called from any list view or detail view of an entity
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @uses     showAllNotepads (RESPONSE)
	* @params   string 	$prefix
	* @params   int 	$entity_id
	*/
	function deleteDBEntityInMainList(prefix, entity_id, notepad_id)
	{
		var clear_session_entity = confirm(unescape("Wollen Sie wirklich diesen Eintrag löschen?"));

		if (!clear_session_entity)
		{
			return false;
		}

		var params  = prefix+"[action]=delete_db_entity_in_main_list";
			params += "&"+prefix+"[entity_id]="+entity_id;
			params += "&"+prefix+"[notepad_id]="+notepad_id;
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");

		//action: insert/update user voting
		new Ajax.Request(server_path_notepad_list,
						   {method: "post",
							parameters: params,
							onSuccess: showAllNotepads});
	}

	/*
	* AJAX-REQUEST
	* - add new session entry
	* - called from any list view or detail view of an entity
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @uses     showSessionNote (RESPONSE)
	* @params   string 	$prefix
	* @params   int 	$entity_id
	* @params   int 	$notepad_id
	*/
	function deleteDBEntityInSubList(prefix, entity_id, notepad_id)
	{
		var clear_session_entity = confirm(unescape("Wollen Sie wirklich diesen Eintrag löschen?"));

		if (!clear_session_entity)
		{
			return false;
		}

		var params  = prefix+"[action]=delete_db_entity_in_main_list";
			params += "&"+prefix+"[entity_id]="+entity_id;
			params += "&"+prefix+"[notepad_id]="+notepad_id;
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");

		//action: insert/update user voting
		new Ajax.Request(server_path_notepad_list,
						 {method: "post",
						  parameters: params,
						  onSuccess: showOneNotepad});
	}

	/*
	* AJAX-REQUEST
	* - delete all session entities
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @uses     showAllNotepads (RESPONSE)
	* @params   string 	$prefix
	*/
	function deleteAllSessionEntitiesInMainList(prefix)
	{
		var clear_session_entities = confirm(unescape("Wollen Sie wirklich alle Einträge im Merkzettel löschen?"));

		if (!clear_session_entities)
		{
			return false;
		}

		var params  = prefix+"[action]=delete_all_session_entities_in_main_list";
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");

		//action: insert/update user voting
		new Ajax.Request(server_path_notepad_list,
						   {method: "post",
							parameters: params,
							onSuccess: showAllNotepads});
	}


	/*
	* AJAX-REQUEST
	* - delete all entities of a db-notepad
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @uses     showAllNotepads (RESPONSE)
	* @params   string 	$prefix
	* @params   int 	$entity_id
	*/
	function deleteAllDBEntitiesInMainList(prefix, notepad_id)
	{
		var clear_session_entities = confirm(unescape("Wollen Sie wirklich alle Einträge im Merkzettel löschen?"));

		if (!clear_session_entities)
		{
			return false;
		}

		var params  = prefix+"[action]=delete_all_db_entities_in_main_list";
			params += "&"+prefix+"[notepad_id]="+notepad_id;
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");

		//action: insert/update user voting
		new Ajax.Request(server_path_notepad_list,
						   {method: "post",
							parameters: params,
							onSuccess: showAllNotepads});
	}

	/*
	* AJAX-REQUEST
	* - add new session entry
	* - called from any list view or detail view of an entity
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @uses     showSessionNote (RESPONSE)
	* @params   string 	$prefix
	* @params   int 	$entity_id
	*/
	function deleteAllDBEntitiesInSubList(prefix, notepad_id)
	{
		var clear_session_entities = confirm(unescape("Wollen Sie wirklich alle Einträge im Merkzettel löschen?"));

		if (!clear_session_entities)
		{
			return false;
		}

		var params  = prefix+"[action]=delete_all_db_entities_in_main_list";
			params += "&"+prefix+"[notepad_id]="+notepad_id;
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");

		//action: insert/update user voting
		new Ajax.Request(server_path_notepad_list,
						   {method: "post",
							parameters: params,
							onSuccess: showOneNotepad});
	}
	
	/*
	 * AJAX-REQUEST
	 * - add new session entry
	 * - called from any list view or detail view of an entity
	 *
	 * @author 	Michael Werner <m.werner@ewerk.com>
	 * @uses     showAllNotepads (RESPONSE)
	 * @params   string 	$prefix
	 */
	function addDBNotepad(prefix)
	{
		var params = prefix+"[action]=add_db_notepad";
		params     = params.replace(/\[/g,"%5B");
		params     = params.replace(/\]/g,"%5D");
		
		//add all form elements as parameters
		params += "&"+Form.serialize('addDbNotepadForm');
		
		//action: insert/update user voting
		new Ajax.Request(server_path_notepad_list,
				{method: "post",
				 parameters: params,
				 onSuccess: showAllNotepads});
	}

	/*
	* AJAX-RESPONSE
	* - show entity list of session notepad
	* - show list of database notepads
	* - see 'll_notepad_showAllNotepads_ajax'
	*
	* @author 	Michael Werner <m.werner@ewerk.com>

	* @see 		getAllNotepads
	* @see 		deleteSessionEntityInMainList
	* @see 		deleteDBEntityInMainList
	* @see 		deleteAllSessionEntitiesInMainList
	* @see 		deleteAllDBEntitiesInMainList
	* @see 		storeSessionNotepad
	* @see 		combineNotepads
	*
	* @return   bool
	*/
	function showAllNotepads(request)
	{
		var response = request.responseXML;

		//use it for mozilla debugging
		//console.log(response);

		//get first level of main variables
		for (var i = 0; i < response.childNodes[0].childNodes.length; i++)
		{
			switch (response.childNodes[0].childNodes[i].tagName)
			{
				case 'html':
					var html = response.childNodes[0].childNodes[i].textContent;
					if (html == undefined) html = response.childNodes[0].childNodes[i].text;
					$('showAllNotepads').innerHTML = html;
				break;
			}
		}

		return true;
	}

	/*
	* AJAX-RESPONSE
	* - show entities from selected database notepad
	* - see 'll_notepad_showOneNotepad_ajax'
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @see 		getOneNotepad
	* @return   bool
	*/
	function showOneNotepad(request)
	{
		var response = request.responseXML;

		//use it for mozilla debugging
		//console.log(response);

		//get first level of main variables
		for (var i = 0; i < response.childNodes[0].childNodes.length; i++)
		{
			switch (response.childNodes[0].childNodes[i].tagName)
			{
				case 'html':
					var html = response.childNodes[0].childNodes[i].textContent;
					if (html == undefined) html = response.childNodes[0].childNodes[i].text;
					$('showOneNotepad').innerHTML = html;
				break;
			}
		}

		return true;
	}

	/*
	* AJAX-REQUEST
	* - hide text and open input field for session notepad childs
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @params   int $entity_id
	*/
	function editSessionChildComment(entity_id)
	{
		$('sessionEditChildComment_'+entity_id).style.display = 'block';
		$('sessionChildComment_'+entity_id).style.display = 'none';
	}

	/*
	* AJAX-REQUEST
	* - hide text and open input field for DB notepad childs
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @params   int $notepad_child_id
	*/
	function editDBChildComment(notepad_child_id)
	{
		$('dbEditChildComment_'+notepad_child_id).style.display = 'block';
		$('dbChildComment_'+notepad_child_id).style.display = 'none';
	}

	/*
	* AJAX-REQUEST
	* - update session child comment
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	*
	* @uses     prototype::stripTags
	* @uses     prototype::Form.serialize
	*
	* @params   string 	$prefix
	* @params   int 	$entity_id
	*/
	function setSessionChildComment(prefix, entity_id)
	{
		var params  = prefix+"[action]=set_session_child_comment";
			params += "&"+prefix+"[entity_id]="+entity_id;
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");

		//add all form elements as parameters
		params += "&"+Form.serialize('sessionChildCommentForm_'+entity_id);

		//action: insert/update user voting
		new Ajax.Request(server_path_notepad_list,
						   {method: "post",
							parameters: params});

		//set new text - close input field
		child_text = $('sessionChildCommentText_'+entity_id).value;
		$('sessionChildComment_'+entity_id).style.display 	  = 'block';
		$('session_child_comment_'+entity_id).innerHTML 	  = child_text == "" ? unescape("Kommentar hinzufügen") : child_text.stripTags();
		$('sessionEditChildComment_'+entity_id).style.display = 'none';
	}

	/*
	* AJAX-REQUEST
	* - insert/update child comment of a db notepad
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	*
	* @uses     prototype::stripTags
	* @uses     prototype::Form.serialize
	*
	* @params   string 	$prefix
	* @params   int 	$notepad_child_id
	*/
	function setDBChildComment(prefix, notepad_child_id)
	{
		var params  = prefix+"[action]=set_db_child_comment";
			params += "&"+prefix+"[notepad_child_id]="+notepad_child_id;
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");

		//add all form elements as parameters
		params += "&"+Form.serialize('dbChildCommentForm_'+notepad_child_id);

		//action: insert/update user voting
		new Ajax.Request(server_path_notepad_list,
						   {method: "post",
							parameters: params});

		//set new text
		$('dbChildComment_'+notepad_child_id).style.display 	= 'block';
		child_text = $('dbChildCommentText_'+notepad_child_id).value;
		$('db_child_comment_'+notepad_child_id).innerHTML 	    = child_text == "" ? unescape("Kommentar hinzufügen") : child_text.stripTags();
		$('dbEditChildComment_'+notepad_child_id).style.display = 'none';
	}

	/*
	* AJAX-REQUEST
	* - add new session entry
	* - called from any list view or detail view of an entity
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @uses     prototype::Form.serialize
	*
	* @params   string 	$prefix
	* @params   int 	$notepad_id
	*/
	function setDBCheckChangesFlag(prefix, notepad_id)
	{
		var params  = prefix+"[action]=set_db_check_changes_flag";
			params += "&"+prefix+"[notepad_id]="+notepad_id;
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");

		//add all form elements as parameters
		params += "&"+Form.serialize('setDBCheckChangesFlag_'+notepad_id);

		//action: insert/update user voting
		new Ajax.Request(server_path_notepad_list,
						   {method: "post",
							parameters: params});

		//set new text
		$('setFlagOK_'+notepad_id).style.display = 'block';
	}

	/*
	* AJAX-REQUEST
	* - change notepad title
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @uses     prototype::Form.serialize
	*
	* @params   string 	$prefix
	* @params   int 	$notepad_id
	*/
	function changeNpTitle(prefix, notepad_id)
	{
		var params  = prefix+"[action]=change_np_title";
			params += "&"+prefix+"[notepad_id]="+notepad_id;
			params  = params.replace(/\[/g,"%5B");
			params  = params.replace(/\]/g,"%5D");

		//add all form elements as parameters
		params += "&"+Form.serialize('changeNpTitle_'+notepad_id);

		//action: change notepad title
		new Ajax.Request(server_path_notepad_list,
						   {method: "post",
							parameters: params});

		//set new title
		$('np_headline'+notepad_id).innerHTML = $('np_title'+notepad_id).value;
	}


	/*
	* AJAX-REQUEST
	* - add new session entry
	* - called from any list view or detail view of an entity
	*
	* @author 	Michael Werner <m.werner@ewerk.com>
	* @uses     prototype::Form.serialize
	*
	* @params   string 	$prefix
	* @params   int 	$count_np
	*/
	function moveNotepadEntities(prefix, count_np, mode)
	{
		var notepad_id = $('move_to_db_notepad').value; 
		var counter    = 0;
		var params     = prefix+"[action]=move_notepad_entities";
			params    += "&"+prefix+"[move_to_notepad_id]="+notepad_id;
			params    += "&"+prefix+"[notepad_child_ids]=";

		for (var i=1; i <= count_np; i++)
		{
			if ($('move_entity_'+i).checked)
			{
				params += counter > 0 ? "-" : "";
				params += $('move_entity_'+i).name;
				counter++;
			}
		}
		
		if (counter == 0)
		{
			//set new text
			$('setCombineFlagError').style.display = 'block';
			return false;
		}

		params = params.replace(/\[/g,"%5B");
		params = params.replace(/\]/g,"%5D");

		if (mode == "session")
		{
			//reload all notepad list
			new Ajax.Request(server_path_notepad_list,
					{method: "post",
				parameters: params,
				onSuccess: showAllNotepads});
		}
		else
		{
			//reload one notepad list
			new Ajax.Request(server_path_notepad_list,
					{method: "post",
				parameters: params,
				onSuccess: showOneNotepad});
		}
	}

