memorizeCtrlClass = new Class ({
	addPage: function(pageId, pageParams)	{
		// // console.debug('addPage');
		
		var pageUrls = [];
		$E('head').getElements('link[type=application/pdf]').each(function(item, index){
			pageUrls.push(item.href);
		});
		
		var pageParams = new Object({
			'pageTitle'	: $E('title').text,
			'pageId'	: pageId,
			'pageUrls'	: pageUrls,
			'pageUrl'	: window.location.href,
			'pageParams':pageParams
		});
		
		if ($('meta_abstract'))	{
			pageParams.pageAbstract = $('meta_abstract').getProperty('content');
		}
		
		if ($('meta_description'))	{
			pageParams.pageAbstract = $('meta_description').getProperty('content');
		}
		
		// console.debug(pageParams);
		jsonServer.dispatchMethod(
			'hht_memorize',
			'tx_hhtmemorize_json::addPage',
			pageParams,
			this.handleResult
		);
	},
	
	getPageCount: function()	{
		jsonServer.dispatchMethod(
			'hht_memorize',
			'tx_hhtmemorize_json::getPageCount',
			null,
			this.handleResult
		);
	},
	
	getPageList: function()		{
		jsonServer.dispatchMethod(
			'hht_memorize',
			'tx_hhtmemorize_json::getPageList',
			{},
			this.getPageListCallback.bind(this)
		);
	},
	
	getPageListCallback: function(result) 	{
		listcontainer = $('memorize-page-list');
		if (listcontainer) {
			listcontainer.innerHTML = result;
		}
	},
	
	clearPageList: function()	{		
		jsonServer.dispatchMethod(
			'hht_memorize',
			'tx_hhtmemorize_json::clearPageList',
			null,
			this.clearPageListCallback.bind(this)
		);
	},
	
	clearPageListCallback: function(result) 	{
		this.getPageList();
		this.handleResult(0);
	},
	
	removePage: function(index, atag)		{
		var pageContainer;
		if (index != null) {
			pageContainer = $('memorize_page_'+index);	
		} else {
			pageContainer = atag.parentNode.parentNode.parentNode;
		}
		// console.debug(pageContainer);
		
		new Fx.Slide(pageContainer, {onComplete: function()	{ pageContainer.remove() }}).slideOut();
		
		jsonServer.dispatchMethod(
			'hht_memorize',
			'tx_hhtmemorize_json::removePage',
			{'index':index},
			this.updatePageCount
		);
	},
	
	updatePageCount: function(text)	{
		 // console.debug('updatePageCount ('+text+')');
		
		if ($('hht_memorize_pageCount')) {
			$('hht_memorize_pageCount').innerHTML = text;
		}
		if ($$('.hht_memorize_pageCount')) {
			$$('.hht_memorize_pageCount').each(function(item) {
				item.innerHTML = text;
			});
		}
	},
	
	handleResult: function(result)	{
		// console.debug(['handleResult',result]);
		
		// thLightbox.close();
		
		if (result !== false)	{
			memorizeCtrl.toggleLinkGetList(result);
			memorizeCtrl.updatePageCount(result);
			$$('.tx-hhtmemorize-pi1').each(function(elem) {
				var content = elem.getParent().getParent();
				var container = $E('.content',content);
				if (container) {				
					size_fx = new Fx.Styles(content, {duration:400, wait:false});
					size_fx.start({ 'height': container.getSize().size.y });
				}
			});
		}
	},
	
	toggleLinkGetList: function(count) {
		// console.debug('toggleLinkGetList');
		
		if ($('hht_memorize_link_callpagelist')) {
			if (count > 0) {
				$('hht_memorize_link_callpagelist').setStyle('display','');
			} else {
				$('hht_memorize_link_callpagelist').setStyle('display','none');
			}
		}
		if ($$('.hht_memorize_link_callpagelist')) {
			if (count > 0) {
				$$('.hht_memorize_link_callpagelist').each(function(item) {
					item.setStyle('display','');
				});
			} else {
				$$('.hht_memorize_link_callpagelist').each(function(item) {
					item.setStyle('display','none');
				});
			}
		}
	},
	
	afterReorder: function(result)	{
		// console.debug(['afterReorder',result]);
		var elements = $('memorize-page-list-items').childNodes;
		j = 0;
		
		for (var i = 0; i < elements.length; i++)	{
			if (elements[i].className == 'memorize-page-container')	{
				elements[i].setProperty('id','memorize_page_'+j);
				atag = $E('.memorize-page-header .memorize-page-header-controls a',elements[i]);
				atag.setProperty('onclick','memorizeCtrl.removePage('+j+'); return false;');
				j++;
			}
		};
		
		
	},
	
	downloadSummary: function()	{
		// console.debug('downloadSummary');
		thLightbox.openLightBox('downloadSummaryLB', null, label_memorize_pleasewait, false);
		
		jsonServer.dispatchMethod(
			'hht_memorize',
			'tx_hhtmemorize_json::createSummary',
			new Object({'LL':'de',
			 'newsletter': $('hht_memorize_newsletter').checked?'true':'false',
			 'name': $('hht_memorize_name').value,
			 'email': $('hht_memorize_email').value
			 }),
			memorizeCtrl.downloadSummaryCallback
		);
	},
	
	downloadSummaryCallback: function(result)	{
		// console.debug('downloadSummaryCallback');
		if (result[0] == true && result[1] != '') {
			// thLightbox.close();
			// window.location = result[1]; // redirect to the pdf
			window.open(result[1]);
			span = new Element('SPAN');
			span.innerHTML = '<a href="'+ result[1] +'">' + label_memorize_downloadpdf + '</a>';
			thLightbox.loadContent(span);
		} else {
			if (result[1] != "") {
				span = new Element('SPAN');
				span.innerHTML = result[1];
				thLightbox.loadContent(span);
			} else {
				thLightbox.close();
			}
		}
	}
	
});
	
window.addEvent('domready', function()	{
	memorizeCtrl = new memorizeCtrlClass();
	
	if ($('hht_memorize_add_page')) {
		$('hht_memorize_add_page').addEvent('click', function(e)	{
			new Event(e).stop();
			memorizeCtrl.addPage(pageId, pageParams);
		});
	}
	if ($$('.hht_memorize_add_page')) {
		$$('.hht_memorize_add_page').each( function(item) {
			item.addEvent('click', function(e)	{
				new Event(e).stop();
				memorizeCtrl.addPage(pageId, pageParams);
			});
		});
	}
	
	if ($('hht_memorize_pageCount')) {
		memorizeCtrl.toggleLinkGetList($('hht_memorize_pageCount').innerHTML);
	}

	if ($('memorize-page-list-items')) {
		new Sortables($('memorize-page-list-items'), {
			handles: $$('.memorize-page-list-item-sort'),
			onComplete: function(item)	{
				var newOrder = [];
				var elements = $('memorize-page-list-items').childNodes;
				for (var i = 0; i < elements.length; i++)	{
					if (elements[i].className == 'memorize-page-container')	{
						newOrder.push(elements[i].id);
					}
				};
				
				jsonServer.dispatchMethod(
					'hht_memorize',
					'tx_hhtmemorize_json::reorderPages',
					{'newOrder':newOrder},
					memorizeCtrl.afterReorder
				);
			}
		});
	}
});