
// Variables
var email_ajax_url = "/wordpress/wp-content/plugins/email/email.php";
var email = new sack(email_ajax_url);
var email_max_allowed = '5';
var email_verify = '';
var email_p = 0;
var email_pageid = 0;
var email_yourname = '';
var email_youremail = '';
var email_yourremarks = '';
var email_friendname = '';
var email_friendemail = '';
var email_friendnames = '';
var email_friendemails = '';
var email_imageverify = '';

// Email Form Validation
function validate_email_form() {
	// Variables
	var errFlag = false;
	var errMsg = "The Following Error Occurs:\n";	
	errMsg = errMsg + "__________________________________\n\n";

	// Your Name Validation
	if(document.getElementById('yourname')) {
		if(isEmpty(email_yourname)) {
			errMsg = errMsg + "- Your Name is empty\n";
			errFlag = true;
		}
		if(!is_valid_name(email_yourname)) {
			errMsg = errMsg + "- Your Name is invalid\n";
			errFlag = true;
		}
	}
	// Your Email Validation
	if(document.getElementById('youremail')) {
		if(isEmpty(email_youremail)) {
			errMsg = errMsg + "- Your Email is empty\n";
			errFlag = true;
		}
		if(!is_valid_email(email_youremail)) {
			errMsg = errMsg + "- Your Email is invalid\n";
			errFlag = true;
		}
	}
	// Your Remarks Validation
	if(document.getElementById('yourremarks')) {
		if(!isEmpty(email_yourremarks)) {
			if(!is_valid_remarks(email_yourremarks)) {
				errMsg = errMsg + "- Your Remarks is invalid\n";
				errFlag = true;
			}
		}
	}
	// Friend Name(s) Validation
	if(document.getElementById('friendname')) {
		if(isEmpty(email_friendname)) {
			errMsg = errMsg + "- Friend Name(s) is empty\n";
			errFlag = true;
		} else {
			for(i = 0; i < email_friendnames.length; i++) {
				if(isEmpty(email_friendnames[i])) {
					errMsg = errMsg + "- Friend Name is empty: " + email_friendnames[i] + "\n";
					errFlag = true;
				}
				if(!is_valid_name(email_friendnames[i])) {
					errMsg = errMsg + "- Friend Name is invalid: " + email_friendnames[i] + "\n";
					errFlag = true;
				}
			}
		}
		if(email_friendnames.length > email_max_allowed) {
			errMsg = errMsg + "- Maximum 5 Friend Name(s) allowed\n";
			errFlag = true;
		}
	}
	// Friend Email(s) Validation
	if(isEmpty(email_friendemail)) {
		errMsg = errMsg + "- Friend Email(s) is empty\n";
		errFlag = true;
	} else {
		for(i = 0; i < email_friendemails.length; i++) {
			if(isEmpty(email_friendemails[i])) {
				errMsg = errMsg + "- Friend Email is empty: " + email_friendemails[i] + "\n";
				errFlag = true;
			}
			if(!is_valid_email(email_friendemails[i])) {
				errMsg = errMsg + "- Friend Email is invalid: " + email_friendemails[i] + "\n";
				errFlag = true;
			}
		}
	}
	if(email_friendemails.length > email_max_allowed) {
		errMsg = errMsg + "- Maximum 5 Friend Email(s) allowed\n";
		errFlag = true;
	}
	// Friend Name(s) And Email(s) Validation
	if(document.getElementById('friendname')) {
		if(email_friendnames.length != email_friendemails.length) {
			errMsg = errMsg + "- Friend Name(s) count does not tally with Friend Email(s) count\n";
			errFlag = true;
		}
	}
	if(document.getElementById('imageverify')) {
		if(isEmpty(email_imageverify)) {
			errMsg = errMsg + "- Image Verification is empty\n";
			errFlag = true;
		}
	}
	// If There Is Error Alert It
	if (errFlag == true){
		alert(errMsg);
		return false;
	} else {
		return true;
	}
}

// Check Form Field Is Empty
function isEmpty(value){
	if (trim(value) == "") {
		return true;
	}
	return false;
}

// Trim White Spaces
function trim(strText) { 
	// this will get rid of leading spaces 
	while (strText.substring(0,1) == ' ') 
		strText = strText.substring(1, strText.length);
	// this will get rid of trailing spaces 
	while (strText.substring(strText.length-1,strText.length) == ' ')
		strText = strText.substring(0, strText.length-1);
   return strText;
}

// Check Name
function is_valid_name(name) {
	var name = trim(name);
	var filter  = /[(\*\(\)\[\]\+\,\/\?\:\;\'\"\`\~\\#\$\%\^\&\<\>)+]/;
	return !filter.test(name);
}

// Check Email
function is_valid_email(email) {
	var email = trim(email);
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return filter.test(email);
}

// Check Remarks
function is_valid_remarks(remarks) {
	var remarks = trim(remarks);
	var injection_strings = new Array('apparently-to', 'cc', 'bcc', 'boundary', 'charset', 'content-disposition', 'content-type', 'content-transfer-encoding', 'errors-to', 'in-reply-to', 'message-id', 'mime-version', 'multipart/mixed', 'multipart/alternative', 'multipart/related', 'reply-to', 'x-mailer', 'x-sender', 'x-uidl');
	for(i = 0; i < injection_strings.length; i++) {
		if(remarks.indexOf(injection_strings[i]) != -1) {
			return false;
		}
	}
	return true;
}

// WP-Email Popup
function email_popup(email_url) {
	window.open(email_url, "_blank", "width=500,height=500,toolbar=0,menubar=0,location=0,resizable=0,scrollbars=1,status=0");
}

// Email Form AJAX
function email_form() {
	if(document.getElementById('yourname')) {
		email_yourname = document.getElementById('yourname').value;
	}
	if(document.getElementById('youremail')) {
		email_youremail = document.getElementById('youremail').value;
	}
	if(document.getElementById('yourremarks')) {
		email_yourremarks = document.getElementById('yourremarks').value;
	}
	if(document.getElementById('friendname')) {
		email_friendname = document.getElementById('friendname').value;
		email_friendnames = email_friendname.split(",");
	}
	email_friendemail = document.getElementById('friendemail').value;
	email_friendemails = email_friendemail.split(",");
	if(document.getElementById('imageverify')) {
		email_imageverify = document.getElementById('imageverify').value;
	}
	if(document.getElementById('p')) {
		email_p = document.getElementById('p').value;
	}
	if(document.getElementById('page_id')) {
		email_pageid = document.getElementById('page_id').value;
	}
	if(validate_email_form()) {
		document.getElementById('wp-email-submit').disabled = true;
		document.getElementById('wp-email-loading').style.display = 'block';
		email.reset();
		if(document.getElementById('yourname')) {			
			email.setVar('yourname', email_yourname);
			document.getElementById('yourname').disabled = true;
		}
		if(document.getElementById('youremail')) {
			email.setVar('youremail', email_youremail);
			document.getElementById('youremail').disabled = true;
		}
		if(document.getElementById('yourremarks')) {
			email.setVar('yourremarks', email_yourremarks);
			document.getElementById('yourremarks').disabled = true;
		}
		if(document.getElementById('friendname')) {
			email.setVar('friendname', email_friendname);
			document.getElementById('friendname').disabled = true;
		}
		email.setVar('friendemail', email_friendemail);
		document.getElementById('friendemail').disabled = true;
		if(document.getElementById('imageverify')) {
			email.setVar('imageverify', email_imageverify);
			document.getElementById('imageverify').disabled = true;
		}
		if(document.getElementById('p')) {
			email.setVar('p', email_p);
		}
		if(document.getElementById('page_id')) {
			email.setVar('page_id', email_pageid);
		}
		email.setVar('wp-email', '1');
		email.setVar('popup', document.getElementById('popup').value);
		email.method = 'POST';
		email.element = 'wp-email';
		email.runAJAX();
	}
}