/* ************************************************************************************** */
/* * General javascript functions used site-wide
/* ************************************************************************************** */

function bookmark(url,title){
	
  if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4)) {
  window.external.AddFavorite(url,title);
  } else if (navigator.appName == "Netscape") {
    window.sidebar.addPanel(title,url,"");
  } else {
    alert("Press CTRL-D (Netscape) or CTRL-T (Opera) to bookmark");
  }
  
}

/* ************************************************************************************** */
function showhide_pickup_type(putype) {	
	// show or hide the required pickup field	
	if (putype == 'address') {
		// show the address fields
		showhide("addresslabel", 1);
		showhide("Pickup_Address", 1);
		showhide("suburblabel", 1);
		showhide("Pickup_Suburb", 1);
		showhide("citylabel", 1);
		showhide("Pickup_City", 1);
		
		showhide("airportlabel", 0);
		showhide("Airport", 0);
		showhide("Other_Airport", 0);
		showhide("airlinelabel", 0);
		showhide("Airline", 0);
		showhide("Other_Airline", 0);
		showhide("flightnumlabel", 0);
		showhide("Flight_Num", 0);
		
	} else {
		// show the airport field (the rest will be shown when the airport is selected)
		showhide("addresslabel", 0);
		showhide("Pickup_Address", 0);
		showhide("suburblabel", 0);
		showhide("Pickup_Suburb", 0);
		showhide("citylabel", 0);
		showhide("Pickup_City", 0);
		
		showhide("airportlabel", 1);
		showhide("Airport", 1);
		showhide("airlinelabel", 1);
		showhide("Airline", 1);
		showhide("flightnumlabel", 1);
		showhide("Flight_Num", 1);
		
		showhide_airport_fields(); //check if the 'other' fields need hiding or showing
	}		
}
	
function showhide_airport_fields() {		
	var d = document.getElementById("Airport");
	if (d.value == 'Other Aiport') {
		showhide("Other_Airport", 1);
	} else {
		showhide("Other_Airport", 0);
	}
	
	var d = document.getElementById("Airline");
	if (d.value == 'Other Airline') {
		showhide("Other_Airline", 1);
	} else {
		showhide("Other_Airline", 0);
	}		
}
	
function showhide(obj, show) {
	var d = document.getElementById(obj);
	if (show == 1) {
		d.style.display = '';
	} else {
		d.style.display = 'none';
	}
}
/* ************************************************************************************** */

function dmh() {
	
	alert('selects');
	
	var selects=document.getElementsByTagName('SELECT');
	for (var i=0;i<selects.length;i++) {
		var x=selects[i];
		alert(x.name);
		alert(x.getAttribute('required'));
	}
	
}


function validate_and_submit_form(f) {

    var selects=document.getElementsByTagName('SELECT');
	var inputs=document.getElementsByTagName('INPUT');
	var textareas=document.getElementsByTagName('TEXTAREA');
    
    for (var i=0;i<selects.length;i++) {
        var x=selects[i];
        if ((x) && (x.getAttribute) && (x.getAttribute('required')==1)){
                if ((x.style.display != 'none') && (x.value == '')) {
                    var fieldName = x.name
                    alert('Please enter a value for ' + fieldName.replace(/_/g, " "));
                    try {
                        x.focus();
                        x.select();
                    } catch(e) {
                    }
                    return false;
                }
        }
    }
	
	for (var i=0;i<inputs.length;i++) {
        var x=inputs[i];
        if ((x) && (x.getAttribute) && (x.getAttribute('required')==1)){
            if ((x.type) && (x.type.toUpperCase() == 'TEXT')) {
                if ((x.style.display != 'none') && (x.value == '')) {
					var fieldName = x.name
                    alert('Please enter a value for ' + fieldName.replace(/_/g, " "));
                    try {
                        x.focus();
                        x.select();
                    } catch(e) {
                    }
                    return false;
                } else {
					// check if this is an email field, i.e. has *Email* in the ID
					var fieldName = x.name
					if (fieldName.indexOf("Email") != -1) {
						if (checkEmail(x.value) == false) {
							alert('Please enter a valid email address');
							try {
								x.focus();
								x.select();
							} catch(e) {
							}
							return false;
						}
					}
					// check if this is the date field
					if (fieldName.indexOf("Date") != -1) {
						if (dateIsTodayOrFuture(x.value) == false) {
							alert('Pickup date must be today or later.');
							try {
								x.focus();
								x.select();
							} catch(e) {
							}
							return false;
						}
					}
				}
						
            }
        }
    }

	// for taxi bookings only
	var referring_form = document.getElementById('referrer');
	if (referring_form.value == 'booktaxi') {
		// check if email of person filling form is valid (even though it's not required)
		var booker_email = document.getElementById('Booker_Email');
		if (booker_email.value != '') {
			if (checkEmail(booker_email.value) == false) {
				alert('Please enter a valid email address');
				try {
					booker_email.focus();
					booker_email.select();
				} catch(e) {
				}
				return false;
			}
		}			
	}
	
    for (var i=0;i<textareas.length;i++) {
        var x=textareas[i];
        if ((x) && (x.getAttribute) && (x.getAttribute('required')==1)){
                if ((x.style.display != 'none') && (x.value == '')) {
                    var fieldName = x.name
                    alert('Please enter a value for ' + fieldName.replace(/_/g, " "));
                    try {
                        x.focus();
                        x.select();
                    } catch(e) {
                    }
                    return false;
                }
        }
    }


	f.submit();
    for (var i=0;i<selects.length;i++) {
        try {
            selects[i].disabled=true;
        } catch (e) {
 
        }
    }    
	for (var i=0;i<inputs.length;i++) {
        try {
            inputs[i].disabled=true;
        } catch (e) {
        
        }
    }

    for (var i=0;i<textareas.length;i++) {
        try {
            textareas[i].disabled=true;
        } catch (e) {
        
        }
    }
    
}

function checkEmail(email_address) {
	var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(email_address)) {
		return true
	} else {
		return false;
	}
}

function dateIsTodayOrFuture(dateStr) {

	var dt = new Date(dateStr);
	var today = new Date();

	today = today.setHours(0,0,0,0); // zero the time for the first date -- i.e. today

	if (dt>=today) {
		return true;
	} else {
		return false;
	}
}

/* ************************************************************************************** */