//==============================================================
// isValidNameSearchForm(form)
// IN: form - the form we are validating.
//==============================================================
function isValidNameSearchForm(form) {
	var msg = "";

	if (form.startDate.value != '') {	
		if (! isValidateDate(form.startDate.value)) { 
			msg = msg + "\nStart Date must be in YYYY-MM-DD format.";
		}
	}
	if (form.endDate.value != '') {	
		if (! isValidateDate(form.endDate.value)) { 
			msg = msg + "\nEnd Date must be in YYYY-MM-DD format.";
		}
	}
	if (msg != "") {
		alert(msg);
	}
	
	return (msg == "");
}

//==============================================================
// isValidTGPSubmitForm(form)
// IN: form - the form we are validating.
//==============================================================
function isValidTGPSubmitForm(form) {
	var msg = "";
	
	msg += requiredField(form.submitter.value, 'Name');
	if (! isValidEmailAddress(form.email.value)) {
		msg += "\n'E-mail address' is invalid.";
	}
	msg += requiredField(form.tgpURL.value, 'URL');	

	if (nonZeroSelectOption(form.categoryID1,'Category 1') != '' && nonZeroSelectOption(form.categoryID2,'Category 2') != '' && nonZeroSelectOption(form.categoryID3,'Category 3') != '') {
		msg += "\nPlease select at least one Category.";
	}	

	if (requiredField(form.model1.value,'Model 1') != '' && requiredField(form.model2.value,'Model 2') != '' && requiredField(form.model3.value,'Model 3') != '') {
		msg += "\nPlease specify at least one Model.";
	}	


	if (msg != "") {
		alert(msg);
	}
	
	return (msg == "");
}

//==============================================================
// isValidTradeTrafficForm(form)
// IN: form - the form we are validating.
//==============================================================
function isValidTradeTrafficForm(form) {
	var msg = "";
	
	msg += requiredField(form.submitter.value, 'Name');
	if (! isValidEmailAddress(form.email.value)) {
		msg += "\n'E-mail address' is invalid.";
	}
	msg += requiredField(form.site.value, 'Site Name');	
	msg += requiredField(form.destinationURL.value, 'URL');	
	if (msg != "") {
		alert(msg);
	}
	
	return (msg == "");
}

//==============================================================
// isValidModelEditForm(form)
// IN: form - the form we are validating.
//==============================================================
function isValidModelEditForm(form) {
	var msg = "";
	
	msg += requiredField(form.firstName.value, 'First Name');
	/*
	msg += nonZeroSelectOption(form.ageRange,'Age Range');	
	msg += requiredField(form.bust.value, 'Bust');	
	msg += nonZeroSelectOption(form.modelType,'Model Type');	
	msg += nonZeroSelectOption(form.cup,'Cup');	
	msg += nonZeroSelectOption(form.hairColor,'Hair');	
	msg += nonZeroSelectOption(form.ethnicity,'Ethnicity');	
	*/
	if (! isValidateDate(form.dateToPost.value)) { 
		msg = msg + "\nInvalid date. Date must be in YYYY-MM-DD format.";
	}
	if (msg != "") {
		alert(msg);
	}
	
	return (msg == "");
}

//==============================================================
// isValidTGPEditForm(form)
// IN: form - the form we are validating.
//==============================================================
function isValidTGPEditForm(form) {
	var msg = "";
	
	if (! isValidateDate(form.dateToPost.value)) { 
		msg += "\n'Date to Post' must be in YYYY-MM-DD format.";
	}
	msg += requiredField(form.Gallery_URL.value, 'Gallery URL');
	msg += requiredField(form.Description.value, 'Description');
	msg += requiredField(form.Thumbnails.value, 'Thumbnails');	
	msg += requiredField(form.Position.value, 'Position');	
	/*
	msg += nonZeroSelectOption(form.model1,'Model');	
	msg += nonZeroSelectOption(form.categoryID1,'Category');	
	*/
	
	if (nonZeroSelectOption(form.categoryID1,'Category 1') != '' && nonZeroSelectOption(form.categoryID2,'Category 2') != '' && nonZeroSelectOption(form.categoryID3,'Category 3') != '') {
		msg += "\nPlease select at least one Category.";
	}	

	if (nonZeroSelectOption(form.model1,'Model 1') != '' && nonZeroSelectOption(form.model2,'Model 2') != '' && nonZeroSelectOption(form.model3,'Model 3') != '') {
		//msg += "\nPlease specify at least one Model.";
		haveModel = false;
	}	else {
		haveModel = true;
	}
	
	if (nonZeroSelectOption(form.smutCatID1,'Category 1') != '' && nonZeroSelectOption(form.smutCatID2,'Category 2') != '' && nonZeroSelectOption(form.smutCatID3,'Category 3') != '') {
		//msg += "\nPlease select at least one Smut Category.";
		haveSmut = false;
	}	else {
		haveSmut = true;
	}

	if (!haveSmut && !haveModel) {
		msg += "\nYou must select a Model or a Smut Category.";
	}
	
	if (msg != "") {
		alert(msg);
	}
	
	return (msg == "");
}

//================================
// isValidEditForm(form)
// IN: form - the form we are validating.
//================================
function isValidEditForm(form) {
	var msg = "";
	var title = trim(form.title.value);
	if (title.length == 0) {
		msg = "Title is required.";
	}
	
	if (! isValidateDate(form.dateToPost.value)) { 
		msg = msg + "\nInvalid date. Date must be in YYYY-MM-DD format.";
	}
	
	if (msg != "") {
		alert(msg);
	}
	
	return (msg == "");
}

//==============================================================
// isValidateDate(targetDate) : returns true if date is in YYYY-MM-DD format, otherwise returns false.
// IN: targetDate - the date to validate.
//==============================================================
function isValidateDate(targetDate) {
	// Date must be 10 characters.
	if (targetDate.length != 10) {
		return false;
	}
	
	// Check for a valid year.
	year = Number(targetDate.substr(0,4));
	today = new Date();
	currentYear = today.getFullYear();
	if ( (year  <  (currentYear - 50)) || (year > (currentYear  + 50)) ) {
		return false;
	}
	
	// Check for a valid month.
	month = Number(targetDate.substr(5,2));
	if (month < 1 || month > 12) {
		return false;
	}
	
	// Check for a valid day.
	day = Number(targetDate.substr(8,2));
	if (day < 1 || day > 31) {
		return false;
	}
	if (month == 2 && day > 29) {
		return false;
	}
	
	return true;
}
	
//=============================================
// finishValidation() :
//=============================================
function finishValidation(msg) {
	if (msg != '') {
		alert(msg);
	}	
	return (msg == '');
}

//=============================================
// isEmptyField() :
//=============================================
function isEmptyField(fld) {
	return (trim(fld).length == 0);
}

//=============================================
// isValidEmailAddress
//=============================================
function isValidEmailAddress(email) {
	// can't be empty
	if (isEmptyField(email)) return false;
	
	// can't contain any invalid character
	invalidChars = " /:,;";
	for (i=0;  i < invalidChars.length; i++) {
		badChar = invalidChars.charAt(i);
		if (email.indexOf(badChar,0) > -1) return false;
	}
	
	//  there must be one "@" character
	atPos = email.indexOf("@",1);
	if (atPos == -1) return false;
	
	// there must be at last one "." after the "@"
	dotPos = email.indexOf(".", atPos);
	if (dotPos == -1) return false;
	
	// there must be at least two characters after the "."
	if (dotPos + 3 > email.length) return false;
	
	return true;
}

//=============================================
// requiredFile
//=============================================
function requiredFile(fld, label) {
	msg = '';
	if (fld.length == 0) {
		msg = "\nPlease select a " + label + ".";
	}
	return msg;
}

//=============================================
// requiredField
//=============================================
function requiredField(fld, label) {
	msg = '';
	fld = trim(fld);
	if (fld.length == 0) {
		msg = "\n'" + label + "' is required.";
	}
	return msg;
}

//=============================================
// requiredSelectOption
//=============================================
function requiredSelectOption(fld, label) {
	msg = '';
	idx = fld.selectedIndex;
	fldText = trim(fld.options[idx].text);
	if (fldText.length == 0) {
		msg = "\n'" + label + "' is required.";
	}
	return msg;
}

//=============================================
// Assumes that selected index value of 0 is a blank item.
//=============================================
function nonZeroSelectOption(sel, label) {
	msg = '';
	if (sel.selectedIndex == 0) {
		msg = "\n'" + label + "' is required.";
	}
	return msg;
}	

