var sendToFriend = {
	valid_chars: '1234567890-_.^~abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
		
	errors: {
		wrongTo: '',
		wrongFrom: ''
	},
	
	send: function (frmName, msgDivName) {
		var waitIconUrl = "";
		var tmpString;

		if ($(msgDivName)) {
			if ($(frmName)) {
				toEmail = $(frmName).getInputs('text', 'stf_t_mail');
				if (toEmail.size() > 0) {
					toEmail = toEmail[0].value;
				}
				
				fromEmail = $(frmName).getInputs('text', 'stf_f_mail');
				if (fromEmail.size() > 0) {
					fromEmail = fromEmail[0].value;
				}
				if (this.validateEmail(toEmail) == false) {
					alert(this.errors.wrongTo);
					return false;
				}

				
				if (this.validateEmail(fromEmail) == false) {
					alert(this.errors.wrongFrom);
					return false;
				}
				
				waitInput = $(frmName).getInputs('hidden', 'waitIcon');
				if (waitInput.size() > 0) {
					waitIconUrl = waitInput[0].value;
				}
		
				tmpString = $(msgDivName).innerHTML;
				$(msgDivName).innerHTML = "<img src='"+waitIconUrl+"' alt='Please waint...' />";
				
				sft_p = $(frmName).getInputs('hidden', 'sft_p');
				if (sft_p.size() > 0) {
					sft_p[0].value = location.href;
				}
				$(frmName).request({
					onSuccess: function(t) {
						$(msgDivName).innerHTML = tmpString;
						if (t.responseText.length > 0) {
							var json = t.responseText.evalJSON();
							if (json['err'] == "OK") {
								$('stf_t_mail').value = "";
							}
							alert(json['msg']);
						}
					},
				//	Handle other errors
					onFailure: function(t) {
						alert('Error ' + t.status + ': ' + t.statusText);
						$(msgDivName).innerHTML = tmpString;
					}
				});
			}
		}
	},

	validateEmail: function(str) {
		// trim starting / ending whitespace
		str = str.replace(/^\s*/, "");
		str = str.replace(/\s*$/, "");
		
		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;

		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;
		
		user_name = str.substr(0, lat);
		domain_name = str.substr(lat + 1, str.length);
		if(this.stringValidation(user_name) === false || this.stringValidation(domain_name) === false) return(false);
	 	return true;
	},
	
	stringValidation: function(string, return_invalid_chars) {
		var index = 0;
		var invalid_chars = '';
		
		if(string == null || string == '') return(true);
		
		for(index = 0; index < string.length; index++) {
			vchar = string.substr(index, 1);
			if(this.valid_chars.indexOf(vchar) == -1) {
				if(invalid_chars.indexOf(vchar) == -1) {
					if(invalid_chars == '')
						invalid_chars += vchar;
					else
						invalid_chars += ', ' + vchar;
				}
			}
		}
		
		if(return_invalid_chars == true && invalid_chars != '')	{
			last_comma = invalid_chars.lastIndexOf(',');
			if(last_comma != -1) invalid_chars = invalid_chars.substr(0, last_comma) + ' and ' + invalid_chars.substr(last_comma + 1, invalid_chars.length);
			return(invalid_chars);
		} else {
			return(invalid_chars == '');
		}
	}
}
