﻿// JavaScript Document

var c_delimeter = "^";

function OnAdvancedSearchChecked(chkCheckbox)
{
	// get the checkboxes
	var chkEntertainment = document.getElementById('chkSearchEntertainment');
	var chkPortraits	 = document.getElementById('chkSearchPortraits');
	var chkStock		 = document.getElementById('chkSearchStock');
	var chkNewsAndSports = document.getElementById('chkSearchNewsAndSports');
	var chkHistoric		 = document.getElementById('chkSearchHistoric');
	var chkAll			 = document.getElementById('chkSearchAll');

	if (!chkEntertainment || !chkPortraits || !chkStock || !chkNewsAndSports || !chkHistoric || !chkAll)
		return;


	// if the checkbox is checked, turn on/off other checkboxes based on what checked
	if (chkCheckbox.checked)
	{
		// was this the "all" checkbox
		if (chkCheckbox.id.indexOf('All') > 0)
		{
			// yes, so uncheck all the other checkboxes
			chkEntertainment.checked = false;
			chkPortraits.checked	 = false;
			chkStock.checked		 = false;
			chkNewsAndSports.checked = false;
			chkHistoric.checked		 = false;
		}
		else
		{
			// no, so uncheck the "all" checkbox
			chkAll.checked = false;
		}
	}
	else
	{		
		// if no checkboxes checked...
		if (chkEntertainment.checked)	return;
		if (chkPortraits.checked)		return;
		if (chkStock.checked)			return;
		if (chkNewsAndSports.checked)	return;
		if (chkHistoric.checked)		return;

		// ...check the "all" checkbox
		chkAll.checked = true;
	}
}

function OnDateTermChanged(listDateTerm)
{
	var strTerm = listDateTerm.options[listDateTerm.selectedIndex].value;

	var spanDate2 = document.getElementById('spanDate2');
	var txtDate2  = document.getElementById('txtDate2');
	var calDate2  = document.getElementById('calDate2');
	if (!spanDate2 || !txtDate2 || !calDate2)
		return;
	
	spanDate2.style.visibility = (strTerm == 'between') ? 'visible' : 'hidden';
	txtDate2.style.visibility  = (strTerm == 'between') ? 'visible' : 'hidden';
	calDate2.style.visibility  = (strTerm == 'between') ? 'visible' : 'hidden';
}

function SubmitAdvancedSearch(oImg)
{
	var frmSubmit = document.forms.frmSubmit;

	var strAdvancedSearch = '';	
	var strCategories	  = '';

	// check if "Image #" value is supplied
	var txtImageNumber = document.getElementById('txtImageNumber');
	if (txtImageNumber.value != '')
	{
		strAdvancedSearch = 'image#' + c_delimeter + txtImageNumber.value;
	}
	
	if (strAdvancedSearch == '')
	{
		// check if "with all of the words" value is supplied
		var txtAllWords = document.getElementById('txtAllWords');
		if (txtAllWords.value != '')
		{
			if (strAdvancedSearch != '')	strAdvancedSearch += '\n';

			strAdvancedSearch += 'allwords' + c_delimeter + txtAllWords.value;
		}

		// check if "with the exact phrase" value is supplied
		var txtExactPhrase1 = document.getElementById('txtExactPhrase1');

		if (txtExactPhrase1.value != '')
		{
			if (strAdvancedSearch != '')	strAdvancedSearch += '\n';

			strAdvancedSearch += 'phrase' + c_delimeter + txtExactPhrase1.value;
			
			var txtExactPhrase2 = document.getElementById('txtExactPhrase2');
			var listExactPhrase = document.getElementById('listExactPhrase');
			
			if ((txtExactPhrase2.value != '') && (listExactPhrase.selectedIndex > -1))
			{
				strAdvancedSearch += c_delimeter + listExactPhrase.options[listExactPhrase.selectedIndex].value;
				strAdvancedSearch += c_delimeter + txtExactPhrase2.value;
			}
		}

		// check if "with at least one of the words" value is supplied
		var txtOneOf1 = document.getElementById('txtOneOf1');

		if (txtOneOf1.value != '')
		{
			if (strAdvancedSearch != '')	strAdvancedSearch += '\n';

			strAdvancedSearch += 'oneof' + c_delimeter + txtOneOf1.value;
			
			var txtOneOf2 = document.getElementById('txtOneOf2');
			var listOneOf = document.getElementById('listOneOf');
			
			if ((txtOneOf2.value != '') && (listOneOf.selectedIndex > -1))
			{
				strAdvancedSearch += c_delimeter + listOneOf.options[listOneOf.selectedIndex].value;
				strAdvancedSearch += c_delimeter + txtOneOf2.value;
			}
		}

		// check if "people" value is supplied
		var txtPeople1 = document.getElementById('txtPeople1');

		if (txtPeople1.value != '')
		{
			if (strAdvancedSearch != '')	strAdvancedSearch += '\n';

			strAdvancedSearch += 'people' + c_delimeter + txtPeople1.value;
			
			var txtPeople2 = document.getElementById('txtPeople2');
			var listPeople = document.getElementById('listPeople');
			
			if ((txtPeople2.value != '') && (listPeople.selectedIndex > -1))
			{
				strAdvancedSearch += c_delimeter + listPeople.options[listPeople.selectedIndex].value;
				strAdvancedSearch += c_delimeter + txtPeople2.value;
			}
		}

		// check if "photographer" value is supplied
		var txtPhotographer1 = document.getElementById('txtPhotographer1');

		if (txtPhotographer1.value != '')
		{
			if (strAdvancedSearch != '')	strAdvancedSearch += '\n';

			strAdvancedSearch += 'photographer' + c_delimeter + txtPhotographer1.value;
			
			var txtPhotographer2 = document.getElementById('txtPhotographer2');
			var listPhotographer = document.getElementById('listPhotographer');
			
			if ((txtPhotographer2.value != '') && (listPhotographer.selectedIndex > -1))
			{
				strAdvancedSearch += c_delimeter + listPhotographer.options[listPhotographer.selectedIndex].value;
				strAdvancedSearch += c_delimeter + txtPhotographer2.value;
			}
		}

		// check if "keyword" value is supplied
		var listKeywords = document.getElementById('listKeywords');

		if (listKeywords.selectedIndex > 0)
		{
			if (strAdvancedSearch != '')	strAdvancedSearch += '\n';

			strAdvancedSearch += 'keyword' + c_delimeter + listKeywords.options[listKeywords.selectedIndex].value;
		}

		// check if "event" value is supplied
		var listEvents = document.getElementById('listEvents');

		if (listEvents.selectedIndex > 0)
		{
			if (strAdvancedSearch != '')	strAdvancedSearch += '\n';

			strAdvancedSearch += 'event' + c_delimeter + listEvents.options[listEvents.selectedIndex].value;
		}
		
		// check if "date" value is supplied
		var txtDate1 = document.getElementById('txtDate1');

		if (txtDate1.value != '')
		{
			if (!IsDate(txtDate1.value))
			{
				txtDate1.focus();
				return;
			}
		
			if (strAdvancedSearch != '')	strAdvancedSearch += '\n';

			var listDate = document.getElementById('listDate');
			var txtDate2 = document.getElementById('txtDate2');

			strAdvancedSearch += 'date' + c_delimeter + listDate.options[listDate.selectedIndex].value;
			strAdvancedSearch += c_delimeter + txtDate1.value;
						
			if ((txtDate2.value != '') && (listDate.selectedIndex == 4))
			{
				if (!IsDate(txtDate2.value))
				{
					txtDate2.focus();
					return;
				}
				strAdvancedSearch += c_delimeter + txtDate2.value;
			}
		}

	}

	if (strAdvancedSearch == '')
		return;

	var chkEntertainment = document.getElementById('chkSearchEntertainment');
	var chkPortraits	 = document.getElementById('chkSearchPortraits');
	var chkStock		 = document.getElementById('chkSearchStock');
	var chkNewsAndSports = document.getElementById('chkSearchNewsAndSports');
	var chkHistoric		 = document.getElementById('chkSearchHistoric');
	var chkAll			 = document.getElementById('chkSearchAll');

	if (chkAll.checked)
		strCategories = 'A';
	else
	{
		if (chkEntertainment.checked)	strCategories += 'E';
		if (chkPortraits.checked)		strCategories += 'P';
		if (chkStock.checked)			strCategories += 'S';
		if (chkNewsAndSports.checked)	strCategories += 'N';
		if (chkHistoric.checked)		strCategories += 'D';
	}

	frmSubmit.txtAdvanced.value	  = strAdvancedSearch;
	frmSubmit.txtCategories.value = strCategories;
	frmSubmit.submit();
}

function resetForm()
{
	var frmForm = document.forms[0];
	
	if (frmForm)
		frmForm.reset();
}

function IsDate(strDate)
{
	var regexNumber = /^\-?\d+$/;

	// Make sure Date values are ok
	strDate		= strDate.replace(/-/g, '/').replace(/\./g, '/');
	var arrDate = strDate.split('/');

	if (arrDate.length != 3)
	{
		alert ("Invalid date value: '" + strDate + "'.\nFormat accepted is dd/mm/yyyy.");
		return false;
	}
	if (!arrDate[1])
	{
		alert ("Invalid date value: '" + strDate + "'.\nNo day of month value can be found.");
		return false;
	}
	if (!regexNumber.exec(arrDate[1]))
	{
		alert ("Invalid day of month value: '" + arrDate[1] + "'.");
		return false;
	}
	if (!arrDate[0])
	{
		alert ("Invalid date value: '" + strDate + "'.\nNo month value can be found.");
		return false;
	}
	if (!regexNumber.exec(arrDate[0]))
	{
		alert ("Invalid month value: '" + arrDate[0] + "'.");
	}
	if (!arrDate[2])
	{
		alert ("Invalid date value: '" + strDate + "'.\nNo year value can be found.");
	}
	if (!regexNumber.exec(arrDate[2]))
	{
		alert ("Invalid year value: '" + arrDate[2] + "'.");
		return false;
	}

	var dteDate = new Date();
	dteDate.setDate(1);

	if (arrDate[0] < 1 || arrDate[0] > 12)
	{
		alert ("Invalid month value: '" + arrDate[0] + "'.\nAllowed range is 01-12.");
		return false;
	}

	dteDate.setMonth(arrDate[0]-1);
	 
	if (arrDate[2] < 100) arrDate[2] = Number(arrDate[2]) + (arrDate[2] < 20 ? 2000 : 1900);
	dteDate.setFullYear(arrDate[2]);

	var dt_numdays = new Date(arrDate[2], arrDate[0], 0);
	dteDate.setDate(arrDate[1]);
	if (dteDate.getMonth() != (arrDate[0]-1))
	{
		alert("Invalid day of month value: '" + arrDate[1] + "'.\nAllowed range is 01-"+dt_numdays.getDate()+".");
		return false;
	}
		
	return true;
}