// Javascript Rules

var loginrules = {
	'div#photoemail' : function(e) {
		e.anim = new fx.Height(e, {duration: 400});
		e.anim.hide();
		e.style.display = 'block';
	},
	'form#email-photo' : function(e) {
		e.onsubmit = function() {
			$('sending').style.display = 'block';
			// check email address
			var emailaddress 	= this.emailaddress.value;
			var emailFormat 	= /^\w(\.?[\w-])*@\w(\.?[\w-])*\.[a-zA-Z]{2,6}(\.[a-zA-Z]{2})?$/i;
			if (emailaddress.search(emailFormat) == -1) {
				//$('sending').style.display = 'none';
				showMsg('Please specify the email address in the following format: recipient@example.com',2,false,true);
				window.setTimeout("alertSound()", 1000);
				return false;
			}
			var params = "ajax=true&photo_id=" + e.photo_id.value + "&user_id=" + e.user_id.value + "&email=" + emailaddress;
			new Ajax.Request(this.action,{
				method: 'post',
				parameters: params,
				onComplete: function(r) { 
					if (typeof r.responseText == 'string')
					{
						if (r.responseText.indexOf("<!-- Email Sent -->")!=-1) 
						{
							$('sending').style.display = 'none';
							e.emailaddress.value = '';
							$('photoemail').anim.toggle();
							showMsg('Email Sent',2,true,true);
							window.setTimeout("alertSound()", 1000);
						}
						else if (r.responseText.indexOf("<!-- Email Already Sent -->")!=-1)
						{
							$('sending').style.display = 'none';
							showMsg('You have already sent this photo to that recipient',2,false,true);
							window.setTimeout("alertSound()", 1000);
						}
						else if (r.responseText.indexOf("<!-- Invalid From -->")!=-1)
						{
							$('sending').style.display = 'none';
							showMsg('Invalid form submission, try again',2,false,true);
							window.setTimeout("alertSound()", 1000);
						}
						else if (r.responseText.indexOf("<!-- DB Error -->")!=-1)
						{
							$('sending').style.display = 'none';
							showMsg('DB error, try again',2,false,true);
							window.setTimeout("alertSound()", 1000);
						}
						else 
						{
							$('sending').style.display = 'none';
							showMsg('An unknown error occured, please try again',2,true,true);
							window.setTimeout("alertSound()", 1000);
						}
					}
					else
					{
						$('sending').style.display = 'none';
						showMsg('Unable to send email',2,true,true);
						window.setTimeout("alertSound()", 1000);
					}
				},
				onFailure: function() {
					$('sending').style.display = 'none';
					showMsg('Unable to send email',2,true,true);
					window.setTimeout("alertSound()", 1000);
				}
			});
			return false;
		}
	},
	'a#showemailform' : function(e) {
		var myForm = $('photoemail');
		e.onclick = function() {
			myForm.anim.toggle();
			return false;
		}
	},
	'div.folio-wrapper-1' : function(element) {
		element.anim = new fx.Height(element, {duration: 400});
	},
	'div.folio-wrapper-2' : function(element) {
		element.anim = new fx.Height(element, {duration: 400});
		element.anim.hide();
	},
	'div.folio-nav' : function(element) {
		element.style.display = 'block';
	},
	'a.folio-btn-back' : function(element) {
		var folio 		= $(element.parentNode.parentNode);
		var fID			= folio.id;
		var type;
		if ( validateNumeric(fID) )
		{
			type	= 'photog';
		}
		else
		if ( validateNumeric(fID.replace(/ALBUM_/,'')) ) 
		{
			type 		= 'album';
			fID 		= fID.replace(/ALBUM_/,'');
		}
		else
		{
			type		= 'category';
		}
		var numThumbs	= element.rel;
		var fWrapper1	= $(folio.childNodes[1]);
		var fWrapper2	= $(folio.childNodes[3]);
		var pages		= $(element.parentNode.childNodes[2]);
		var indicator 	=  element;
		var orgIndicator = indicator.className;
		element.onclick = function() {
			var pagesInfo 	= pages.innerHTML;
			var pagesNum	= pagesInfo.split(' of ');
			// If at first page set to last page
			if ( pagesNum[0] == '1' ) pagesNum[0] = parseFloat(pagesNum[1]) + 1;
			var loadWrapper = ( fWrapper1.offsetHeight == 0 ) ? fWrapper1 : fWrapper2;
			var otherWrapper= ( loadWrapper == fWrapper1 ) ? fWrapper2 : fWrapper1;
			var url = 'inc/Ajax/Folio.ajax.php';
			var pars = 'action=previous&numThumbs='+numThumbs+'&page='+pagesNum[0]+'&type='+type+'&data='+fID;
			indicator.className = 'working';
			new Ajax.Request(url, 
							 {
							 	method:'post', 
							 	parameters: pars,
							 	onComplete:function(originalRequest) { 
									if (originalRequest.responseText)
									{
										// Parse XML
										var newThumbs = originalRequest.responseXML.getElementsByTagName('thumb');
										var pageInfo  = originalRequest.responseXML.getElementsByTagName('pageinfo');
										var tLength = newThumbs.length;
										var pLength = pageInfo.length;
										loadWrapper.innerHTML = '';
										for (var i=0;i<tLength;i++)
										{
											var x = '<div class="folio-thumb"';
											var b = getNodeValue(newThumbs[i],'style');
											var y = ( b == 1 ) ? ' style="margin-left:0px">' : '>';
											var z = '<a href="photo/'+getNodeValue(newThumbs[i],'photo_id')+'" style="background: url(\''+getNodeValue(newThumbs[i],'filename')+'\') no-repeat 50% 50%;">'+getNodeValue(newThumbs[i],'title')+'</a>';
											var a = x+y+z+'</div>';
											loadWrapper.innerHTML += a;
										}
										pages.innerHTML = pageInfo[0].childNodes[0].nodeValue;
										indicator.className = orgIndicator;
										fWrapper1.anim.toggle();
										fWrapper2.anim.toggle();
										loadWrapper.style.zIndex = 5;
										otherWrapper.style.zIndex = 4;
									}
									else
									{
										indicator.className = orgIndicator;
										showMsg('Unable to load folio',2,true,true);
										window.setTimeout("alertSound()", 1000);
									}
								},
								onFailure:function() {
									indicator.className = orgIndicator;
									showMsg('Unable to load folio',2,true,true);
									window.setTimeout("alertSound()", 1000);
								}
							 });
			return false;
		}
	},
	'a.folio-btn-forward' : function(element) {
		var folio 		= $(element.parentNode.parentNode);
		var fID			= folio.id;
		var type;
		if ( validateNumeric(fID) )
		{
			type	= 'photog';
		}
		else
		if ( validateNumeric(fID.replace(/ALBUM_/,'')) ) 
		{
			type 		= 'album';
			fID 		= fID.replace(/ALBUM_/,'');
		}
		else
		{
			type		= 'category';
		}
		var numThumbs	= element.rel;
		var fWrapper1	= $(folio.childNodes[1]);
		var fWrapper2	= $(folio.childNodes[3]);
		var pages		= $(element.parentNode.childNodes[2]);
		var indicator 	=  element;
		var orgIndicator = indicator.className;
		element.onclick = function() {
			var pagesInfo 	= pages.innerHTML;
			var pagesNum	= pagesInfo.split(' of ');
			// If at last page set to first page
			if ( pagesNum[0] == pagesNum[1] ) pagesNum[0] = 0;
			var loadWrapper = ( fWrapper1.offsetHeight == 0 ) ? fWrapper1 : fWrapper2;
			var otherWrapper= ( loadWrapper == fWrapper1 ) ? fWrapper2 : fWrapper1;
			var url = 'inc/Ajax/Folio.ajax.php';
			var pars = 'action=next&numThumbs='+numThumbs+'&page='+pagesNum[0]+'&type='+type+'&data='+fID;
			indicator.className = 'working';
			new Ajax.Request(url, 
							 {
							 	method:'post', 
							 	parameters: pars,
							 	onComplete:function(originalRequest) { 
									if (originalRequest.responseText)
									{
										// Parse XML
										var newThumbs = originalRequest.responseXML.getElementsByTagName('thumb');
										var pageInfo  = originalRequest.responseXML.getElementsByTagName('pageinfo');
										var tLength = newThumbs.length;
										var pLength = pageInfo.length;
										loadWrapper.innerHTML = '';
										for (var i=0;i<tLength;i++)
										{
											var x = '<div class="folio-thumb"';
											var b = getNodeValue(newThumbs[i],'style');
											var y = ( b == 1 ) ? ' style="margin-left:0px">' : '>';
											var z = '<a href="photo/'+getNodeValue(newThumbs[i],'photo_id')+'" style="background: url(\''+getNodeValue(newThumbs[i],'filename')+'\') no-repeat 50% 50%;">'+getNodeValue(newThumbs[i],'title')+'</a>';
											var a = x+y+z+'</div>';
											loadWrapper.innerHTML += a;
										}
										pages.innerHTML = pageInfo[0].childNodes[0].nodeValue;
										indicator.className = orgIndicator;
										fWrapper1.anim.toggle();
										fWrapper2.anim.toggle();
										loadWrapper.style.zIndex = 5;
										otherWrapper.style.zIndex = 4;
									}
									else
									{
										indicator.className = orgIndicator;
										showMsg('Unable to load folio',2,true,true);
										window.setTimeout("alertSound()", 1000);
									}
								},
								onFailure:function(originalRequest) {
									indicator.className = orgIndicator;
									showMsg('Unable to load folio',2,true,true);
									window.setTimeout("alertSound()", 1000);
								}
							 });
			return false;
		}
	},
	'div#infobox-profile' : function(element) {
		element.anim = new fx.Height(element, {duration: 400});
	},
	'div#infobox-exif' : function(element) {
		element.anim = new fx.Height(element, {duration: 400});
		element.anim.hide();
	},
	'div#infobox-copyright' : function(element) {
		element.anim = new fx.Height(element, {duration: 400});
		element.anim.hide();
	},
	'div#infobox-help' : function(element) {
		element.anim = new fx.Height(element, {duration: 400});
		element.anim.hide();
	},
	'div#comment-livepreview' : function(element) {
		element.anim = new fx.Height(element, {duration: 400});
		element.anim.hide();
	},
	'textarea#myComment' : function(element) {
		var cArea = $('preview-comment');
		var cDiv  = $('comment-livepreview');
		element.onkeyup = function()
		{
			if ( cDiv.offsetHeight == 0 ) cDiv.anim.toggle();
			cArea.innerHTML = '<p>' + element.value.replace(/\n/g, "<br/>") + '</p>';
			if ( cDiv.offsetHeight > 0 && element.value == '' ) cDiv.anim.toggle();
		}
	},
	'a.photo-delete-btn' : function(element) {
		element.onclick = function() {
			var agree=confirm("Are you sure you want to delete this photo?");
			if (agree)
				return true ;
			else
				return false ;
		}
	},
	'a.comment-delete-btn' : function(element) {
		element.onclick = function() {
			var agree=confirm("Are you sure you want to delete this comment?");
			if (agree)
				return true ;
			else
				return false ;
		}
	},
	'a.journal-delete-btn' : function(element) {
		element.onclick = function() {
			var agree=confirm("Are you sure you want to delete this journal entry?");
			if (agree)
				return true ;
			else
				return false ;
		}
	}
};
	
Behaviour.register(loginrules);

function getNodeValue(obj,tag)
{
	return obj.getElementsByTagName(tag)[0].firstChild.nodeValue;
}

function trim(value) {
	var str = value.replace(/^\s*|\s*$/g,"");
	return str;
}

function  validateNumeric( strValue ) {
  var objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;
  return objRegExp.test(strValue);
}