function loadComments(promoId)
{
	showPopUp(promoId);
	doPostbackForComments(promoId);
}

function showPopUp(promoId)
{
	itemObj.clickedPromoId = promoId;
	if($('modalPopUpContainer') == null)
	{ pbPopUpDOMElements(); }
	else
	{ $('modalPopUpContainer').fade('in', {duration: 500}); }
}

function hidePopUp()
{
	var mppContainer = $('modalPopUpContainer');
	if(mppContainer != null)
	{
		mppContainer.fade('out', {duration: 500});
		mppContainer.opened = false;
	}
}

var nList;

function pbPopUpDOMElements()
{
	var httpReq = new Request.HTML({
		url: BASE_URL + '/site/remoting/modalPopUp.php',
		method: 'post',
		link: 'cancel',
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript)
			{
				var tree = $$(responseTree);
				var modalPU = tree[0];
				var mpuBG = modalPU.getElement('div.mppBackground');
				var mpuWin = modalPU.getElement('div.mppWindow');
				
				mpuBG.setOpacity(0.7);
				modalPU.fade('hide');
				modalPU.inject(document.getElement('body'), 'top');
				
				// center popUp in middle Screen
				mpuWin.morph = new Fx.Morph(mpuWin, {
					duration: 300,
					transition: Fx.Transitions.Sine.easeInOut
				});
				mpuWin.center = function(set)
				{
					var cTop = this.getCoordinates().top;
					var cLeft = this.getCoordinates().left;
					var fTop = (itemObj.windowHeight / 2) - (this.getCoordinates().height / 2);
					var fLeft = (itemObj.windowWidth / 2) - (this.getCoordinates().width / 2);
					
					if(set == undefined)
					{
						this.morph.start({
							'top': [cTop, fTop],
							'left': [cLeft, fLeft]
						});
					}
					else
					{
						this.morph.set({
							'top': fTop,
							'left': fLeft
						});
					}
				}.bind(mpuWin);
				mpuWin.center(true);
				window.addEvent('resize', mpuWin.center);
				
				// form animation
				var footer = modalPU.getElementById('popUpFooter');
				footer.getElementById('commentFormContainer').show = function() {
					this.getElementById('remoteSuccessMessage').fade('hide');
					this.getElementById('remoteErrorMessage').fade('hide');
					this.getElementById('remoteSuccessMessage').setStyle('display', 'none');
					this.getElementById('remoteErrorMessage').setStyle('display', 'none');
					
					this.getElementById('commentFormContainer').setStyle('display', 'block');
					this.getElementById('commentFormContainer').fade('in', { duration: 250 });
					
					return this.getElementById('commentFormContainer');
				}.bind(footer);
				
				footer.getElementById('commentFormContainer').reset = function() {
					this.getElementById('cName').value = 'Nome.';
					this.getElementById('cEmail').value = 'Email.';
					this.getElementById('cTitle').value = unescape('T%EDtulo.');
					this.getElementById('cComment').value = unescape('Escrever%20Coment%E1rio.');
					
					return this.getElementById('commentFormContainer');
				}.bind(footer);
				
				footer.getElementById('remoteSuccessMessage').show = function () {
					this.getElementById('commentFormContainer').fade('hide');
					this.getElementById('remoteErrorMessage').fade('hide');
					this.getElementById('commentFormContainer').setStyle('display', 'none');
					this.getElementById('remoteErrorMessage').setStyle('display', 'none');
					
					this.getElementById('remoteSuccessMessage').setStyle('display', 'block');
					this.getElementById('remoteSuccessMessage').fade('in', { duration: 250 });
					
					return this.getElementById('remoteSuccessMessage');
				}.bind(footer);
				
				footer.getElementById('remoteErrorMessage').show = function () {
					this.getElementById('commentFormContainer').fade('hide');
					this.getElementById('remoteSuccessMessage').fade('hide');
					this.getElementById('commentFormContainer').setStyle('display', 'none');
					this.getElementById('remoteSuccessMessage').setStyle('display', 'none');
					
					this.getElementById('remoteErrorMessage').setStyle('display', 'block');
					this.getElementById('remoteErrorMessage').fade('in', { duration: 250 });

					return this.getElementById('remoteErrorMessage');
				}.bind(footer);
				//alert(footer.getElements().length);
				footer.opened = false;
				footer.morph = new Fx.Morph(footer, {
					duration: 750,
					transition: Fx.Transitions.Sine.easeInOut,
					wait: true
				});
				
				footer.toggle = function() {
					this.getElementById('commentFormContainer').show().reset();
					
					var tglBtn = this.getElement('div.toggleFormBtn');
					var clsBtn = this.getElement('div.popUpCloseBtn');
					if(this.opened == false)
					{
						tglBtn.removeEvent('click', this.toggle);
						tglBtn.setStyle('cursor', 'default');
						clsBtn.removeEvent('click', hidePopUp);
						clsBtn.set('text', 'Minimizar');
						clsBtn.addEvent('click', this.toggle);
						this.morph.start({
							'height': [this.getHeight(), 227],
							'top': [0, -189]
						});
						this.getElementById('commentFormContainer').fade('in', { duration: 950} );
						this.opened = true;
					}
					else
					{
						tglBtn.addEvent('click', footer.toggle);
						tglBtn.setStyle('cursor', 'pointer');
						clsBtn.removeEvent('click', this.toggle);
						clsBtn.set('text', 'Fechar');
						clsBtn.addEvent('click', hidePopUp);
						this.morph.start({
							'height': [this.getHeight(), 38],
							'top': [-189, 0]
						});
						this.getElementById('commentFormContainer').fade('out', { duration: 950} );
						this.opened = false;
					}
				}.bind(footer);
				footer.getElement('div.toggleFormBtn').addEvent('click', footer.toggle);
				footer.getElement('div.popUpCloseBtn').addEvent('click', hidePopUp);
				modalPU.fade('in', 750);
				modalPU.getElementById('commentSubmitBtn').addEvent('click', function() {
					var validationMsg = CommentFormValidate()
					if(validationMsg == true)
					{
						new Request({
							url: 'site/remoting/commitComment.php',
							method: 'post',
							link: 'ignore',
							onSuccess: function(json, text) {
								this.getElementById('commentFormContainer').fade('out', { duration: 250 });
								var code = JSON.decode(json).code;
								if(code == 0)
								{
									this.getElementById('remoteSuccessMessage').show();
								}
								else
								{
									this.getElementById('remoteErrorMessage').show();
								}
							}.bind(modalPU)
						}).post({
							promoId: itemObj.clickedPromoId,
							name: footer.getElementById('cName').value,
							email: footer.getElementById('cEmail').value,
							title: footer.getElementById('cTitle').value,
							comment: footer.getElementById('cComment').value
						});
					}
					else
					{ alert(unescape(validationMsg)); }
				});
			}
	}).post();
}

function CommentFormValidate()
{
	var cNameInput = $('cName');
	var cEmailInput = $('cEmail');
	var cTitleInput = $('cTitle');
	var cCommentInput = $('cComment');
	var returnMessage = '';
	
	if(cNameInput.value == 'Nome.')
	{ cNameInput.value = ''; }
	if(cNameInput.value.length == 0)
	{
		returnMessage += 'Tem de indicar o Nome.\n';
		cNameInput.value = 'Nome.';
	}
	
	if(cEmailInput.value == 'Email.')
	{ cEmailInput.value = ''; }
	if(cEmailInput.value.length == 0)
	{
		returnMessage += 'Tem de indicar o Email.\n';
		cEmailInput.value = 'Email.';
	}
	else if(echeck(cEmailInput.value) == false)
	{ returnMessage += 'O%20Email%20que%20indicou%20n%E3o%20%E9%20um%20Email%20v%E1lido.\n'; }
	
	if(escape(cTitleInput.value) == 'T%EDtulo.')
	{ cTitleInput.value = ''; }
	if(cTitleInput.value.length == 0)
	{
		returnMessage += 'Tem%20de%20indicar%20um%20T%EDtulo.\n';
		cTitleInput.value = unescape('T%EDtulo.');
	}
	//alert(escape(cCommentInput.value));
	if(escape(cCommentInput.value) == 'Escrever%20Coment%E1rio.')
	{ cCommentInput.value = ''; }
	if(cCommentInput.value.length == 0)
	{
		returnMessage += 'Tem%20de%20inserir%20um%20Coment%E1rio.';
		cCommentInput.value = unescape('Escrever%20Coment%E1rio.');
	}
	
	if(returnMessage.length == 0)
	{ return true; }
	
	return returnMessage;
}

function doPostbackForComments(promoId)
{
	new Request.HTML({
		url: 'site/remoting/retrieveComments.php',
		method: 'post',
		link: 'ignore',
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript)
		{
			var tree = $$(responseTree);
			tree = tree[0];
			tree.acc = new Accordion(tree.getElements('div.openCommentBtn'), tree.getElements('div.body'), {
				display: -1,
				show: -1,
				alwaysHide: true,
				onActive: function (toggler, element)
				{ toggler.innerHTML = 'Fechar'; },
				onBackground: function(toggler, element)
				{ toggler.innerHTML = 'Abrir'; }
			});
			tree.scroll = new Fx.Scroll($('mpViewport'));
			tree.numItems = tree.getElements('div.commentContainer').length;
			tree.itemsPerPage = 3;
			tree.currentIndex = 0;
			
			$('mpPager').getElementById('pagerNums').getElements('span').each(function(el) { el.dispose(); });
			
			for(var i = 0; i < (tree.numItems / tree.itemsPerPage); i++)
			{
				if(i != 0)
				{
					var sep = new Element('span');
					sep.innerHTML = ' | ';
					sep.inject($('mpPager').getElementById('pagerNums'));
				}
				
				var el = new Element('span');
				el.addClass('pagerItem');
				el.innerHTML = (i + 1);
				el.itemIndex = i;
				if(i == 0)
				{ el.toggleClass('pagerSel'); }
				el.addEvent('click', function() {
					$('mpPager').getElementById('pagerNums').getElements('span.pagerItem')[tree.currentIndex].toggleClass('pagerSel');
					tree.currentIndex = this.itemIndex;
					$('mpPager').getElementById('pagerNums').getElements('span.pagerItem')[tree.currentIndex].toggleClass('pagerSel');
					tree.scroll.toElement(tree.getElements('div.commentContainer')[tree.currentIndex * tree.itemsPerPage]);
				}.bind(el));
				el.inject($('mpPager').getElementById('pagerNums'));
			}
			
			$('mpPager').getElementById('pagerPrev').addEvent('click', function() {
				if(tree.currentIndex > 0)
				{
					if($('mpPager').getElementById('pagerNums').getElements('span.pagerItem')[tree.currentIndex] != null)
					{ $('mpPager').getElementById('pagerNums').getElements('span.pagerItem')[tree.currentIndex].toggleClass('pagerSel'); }
					tree.currentIndex--;
					if($('mpPager').getElementById('pagerNums').getElements('span.pagerItem')[tree.currentIndex] != null)
					{ $('mpPager').getElementById('pagerNums').getElements('span.pagerItem')[tree.currentIndex].toggleClass('pagerSel'); }
					tree.scroll.toElement(tree.getElements('div.commentContainer')[tree.currentIndex * tree.itemsPerPage]);
				}
			});
			$('mpPager').getElementById('pagerNext').addEvent('click', function() {
				if(tree.currentIndex < (tree.numItems / tree.itemsPerPage) - 1)
				{
					if($('mpPager').getElementById('pagerNums').getElements('span.pagerItem')[tree.currentIndex] != null)
					{ $('mpPager').getElementById('pagerNums').getElements('span.pagerItem')[tree.currentIndex].toggleClass('pagerSel'); }
					tree.currentIndex++;
					if($('mpPager').getElementById('pagerNums').getElements('span.pagerItem')[tree.currentIndex] != null)
					{ $('mpPager').getElementById('pagerNums').getElements('span.pagerItem')[tree.currentIndex].toggleClass('pagerSel'); }
					tree.scroll.toElement(tree.getElements('div.commentContainer')[tree.currentIndex * tree.itemsPerPage]);
				}
			});
			
			if($('mpViewport').getElements('div').length > 1)
			{ $('mpViewport').getElements('div')[0].dispose(); }
			
			tree.inject($('mpViewport'), 'top');
		}
	}).post({ 'promoId': promoId });
}


function echeck(str)
{
	var at = '@';
	var dot = '.';
	var lat = str.indexOf(at);
	var lstr = str.length;
	var ldot = str.indexOf(dot);
	
	if (str.indexOf(at)==-1)
	{ return false; }

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)
	{ return false; }

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr)
	{ return false; }

	if (str.indexOf(at,(lat+1))!=-1)
	{ return false; }

	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
	{ return false; }

	if (str.indexOf(dot,(lat+2))==-1)
	{ return false; }
		
	if (str.indexOf(" ")!=-1)
	{ return false; }

	return true
}