/*Validation implementation
FrmName = html form Name
fieldName = text field name
fieldWhat =  For the if statment below to know what filter to use
apprvMK =  approved validation image path
rejectMK = rejected validation image path
 
Validation Filters*/
var emailReg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
var nameReg = /^[A-Za-z\'\- ]{2,25}$/;
var phoneReg = /^[0-9\(\)\-\+ ]{7,16}$/;
var messageReg = /[A-Za-z0-9\-\)\(\&\%\@\'\?]/;
var mixedReg = /^[A-Za-z\'\- ]{2,25}$/;
// ==============================================live validation function START=============================================
function liveValidation(frmName, fieldName, fieldWhat, apprvMK, rejectMK){
	var varReg;
	if(fieldWhat == "email"){			///// apply relevant expression to	
		varReg = emailReg;				///// variable
	}else if (fieldWhat == "name"){		/////
		varReg = nameReg;				/////
	}else if(fieldWhat == "phone"){		/////
		varReg = phoneReg;				/////	
	}else if(fieldWhat == "mixed"){
		varReg = mixedReg;
	}else{
		varReg = messageReg;			/////
	}									/////	
	var fieldVar  = document.forms[frmName].elements[fieldName].value; 		// set field value
	// Output live validation results START
		if(!fieldVar.match(varReg)){
			document.getElementById("spn_"+fieldName).innerHTML = "<img src='"+rejectMK+"' width='12' height='12' />";
		}else{
			document.getElementById("spn_"+fieldName).innerHTML = "<img src='"+apprvMK+"' width='12' height='12' />";
		} // Output live validation results END
}// live validation function END
// ==========================================Main Validation===========================================================
function validate(frmName, fieldName, fieldEmail, fieldPhone, fieldMessage,apprvMK, rejectMK){
// Set Variables to hold values and followed by Element Name
	var name  = document.forms[frmName].elements[fieldName].value;
	var nameElementName  = document.forms[frmName].elements[fieldName].name;
	var emailAddress  = document.forms[frmName].elements[fieldEmail].value;
	var emailElementName  = document.forms[frmName].elements[fieldEmail].name
	var phone  = document.forms[frmName].elements[fieldPhone].value;
	var phoneElementName  = document.forms[frmName].elements[fieldPhone].name;
	var message  = document.forms[frmName].elements[fieldMessage].value;
	var messageElementName  = document.forms[frmName].elements[fieldMessage].name;

	// This runs the validation and updates the Page
	var i = 0;
	var send;
	function runValidation(myField, MyReg, MyElementName){i++
		if(!myField.match(MyReg)){
			document.getElementById("spn_"+MyElementName).innerHTML = "<img src='"+rejectMK+"' width='15' height='15' />";
			window['send' + i] = 'false';
		}else{
			document.getElementById("spn_"+MyElementName).innerHTML = "<img src='"+apprvMK+"' width='15' height='15' />";
			window['send' + i] = 'true';
		}
	}
	runValidation(name, nameReg, nameElementName);
	runValidation(emailAddress, emailReg, emailElementName);
	runValidation(phone, phoneReg, phoneElementName);
	runValidation(message, messageReg, messageElementName);
	
	if(send1 == "false" || send2 == "false" || send3 == "false" || send4 == "false"){
		return false;
	}else{
		document.forms[frmName].submit();
	}
	
}

var approvedMark = "";
var rejectMark = "<span class='required'>Required</span>";
var nameFilter = /[a-zA-Z']/;
var NumbersFilter = /[0-9]/;
var priceFilter = /[0-9]/;
var phoneFilter = /[0-9 \(\)\+]/;
var illegalPhoneChars= /[\<\>\,\;\:\\\/\"\[\]\'\=\{\}\!\@\$\%\^\&\*\~]/
var emailFilter = /^.+@.+\..{2,4}$/
var illegalEmailChars= /[\(\)\<\>\,\;\:\\\/\"\[\]\'\+\={\}\!\$\%\^\&\*\~]/
var dotEnd = /\.$/
var atCheck = /.+@.+@.+/
var beginCheck = /^@/
var endCheck = /@$/
var send = "false";

function dataType(){
	if(document.form1.optionalDataName.value == ""){
		document.getElementById("spnDataName").innerHTML = rejectMark;
		dataNameSend = "";
	}else{
		document.getElementById("spnDataName").innerHTML = "";
		dataNameSend = "true";
	};
	if(document.form1.optionalDataKey.value == ""){
		document.getElementById("spnDataKey").innerHTML = rejectMark;
		dataKeySend  = "";
	}else{
		document.getElementById("spnDataKey").innerHTML = "";
		dataKeySend  = "true";
	};
	
	if(dataNameSend == "true" && dataKeySend == "true"){
		document.form1.submit();
	};
};

function users(){
	if(document.form1.usersName.value == ""){
		document.getElementById("spnUserName").innerHTML = rejectMark;
		usersNameSend = "";
	}else{
		document.getElementById("spnUserName").innerHTML = approvedMark;
		usersNameSend = "true";
	};
	
	if(document.form1.usersEmailAddress.value == ""|| document.form1.usersEmailAddress.value.match(illegalEmailChars) || document.form1.usersEmailAddress.value.match(dotEnd) || document.form1.usersEmailAddress.value.match(atCheck) || document.form1.usersEmailAddress.value.match(beginCheck) || document.form1.usersEmailAddress.value.match(endCheck)){
		document.getElementById("spnUserEmail").innerHTML = rejectMark;
		usersEmailSend = "";
	}else if(document.form1.usersEmailAddress.value.match(emailFilter)){
		document.getElementById("spnUserEmail").innerHTML = approvedMark;
		usersEmailSend = "true";
	};
	
	if(document.form1.usersPassword.value == ""){
		document.getElementById("spnUserPassword").innerHTML = rejectMark;
		usersPasswordSend = "";
	}else{
		document.getElementById("spnUserPassword").innerHTML = approvedMark;
		usersPasswordSend = "true";
	};
	
	if(usersNameSend == "true" && usersEmailSend == "true" && usersPasswordSend == "true"){
		document.form1.submit();
	};
};

function clientValidate(){
	if(document.form1.clientName.value == ""){
		document.getElementById("spnClientName").innerHTML = rejectMark;
		clientNameSend = "";
	}else{
		document.getElementById("spnClientName").innerHTML = approvedMark;
		clientNameSend = "true";
	};
	
	if(!document.form1.clientEmail.value.match(emailReg)){
		document.getElementById("spnClientEmail").innerHTML = rejectMark;
		clientEmailSend = "";
	}else{
		document.getElementById("spnClientEmail").innerHTML = approvedMark;
		clientEmailSend = "true";
	};
	
	if(document.form1.clientAddress.value == ""){
		document.getElementById("spnClientAddress").innerHTML = rejectMark;
		clientAddressSend = "";
	}else{
		document.getElementById("spnClientAddress").innerHTML = approvedMark;
		clientAddressSend = "true";
	};
	
	if(document.form1.clientPassword.value == ""){
		document.getElementById("spnClientPassword").innerHTML = rejectMark;
		clientPasswordSend = "";
	}else{
		document.getElementById("spnClientPassword").innerHTML = approvedMark;
		clientPasswordSend = "true";
	};
	
	if(clientNameSend == "true" && clientEmailSend == "true" && clientAddressSend == "true" && clientPasswordSend == "true"){
		document.getElementById('clientEmail').disabled = false;
		document.getElementById('clientName').disabled = false;
		document.getElementById('clientAddress').disabled = false;
		document.form1.submit();
	};
};

function setGroupEmail(elm){
	if(elm.checked){
		var theClientName = document.getElementById('clientName').value;
		if(theClientName != ""){
			theClientName = theClientName.split(' ').join('');// remove spaces form clientName
			document.getElementById('clientEmail').value = theClientName+"@smartgroups.co.nz";
			document.getElementById('clientEmail').disabled = true;
			document.getElementById('spnGroup').innerHTML = "Deselect to edit Client name";
			document.getElementById('clientName').disabled = true;
			document.getElementById('clientAddress').innerHTML = "Not Required";
			document.getElementById('clientAddress').disabled = true;
			document.getElementById('clientPassword').value = theClientName+"1234";
		}else{
			document.getElementById('spnGroup').innerHTML = "Please fill in the client name first";
			document.getElementById('clientEmail').disabled = false;
			document.getElementById('clientName').disabled = false;
			document.getElementById('clientAddress').innerHTML = "";
			document.getElementById('clientAddress').disabled = false;
		}	
	}else{
		document.getElementById('spnGroup').innerHTML = "";
		document.getElementById('clientEmail').value = "";
		document.getElementById('clientEmail').disabled = false;
		document.getElementById('clientName').disabled = false;
		document.getElementById('clientAddress').innerHTML = "";
		document.getElementById('clientAddress').disabled = false;
	}
}


function albumValidate(){
	if(document.form1.albumName.value == ""){
		document.getElementById("spnAlbumName").innerHTML = rejectMark;
		albumNameSend = "";
	}else{
		document.getElementById("spnAlbumName").innerHTML = approvedMark;
		albumNameSend = "true";
	};
	
	var album = "";
	for(i = 0; i < document.form1.albumType.length; i++){
		if(document.form1.albumType[i].checked){
			album = document.form1.albumType[i].value;
		}
	}
	if(album == ""){
		document.getElementById("spnAlbumType").innerHTML = rejectMark;
		albumTypeSend = "";
	}else{
		document.getElementById("spnAlbumType").innerHTML = approvedMark;
		albumTypeSend = "true";
	}
	
	var client = "";
	for(j = 0; j < document.form1.owner.length; j++){
		if(document.form1.owner[j].selected){
			client = document.form1.owner[j].value;
		}
	}
	
	if(client == "" || client == "0"){
		document.getElementById("spnAlbumOwner").innerHTML = rejectMark;
		clientSend = "";
	}else{
		document.getElementById("spnAlbumOwner").innerHTML = approvedMark;
		clientSend = "true";
	}
	
	if(albumNameSend == "true" && albumTypeSend == "true" && albumTypeSend == "true"){
		document.form1.submit();
	};
};

function albumEditValidate(){
	if(document.form1.albumName.value == ""){
		document.getElementById("spnAlbumName").innerHTML = rejectMark;
		albumNameSend = "";
	}else{
		document.getElementById("spnAlbumName").innerHTML = approvedMark;
		albumNameSend = "true";
	};
	
	var album = "";
	for(i = 0; i < document.form1.albumType.length; i++){
		if(document.form1.albumType[i].checked){
			album = document.form1.albumType[i].value;
		}
	}
	if(album == ""){
		document.getElementById("spnAlbumType").innerHTML = rejectMark;
		albumTypeSend = "";
	}else{
		document.getElementById("spnAlbumType").innerHTML = approvedMark;
		albumTypeSend = "true";
	}
	
	var client = "";
	for(j = 0; j < document.form1.clientOwner.length; j++){
		if(document.form1.clientOwner[j].selected){
			client = document.form1.clientOwner[j].value;
		}
	}
	
	if(client == "" || client == "0"){
		document.getElementById("spnAlbumOwner").innerHTML = rejectMark;
		clientSend = "";
	}else{
		document.getElementById("spnAlbumOwner").innerHTML = approvedMark;
		clientSend = "true";
	}
	
	if(albumNameSend == "true" && albumTypeSend == "true" && albumTypeSend == "true"){
		document.form1.submit();
	};
};

function saleOption(){
	if(document.form1.saleName.value == ""){
		document.getElementById("spnSaleName").innerHTML = rejectMark;
		saleNameSend = "";
	}else{
		document.getElementById("spnSaleName").innerHTML = approvedMark;
		saleNameSend = "true";
	};
	
	if(!document.form1.salePrice.value.match(priceFilter)){
		document.getElementById("spnSalePrice").innerHTML = rejectMark;
		salePriceSend = "";
	}else{
		document.getElementById("spnSalePrice").innerHTML = approvedMark;
		salePriceSend = "true";
	};
	
	if(saleNameSend == "true" && salePriceSend == "true" ){
		document.form1.submit();
	};
};
