var newwindow;
function poptastic(url)
{
	newwindow=window.open(url,'name','height=400,width=400');
	if (window.focus) {newwindow.focus()}
}

function formcast(id){
if(id=="0")
{
if(checkLogin1())
{
document.searchStart.action="validateLogin.php";
document.searchStart.submit();
} 
}
if(id=="1")
{
if(checkFormData())
{
document.searchStart.action="listing.php";
document.searchStart.submit();
}
} 
if(id=="2")
{
document.searchStart.action="index.php?reset=1";
document.searchStart.submit();
} 
}

function resubmit(){
document.searchStart.action="listing.php";
document.searchStart.submit();
}

function checkLogin1() {
	var str1, str2;
	var errFlag = false;
	var errCount = 0;
	var errMsg = "";
	var errExp = new RegExp(" ", "g");
	
	str1 = document.searchStart.username.value;
	str2 = document.searchStart.password.value;
	
	str1 = str1.replace(errExp, "")
	str2 = str2.replace(errExp, "")
	
	if (str1.length == 0) {
		errCount += 1;
		errFlag = true;
		errMsg += "- username\n";
		document.searchStart.username.focus();
	}

	if (str2.length == 0) {
		errCount += 1;
		errFlag = true;
		errMsg += "- password\n";
		document.searchStart.password.focus();
	}
	
	if (errFlag == true) {
		
		if (errCount > 1) {
			errMsg = "The following fields are empty or incorrect:\n" + errMsg;
		} else {	
			errMsg = "The following field is empty or incorrect:\n" + errMsg;
		}
		alert(errMsg);
		return false
	} else {
		return true;
	}
}

function checkFormData() {
	var str1, str2, str3;
	var errFlag = false;
	var errCount = 0;
	var errMsg = "";
	var errExp = new RegExp(" ", "g");
	
	str1 = document.searchStart.datefrom.value;
	str2 = document.searchStart.dateto.value;
	str3 = document.searchStart.nrAdults.value;
	
	str1 = str1.replace(errExp, "")
	str2 = str2.replace(errExp, "")
	str3 = str3.replace(errExp, "")
	
	if (str1.length == 0) {
		errCount += 1;
		errFlag = true;
		errMsg += "- [date from]\n";
		document.searchStart.datefrom.focus();
	}

	if (str2.length == 0) {
		errCount += 1;
		errFlag = true;
		errMsg += "- [date to]\n";
		document.searchStart.dateto.focus();
	}
	
	if (str3.length == 0) {
		errCount += 1;
		errFlag = true;
		errMsg += "- no of adults\n";
		document.searchStart.nrAdults.focus();
	}
	
	if (errFlag == true) {
		
		if (errCount > 1) {
			errMsg = "The following fields are empty or incorrect:\n" + errMsg;
		} else {	
			errMsg = "The following field is empty or incorrect:\n" + errMsg;
		}
		alert(errMsg);
		return false
	} else {
		return true;
	}
}

function popUpWindow(url,popup_name,toolbar_,location_,directories_,status_,menubar_,scrollbars_,resizable_,width_,height_,page_name) {
	sealWin=window.open(url,popup_name,'toolbar=' + toolbar_ + ',location=' + location_ + ',directories=' + directories_ + ',status=' + status_ + ',menubar=' + menubar_ + ',scrollbars=' + scrollbars_ + ',resizable=' + resizable_ + ',width=' + width_ + ',height=' + height_ + '');
	self.name = page_name;
}

function popup(mylink, windowname)
{
if (! window.focus)return true;
var href;
if (typeof(mylink) == 'string')
   href=mylink;
else
   href=mylink.href;
window.open(href, windowname, 'width=400,height=300,scrollbars=no');
return false;
}

function checkAgentDetails1() {
	var str1, str2, str3, str4, str5, str6, str7, str9, str10, str11, str12
	var errFlag = false;
	var errCount = 0;
	var errMsg = "";
	var errExp = new RegExp(" ", "g");
	
	str1 = document.delegate.institution.value;
	str2 = document.delegate.rep_title.value;
	str3 = document.delegate.rep_surname.value;
	str4 = document.delegate.rep_first_name.value;
	str5 = document.delegate.rep_email.value;
	str6 = document.delegate.address_street.value;
	str7 = document.delegate.address_city.value;
	str9 = document.delegate.address_country.value;
	str10 = document.delegate.address_phone.value;
	str11 = document.delegate.address_email.value;
	str12 = document.delegate.address_markets.value;
	str13 = document.delegate.newPassword.value;
	str14 = document.delegate.passwordConfirm.value;
	
	str1 = str1.replace(errExp, "")
	str2 = str2.replace(errExp, "")
	str3 = str3.replace(errExp, "")
	str4 = str4.replace(errExp, "")
	str5 = str5.replace(errExp, "")
	str6 = str6.replace(errExp, "")
	str7 = str7.replace(errExp, "")
	str9 = str9.replace(errExp, "")
	str10 = str10.replace(errExp, "")
	str11 = str11.replace(errExp, "")
	str12 = str12.replace(errExp, "")
	
	if (str13 != str14) {
		errCount += 1;
		alert("Please confirm your password correctly.");
		document.delegate.passwordConfirm.focus();
		return false;
	}

	if (str1.length == 0) {
		errCount += 1;
		errFlag = true;
		errMsg += "- institution\n";
		document.delegate.institution.focus();
	}

	if (str2.length == 0) {
		errCount += 1;
		errFlag = true;
		errMsg += "- salutation\n";
		document.delegate.rep_title.focus();
	}
	
	if (str3.length == 0) {
		errCount += 1;
		errFlag = true;
		errMsg += "- last name\n";
		document.delegate.rep_surname.focus();
	}
	
	if (str4.length == 0) {
		errCount += 1;
		errFlag = true;
		errMsg += "- first name(s)\n";
		document.delegate.rep_first_name.focus();
	}
	
	if (str5.length == 0 | !validateEmail2(str5)) {
		errCount += 1;
		errFlag = true;
		errMsg += "- email address\n";
		document.delegate.rep_email.focus();
	}
	
	if (str6.length == 0) {
		errCount += 1;
		errFlag = true;
		errMsg += "- street\n";
		document.delegate.address_street.focus();
	}
	
	if (str7.length == 0) {
		errCount += 1;
		errFlag = true;
		errMsg += "- city\n";
		document.delegate.address_city.focus();
	}
	
	if (str9.length == 0) {
		errCount += 1;
		errFlag = true;
		errMsg += "- country\n";
		document.delegate.address_country.focus();
	}
	
	if (str10.length == 0) {
		errCount += 1;
		errFlag = true;
		errMsg += "- telephone number\n";
		document.delegate.address_phone.focus();
	}
	
	if (str11.length == 0 | !validateEmail2(str11)) {
		errCount += 1;
		errFlag = true;
		errMsg += "- company email address\n";
		document.delegate.address_email.focus();
	}
	
	if (str12.length == 0) {
		errCount += 1;
		errFlag = true;
		errMsg += "- markets of origin\n";
		document.delegate.address_markets.focus();
	}
	
	if (errFlag == true) {
		
		if (errCount > 1) {
			errMsg = "The following fields are empty or incorrect:\n" + errMsg;
		} else {	
			errMsg = "The following field is empty or incorrect:\n" + errMsg;
		}
		alert(errMsg);
		return false
	} else {
		return true;
	}
}


function validateEmail(what) {
	var str1
	var errFlag = false;
	var errCount = 0;
	var errMsg = "";
	var errExp = new RegExp(" ", "g")
	
	str1 = document.getElementById(what).value;
		
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(str1)){
		//do nothing
	} else {
		errFlag = true;
		errMsg += "- email address\n";
		document.getElementById(what).email.focus();
	}
	
	if (errFlag == true) {
		errMsg = "The following field is not valid:\n" + errMsg;
		alert(errMsg);
		return false
	} else {
		return true
	}
}

function validateEmail2(what) {
	var str1
	var errFlag = false;
	var errCount = 0;
	var errMsg = "";
	var errExp = new RegExp(" ", "g")
	
	str1 = what;
		
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(str1)){
		//do nothing
	} else {
		errFlag = true;
	}
	
	if (errFlag == true) {
		return false
	} else {
		return true
	}
}

function scrollToCoordinates(y) {
  window.scrollTo(0, y);
} 

function updateSession() {
	var xmlhttp=false;
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp=false;
		}
	}
	if (!xmlhttp && window.createRequest) {
		try {
			xmlhttp = window.createRequest();
		} catch (e) {
			xmlhttp=false;
		}
	}
	 xmlhttp.open("GET", "updateSession.php",true);
	 xmlhttp.onreadystatechange=function() {
	  if (xmlhttp.readyState==4) {
	  }
	 }
	 xmlhttp.send(null)
}
function getNumWordsInString (string) {

	string = string.replace(/^\s*|\s*$/g,'');
	
	if (string == '')
	{
		return 0;
	} else {
		return string.replace(/\s+/g,' ').split(' ').length;
	}
}
function left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}
function parseDate(val)
{
	var preferEuro=(arguments.length==2)?arguments[1]:false;
	generalFormats=new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM d');
	monthFirst=new Array('M/d/y','M-d-y','M.d.y','MMM-d','M/d','M-d');
	dateFirst =new Array('d/M/y','d-M-y','d.M.y','d-MMM','d/M','d-M');
	var checkList=new Array('generalFormats',preferEuro?'dateFirst':'monthFirst',preferEuro?'monthFirst':'dateFirst');
	var d=null;
	for (var i=0; i<checkList.length; i++) {
		var l=window[checkList[i]];
		for (var j=0; j<l.length; j++) {
			d=getDateFromFormat(val,l[j]);
			if (d!=0) { return new Date(d); }
			}
		}
	return null;
}

// ------------------------------------------------------------------
// Utility functions for parsing in getDateFromFormat()
// ------------------------------------------------------------------
function _isInteger(val) 
{
	var digits="1234567890";
	for (var i=0; i < val.length; i++) {
		if (digits.indexOf(val.charAt(i))==-1) { return false; }
		}
	return true;
}
function _getInt(str,i,minlength,maxlength) 
{
	for (var x=maxlength; x>=minlength; x--) {
		var token=str.substring(i,i+x);
		if (token.length < minlength) { return null; }
		if (_isInteger(token)) { return token; }
		}
	return null;
}

function LZ(x) {return(x<0||x>9?"":"0")+x}

function checkEnter(e){ //e is event object passed from function invocation
//var characterCode literal character code will be stored in this variable

if(e && e.which){ //if which property of event object is supported (NN4)
e = e
characterCode = e.which //character code is contained in NN4's which property
}
else{
e = event
characterCode = e.keyCode //character code is contained in IE's keyCode property
}

if(characterCode == 13){ //if generated character code is equal to ascii 13 (if enter key)
return true
}
else{
return false
}

}
function testInput()
{
	if( event.keyCode == 8 )
	{
		return false;
	}
	return true;
}
// Removes leading whitespaces
function LTrim( value ) {
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// Removes ending whitespaces
function RTrim( value ) {
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// Removes leading and ending whitespaces
function trim( value ) {
	
	return LTrim(RTrim(value));
	
}



function checkValidStr(teststr) {
	var str1 = teststr
	var errExp = new RegExp(" ", "g");
	if (/\W+/.test(str1))
	{
		return false;
	}
	else
	{
		return true;
	}
}

function checkEmail(emailstr) {
	var email = emailstr;
	var errFlag = false;
	var errCount = 0;
	var errMsg = "";
	var errExp = new RegExp(" ", "g");
		
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email)){
		//do nothing
	} else {
		return false;
	}
	return true;
}

function IsNumeric(sText)

{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }


function checkImageFileType(imgName)
{
	var imgFileName = imgName;
	
	ext = imgFileName.substring(imgName.length-3,imgName.length);
    ext = ext.toLowerCase();
	if (imgFileName != '')
	{
		 if ((ext != 'jpg') && (ext != 'gif'))
		{
			//alert('Only JPEG and GIF type image files can display on the site');
			return false
		}
		else
		{
		//	alert('file name.');
			return true
		}
	}
}

function checkSearchDate() {
	
	var startDate = document.sumsearch.dateStart.value;
	var endDate = document.sumsearch.dateEnd.value;

	if (startDate > endDate)
	{
		alert('The End date is before the Start date!\nPlease pick an End date after a Start date.');
		return false
	}
	else
	{
		return true
	}
}

function checkMemberInsert() {
var agName, fname, lname, brname, username, passwd, emailstr

  
   agName = document.searchStart.agencyName.value.replace(/^\s*|\s*$/g,'');
   fname = document.searchStart.firstname.value.replace(/^\s*|\s*$/g,'');
   lname = document.searchStart.lastname.value.replace(/^\s*|\s*$/g,'');
   brname = document.searchStart.branchname.value.replace(/^\s*|\s*$/g,'');
   username = document.searchStart.username.value.replace(/^\s*|\s*$/g,'');
   passwd = document.searchStart.passwd.value.replace(/^\s*|\s*$/g,'');
   emailstr = document.searchStart.email.value.replace(/^\s*|\s*$/g,'');
   
   if (agName == '')
   {
      alert('Please supply and Agency Name for this member');
      return false
   }
   else if (fname == '')
   {
      alert('Please supply the member Firstname');
      return false
   }
   else if (lname == '')
   {
      alert('Please supply the member Lastname');
      return false
   }
   else if (brname == '')
   {
      alert('Please supply and member Branchname');
      return false
   }
   else if (username == '')
   {
      alert('Please supply and username for the member login');
      return false
   }
   else if (passwd == '')
   {
      alert('Please supply and password for the member login');
      return false
   }
   else
   {
	  	
		testReturn = checkValidStr(username);
		if (!(testReturn))
		{
			alert('Username contains invalid chars');
      		return false	
		}
	
   		// check for a valid email

   		if (emailstr != '')
   		{
			checkEmailReturn = checkEmail(emailstr);
			if (!(checkEmailReturn))
			{
				alert('The email address is not a valid format');
				return false
			}
			
		}
	  	return true;
   }


}

function hideAllMenu()
{
	document.getElementById('venues').style.visibility="hidden"
	document.getElementById('members').style.visibility="hidden"
	document.getElementById('bookings').style.visibility="hidden"
	document.getElementById('other').style.visibility="hidden"
	document.getElementById('finance').style.visibility="hidden"
	if (document.getElementById('content'))
	{
		document.getElementById('content').style.visibility="hidden";
	}
}

function showmenu(elmnt)
{
	hideAllMenu()
	document.getElementById(elmnt).style.visibility="visible"
}
function hidemenu(elmnt)
{
	document.getElementById(elmnt).style.visibility="hidden"
}

function submitenter(myfield,e)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;

if (keycode == 13)
   {
   if(checkFormData())
   {
   document.searchStart.submit();
   return false;
   }
   }
else
   return true;
}
function submitenterUSR(myfield,e)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;

if (keycode == 13)
   {
   if(checkLogin1())
   {
   document.searchStart.action="validateLogin.php";
   document.searchStart.submit();
   return false;
   }
   }
else
   return true;
}


function validate(formID){
valmessage = '';
masterform = document.getElementById(formID);

		for(ff=0; ff<masterform.elements.length; ff++){
		
		currelem = masterform.elements[ff];
		
					switch(currelem.type){
					
					case 'select' :
					
					tmp = validateTypes(currelem, currelem.options[currelem.selectedIndex].value);
					if(tmp){
					valmessage = valmessage + tmp+"\n";
					}
					break;
					
					case 'text':
					
							tmp = validateTypes(currelem, currelem.value);
							if(tmp){
						valmessage = valmessage + tmp+"\n";
						}
							
					break;

					case 'password':
					
							tmp = validateTypes(currelem, currelem.value);
							if(tmp){
						valmessage = valmessage + tmp+"\n";
						}
							
					break;
					
					case 'textarea':
					
							tmp = validateTypes(currelem, currelem.value);
							if(tmp){
						valmessage = valmessage + tmp+"\n";
						}
							
					break;
					
										
					}
		
		}
		
	if(valmessage!=""){	
	alert("Please complete the below fields\n\n"+valmessage);
	return false;
	}
masterform.submit();	
}

function validateTypes(fieldObj, theValue){
	
	if(fieldObj.title){
		
	vTypes = fieldObj.title.split('|');
	
	}else{
	return false;
	}
	
		if(vTypes.length == 1){
		return 	false;
		}
		
errors=0;	
		
		for(vt=1; vt<vTypes.length; vt++){
			
			realTypes = vTypes[vt].split(':');
	
							switch(realTypes[0]){
								
												case 'OPTIONAL':
													
														if(theValue == ""){ 
													 return false;
														}
												
												break;
								
													case 'NUM':
													if(!theValue.match(/\b\d+\b/)){
													errors++;
													}
																		
													break;
													
													case 'LENGTH':
													
														if(theValue.length != parseInt(realTypes[1])){
															errors++;
														}
													
													break;
													
														case 'MAXLENGTH':
													
														if(theValue.length > parseInt(realTypes[1])){
															errors++;
														}
													
													break;
													
													case 'EMAIL':
														
														if (!theValue.match(/\b[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}\b/i)) {
															errors++;
														}
													break;
													
													case 'NOTEMPTY':
															
															if(theValue == ""){
																errors++;
															}
															
													break;
													
													default:
													//alert( vTypes[vt] + 'not recognized');
													break;
								
							}
			
		}
	
	if(errors > 0){
	return 	vTypes[0];
	}
	
	
}

function changeRateOption(rateOption)
{
	for (var i=1; i<4; i++)
	{
		if (i == rateOption)
		{
			$('rateOptionTable_'+i).className = 'content';
		} else {
			$('rateOptionTable_'+i).className = 'invisible';
		}
	}
	// per person is a exception to the rule
	if (rateOption == "4")
	{
		$('rateOptionTable_2').className = 'contentSmall';
		$('rateOptionTable_single_supplement').className = 'invisible';
		$('rateOptionTable_per_person').className = 'contentSmall';
	} else if (rateOption == "2") {
		$('single_header').innerHTML = "Single Supplement:";
		$('rateOptionTable_2').className = 'contentSmall';
		$('rateOptionTable_single_supplement').className = 'contentSmall';
		$('rateOptionTable_per_person').className = 'contentSmall';
	} else if (rateOption == "5") {
		$('single_header').innerHTML = "Single:";
		$('rateOptionTable_2').className = 'contentSmall';
		$('rateOptionTable_single_supplement').className = 'contentSmall';
		$('rateOptionTable_per_person').className = 'contentSmall';
	}
}
function changeCancellationFeeOption(option)
{
	for (var i=1; i<4; i++)
	{
		if (i == option)
		{
			$('cancellationFeeRow_'+i).className = 'content';
		} else {
			$('cancellationFeeRow_'+i).className = 'invisible';
		}
	}
}
// takes a string like 2008-12-31 and returns a date object
function dateFromString(dateString)
{
	date_array = dateString.split("-");
	return new Date(date_array[0],trimNumber(date_array[1])-1, date_array[2]);
}
function trimNumber(s) {
  while (s.substr(0,1) == '0' && s.length>1) { s = s.substr(1,9999); }
  return s;
}

// START VENUE DETAILS BOOKING FUNCTIONS
function toggleNumRoomsToBook(room, numRooms, maxRooms)
{
	for (var i = 1; i <= maxRooms; i++)
	{
		if (i <= numRooms)
		{
			$('room_'+room+'_occupants_'+i).className = 'content';
		} else {
			$('room_'+room+'_occupants_'+i).className = 'invisible';
		}
	}
}
function checkChooseRoomsSubmit()
{
	error_text = "";
	error_status = false;
	if ($('check_in_change').value == "" || $('check_out_change').value == "")
	{
		error_text = error_text + '- Please enter both check in and check out dates.\n';
		error_status = true;
	}

	cid = dateFromString($('check_in_change').value);
	cod = dateFromString($('check_out_change').value);
	var now = new Date();
  var date_now = new Date(now.getFullYear(),now.getMonth(),now.getDate());
	
	if (cid < date_now)
	{
		error_text = error_text + "- Check in date may not be in the past.\n";
		error_status = true;
	}
	if (cid > cod || cid-cod == 0)
	{
		error_text = error_text + "- Check out date must be after check in date.\n";
		error_status = true;
	}
	
	if (!error_status)
	{
		return true;
	} else {
		alert("Please correct the following problems:\n\n"+error_text)
		return false;
	}
}
function computePrice(room_id, z,y, check_in_date)
{
	adults = $('room_'+z+'_adults_'+y).value;
	children = $('room_'+z+'_children_'+y).value;
	
	new Ajax.Updater('room_'+room_id+'_price', 'includes/ajax/getRoomPriceForDate.php', {
		method: 'post',
		parameters: "room_id=" + room_id + "&date=" + check_in_date + "&adults="+adults+"&children=" +children
		}
	);

}
// adjusts the child and adult dropdowns so that the user cannot choose more occupants than the room can accomodate
function adjust_occupant_dropdowns(source_dropdown, z, y, max_occupants, max_adults, max_children)
{
	current_selected_adults = $('room_'+z+'_adults_'+y).value;
	current_selected_children = $('room_'+z+'_children_'+y).value;
	
	if (source_dropdown == "adults")
	{
		$('room_'+z+'_children_'+y).options.length = 0;
		for (i=0;i<=max_occupants;i++)
		{
			if (i <= (max_occupants - current_selected_adults) && i <= max_children)
			{
				$('room_'+z+'_children_'+y).options[i] = new Option(i,i);
			}
		}
		$('room_'+z+'_children_'+y).value = current_selected_children;
	} else if (source_dropdown == "children") {
		$('room_'+z+'_adults_'+y).options.length = 0;
		for (i=1;i<=max_occupants;i++)
		{
			if (i <= (max_occupants - current_selected_children) && i <= max_adults)
			{
				$('room_'+z+'_adults_'+y).options[i-1] = new Option(i,i);
			}
		}
		$('room_'+z+'_adults_'+y).value = current_selected_adults;
	}
}
// END VENUE DETAIL BOOKING FUNCTIONS

function crud(action_name, class_name, id_object ,post_perameters, after_success)
{
  new Ajax.Request('../includes/actions/crud.php?class='+class_name+'&action='+action_name+"&id="+id_object,
  {
		method: 'post',
		parameters: post_perameters,
    onSuccess: function(response){
			var perameter_array = new Array();
			if (after_success != "")
			{
				eval(after_success);
			} else {
				if (post_perameters.indexOf("&") > 0)
				{
					perameter_array = post_perameters.split("&");
				} else {
					perameter_array[0] = post_perameters;
				}
				for (var x = 0; x < perameter_array.size(); x++)
				{
					sub_array = perameter_array[x].split("=");
					if($(sub_array[0]))
					{
						$(sub_array[0]).value = sub_array[1];
						$(sub_array[0]).innerHTML = sub_array[1];
					} else if (id_object+"_"+$(sub_array[0])) {
						$(id_object+"_"+sub_array[0]).value = sub_array[1];
						$(id_object+"_"+sub_array[0]).innerHTML = sub_array[1];
					}
				}
			}
    }
  });
}
