//Content-type: text/js
// JScript source code

var EVENT_TYPE_WS = 5;

function make_date(str)
{
	re = /[-:\/]/;
	sep = re.exec(str);

	array = str.split(sep);
	theDate = new Date(array[0], array[1]-1, array[2]);
	return theDate;
}

function copy_date()
{
	var from = ESGetElement('date_from').value;
	var to = ESGetElement('date_to').value;
	
	if(to == '')
	{
		ESGetElement('date_to').value = from;
	} 
}
function enable_save()
{
	
	if((ESGetElement("source_image").value != "") && (ESGetElement("title").value != ""))
	{
		ESGetElement("save").disabled = false;
	}
	else
	{
		ESGetElement("save").disabled = true;
	}
}

function set_filename(obj)
{
	if(obj.value != "")
	{
		
		enable_save();
		ESGetElement("image_file").value = "";
		ESGetElement("image_width").value = "";
		ESGetElement("image_height").value = "";
	}
}

function enable_ws_list()
{
	if(ESGetElement("event_type_id").value == 5)
	{
		ESGetElement("workshop_type_id").disabled = false;
	}
	else
	{
		ESGetElement("workshop_type_id").disabled = true;
	}
}

function ws_change_type()
{
	ESGetElement("title").value = ESGetElement("workshop_type_id").options(ESGetElement("workshop_type_id").selectedIndex).text;	
	ESGetElement("ws_type_id").value = ESGetElement("workshop_type_id").value;
	
	var index = ESGetElement("workshop_type_id").value;
	ESGetElement("information").value = links[index];
	ESGetElement("description").value = descriptions[index];
	
}

function validate_email_address(address)
{			
	lindex = address.lastIndexOf("@");
	findex = address.indexOf("@");
	if((findex < 1) || (findex == address.length - 1) || (findex != lindex))
	{
		return false;
	}
	
	dotindex = address.lastIndexOf("."); 
	//There must be at least 1 dot after the @
	if((dotindex < lindex) || (dotindex == (lindex+1)) || (dotindex == address.length - 1))
	{
		return false;
	}
	return true;
}

function validate_season_format(str)
{
	var re =  /[\d]{4}[-]{1}[\d]{4}/;
	var result = re.exec(str);
	if(result == null)
	{
		return false;
	}
	
	re = /[-]/;
	sep = re.exec(str);
	array = str.split(sep);
	first = array[0];
	second = array[1];
	
	if((first > second) || (first < 2001) || (second < 2002))
	{
		return false;
	} 
	if ((second - first) != 1)
	{
		return false;
	}
	
	return true;
}

function validate_date_format(str)
{
  //Date must contain 4 digits, followed by - , : or / 
  //followed by 2 digits, followed by - , : or / 
  //followed by 2 digits.
	re =  /[\d]{4}[-:\/]{1}[\d]{2}[-:\/]{1}[\d]{2}/;
	result = re.exec(str);
	if(result == null)
	{
		return false;
	}
	//Find the separator and split into y m d.
	re = /[-:\/]/;
	sep = re.exec(str);
	array = str.split(sep);
	year = array[0];
	month = array[1];
	day = array[2];
	
	if(((year < 2002) || (year > 2999)) && (year != 0000))
	{
		return false;
	}
	if(((month < 1) || (month > 12)) && (month != 0))
	{
		return false;
	}
	if(((day < 1) || (day > 31)) && (day != 0))
	{
		return false;
	}
	
	return true;
}

function validate_form_member()
{

    if( ESGetElement("forename").value == "")
    {
        alert("Error: Please enter a forename");
        ESGetElement('forename').select();
		return false;
    }
    if( ESGetElement("surname").value == "")
    {
        alert("Error: Please enter a surname");
        ESGetElement('surname').select();
		return false;
    }
    if( ESGetElement("street_address").value == "")
    {
        alert("Error: Please enter a street address");
        ESGetElement('street_address').select();
		return false;
    }
    if( ESGetElement("locality").value == "") 
    {
        alert("Error: Please enter a locality");
        ESGetElement('locality').select();
		return false;
    }
	if( ESGetElement("city").value == "")
    {
        alert("Error: Please enter a city or county");
        ESGetElement('city').select();
		return false;
    }
    if( ESGetElement("postcode").value == "")
    {
        alert("Error: Please enter a postcode");
        ESGetElement('postcode').select();
		return false;
    }
    if( ESGetElement("country").value == "")
    {
        alert("Error: Please enter a country");
        ESGetElement('country').select();
		return false;
    }
	if(ESGetElement("email").value == "")
	{
		alert('Error: Please enter an email address or "none"');
		ESGetElement('email').select();
		return false;
	}
	else
	{
		email = ESGetElement("email").value;
		if(email.toLowerCase() != "none")
		{			
			if(!validate_email_address(email))
			{
				alert('Error: Please enter a valid email address or "none"');
				ESGetElement('email').select();
				return false;
			}
		}
	}
	if( ESGetElement('subscription').value != '')
	{
		if( validate_date_format( ESGetElement('subscription').value ) == false )
		{
			alert('Error: Please enter a subscription date in the format YYYY-MM-DD');
			ESGetElement('subscription').select();
			return false;
		}
	}
    return true;
}

function validate_find_member()
{
    if(( ESGetElement("forename").value == "") &&  ( ESGetElement("surname").value == ""))
    {
        alert("Error: Please enter a forename or surname to search");
        ESGetElement('forename').select();
		return false;
    }
    ESGetElement('action').value = 'find_member';
    return true;
}

function validate_search_options()
{
	var byNone = ESGetElement('search_none').checked;
	var byName = ESGetElement('search_name').checked;
	var byCategory = ESGetElement('search_category').checked;
	var byComment = ESGetElement('search_comments').checked;
    	
	if(!byName && !byCategory && !byComment && !byNone)
	{
		alert("Error: Please select a search method - By Name - By Category or By Comments");
		ESGetElement("forename").select();
		return false;
	}
	
	if(byName)
	{
		if(( ESGetElement("forename").value == "") &&  ( ESGetElement("surname").value == ""))
		{
			alert("Error: Please enter a forename or surname to search");
			ESGetElement('forename').select();
			return false;
		}
	}
	
	if(byCategory)
	{
		BuildListEx(ESGetElement('category_ids'), ESGetElement('selected_categories'));
		if( ESGetElement("category_ids").value == -1)
		{
			alert("Error: Please select a member category from the list");
			ESGetElement('category_ids').select();
			return false;
		}
	}
	
	if(byComment)
	{
		if( ESGetElement("comments").value == "")
		{
			alert("Error: Please enter a string to search for");
			ESGetElement('comments').select();
			return false;
		}
	}
    ESGetElement('action').value = 'find_member';
    return true;
}

function validate_form_event( btn )
{ 
	if(btn.name == 'btnCancel')
	{
		proceed = true;
		ESGetElement('intent').value='cancel';
	}
	else if(btn.name == 'btnDelete')
	{
		var doUpdate = window.confirm("Do you really want to delete this event?");
		if(doUpdate == false)
		{
			return false;
		}
		proceed = true;
		ESGetElement('intent').value='delete';
	}
	else
	{
//		if(ESGetElement('event_id').value == -1)
//		{
//			alert('Error: Please select an Event');
//			ESGetElement('event_id').select();
//			return false;
//		}   
		if(ESGetElement('event_title').value == '')
		{
			alert('Error: Please enter the title of the Event');
			ESGetElement('event_title').select();
			return false;
		}
		if(ESGetElement('event_type_id').value == -1)
		{
			alert('Error: Please select an Event Type');
			ESGetElement('event_type_id').focus();
			return false;
		}    
//		if(ESGetElement('event_type_id').value == EVENT_TYPE_WS)
//		{
//			if(ESGetElement('workshop_type_id').value == -1)
//			{
//				alert('Error: Please select a Workshop Type');
//				ESGetElement('workshop_type_id').focus();
//				return false;
//			}
//		}
		if(ESGetElement('date_from').value == "")
		{
			alert('Error: Please enter a date for the Event in the "From" field');
			ESGetElement('date_from').select();
			return false;
		}
		else 
		{
			if( validate_date_format( ESGetElement('date_from').value ) == false )
			{
				alert('Error: Please enter a From date in the format YYYY-MM-DD');
				ESGetElement('date_from').select();
				return false;
			}
		}
    
		if((ESGetElement('date_to').value != "") && 
		   (ESGetElement('date_to').value != "0000-00-00"))
		{
			if(validate_date_format(ESGetElement('date_to').value) == false)
			{
				alert('Error: Please enter a To date in the format YYYY-MM-DD');
				ESGetElement('date_to').select();
				return false;
			} 
			first = make_date(ESGetElement('date_from').value);
			second = make_date(ESGetElement('date_to').value);
			if(second < first)
			{
				alert('Error: "To" date should be later than "From" date');
				ESGetElement('date_to').select();
				return false;
			}
		}
    
		if(ESGetElement('provisional').checked)
		{
			if(ESGetElement('protext').value == "")
			{
				alert('Error: Please enter some provisional information for this Event');
				ESGetElement('protext').select();
				return false;
			}
		}
		ESGetElement('intent').value = 'save';
		proceed = true;
	}
    return proceed;
}

function validate_form_mail()
{
	
	var from = ESGetElement('from').value;
	var to = ESGetElement('to').value;
	var subject = ESGetElement('subject').value;
	var message = ESGetElement('message').value;
	
	if(from == '')
    {
        alert('Email has no sender');
        return false;
    }
    if(to == '') 
    {
        alert('Email has no recipients');
        ESGetElement('btnSelect').select();
        return false;
    }    
    if(subject == '')
    {
        alert('Email has no subject');
        ESGetElement('subject').select();
        return false;
    }
    if(message == '')
    {
        alert('Email has no message');
        ESGetElement('message').select();
        return false;
    }
    ESGetElement('action').value = 'val_send_mail';
    return true;   
}

function validate_form_contact()
{
		
	var email = ESGetElement('sender').value;
	
	var rec_enquiries = ESGetElement('info').checked;
	var rec_admin = ESGetElement('admin').checked;
	var rec_exhib = ESGetElement('exhib').checked;
	 
	var subject = ESGetElement('subject').value;
	var message = ESGetElement('message').value;
	var code = ESGetElement('pass_key').value;
	
	var to = '';
	
    if(rec_enquiries == true)
	  to = 'info'; 
	else if(rec_admin == true)
	  to = 'admin';
    else if(rec_exhib == true)
      to = 'exhib';
	   	
	if(email == '')
      {
        alert('Please fill in the From field - using a valid email address');
        ESGetElement('sender').select();
        return false;
      }
    
    if( validate_email_address(email) == false)
    {
	  alert('Please enter a valid email address in the From field');
        ESGetElement('sender').select();
        return false;
    }
	
    if(to == '')
    {
	  alert('Please select a recipient for this email');
        ESGetElement('recipient').select();
        return false;
    }
	    
    if(subject == '')
    {
        alert('This email has no subject');
        ESGetElement('subject').select();
        return false;
    }
    if(message == '')
    {
        alert('This email has no message');
        ESGetElement('message').select();
        return false;
    }
    if(code == '')
    {
		alert('Please enter the validation code');
		ESGetElement('pass_key').select();
		return false;
    }
    ESGetElement('action').value = 'val_contact';
    return true;   
}

function validate_form_password()
{
	
	var user = ESGetElement('username').value;
	var old_user = ESGetElement('old_username').value;
	var old_pwd = ESGetElement('old_password').value;
	var new_pwd = ESGetElement('new_password').value;
	var ver_pwd = ESGetElement('ver_password').value;
	
	if(user == "")
	{
		alert("Please enter your username");
		ESGetElement('username').select();
		return false;
	}
	
	var bad_chars = /[^A-Za-z0-9]/;
	if(bad_chars.test(user))
	{
		alert("Your username can only contain letters and/or numbers");
		ESGetElement('username').select();
		return false;
	}
	
	var user_changed = (old_user != user);	

	if(!((old_pwd == "") && (new_pwd == "") && (ver_pwd == "")))
	{
		if(old_pwd == "")
		{
			alert("Please enter your old password");
			ESGetElement('old_password').select();
			return false;
		}
		if(new_pwd == "")
		{
			alert("Please enter your new password");
			ESGetElement('new_password').select();
			return false;
		}
		if(ver_pwd == "")
		{
			alert("Please verify your new password");
			ESGetElement('ver_password').select();
			return false;
		}		
		if(new_pwd.length < 4)
		{
			alert("Your new password must be greater than 4 characters long");
			ESGetElement('new_password').select();
			return false;
        } 
        if(ver_pwd != new_pwd)
        {
            alert("The new password and verify password do not match - please re-enter them");
            ESGetElement('ver_password').select();
			return false;
        }
        if(new_pwd == old_pwd)
        {
			alert("Your new password is the same as your old password - please enter a new one");
			ESGetElement('new_password').select();
			return false;
        }
	}
	
	if( (new_pwd == "" ) && (!user_changed))
	{
		alert("Nothing to change! Press Cancel");
		ESGetElement('btnCancel').select();
		return false;
	} 

	var changes = (user_changed) ? "Username" : "Password.";
	if(user_changed)
	{
		changes = changes + ((new_pwd != "") ?  " and Password." : ".");
	}	
	var doUpdate = window.confirm("You are about to change your " + changes + " \n\nDo you want to continue?");
	if(!doUpdate)
	{
		return false;
	}	
	return true;
}

function validate_form_news()
{
	var source = ESGetElement('news_source').value;
	
	if(source == '')
	{
		alert('Please select a file to upload');
		return false;
	}
	//We dont need to check the attachments as there may not be any
	ESGetElement('action').value = 'val_upload_news';
	return true;
}
	
function validate_login()
{
	var user = ESGetElement('username').value;
	var password = ESGetElement('password').value;
	
	if(user == '')
	{
		alert("Please enter your username");
		ESGetElement('username').select();
		return false;
	}
	if(password == '')
	{
		alert("Please enter your password");
		ESGetElement('password').select();
		return false;
	}
	return true;
}

function validate_export()
{
	var group = ESGetElement('group_id').selectedIndex;
	var category = ESGetElement('category_id').selectedIndex;
	if(!ESGetElement('no_filter').checked)
	{
		if((group == -1) && (category == -1))
		{
			alert("Please select a filter");
			ESGetElement('group_id').focus();
			return false;
		}
	}
	return true;
}

function validate_subscribe_list()
{
	var doUpdate = window.confirm("Do you really want to update the subscriptions?");
	if(doUpdate)
	{
		ESGetElement('action').value = 'c_member_subscribe';
		return true;
	}	
	return false;
}

function validate_subscription(subs_date)
{
	var doUpdate = window.confirm("Do you really want to update the subscription?");
	if(doUpdate)
	{
		ESGetElement('subscription').value = subs_date;
	}
	return false;	
}

function validate_member_delete()
{
	var doUpdate = window.confirm("Do you really want to delete this member?");
	if(doUpdate)
	{
		ESGetElement('action').value='c_member_delete';
		return true;
	}	
	return false;
}

function validate_event_delete()
{
	var doUpdate = window.confirm("Do you really want to delete this event?");
	if(doUpdate)
	{
		ESGetElement('action').value='del_event';
		return true;
	}	
	return false;
}

function validate_image_upload()
{

	if(ESGetElement('source_image').value == "")
	{
		alert("Please select an image to upload");
		ESGetElement('source_image').select();
		return false;	
	}
	ESGetElement('action').value='val_upload_image';
	return true;

}

function validate_image_form()
{
	
	if(ESGetElement('source_image').value == "")
	{
		alert("Please select an image to upload");
		ESGetElement('source_image').select();
		return false;	
	}

	if(ESGetElement('title').value == "")
	{
		alert("Please supply a title for the image");
		ESGetElement('title').select();
		return false;
	}
	
	
	ESGetElement('action').value='val_send_image';
	return true;
}

function validate_form_folder( btn )
{
	
	var proceed = false; 
	var btnName = btn.id;
	
	if(btn.id == 'btnDeleteFolder')
	{
		var doUpdate = window.confirm("Do you really want to delete this album and ALL of its images?");
		if(doUpdate == false)
		{
			return false;
		}
		
		ESGetElement('action').value='m_gallery_folder_delete';
		return true;
	}
	if(btn.id == 'btnCreateFolder')
	{
		if(ESGetElement('folder_name').value == "")
		{
			alert("Please choose a name for your folder");
			ESGetElement('folder_name').select();
			return false;	
		}
		if(ESGetElement('sel_folder_id').value == -1)
		{
			ESGetElement('action').value='m_gallery_folder_create';
		}
		else
		{
			ESGetElement('action').value='m_gallery_folder_save';
		}
		return true;
	}
	
	if(btn.id == "btnAddImage")
	{
		
		if(ESGetElement('folder_id').selectedIndex == 0)
		{
			alert("Please select a valid folder");
			ESGetElement('folder_id').select();
			return false;	
		}
		ESGetElement('action').value='m_gallery_image';
		return true;
	}
	
	if(btn.id == 'btnEdit')
	{
		ESGetElement('action').value='m_gallery_image_edit';
		return true;
	}
	return proceed;
}

function validate_form_image( btn )
{
	var proceed = false; 
	
	
	if(btn.name == 'btnCancel')
	{
		proceed = true;
		ESGetElement('action').value='m_gallery_image_cancel';
	}
	
	if(btn.name == 'btnDelete')
	{
		var doUpdate = window.confirm("Do you really want to delete this image?");
		if(doUpdate == false)
		{
			return false;
		}
		proceed = true;
		ESGetElement('action').value='m_gallery_image_delete';
	}
	
	if((btn.name == 'btnUpload') || (btn.name == 'btnSave'))
	{
		if(ESGetElement('image_file').value == "")
		{
			alert("Please select an image to upload");
			ESGetElement('image_file').select();
			return false;	
		}
		if(ESGetElement('image_title').value == "")
		{
			alert("Please give the image a title");
			ESGetElement('image_title').select();
			return false;	
		}
		var title = ESGetElement('image_title').value;
		if(title.length > 80)
		{
			alert("The title is too long (>80 characters). Please enter a shorter title");
			ESGetElement('image_title').select();
			return false;	
		}
		var desc = ESGetElement('description').value;
		if(desc.length > 255)
		{
			alert("The description is too long (>255 characters). Please enter a shorter description");
			ESGetElement('description').select();
			return false;	
		}
		proceed = true;
		ESGetElement('action').value='m_gallery_image_save';
	}
	
	return proceed;
}

function validate_form_upload( btn )
{
	var proceed = false; 
	
	if(btn.name == 'btnCancel')
	{
		proceed = true;
	}
	
	if(btn.name == 'btnUpload')
	{
		if(ESGetElement('upload_file').value == "")
		{
			alert("Please select a file to upload");
			ESGetElement('upload_file').select();
			return false;	
		}
		if(ESGetElement('description').value == "")
		{
			alert("Please enter a description for the file");
			ESGetElement('description').select();
			return false;	
		}
		var desc = ESGetElement('description').value;
		if(desc.length > 255)
		{
			alert("The description is too long (>255 characters). Please enter a shorter description");
			ESGetElement('description').select();
			return false;	
		}
		proceed = true;
		ESGetElement('action').value='c_upload_file';
	}
	return proceed;
}

function validate_form_download( btn )
{
	var proceed = false; 
	
	if(btn.name == 'btnCancel')
	{
		proceed = true;
	}
	
	if(btn.name == 'btnDownload')
	{
		var test = ESGetElement('download_list').value;
		if( test )
		{
			proceed = true;
		}
		else
		{
			alert("Please select a file to download!");
		}
		ESGetElement('action').value='m_download_file';
	}
	return proceed;
}

function validate_form_gd()
{
	//alert('here');
	var season = ESGetElement('season').value;
	
	if(season == "")
	{
		alert("Please supply a season");
		ESGetElement('season').select();
		return false;
	}
	
	if(validate_season_format(season) == false)
	{
		alert("Please enter season in the format YYYY-YYYY");
		ESGetElement('season').select();
		return false;
	}
	
	var val_date = ESGetElement('val_date').value;
	if(val_date == "")
	{
		alert("Please supply a validation date");
		ESGetElement('val_date').select();
		return false;
	}
	if(validate_date_format(val_date) == false)
    {
		alert('Error: Please enter a validation date in the format YYYY-MM-DD');
        ESGetElement('val_date').select();
		return false;
    }
    
    var news = ESGetElement('newsflash').value;
    if(news.length > 255)
    {
		alert('Newsflash message is too long - must be less than 255 chars');
		ESGetElement('newsflash').select();
		return false;
	}
	ESGetElement('action').value='update_global_data';
	return true;
}

function validate_import()
{
	var source = ESGetElement('import_file').value;
	if(source == '')
	{
		alert('Please specify an import file');
		ESGetElement('import_file').select();
		return false;
	}
	return true;
}

function validate_form_news()
{
    
    if( ESGetElement('item_text').value == "")
    {
        alert("Error: Please enter a news item");
        ESGetElement('item_text').select();
		return false;
    }
	
    if( ESGetElement('date_expires').value != '')
	{
	    ////Don't need to validate the date as it is readonly!
		// if( validate_date_format( ESGetElement('date_expires').value ) == false )
		// {
			// alert('Error: Please enter a valid expiry date in the format YYYY-MM-DD');
			// ESGetElement('date_expires').select();
			// return false;
		// }
		
	}
	else
	{
	    alert('Error: Please enter an expiry date in the format YYYY-MM-DD');
		ESGetElement('date_expires').select();
		return false;
	}
	
	//All is OK so set the new action
	ESGetElement('action').value = 'c_save_news';
	return true;
}

function validate_news_delete()
{
	var doUpdate = window.confirm("Do you really want to delete this news item?");
	if(doUpdate)
	{
		ESGetElement('action').value='c_delete_news';
		return true;
	}	
	return false;
}

function validate_news_delete_old()
{
	var doUpdate = window.confirm("Do you really want to delete all expired news items?");
	if(doUpdate)
	{
		ESGetElement('action').value='c_delete_news_old';
		return true;
	}	
	return false;
}

