/********* Contacts page validation ************/
function validate() {
	name = document.getElementById('name').value;
	email = document.getElementById('email').value;
	additionalInfo = document.getElementById('additionalInfo').value;
	
	additionalInfo = stripSpaces(additionalInfo);
	name = stripSpaces(name);

	if (additionalInfo == '' || name == '' || email == '') {
		alert("Please fill out all fields.");
		return false;
	} 
	
	if(!validateEmail(email)){
		alert("Please enter a valid email address.");
		return false;
	}
	
	return true;
}

function validateEmail(emailAddress){
	var emailRegxp = /^([\w]+)(.[\w]+)*@([\w]+)(.[\w]{2,3}){1,2}$/;
	var iChars = "*|,\":<>[]{}`\';()&$#%";

	for (var i = 0; i < emailAddress.length; i++) {
		if (iChars.indexOf(emailAddress.charAt(i)) != -1){
			return false;
		}
	}

	if (emailRegxp.test(emailAddress) != true)	{		
		return false;
	}
	
	return true;
}

function stripSpaces(x) {
	while (x.substring(0,1) == ' ' || x.substring(0,1) == "\n" || x.substring(0,1) == "\r"){
		x = x.substring(1);
	}


	while (x.substring(x.length-1,x.length) == ' ' || x.substring(x.length-1,x.length) == "\n" || x.substring(x.length-1,x.length) == "\r"){
		x = x.substring(0,x.length-1);
	}

   return x;
}


/********* Adding/Editing a property validation ************/
function validateListingInputForm(editMode){
	var caption = document.getElementById('caption').value;
	var price = "" + document.getElementById('price').value;
	var bed = document.getElementById('bed').value;
	var bath = document.getElementById('bath').value;
	var footage = document.getElementById('footage').value;
	var acreage = document.getElementById('acreage').value;
	var linksValid = document.getElementById('linksValid').value;
	
	price = price.replace(/[$,]/g, '');				
	bed = bed.replace(/,/g, '');				
	bath = bath.replace(/,/g, '');				
	footage = footage.replace(/,/g, '');				
	acreage = acreage.replace(/,/g, '');
	
	if(caption == null || caption == ""){
		alert("Please fill out a caption.");
		return false;
	} else if(!isNumeric(price)){
		alert("Only numeric values can be used for price.");
		return false;
	} else if(!isNumeric(bed)){
		alert("Only numeric values can be used for bedrooms.");
		return false;
	} else if(!isNumeric(bath)){
		alert("Only numeric values can be used for bathrooms.");
		return false;
	} else if(!isNumeric(footage)){
		alert("Only numeric values can be used for footage.");
		return false;
	} else if(!isNumeric(acreage)){
		alert("Only numeric values can be used for acreage.");
		return false;
	} else if(linksValid != "true") {
		//Message output by links.js
		return false;	
	}
	
	document.getElementById('price').value = price;
	document.getElementById('bed').value = bed;
	document.getElementById('bath').value = bath;
	document.getElementById('footage').value = footage;
	document.getElementById('acreage').value = acreage;
	
	if(!uploadFilesCorrectFormat(editMode)){
		return false;
	}
	
	return true;
}

function validateCommunityInputForm(editMode){
	var title = document.getElementById('title').value;
	var documentsValid = document.getElementById('documentsValid').value;
	var linksValid = document.getElementById('linksValid').value;
	
	if(title == null || title == ""){
		alert("Please fill out a title.");
		return false;
	} else if(documentsValid != "true") {
		//Message output by documents.js
		return false;	
	} else if(linksValid != "true") {
		//Message output by linksValid.js
		return false;	
	}
	
	if(!uploadCommunityFilesCorrectFormat(editMode)){
		return false;
	}
	
	return true;	
}

function isNumeric(testValue){
	if(testValue == null || testValue == "" || (testValue == parseFloat(testValue)))
		return true;
		
	return false;				
}

function uploadFilesCorrectFormat(editMode){
	var mainImageValue = document.getElementById('mainImage').value;
	var platImageValue = document.getElementById('platImage').value;
	
	if(mainImageValue != ''){	
		fileExtention = mainImageValue.substring(mainImageValue.length-4, mainImageValue.length);
		fileExtention = fileExtention.toLowerCase();
		
		if (fileExtention != '.jpg' && fileExtention != '.gif' && fileExtention != 'jpeg') {
			alert("The main image must be either JPG or GIF format.");
			return false;
		}
	}
	
	if(platImageValue != ''){	
		fileExtention = platImageValue.substring(platImageValue.length-4, platImageValue.length);
		fileExtention = fileExtention.toLowerCase();
		
		if (fileExtention != '.jpg' && fileExtention != '.gif' && fileExtention != 'jpeg') {
			alert("The plat image must be either JPG or GIF format.");
			return false;
		}
	}	
	
	var inputArray = document.getElementsByTagName('input');
	var fileInputArray = new Array();
	var fileInputCounter = 0;
	
	for(var i = 0; i < inputArray.length; i++){
		if(inputArray[i].type == "file" && inputArray[i].id != "platImage"){
			fileInputArray[fileInputCounter++] = inputArray[i];
		}
	}

	while(fileInputArray.length > 0){
		var fileName = fileInputArray.pop().value;
		
		if(fileName == ''){
			continue;
		}		
		
		if(mainImageValue == '' && !editMode){
			alert("You must select a main image before adding additional images");
			return false;				
		}
	
		fileExtention = fileName.substring(fileName.length-4, fileName.length);
		fileExtention = fileExtention.toLowerCase();
		
		if (fileExtention != '.jpg' && fileExtention != '.gif' && fileExtention != 'jpeg') {
			alert('One of your additional picture files is not in JPG or GIF format.');
			loopFlag = false;

			return false;						
		}
	}
	
	return true;
}

function uploadCommunityFilesCorrectFormat(editMode){
	var mainImageValue = document.getElementById('mainImage').value;

	
	if(mainImageValue != ''){	
		fileExtention = mainImageValue.substring(mainImageValue.length-4, mainImageValue.length);
		fileExtention = fileExtention.toLowerCase();
		
		if (fileExtention != '.jpg' && fileExtention != '.gif' && fileExtention != 'jpeg') {
			alert("The main image must be either JPG or GIF format.");
			return false;
		}
	}
		
	var inputArray = document.getElementsByTagName('input');
	var fileInputArray = new Array();
	var fileInputCounter = 0;
	var documentInputArray = new Array();
	var documentInputCounter = 0;

	String.prototype.startsWith = function(str){
		  return (this.indexOf(str) === 0);
	}
	
	for(var i = 0; i < inputArray.length; i++){
		if(inputArray[i].type == "file" && inputArray[i].name.startsWith("file")){
			fileInputArray[fileInputCounter++] = inputArray[i];
		}

		if(inputArray[i].type == "file" && inputArray[i].name.startsWith("document")){
			documentInputArray[documentInputCounter++] = inputArray[i];
		}
	}

	while(fileInputArray.length > 0){
		var fileName = fileInputArray.pop().value;
		
		if(fileName == ''){
			continue;
		}		
		
		if(mainImageValue == '' && !editMode){
			alert("You must select a main image before adding additional images");
			return false;				
		}
	
		fileExtention = fileName.substring(fileName.length-4, fileName.length);
		fileExtention = fileExtention.toLowerCase();
		
		if (fileExtention != '.jpg' && fileExtention != '.gif' && fileExtention != 'jpeg') {
			alert('One of your additional picture files is not in JPG or GIF format.');
			loopFlag = false;

			return false;						
		}
	}

	while(documentInputArray.length > 0){
		var fileName = documentInputArray.pop().value;
		
		if(fileName == ''){
			continue;
		}
	
		fileExtention = fileName.substring(fileName.length-4, fileName.length);
		fileExtention = fileExtention.toLowerCase();
		
		if (fileExtention != '.jpg' && fileExtention != '.gif' && fileExtention != 'jpeg' && fileExtention != '.pdf') {
			alert('One of your document files is not in JPG, GIF, or PDF format.');
			loopFlag = false;

			return false;						
		}
	}
	
	return true;
}

/********* Listing appointment validation ************/
function validateAppointment() {
	name = document.getElementById('name').value;
	email = document.getElementById('email').value;
	phoneNumber1 = document.getElementById('phoneNumber1').value;
	phoneNumber2 = document.getElementById('phoneNumber2').value;
	phoneNumber3 = document.getElementById('phoneNumber3').value;
	dateTime = document.getElementById('dateTime').value;
	confirm = document.getElementById('confirm').checked;
	
	name = stripSpaces(name);	

	if (name == '' || 
		email == '' || 
		phoneNumber1 == '' || 
		phoneNumber2 == '' || 
		phoneNumber3 == '' || 
		dateTime == '' || 
		confirm == false) {
		
		alert("Please fill out all fields.");
		return false;
	} 
	
	if(!validateEmail(email)){
		alert("Please enter a valid email address.");
		return false;
	}	
	
	if(!validateAreaCode(phoneNumber1)){
		alert("Please enter a valid area code.");
		return false;
	}	
	
	if(!validatePhoneNumber(phoneNumber2, phoneNumber3)){
		alert("Please enter a valid phone number.");
		return false;
	}			
	
	return true;
}

function validateAreaCode(areaCode){
	if(areaCode.length != 3)
		return false;
		
	if(!allDigits(areaCode))
		return false;	
	
	return true;
}

function validatePhoneNumber(pNum2, pNum3){
	if(pNum2.length != 3)
		return false;
		
	if(pNum3.length != 4)
		return false;		
		
	if(!allDigits(pNum2) || !allDigits(pNum3))
		return false;
	
	return true;
}

function allDigits(inputNumber){
	
	for(var i = 0; i < inputNumber.length; i++){
		if(!isDigit(inputNumber.charAt(i)))
			return false;
	}
	
	return true;
}

function isDigit(num) {
	if (num.length>1)
		return false;
	
	var string = "1234567890";
	
	if (string.indexOf(num)!=-1)
		return true;
		
	return false;
}

