﻿
jQuery(document).ready(function($) {
	jQuery('a.sendtofriend').click(function(e) {
		e.preventDefault();
		
		jQuery('#sendToFriendBox').modal({ onOpen: modalOpen,
			onClose: modalClose,
			onShow: modalShow,
			closeClass: 'close-modalbox'
		});				
	});
	
	if (jQuery.modal != null) {
		jQuery.extend(jQuery.modal.defaults, {
			closeClass: 'close-modalbox',
			closeHTML: '<a class="modal-closeimg" title="Close"></a>'
		});
	}
	
	function modalOpen(dialog) {
	    
		dialog.overlay.fadeIn('slow', function() {
			dialog.container.fadeIn('slow', function() {
				dialog.data.fadeIn('slow');
			});
		});
	}

	function modalClose(dialog) {
		dialog.container.fadeOut('slow', function() {
			dialog.overlay.fadeOut('slow', function() {
				jQuery.modal.close();
			});
		});
	}
	
	CloseModel = function() {
	    jQuery.modal.close();
	}
	

	function modalShow(dialog) {
		dialog.data.find('#sendSendToFriend').click(function() {
			jQuery('#sendToFriendFail').hide();   
			if (validate(dialog)) {
				
				jQuery('#sendToFriendFields .email-errormessage').empty();
				jQuery('#sendToFriendBox .sendtofriend-title').html('Sending...');
				jQuery('#sendToFriendBox .sendtofriend-form').fadeOut(200);
				jQuery('#referredDomain').val(window.location.hostname);
				jQuery('#sendToFriendBox .sendtofriend-content').animate({
					height:'100px'
				}, function() {
					jQuery('#sendToFriendBox .sendtofriend-loading').fadeIn(200, function () {
							var yourName = dialog.data.find('#sendToFriendYourName').val();
							var yourEmailAddress = dialog.data.find('#sendToFriendYourEmail').val();
							var firstFriendName = dialog.data.find('#sendToFriendFirstName').val();
							var firstFriendEmailAddress = dialog.data.find('#sendToFriendFirstEmail').val();
							var secondFriendName = dialog.data.find('#sendToFriendSecondName').val();
							var secondFriendEmailAddress = dialog.data.find('#sendToFriendSecondEmail').val();
							
							var callUrl = '/layouts/eventures/sendtofriend.aspx';
							var dataStr =  jQuery(":input[class=sendtofriend-textbox]").serialize();
								
							jQuery.get(callUrl, dataStr, function(data){	
								jQuery('#sendToFriendBox .sendtofriend-title').empty();	
														
								jQuery('#sendToFriendBox .sendtofriend-loading').fadeOut(200, function(){
									if (data == "Success") {										
										jQuery('#sendToFriendBox #sendToFriendSuccess').show();
									}
									else {
										
										jQuery('#sendToFriendBox .sendtofriend-content').css('height','auto');
										jQuery('#sendToFriendBox .sendtofriend-form').fadeIn(200);
										jQuery('#sendToFriendFail').show();
									}
								});
										
							});		
					});
				});			
	
			}			
		});
	}

	function validate(dialog) {
		var yourName = dialog.data.find('#sendToFriendYourName').val();
		var yourEmailAddress = dialog.data.find('#sendToFriendYourEmail').val();
		var firstFriendName = dialog.data.find('#sendToFriendFirstName').val();
		var firstFriendEmailAddress = dialog.data.find('#sendToFriendFirstEmail').val();
		var message = '';
		var errorMessageSpanStart = '<span>';
		var errorMessageSpanEnd	='</span>';
		
		if (!yourName) {
			message += errorMessageSpanStart;
			message +='* Your name is required.';
			message += errorMessageSpanEnd;
		}
		
		if (!firstFriendName) {
			message += errorMessageSpanStart;
			message +='* Your first friend name is required.';
			message += errorMessageSpanEnd;
		}
		
		if (!firstFriendEmailAddress) {
			message += errorMessageSpanStart;
			message += '* Your first friend email address is required.';
			message += errorMessageSpanEnd;
		}
		else {
			if (!validateEmail(firstFriendEmailAddress)) {
				message += errorMessageSpanStart;
				message += '* Please enter a valid first friend email address.';
				message += errorMessageSpanEnd;
			}
		}
		
		if (message.length == 0) {
			return true;
		}
		else {
			showError(message);
			return false;
		}
	}
	
	function validateEmail(emailAddress) {
		var at = emailAddress.lastIndexOf("@");

		// Make sure the at (@) sybmol exists and  
		// it is not the first or last character
		if (at < 1 || (at + 1) === emailAddress.length)
			return false;

		// Make sure there aren't multiple periods together
		if (/(\.{2,})/.test(emailAddress))
			return false;

		// Break up the local and domain portions
		var local = emailAddress.substring(0, at);
		var domain = emailAddress.substring(at + 1);

		// Check lengths
		if (local.length < 1 || local.length > 64 || domain.length < 4 || domain.length > 255)
			return false;


		// Make sure local and domain don't start with or end with a period
		if (/(^\.|\.$)/.test(local) || /(^\.|\.$)/.test(domain))
			return false;

		// Check for quoted-string addresses
		// Since almost anything is allowed in a quoted-string address,
		// we're just going to let them go through
		if (!/^"(.+)"$/.test(local)) {
			// It's a dot-string address...check for valid characters
			if (!/^[-a-zA-Z0-9!#$%*\/?|^{}`~&'+=_\.]*$/.test(local))
				return false;
		}

		// Make sure domain contains only valid characters and at least one period
		if (!/^[-a-zA-Z0-9\.]*$/.test(domain) || domain.indexOf(".") === -1)
			return false;

		return true;
	}
		
	function showError(msg){
		jQuery('#sendToFriendFields .email-errormessage')
			.html(msg);
	}
});
