// JavaScript File

if (!String.prototype.trim) {
    String.prototype.trim = function() {
        return this.replace(/^\s+|\s+$/g, '');
    };
}

function init(frm_name) {
    var frm = document.getElementById(frm_name);
    var now = new Date();
    var today = new Date(now.getFullYear(), now.getMonth()+1, now.getDate());
    var optionDate = new Date();
    var str;
    var len;
    var year;
    var month;
    var day;
    for (var i = frm.date.options.length - 1; i >= 0; i--) {
        str = frm.date.options[i].text.substring(frm.date.options[i].text.indexOf(',') + 2, frm.date.options[i].text.length);
        len = str.length;
        year = str.substring(len - 4, len);
        month = parseMonth(str.substring(str.indexOf(' ') + 1, len - 5));
        day = str.substring(0, str.indexOf(' '));
        optionDate.setYear(year);
        optionDate.setMonth(month);
        optionDate.setDate(day);
        if (optionDate < today) {
            frm.date.options[i] = null;
        } else {
            frm.date.options.selectedIndex = i;
        }
    }
    costPP(frm);
}

function submitBooking(frm) {
    if (validMandatoryField(frm.firstname)) {
        if (validMandatoryField(frm.lastname)) {
            if (validPhone(frm.phone)) {
                if (validNumber(frm.people)) {
                    if (validEmail(frm.email)) {
                        frm.date.options[frm.date.selectedIndex].value = frm.date.options[frm.date.selectedIndex].text;
                        frm.fare.options[frm.fare.selectedIndex].value = frm.fare.options[frm.fare.selectedIndex].text;
                        return true;
                    } else {
                        alert('Please check your e-mail address.');
	                    frm.email.focus();
                        return false;
                    }
                } else {
                    alert('Please enter the number of people.');
                    frm.people.focus();
                    return false;
                }
            } else {
                alert('Please check your daytime phone number.');
                frm.phone.focus();
                return false;
            }
        } else {
            alert('Please enter your last name.');
            frm.lastname.focus();
            return false;
        }
    } else {
        alert('Please enter your first name.');
        frm.firstname.focus();
        return false;
    }
}

function costPP(frm) {
    var STEERAGE = 'Steerage';
    var price = '';
    var note = '';
    /* 2010 Show Dates */
    var rateA = '27/02/2010 06/03/2010 13/03/2010 20/03/2010 27/03/2010 10/04/2010 17/04/2010 24/04/2010 01/05/2010 08/05/2010 15/05/2010 22/05/2010 29/05/2010 05/06/2010 12/06/2010 19/06/2010 26/06/2010 03/07/2010 10/07/2010 17/07/2010 24/07/2010 31/07/2010 07/08/2010 14/08/2010 21/08/2010 28/08/2010 04/09/2010 11/09/2010 18/09/2010 25/09/2010 02/10/2010 09/10/2010 16/10/2010 23/10/2010 30/10/2010 06/11/2010 13/11/2010 20/11/2010';
    var rateB = '26/11/2010 27/11/2010 03/12/2010 04/12/2010 10/12/2010 11/12/2010 17/12/2010 18/12/2010';
    var rateC = '';
    var rateD = '';
    var rateE = '';
    var rateF = '';
    var rateG = '03/04/2010';
    var rateH = '18/12/2009 19/12/2009';
        
    var selectedDate = frm.date.options[frm.date.selectedIndex].value;
    var selectedFare = frm.fare.options[frm.fare.selectedIndex].value;
    if (rateA.indexOf(selectedDate) != -1) {
        price = (selectedFare == STEERAGE) ? '$65 + drinks' : '$85 + drinks';
	note = '';
    } else if (rateB.indexOf(selectedDate) != -1) {
        price = (selectedFare == STEERAGE) ? '$75 + drinks*' : '$95 + drinks*';
	note = (selectedFare == STEERAGE) ? '$110' : '$130';
	note = '* Or ' + note + ' per person including selected beverages for 4 hours';
    } else if (rateC.indexOf(selectedDate) != -1) {
        price = (selectedFare == STEERAGE) ? '$95 incl. drinks*' : '$125 incl. drinks*';
	note = '* Selected beverages for 4 hours';
    } else if (rateD.indexOf(selectedDate) != -1) {
        price = (selectedFare == STEERAGE) ? '$95 incl. drinks*' : '$115 incl. drinks*';
	note = '* Selected beverages for 4 hours';
    } else if (rateE.indexOf(selectedDate) != -1) {
        price = (selectedFare == STEERAGE) ? '' : '';
	note = '';
    } else if (rateF.indexOf(selectedDate) != -1) {
        price = (selectedFare == STEERAGE) ? 'Please Call' : '$125 incl. drinks*';
	note = '';
    } else if (rateG.indexOf(selectedDate) != -1) {
        price = 'We Are Closed';
	note = '';
    } else if (rateH.indexOf(selectedDate) != -1) {
        price = 'Please Call';
	note = '';
    }
    
    frm.price.value = price;
    frm.note.value = note;
}

function parseMonth(str) {
    var month;
    switch (str) {
        case 'January': month = 1; break;
        case 'February': month = 2; break;
        case 'March': month = 3; break;
        case 'April': month = 4; break;
        case 'May': month = 5; break;
        case 'June': month = 6; break;
        case 'July': month = 7; break;
        case 'August': month = 8; break;
        case 'September': month = 9; break;
        case 'October': month = 10; break;
        case 'November': month = 11; break;
        case 'December': month = 12; break;
        default: month = 0;
    }
    return month;
}

function validMandatoryField(field) {
	if (field == null || field.value.trim() == '') {
        return false;
	} else {
        return true;
    }
}

function validPhone(field) {
	if (field == null || field.value.trim() == '') {
        return false;
	} else {
        var str = field.value.trim();
        var strValidChars = '0123456789.-+()';
        var c;
        var result = true;
        for (var i = 0; i < str.length && result == true; i++)
        {
            c = str.charAt(i);
            if (strValidChars.indexOf(c) == -1)
            {
                result = false;
            }
        }
        return result;
    }
}

function validNumber(field) {
	if (field == null) {
        return false;
	} else {
        var str = field.value.trim();
        while (str.substring(0,1) == '0')
        {
            str = str.substring(1, str.length);
        }
        if (str.length == 0) {
            return false;
	    } else {
            var strValidChars = '0123456789';
            var c;
            var result = true;
            for (var i = 0; i < str.length && result == true; i++)
            {
                c = str.charAt(i);
                if (strValidChars.indexOf(c) == -1)
                {
                    result = false;
                }
            }
        }
        return result;
    }
}

function validEmail(field) {
	if (field == null || field.value.trim() == '') {
        return false;
	} else {
        var str = field.value.trim();
	    var at = '@';
	    var dot = '.';
	    var posAt = str.indexOf(at);
	    var posDot = str.indexOf(dot);
	    var len = str.length;
	    if (posAt != -1 && posAt != 0 && posAt != len && posDot != -1 && posDot != 0 && posDot != len) {
	        if (str.indexOf(at, (posAt + 1)) == -1 && str.substring(posAt - 1, posAt) != dot && str.substring(posAt + 1, posAt + 2) != dot) {
		        if (str.indexOf(dot, (posAt + 2)) != -1 && str.indexOf(' ') == -1) {
    		        return true;
    		    } else {
            	    return false;
    		    }
    	    } else {
        	    return false;
    	    }
	    } else {
    	    return false;
	    }
	}
}