var Registry = {
	// variables
	service:"services/registry.wsdl.php",

	// methods
	AddItem:function(id, registry)
	{
		var post = {
			add:true,
			id:id
		}
		
		if(registry){post.registry = registry;}
		this.Send(post);
	},
	
	Remove:function(registry, id)
	{
		var post = {
			remove:true,
			registry:registry,
			id:id
		}		
		
		this.Send(post);		
	},
	
	Quantity:function(id, amount)
	{
		var post = {
			quantity:true,
			id:id,
			amount:amount
		}		
		
		this.Send(post);		
	},
		
	Create:function()
	{
		var value	= $("#CreateRegistry").val();
		if(value.length < 1)
		{
			$("#Messages span").empty().append("<p><a href=\"#\" onclick=\"$('#CreateRegistry').focus();return false;\">Registry name</a> is required!</p>");
			$("#Messages").fadeIn();				
		}
		else
		{
			
			$.ajax(
				{
					url:Registry.service,
					cache:false,
					data:{create:value},
					dataType:"json",
					type:"POST",
					success:function(response)
					{
						if(response.error)
						{
							var response = {
								title:response.title,
								message:response.message
							}

							ModalController.Load('RegistryModal', response);
						}
						else
						{
							var response = {
								title:response.title,
								message:response.message
							}

							ModalController.Load('RegistryModal', response);							
						}
					},
					error:function()
					{
						console.log("failed:" + service);
					}
				}
			);	
		}
	},
	
	Search:function()
	{
		var fields = {
			/*
			id:{
				node:"#RegistryID",
				value:false
			},
			*/
			lastname:
			{
				node:"#RegistryLastName",	
				value:false
			},
			email:{
				node:"#RegistryEmail",	
				value:false				
			}			
		}
		
		// check 
		var error = "Please use at least one field";
		for(prop in fields)
		{
			if($(fields[prop].node).val().length > 0)
			{
				var field = prop;
				fields[prop].value = $(fields[prop].node).val();
				error = false;
			}
		}		
		// if email
		if(fields.email.value)
		{
			error = Forms.Register.Email(fields.email.node) ? false : "Invalid email format";
		}

		if(error)
		{
			$("#Messages span").empty().append("<p>"  + error + "</p>");
			$("#Messages").fadeIn();
		}
		else
		{
			$("#SearchRegistry").submit();
		}
		
		return false;
	},
	
	Options:{
		Change:function(obj, registry, id, dir)
		{
			var qty 	= $(obj).parent().parent().children(".Q");			
			var cost 	= $(obj).parent().parent().children(".P");						
			var amount = parseInt(qty.html()) + dir;
			if(amount > 0)
			{
				qty.html(amount);
				
				if(cost.html() > 0)
				{
					price = parseFloat(cost.html());
					price *= dir;
					total	= parseFloat($("#TotalPrice").html());
					total += price;					
					$("#TotalPrice").html(Math.round(total*100)/100);
				}
				
				var post = {
					quantity:true,
					registry:registry,
					id:id,
					amount:amount
				}
				
				Registry.Send(post, true);
			}
			else
			{
				var response = {
					title:"Oops!",
					message:"You have chosen to set the amount to zero (0). If you wish to remove the product, please click the remove button!"
				}
				
				ModalController.Load('RegistryModal', response);
			}
		},
		Remove:function(obj, registry, id)
		{
			Registry.Remove(registry, id);
			var tbody = $(obj).parent().parent().parent();
			$(obj).parent().parent().remove();			
			
			if($(tbody).children("tr").length == 0)
			{
				window.location = window.location;
			}
		},
		Delete:function(registry, confirm)
		{
			var post = {
				delete:true,
				registry:registry
			}
			
			if(confirm)
			{
				post.confirm = true;
			}

			Registry.Send(post);
		},
		Email:function(registry, link)
		{
			ModalController.Load('RegistryModal', {
				title:"Send email",
				message:"<div id=\"EmailRegistry\"><input type=\"hidden\" name=\"ToLink\" id=\"ToLink\" value=\"registry.php?registry=" + link + "\"/><fieldset><div><label for=\"ToEmail\">Email</label><input type=\"text\" name=\"ToEmail\" id=\"ToEmail\" value=\"\"/><span class=\"required\">*</span></div><div><label for=\"ToMessage\">Message</label><textarea name=\"ToMessage\" id=\"ToMessage\"></textarea><span class=\"required\">*</span></div><div><button onclick=\"Registry.SendEmail();return false;\">send</button></div></fieldset></div>"
			});	
		}
	},
	
	SendEmail:function()
	{
		// required fields
		var error 	= false;
		var email 	= $("#ToEmail");
		var message = $("#ToMessage");
		var link	= $("#ToLink");

		// error handling
		email.css({"border-color":"#CCCCCC"});
		if(email.val().length < 1){email.css({"border-color":"#990000"});error = true;}
		else{
			var regex = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i
			if(!regex.test(email.val()))
			{
				email.css({"border-color":"#990000"});error = true;
			}
		}

		message.css({"border-color":"#CCCCCC"});
		if(message.val().length < 1){message.css({"border-color":"#990000"});error = true;}		
		
		// service connection
		if(!error)
		{
			Registry.Send({SendEmail:true, email:email.val(), message:message.val(), link:link.val()})			
		}		
	},
	
	Send:function(post, modal)
	{
		ModalController.Kill();
		var service = this.service;
		$.ajax(
			{
				url:service,
				cache:false,
				data:post,
				dataType:"json",
				type:"POST",
				success:function(response)
				{
					if(!modal)
					{
						ModalController.Load('RegistryModal', response)
					}
				},
				error:function()
				{
					console.log("failed:" + service);
				}
			}
		);		
	},
	
	Table:function(obj)
	{
		var o = $(obj);
		var state = o.text();
		var rows = o.parents("table").find("tbody");
		state == "Expand" ? rows.fadeIn('fast') : rows.fadeOut('fast') ;
		state == "Expand" ? o.text("Collapse") : o.text("Expand");
		state == "Expand" ? o.attr({"class":"collapse"}) : o.attr({"class":"expand"});		
	}
}