//    =======================================================================================
//    Template Name: Useform.js                                              			
//    Directory:  VRDB		                                 
//    Purpose:  Validates the request for use form that is being submitted for an image	
//    ======================================================================================= 
//    Date       Modified By          Comments                                      		
//    --------   ---------------      ----------------------------------------------		
//    4/2004    Marj Kelly           Created                                      			
//    =======================================================================================

function ValidateUseForm(FormName) {
	
	var form = document.UseForm ; // use form name
	var usetype = 0 ; // identifies the generic use i.e. personal, non-profit, commercial
	var MediaSelected = "" ; // identifies the media the image will be used in
	var NewsMagSelected = false; //used to determine if newspaper/magazine use has been selected
	var BookSelected = false; //used to determine if book use has been selected
	var OtherPrintSelected = false; //used to determine if other print media use has been selected
	var BroadcastSelected = false; //used to determine if broadcast use has been selected
	var FilmVideoSelected = false; //used to determine if film or video use has been selected
	var AdvertisingSelected = false; //used to determine if advertising use has been selected
	var DigitalSelected = false; //used to determine if digital use has been selected
	var DisplaySelected = false; //used to determine if display use has been selected
	var MerchandiseSelected = false; //used to determine if advertising use has been selected
	
	if (FormName == 'Basic') {
		// They have to supply a contact name and phone number at a minimum
		if ( (form.RFirstName.value.search(/[A-Za-z0-9]/) < 0) 
					|| (form.RLastName.value.search(/[A-Za-z0-9]/) < 0) 
					|| (form.RPhone.value.search(/[A-Za-z0-9]/) < 0) ) 
			{ DisplayError(1); return false; }
		// They also have to indicate in general the type of use.
		for (idx = 0; idx <= form.UseType.length - 1; idx++) 
			{ if (form.UseType[idx].checked == true) {usetype = form.UseType[idx].value; break;} }
		if (usetype == 0) {DisplayError(2); return false;} //if they have not this is a problem
		if (usetype != 1) {
			for (idx = 0; idx <= form.Media.length - 1; idx++) {
				if (form.Media[idx].checked == true) {
					if (MediaSelected == "") {MediaSelected = form.Media[idx].value;}
						else {MediaSelected = MediaSelected + "," + form.Media[idx].value;}
				}
			}
			if (MediaSelected != "") {return true;}
				else {DisplayError(3); return false;}
		}
		return true;
	}
	else { 
		if ((form.RFirstName.value.search(/[A-Za-z0-9]/) < 0) 
					|| (form.RLastName.value.search(/[A-Za-z0-9]/) < 0) 
					|| (form.RPhone.value.search(/[A-Za-z0-9]/) < 0)) 
			{DisplayError(1); return false;}
	
		// personal use must supply more info about themselves.
		if (form.UseType.value == 1) {
			if ((form.RAddress.value.search(/[A-Za-z0-9]/) < 0) 
						|| (form.RCity.value.search(/[A-Za-z0-9]/) < 0) 
						|| (form.RZip.value.search(/[A-Za-z0-9]/) < 0) 
						|| (form.RPhone.value.search(/[A-Za-z0-9]/) < 0) ) 
				{DisplayError(3); return false;}
			if (form.RState.selectedIndex == -1) {DisplayError(4); return false;} //must select state
			if (form.RCountry.selectedIndex == -1) {DisplayError(4); return false;} //must select country
			return true; // if all the info that is needed has been supplied let them keep ordering.
		}
	
		// For non-profit, on-spec and commercial use they have to supply company info.
		if ((form.VRDBCompany.value.search(/[A-Za-z0-9]/) < 0) 
					|| (form.VRDBAddress1.value.search(/[A-Za-z0-9]/) < 0) 
					|| (form.VRDBCity.value.search(/[A-Za-z0-9]/) < 0) 
					|| (form.VRDBZip.value.search(/[A-Za-z0-9]/) < 0) 
					|| (form.VRDBPhone.value.search(/[A-Za-z0-9]/) < 0))
			{DisplayError(5); return false;} // or they get an error.
		if (form.VRDBState.selectedIndex == -1) {DisplayError(5); return false;} //must select state
		if (form.VRDBCountry.selectedIndex == -1) {DisplayError(5); return false;} //must select Country
		
		// The basic check for each use type first see if the number of radio buttons per use type 
		// is greater than 1 or not. If it is not greater than 1 then just check the individual
		// item to see if it has more than one option or not.  It if has only one option than you
		// check to see if it has been selected without needing to loop through an array of choices.
		// If there is more than one option you need to loop through the array of them to see what
		// has been selected.
		
		// Check if a Book use has been selected
		if (form.Media.value.search(/Books/) != -1) {
			if (typeof form.SelectedBook_ID.length == "undefined") {
				if (form.SelectedBook_ID.checked == true) BookSelected = true 
			}
			else for (idx = 0; idx <= form.SelectedBook_ID.length - 1; idx++) {
					if (form.SelectedBook_ID[idx].checked == true) {BookSelected = true; break;} 
			}
			// if the use has been selected verify that the required fields have been entered
			if (BookSelected == false) {DisplayError(20); return false;}
			else { 
				if ((form.BookInfo1.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.BookInfo2.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.BookInfo3.value.search(/[A-Za-z0-9]/) == -1)) 
						{DisplayError(21); return false;}
			}
		}

		// Check if Display use has been selected
		if (form.Media.value.search(/Display/) != -1) {
			if ((form.DisplayInfo1.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.DisplayInfo3.value.search(/[A-Za-z0-9]/) == -1)) 
				{DisplayError(81); return false;}
		}

		// Check if a Newspaper or Magazine use has been selected
		if (form.Media.value.search(/Magazines/) != -1) {
			if (typeof form.SelectedNewsMag_ID.length == "undefined") {
				if (form.SelectedNewsMag_ID.checked == true) NewsMagSelected = true 
			}
			else for (idx = 0; idx <= form.SelectedNewsMag_ID.length - 1; idx++) {
					if (form.SelectedNewsMag_ID[idx].checked == true) {NewsMagSelected = true; break;} 
				}
			// if the use has been selected verify that the required fields have been entered
			if (NewsMagSelected == false) {DisplayError(10); return false;}
			else { 
				if ((form.NewsMagInfo1.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.NewsMagInfo2.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.NewsMagInfo3.value.search(/[A-Za-z0-9]/) == -1)) 
						{DisplayError(11); return false;}
			}
		}

		// Check if Film/video use has been selected
		if (form.Media.value.search(/FilmVideo/) != -1) {
			if (typeof form.SelectedFilmVideo_ID.length == "undefined") {
				if (form.SelectedFilmVideo_ID.checked == true) FilmVideoSelected = true 
			}
			else for (idx = 0; idx <= form.SelectedFilmVideo_ID.length - 1; idx++) {
					if (form.SelectedFilmVideo_ID[idx].checked == true) {FilmVideoSelected = true; break;} 
			}
			// if the use has been selected verify that the required fields have been entered
			if (FilmVideoSelected == false) {DisplayError(50); return false;}
			else { 
				if ((form.FilmVideoInfo1.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.FilmVideoInfo2.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.FilmVideoInfo3.value.search(/[A-Za-z0-9]/) == -1)) 
						{DisplayError(51); return false;}
			}
		}

		// Check if broadcast use has been selected
		if (form.Media.value.search(/Broadcast/) != -1) {
			if (typeof form.SelectedBroadcast_ID.length == "undefined") {
				if (form.SelectedBroadcast_ID.checked == true) BroadcastSelected = true 
			}
			else for (idx = 0; idx <= form.SelectedBroadcast_ID.length - 1; idx++) {
					if (form.SelectedBroadcast_ID[idx].checked == true) {BroadcastSelected = true; break;} 
			}
			// if the use has been selected verify that the required fields have been entered
			if (BroadcastSelected == false) {DisplayError(40); return false;}
			else { 
				if ((form.BroadcastInfo1.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.BroadcastInfo2.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.BroadcastInfo3.value.search(/[A-Za-z0-9]/) == -1)) 
						{DisplayError(41); return false;}
			}
		}

		// Check if Digital use has been selected
		if (form.Media.value.search(/Digital/) != -1) {
			if (typeof form.SelectedDigital_ID.length == "undefined") {
				if (form.SelectedDigital_ID.checked == true) DigitalSelected = true 
			}
			else for (idx = 0; idx <= form.SelectedDigital_ID.length - 1; idx++) {
					if (form.SelectedDigital_ID[idx].checked == true) {DigitalSelected = true; break;} 
			}
			// if the use has been selected verify that the required fields have been entered
			if (DigitalSelected == false) {DisplayError(70); return false;}
			else { 
				if ((form.DigitalInfo1.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.DigitalInfo2.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.DigitalInfo3.value.search(/[A-Za-z0-9]/) == -1)) 
						{DisplayError(71); return false;}
			}
		}

		// Check if Advertising use has been selected
		if (form.Media.value.search(/Advertising/) != -1) {
			if (typeof form.SelectedAdvertising_ID.length == "undefined") {
				if (form.SelectedAdvertising_ID.checked == true) AdvertisingSelected = true 
			}
			else for (idx = 0; idx <= form.SelectedAdvertising_ID.length - 1; idx++) {
					if (form.SelectedAdvertising_ID[idx].checked == true) {AdvertisingSelected = true; break;} 
			}
			// if the use has been selected verify that the required fields have been entered
			if (AdvertisingSelected == false) {DisplayError(60); return false;}
			else { 
				if ((form.AdvertisingInfo1.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.AdvertisingInfo2.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.AdvertisingInfo3.value.search(/[A-Za-z0-9]/) == -1)) 
						{DisplayError(61); return false;}
			}
		}

		// Check if a Other Print Media use has been selected
		if (form.Media.value.search(/OtherPrint/) != -1) {
			if (typeof form.SelectedOtherPrint_ID.length == "undefined") {
				if (form.SelectedOtherPrint_ID.checked == true) OtherPrintSelected = true 
			}
			else for (idx = 0; idx <= form.SelectedOtherPrint_ID.length - 1; idx++) {
					if (form.SelectedOtherPrint_ID[idx].checked == true) {OtherPrintSelected = true; break;} 
			}
			// if the use has been selected verify that the required fields have been entered
			if (OtherPrintSelected == false) {DisplayError(30); return false;}
			else { 
				if ((form.OtherPrintInfo1.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.OtherPrintInfo2.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.OtherPrintInfo3.value.search(/[A-Za-z0-9]/) == -1)) 
						{DisplayError(31); return false;}
			}
		}

		// Check if Merchandise use has been selected
		if (form.Media.value.search(/Merchandise/) != -1) {
			if ((form.MerchandiseInfo1.value.search(/[A-Za-z0-9]/) == -1) 
							|| (form.MerchandiseInfo3.value.search(/[A-Za-z0-9]/) == -1)) 
				{MerchandiseError(91); return false;}
		}

		return true;
	}
}

function DisplayError(ErrorCode ) {		
	switch (ErrorCode) {
		case 1: 
			alert("You must enter the requester's first and last name along with a phone number.");
			break;
		case 2: 
			alert("You must select the type of usage.");
			break;
		case 3: 
			alert("You must enter select the media(s) in which the image will be used.");
			break;
		case 4: 
			alert("You must enter the requester's address.");
			break;
		case 5: 
			alert("You must enter the company or publisher information.  At a minimum this is the name, address, and phone number.");
			break;
		// Newspaper and Magazine problems
		case 10: 
			alert("You must indicate the circulation size of the newspaper or magazine.");
			break;
		case 11: 
			alert("You must enter the title of the newspaper or magazine, article title and date of publication.");
			break;
		// Book problems
		case 20: 
			alert("You must indicate the number of books to be printed.");
			break;
		case 21: 
			alert("You must enter the book's title, author and publication date.");
			break;
		// Other Print Media problems
		case 30: 
			alert("You must indicate the number of copies to be printed.");
			break;
		case 31: 
			alert("You must enter the type of printed material, creator and date of publication.");
			break;
		// Broadcast problems
		case 40: 
			alert("You must indicate the broadcast's market.");
			break;
		case 41: 
			alert("You must enter a the broadcast's title and date.");
			break;
		// Film/video problems
		case 50: 
			alert("You must indicate the film or video's release market.");
			break;
		case 51: 
			alert("You must enter a the  film or video's title and release date");
			break;
		// Advertising problems
		case 60: 
			alert("You must indicate the market size in which the advertisement will run.");
			break;
		case 61: 
			alert("You must enter a the advertisement's campaign name and starting and ending dates.");
			break;
		// Digital problems
		case 70: 
			alert("You must indicate if the use is on a CD or website.");
			break;
		case 71: 
			alert("You must enter the CD title or website URL, producer and release date.");
			break;
		// Display problems
		case 81: 
			alert("You must enter the display location or exhibit name and starting display date.");
			break;
		// Merchandise problems
		case 91: 
			alert("You must enter the type of merchandise and starting sales date.");
			break;
		default : 
			alert("An error occured while trying to process the form.  Please verify that all of the required fields have been entered.");
			break;
	}
}

