

function validateQuestionData(form)
{
	var reqFields = '';
	var focusField = '';
	with (form)
	{
		if (subject.value == '')
			reqFields += '\t* Subject of your question\n', focusField == '' ? focusField = subject : '';
		if (details.value == '')
			reqFields += '\t* Details\n', focusField == '' ? focusField = details : '';
		if (dueDate.value == '')
			reqFields += '\t* Due Date\n', focusField == '' ? focusField = dueDate : '';
		if (price.value == '')
			reqFields += '\t* Your Price\n', focusField == '' ? focusField = price : '';

		if (reqFields != '')
		{
			alert("The following fields were required:\n\n" + reqFields + "\nPlease provide data for the above fields and try again!");
			focusField.focus();
			return false;
		}

		var ddArr = dueDate.value.split("/");
		if (!ddArr || ddArr.length != 3 || !isDate(ddArr[2], ddArr[0], ddArr[1]))
		{
			alert("Invalid date entered!\nEnter date in the format of mm/dd/yyyy\nand try again!");
			return false;
		}
		else
		{
			var yy = ddArr[2];
			var mm = ddArr[0];
			var dd = ddArr[1];
			if (yy.length != 4)
				yy = "20" + yy;
			if (mm.length == 1)
				mm = "0" + mm;
			if (dd.length == 1)
				dd = "0" + dd;
			dueDate.value = mm + "/" + dd + "/" + yy;
		}

		if (!isPositiveInteger(price.value))
		{
			alert("Invalid value entered for 'Your Price'!\nPlease enter a valid positive integer number.");
			price.focus();
			return false;
		}
		if (parseInt(price.value) < 5)
		{
			alert("Price less than $5 is not acceptable!");
			price.focus();
			return false;
		}
		if (numberOfQuestions.value != "" && !isPositiveInteger(numberOfQuestions.value))
		{
			alert("Invalid value entered for 'No. of questions'!\nPlease enter a valid positive integer number.");
			numberOfQuestions.focus();
			return false;
		}
	}
	return true;
}
function validateProfileData(form, email2Required, pwValidate)
{
	var reqFields = '';
	var focusField = '';
	with (form)
	{
		if (printableName.value == '')
			reqFields += '\t* Name\n', focusField == '' ? focusField = printableName : '';
		if (form.nickName && nickName.value == '')
			reqFields += '\t* Nick Name\n', focusField == '' ? focusField = nickName : '';
		if (email.value == '')
			reqFields += '\t* Email\n', focusField == '' ? focusField = email : '';
		if (pwValidate == true && password.value == '')
			reqFields += '\t* Password\n', focusField == '' ? focusField = password : '';

/*
		if (form.timeZone && timeZone.options[timeZone.selectedIndex].value == '')
			reqFields += '\t* Time Zone\n', focusField == '' ? focusField = timeZone : '';
*/
		if (form.priceRate && priceRate.value == '')
			reqFields += '\t* Price Rate\n', focusField == '' ? focusField = priceRate : '';

		if (reqFields != '')
		{
			alert("The following fields were required:\n\n" + reqFields + "\nPlease provide data for the above fields and try again!");
			focusField.focus();
			return false;
		}
		
		if (pwValidate == true && form.confirmPassword && password.value != confirmPassword.value)
		{
			alert("Password values do not match!\nPlease enter correctly and try again.");
			return false;
		}

		if (!isEmail(email.value))
		{
			alert("Invalid value entered for 'Email'. Please try again.");
			email.focus();
			return false;
		}

		if ((form.email2 && form.email2.value == "" && email2Required == true) || (form.email2 && email2.value != "" && !isEmail(email2.value)))
		{
			alert("Invalid value entered for 'Second Email Address' field. Please try again.");
			email2.focus();
			return false;
		}

		if (form.email2 && form.email2.value != form.email.value && email2Required == true)
		{
			alert("Email addresses don't match. Please enter the same!");
			email2.focus();
			return false;
		}

		reqFields = '';

/*
		if (!checkUSPhone(phone, true) && !checkInternationalPhone(phone, true))
			reqFields += '* Home Phone\n', focusField == '' ? focusField = phone : '';
		if (!checkUSPhone(cellPhone, true) && !checkInternationalPhone(cellPhone, true))
			reqFields += '* Cell Phone\n', focusField == '' ? focusField = cellPhone : '';
		if (!checkUSPhone(fax, true) && !checkInternationalPhone(fax, true))
			reqFields += '* Fax\n', focusField == '' ? focusField = fax : '';
*/
		if (form.phone.value == '' && form.cellPhone.value == '' && form.workPhone.value == '')
		{
			alert("In order to better serve you and update you on order status, we need atleast one contact phone number to be provided.\nPlease enter valid phone-number and try again !\n\nThank you!");
			return;
		}

		if (!isEmail(messengerId.value, true))
			reqFields += '* Instant Messenger ID\n', focusField == '' ? focusField = messengerId : '';

		if (form.priceRate && (!isPositiveInteger(priceRate.value) || priceRate.value > 100))
			reqFields += '* Price Rate\n', focusField == '' ? focusField = priceRate : '';

		if (reqFields != '')
		{
			alert("Invalid value entered for the following field(s):\n\n" + reqFields + "\nPlease provide valid data for the above field(s) and try again!");
			focusField.focus();
			return false;
		}
	}
	return true;
}	

function postQuestion(form, profileForm)
{
	if (!validateQuestionData(form))
		return;

	if (profileForm && !validateProfileData(profileForm, true, true))
		return;

	if (form.catSelection_1.options[form.catSelection_1.selectedIndex].value == "0")
	{
		form.topicId.value = form.catSelection_0.options[form.catSelection_0.selectedIndex].value;
	}
	else
	{
		form.topicId.value = form.catSelection_1.options[form.catSelection_1.selectedIndex].value;
	}

	form.dueDate.value += ' ' + form.dueTime.value;
	form.submit();
}

function postComment(form)
{
	var reqFields = '';
	var focusField = '';
	with (form)
	{
		if (subject.value == '')
			reqFields += '\t* Subject\n', focusField == '' ? focusField = subject : '';
		if (details.value == '')
			reqFields += '\t* Note\n', focusField == '' ? focusField = details : '';

		if (reqFields != '')
		{
			alert("The following fields were required:\n\n" + reqFields + "\nPlease provide data for the above fields and try again!");
			focusField.focus();
			return;
		}
		submit();
	}
}

function reportProblem(form)
{
	var reqFields = '';
	var focusField = '';
	with (form)
	{
		if (questionId.value == '')
			reqFields += '\t* Question Id\n', focusField == '' ? focusField = questionId : '';
		if (subject.value == '')
			reqFields += '\t* Brief description\n', focusField == '' ? focusField = subject : '';
		if (details.value == '')
			reqFields += '\t* Details\n', focusField == '' ? focusField = details : '';

		if (reqFields != '')
		{
			var msg = "The following fields were required:\n\n" + reqFields + "\nPlease provide data for the above fields and try again!";
			if (questionId.value == '')
				msg += "\n\nIf you don't have Question Id available, please enter 'comment' for Question Id field.";
			alert(msg);
			focusField.focus();
			return;
		}
		submit();
	}
}

function updateProfile(form, pwValidate)
{
	if (!validateProfileData(form, false, pwValidate))
		return;

	form.submit();
}

function referFriends(form)
{
	var emails = form.to.value.split(',');

	for (var indx in emails)
	{
		if (!isEmail(emails[indx]))
		{
			alert("Invalid value entered for one of the emails in 'To' field!\nPlease enter valid email addresses, separated by comma and no spaces.");
			form.to.focus();
			return;
		}
	}

	form.submit();
}

function split(form)
{
	if (!isPositiveInteger(form.numQuestions.value))
	{
		alert("Invalid value entered. Valid values are 2 to 10");
		form.numQuestions.focus();
		return;
	}
	if (parseInt(form.numQuestions.value) > 10)
	{
		alert("Can't split into questions more than 10.");
		form.numQuestions.focus();
		return;
	}

	form.submit();
}

function updateObjects(form, field, uAction)
{
	if (getSelectionCount(field) == 0)
	{
		alert("No selection made!\nPlease select atleast one entry to perform this action.");
		return;
	}
	if (uAction == 'DELETE' && 
			(!confirm("This will delete the selected Users. Please confirm!") ||
			!confirm("Are you sure you wanted to delete these Users from the System?\nThis information will be lost from the system permanantly.\nPlease confirm.")))
	{
		return;
	}
	form.uAction.value = uAction;
	form.submit();
}

function sendMail(form)
{
	var reqFields = '';
	var focusField = '';
	with (form)
	{
		if (to.value == '')
			reqFields += '\t* To\n', focusField == '' ? focusField = to : '';
		if (subject.value == '')
			reqFields += '\t* Subject\n', focusField == '' ? focusField = subject : '';
		if (message.value == '')
			reqFields += '\t* Message\n', focusField == '' ? focusField = message : '';

		if (reqFields != '')
		{
			alert("The following fields were required:\n\n" + reqFields + "\nPlease provide data for the above fields and try again!");
			focusField.focus();
			return;
		}
		var emails = to.value.split(',');

		for (var indx in emails)
		{
			if (!isEmail(emails[indx]))
			{
				alert("Invalid value entered for one of the emails in 'To' field!\nPlease enter valid email addresses, separated by comma and no spaces.");
				to.focus();
				return;
			}
		}
		submit();
	}
}

function createExpert(form)
{
	if (!validateProfileData(form, false, true))
		return;

	//if (!checkUSPhone(form.phone, false) && !checkInternationalPhone(form.phone, false))
	if (form.phone.value == '')
	{
		alert("Home Phone is required. Please enter valid phone-number!");
		return;
	}

	if (form.details.value == '')
	{
		alert("Please enter details stating your experience!");
		form.details.focus();
		return;
	}

	if (form.resume.value == '')
	{
		alert("Please attach your resume!");
		form.resume.focus();
		return;
	}

	with(form)
	{
		if (catSelection_1.options[catSelection_1.selectedIndex].value == "0")
		{
			topicId.value = catSelection_0.options[catSelection_0.selectedIndex].value;
		}
		else
		{
			topicId.value = catSelection_1.options[catSelection_1.selectedIndex].value;
		}
		submit();
	}
}

function increasePrice(form)
{
	with (form)
	{
		if (!isPositiveInteger(price.value))
		{
			alert("Invalid value entered. Please enter a positive integer number!");
			price.focus();
			return;
		}
		if (parseInt(price.value) < parseInt(price.defaultValue))
		{
			alert("Please enter amount that is bigger than " + price.defaultValue);
			price.focus();
			return;
		}
		action = "ur.jsp";
		submit();
	}
}

