function Resource(type, hasTown) {
	this.type = type;
	this.hasTown = hasTown;
}

function Resource_isFormValid(f) {
	switch (this.type) {
		case "teachers":
			var isValid = this.validateTeacherForm(f);

			return isValid;
			break;
		case "retailers":
			var isValid = this.validateRetailerForm(f);

			return isValid;
			break;
		case "submitretailer":
			var isValid = this.validateSubmitRetailerForm(f);

			return isValid;
			break;
		case "submitteacher":
			var isValid = this.validateSubmitTeacherForm(f);

			return isValid;
			break;
		default:
			return false;
			break;
	}
}

function validateTeacherForm(f) {
	var zip = "";
	var town = "";
	var stateID = 0;

	if (f.name == "usForm") {
		zip = f.zip.value;
		
		if (this.hasTown) {
			town = f.town.value;
			stateID = f.stateID.value;
		}

		if (zip != "") {
			f.searchtype.value = "ZIP";

			return true;
		} else if ((town != "") && (stateID != 0)) {
			f.searchtype.value = "TOWN";

			return true;
		}

		document.getElementById('usErrorMsg').innerHTML = "Please fill in your search criteria";
	} else if (f.name == "caForm") {
		zip = f.zip.value;
		
		if (this.hasTown) {
			town = f.town.value;
			stateID = f.stateID.value;
		}

		if (zip != "") {
			f.searchtype.value = "ZIP";

			return true;
		} else if ((town != "") && (stateID != 0)) {
			f.searchtype.value = "TOWN";

			return true;
		}

		document.getElementById('caErrorMsg').innerHTML = "Please fill in your search criteria";
	}

	return false;
}

function validateRetailerForm(f, hasTown) {
	var zip = "";
	var town = "";
	var stateID = 0;

	if (f.name == "usForm") {
		zip = f.zip.value;
		
		if (this.hasTown) {
			town = f.town.value;
			stateID = f.stateID.value;
		}

		if (zip != "") {
			f.searchtype.value = "ZIP";

			return true;
		} else if ((town != "") && (stateID != 0)) {
			f.searchtype.value = "TOWN";

			return true;
		}

		document.getElementById('usErrorMsg').innerHTML = "Please fill in your search criteria";
	} else if (f.name == "caForm") {
		zip = f.zip.value;
		
		if (this.hasTown) {
			town = f.town.value;
			stateID = f.stateID.value;
		}

		if (zip != "") {
			f.searchtype.value = "ZIP";

			return true;
		} else if ((town != "") && (stateID != 0)) {
			f.searchtype.value = "TOWN";

			return true;
		}

		document.getElementById('caErrorMsg').innerHTML = "Please fill in your search criteria";
	}

	return false;
}

function validateSubmitRetailerForm(f) {
	var retailerName     =  f.retailerName.value;
	var websiteAddress   =  f.websiteAddress.value;
	var businessName     =  f.businessName.value;
	var address          =  f.address.value;
	var city             =  f.city.value;
	var stateID          =  f.stateID.value;
	var zip              =  f.zip.value;
	var consumerPhone    =  f.consumerPhone.value;
	var usRetailer       =  (f.usRetailer.checked)? 1 : 0;
	var mailOrder        =  (f.mailOrder.checked)? 1 : 0;
	var caRetailer       =  (f.caRetailer.checked)? 1 : 0;
	var contactPerson    =  f.contactPerson.value;
	var contactPhone     =  f.contactPhone.value;
	var productCarried   =  f.productCarried.value;
	var retailValue      =  f.retailValue.value;
	var primaryVendor    =  f.primaryVendor.value;
	var yearEstablished  =  f.yearEstablished.value;
	var comments         =  f.comments.value;

	var registerfirstname	= f.registerfirstname.value;
	var registerlastname  = f.registerlastname.value;
	var registeremail     = f.registeremail.value;
	var registerpassword  = f.registerpassword.value;
	var newsletter        = (f.newsletter.checked)? 1 : 0;
	var loginemail        = f.loginemail.value;
	var loginpassword     = f.loginpassword.value;
	var terms							= (f.terms.checked)? 1 : 0;

	var remoting = new Remoting(this.type);

	document.getElementById('errorMsg').innerHTML = "";

	if ((retailerName == "") || (address == "") || (city == "") || (stateID == "")
			 || (zip == "") || ((usRetailer == 0) && (mailOrder == 0) && (caRetailer == 0))
			 || (terms == 0) ) {

		var emailError = false;
		var passwordError = false;
	
		if (registeremail == "" && loginemail == "") {
			emailError = true;
		}
		
		if (registerpassword == "" && loginpassword == "") {
			passwordError = true;
		}
		
		if (emailError && passwordError) {
			document.getElementById('errorMsg').innerHTML = "Please enter your email address and password.";
		} else if (emailError) {
			document.getElementById('errorMsg').innerHTML = "Please enter your email address.";
		} else if (passwordError) {
			document.getElementById('errorMsg').innerHTML = "Please enter your password.";
		} else {
			document.getElementById('errorMsg').innerHTML = "Please fill in all required fields";
		}

		//document.getElementById('errorMsg').innerHTML = "Please fill in all required fields";
		return false;
	}

	if ((registerfirstname != "") && (registerlastname != "") && (registeremail != "") && (registerpassword != ""))  {
		remoting.send("formtype=register&retailerName=" + retailerName + "&websiteAddress=" + websiteAddress +
									"&businessName=" + businessName + "&address=" + address + "&city=" + city + "&stateID=" + stateID +
									"&zip=" + zip + "&consumerPhone=" + consumerPhone + "&usRetailer=" + usRetailer + "&mailOrder=" + mailOrder +
									"&caRetailer=" + caRetailer + "&contactPerson=" + contactPerson + "&contactPhone=" + contactPhone +
									"&productCarried=" + productCarried + "&retailValue=" + retailValue + "&primaryVendor=" + primaryVendor +
									"&yearEstablished=" + yearEstablished + "&comments=" + comments + "&memberEmail=" + registeremail +
									"&memberPassword=" + registerpassword + "&firstName=" + registerfirstname + "&lastName=" + registerlastname +
									"&subscribeNewsletter=" + newsletter );

		var currUrl = (document.location).toString();
		if (currUrl.indexOf("#topcap") == -1) {
			document.location += "#topcap";
		} else {
			document.location = document.location;
		}
		
		return false;
	}

	if ((loginemail != "") && (loginpassword != ""))  {
		remoting.send("formtype=validate&retailerName=" + retailerName + "&websiteAddress=" + websiteAddress +
									"&businessName=" + businessName + "&address=" + address + "&city=" + city + "&stateID=" + stateID +
									"&zip=" + zip + "&consumerPhone=" + consumerPhone + "&usRetailer=" + usRetailer + "&mailOrder=" + mailOrder +
									"&caRetailer=" + caRetailer + "&contactPerson=" + contactPerson + "&contactPhone=" + contactPhone +
									"&productCarried=" + productCarried + "&retailValue=" + retailValue + "&primaryVendor=" + primaryVendor +
									"&yearEstablished=" + yearEstablished + "&comments=" + comments + "&memberEmail=" + loginemail +
									"&memberPassword=" + loginpassword );

		var currUrl = (document.location).toString();
		if (currUrl.indexOf("#topcap") == -1) {
			document.location += "#topcap";
		} else {
			document.location = document.location;
		}
		return false;
	}
	
	document.getElementById('errorMsg').innerHTML = "Please fill in all required fields";
	return false;
}

function validateSubmitTeacherForm(f) {
	var teacherName           = f.teacherName.value;
	var businessName          = f.businessName.value;
	var address               = f.address.value;
	var town                  = f.town.value;
	var stateID               = f.stateID.value;
	var zip                   = f.zip.value;
	var daytimePhone          = f.daytimePhone.value;
	var email                 = f.email.value;
	var websiteAddress        = f.websiteAddress.value;
	var decorativePainting    = (f.decorativePainting.checked)? 1 : 0;
	var fineArt               = (f.fineArt.checked)? 1 : 0;
	var craft                 = (f.craft.checked)? 1 : 0;
	var childrenArt           = (f.childrenArt.checked)? 1 : 0;
	var store                 = (f.store.checked)? 1 : 0;
	var privateStudio         = (f.privateStudio.checked)? 1 : 0;
	var homeStudio            = (f.homeStudio.checked)? 1 : 0;
	var communityCenter       = (f.communityCenter.checked)? 1 : 0;
	var other                 = (f.other.checked)? 1 : 0;
	var additionalInformation = f.additionalInformation.value;
	var image                 = f.image;

	var firstName							= f.firstName.value;
	var lastName  						= f.lastName.value;
	var registeremail     		= f.registeremail.value;
	var registerpassword  		= f.registerpassword.value;
	var subscribeNewsletter   = (f.subscribeNewsletter.checked)? 1 : 0;
	var loginemail        		= f.loginemail.value;
	var loginpassword     		= f.loginpassword.value;
	var terms									= (f.terms.checked)? 1 : 0;

	var remoting = new Remoting(this.type);

	document.getElementById('errorMsg').innerHTML = "";

	if ((teacherName == "") || (town == "") || (stateID == "") || (zip == "")
			 || ((decorativePainting == 0) && (fineArt == 0) && (craft == 0) && (childrenArt == 0))
			 || (terms == 0) ) {

		var emailError = false;
		var passwordError = false;
	
		if (registeremail == "" && loginemail == "") {
			emailError = true;
		}
		
		if (registerpassword == "" && loginpassword == "") {
			passwordError = true;
		}
		
		if (emailError && passwordError) {
			document.getElementById('errorMsg').innerHTML = "Please enter your email address and password.";
		} else if (emailError) {
			document.getElementById('errorMsg').innerHTML = "Please enter your email address.";
		} else if (passwordError) {
			document.getElementById('errorMsg').innerHTML = "Please enter your password.";
		} else {
			document.getElementById('errorMsg').innerHTML = "Please fill in all required fields";
		}

		//document.getElementById('errorMsg').innerHTML = "Please fill in all required fields";
		return false;
	}

	if ((firstName != "") && (lastName != "") && (registeremail != "") && (registerpassword != ""))  {
		f.memberEmail.value = registeremail;
		f.memberPassword.value = registerpassword;
		f.formtype.value = "register";
		return true;
	}

	if ((loginemail != "") && (loginpassword != ""))  {
		f.memberEmail.value = loginemail;
		f.memberPassword.value = loginpassword;
		
		f.formtype.value = "validate";
		
		return true;
	}

	document.getElementById('errorMsg').innerHTML = "Please fill in all required fields";
	return false;
}

Resource.prototype.isFormValid = Resource_isFormValid;
Resource.prototype.validateTeacherForm = validateTeacherForm;
Resource.prototype.validateRetailerForm = validateRetailerForm;
Resource.prototype.validateSubmitRetailerForm = validateSubmitRetailerForm;
Resource.prototype.validateSubmitTeacherForm = validateSubmitTeacherForm;