var emailRegEx = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(uk|de|nl|be|fr|com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/;

// enables or disables the form elements depending on which radio is clicked.
function newMemberYes()
{
    document.getElementById("password").disabled = true;
    document.getElementById("loginButton").disabled = true;

    document.getElementById("emailAddressConfirm").disabled = false;
    document.getElementById("newPassword").disabled = false;
    document.getElementById("newPasswordConfirm").disabled = false;
    document.getElementById("continueButton").disabled = false;
}

/**
 * Search box constraint
 */
function searchSubmit() {
    var searchtext = document.getElementById("searchq");
    var queryradio = document.getElementById("queryradio");

    if (searchtext.value.length < 2 && queryradio.checked) {
        alert("Please enter at least two characters for a valid search.");
        return false;
    }
    else {
        return true
    }
}

function newMemberNo()
{
    document.getElementById("password").disabled = false;
    document.getElementById("loginButton").disabled = false;

    document.getElementById("emailAddressConfirm").disabled = true;
    document.getElementById("newPassword").disabled = true;
    document.getElementById("newPasswordConfirm").disabled = true;
    document.getElementById("continueButton").disabled = true;
}

function addToCartVerify() {
    var verified = false;
    var password = prompt("Checkout not active yet. Please enter admin password", "");

    if (password == "c14b") {
        verified = true;
    }

    return verified;
}

function checkoutAdditionalSubmit() {
    //var item = document.forms.additionalInformationForm.deliveryMethod;

    var isChecked = false;
    for (var i = 0; i < document.forms.additionalInformationForm.deliveryMethod.length; i++) {
        if (document.forms.additionalInformationForm.deliveryMethod[i].checked) {
            isChecked = true;
        }
    }

    if (!isChecked) {
        alert("Please select a delivery method.")
    }
    return isChecked;
}

function checkoutPaymentSubmit()
{
    var validated = false;
	
	// make sure a card has been selected
    if (document.forms.checkoutPayment.paymentMethod.selectedIndex > 0)
    {
        if (document.forms.checkoutPayment.cardNumber.value.length >= 13 &&
            document.forms.checkoutPayment.cardNumber.value.length <= 19)
        {
            if (isNumeric(document.forms.checkoutPayment.cardNumber.value))
            {
                if (document.forms.checkoutPayment.endMonth.selectedIndex > 0)
                {
                    if (document.forms.checkoutPayment.endYear.selectedIndex > 0)
                    {
                        if (document.forms.checkoutPayment.cv2.value.length == 3)
                        {
                            if (document.forms.checkoutPayment.cardHolder.value.length > 0)
                            {
                                validated = true;
                            }
                            else
                            {
                                alert("Please enter the card holder name.");
                            }
                        }
                        else
                        {
                            alert("Please enter the three digit CV2 number written on the signature strip of your card.");
                        }
                    }
                    else
                    {
                        alert("Please select the end year for your card.");
                    }
                }
                else
                {
                    alert("Please select the end month for your card.");
                }
            }
            else
            {
                alert("Please enter a numeric card number.");
            }
        }
        else
        {
            alert("Please select a card number between 13 and 16 digits.");
        }
    }
    else
    {
        alert("Please select a payment method.");
    }

    if (validated) {
        document.getElementById("continueButton").disabled = true;
        alert("Place your order.");
    }

    return validated;
}

function checkoutAddressSubmit() {
    document.getElementById("continueButton").disabled = true;
    alert("Account Updated. Press OK to continue.");    
}

function isNumeric(text)
{
    var flag = false;
    if (isNaN((text)))
    {
        flag = false;
    }
    else
    {
        flag = true;
    }
    return flag;
}

function init()
{
    getShoppingCart();
    loadGoogleMap();
}

function getShoppingCart()
{
    var url = "/checkout/ajaxDisplayCartSummary.action";
    var params = "timestamp=" + getTimestamp();
    var target = "shoppingCartSummary";
    var ajax = new Ajax.Updater(target, url, {method: 'get', parameters: params});
}

function registerNewsletter()
{
    var emailAddress = document.getElementById("emailAddress").value;
    var url = "/actions/newsletter.action";
    var params = "timestamp=" + getTimestamp();
    params += "&emailAddress=" + emailAddress;

    if (emailRegEx.test(emailAddress)) {

        var ajax = new Ajax.Request(url, {
            method: 'get',
            parameters: params,
            onSuccess: function(transport) {
                if (transport.responseText == "true") {
                    alert("Successfuly added '" + emailAddress + "' to mailing list");
                    document.getElementById("emailAddress").value = "";
                }
                else {
                    alert("Failed to add '" + emailAddress + "' to mailing list. Please try again later");
                }
            }
        });
    }
    else {
        alert("Email address format not correct");
    }
    return false;
}

function getTimestamp()
{
    var date = new Date();
    return date.getTime();
}

function emailUs() {
    if (document.forms.emailUsForm.yourName.value.length < 1) {
        alert("Please enter your name.");
        return false;
    }

    if (document.forms.emailUsForm.yourEmail.value.length < 1
            || !emailRegEx.test(document.forms.emailUsForm.yourEmail.value)) {
        alert("Please enter a valid email address for yourself.");
        return false;
    }

    if (document.forms.emailUsForm.yourMessage.value.length < 1) {
        alert("Please enter a message");
        return false;
    }

    var url = "/actions/emailUs.action";
    var params = "timestamp=" + getTimestamp();
    params += "&yourName=" + document.forms.emailUsForm.yourName.value;
    params += "&yourEmail=" + document.forms.emailUsForm.yourEmail.value;
    params += "&yourMessage=" + document.forms.emailUsForm.yourMessage.value;

    var ajax = new Ajax.Request(url, {
        method: 'get',
        parameters: params,
        onSuccess: function(transport) {
            if (transport.responseText == "true") {
                alert("Successfuly sent message");

                document.forms.emailUsForm.yourName.value = "";
                document.forms.emailUsForm.yourEmail.value = "";
                document.forms.emailUsForm.yourMessage.value = "";
            }
            else {
                alert("Failed to send message");
            }
        }
    });

    return false;

    // do ajax here
    // TODO - START HERE!!!!!!!!!!!!!!!!!!!
}

function doTellAFriend() {
    var message = "";
    var proceed = true;

    if (document.forms.tellAFriendForm.friendsName.value.length > 0) {
        proceed = true;
    }
    else {
        message += "Please enter your friend's name.\n";
        proceed = false;
    }

    if (document.forms.tellAFriendForm.friendsEmail.value.length > 0
            && emailRegEx.test(document.forms.tellAFriendForm.friendsEmail.value)) {
    }
    else {
        message += "Please enter a valid email address for your friend.\n";
        proceed = false;
    }

    if (document.forms.tellAFriendForm.yourName.value.length > 0) {
    }
    else {
        message += "Please enter your name.\n";
        proceed = false;
    }

    if (document.forms.tellAFriendForm.yourEmail.value.length > 0
            && emailRegEx.test(document.forms.tellAFriendForm.yourEmail.value)) {
    }
    else {
        message += "Please enter a valid email address for yourself.\n";
        proceed = false;
    }

    if (proceed == false) {
        alert(message);
    }
    else {
        var url = "/actions/tellAFriend.action";
        var params = "timestamp=" + getTimestamp();
        params += "&friendsName=" + document.forms.tellAFriendForm.friendsName.value;
        params += "&friendsEmail=" + document.forms.tellAFriendForm.friendsEmail.value;
        params += "&yourName=" + document.forms.tellAFriendForm.yourName.value;
        params += "&yourEmail=" + document.forms.tellAFriendForm.yourEmail.value;
        params += "&yourMessage=" + document.forms.tellAFriendForm.yourMessage.value;
        params += "&pId=" + document.forms.tellAFriendForm.pId.value;

        var ajax = new Ajax.Request(url, {
            method: 'get',
            parameters: params,
            onSuccess: function(transport) {
                if (transport.responseText == "true") {
                    alert("Successfuly sent a mail to '"
                            + document.forms.tellAFriendForm.friendsName.value
                            + "' at '"
                            + document.forms.tellAFriendForm.friendsEmail.value
                            + "'");

                    document.forms.tellAFriendForm.friendsName.value = "";
                    document.forms.tellAFriendForm.friendsEmail.value = "";
                    document.forms.tellAFriendForm.yourName.value = "";
                    document.forms.tellAFriendForm.yourEmail.value = "";
                    document.forms.tellAFriendForm.yourMessage.value = "";
                }
                else {
                    alert("Failed to send a mail to '"
                            + document.forms.tellAFriendForm.friendsName.value
                            + "' at '"
                            + document.forms.tellAFriendForm.friendsEmail.value
                            + "'");
                }
            }
        });
    }
    return false;
}

function loadGoogleMap() {

    var mapdiv = document.getElementById("map");
    if (mapdiv) {
        if (GBrowserIsCompatible()) {
            var map = new GMap2(mapdiv);
            map.setCenter(new GLatLng(55.826745, -4.21956), 15);
            map.openInfoWindow(map.getCenter(),
                    document.createTextNode("We are here."));
        }
    }
}

function openForgotPassword() {
    var features = "dialogWidth: 510px; dialogHeight: 300px;";
    window.showModalDialog("/jsp/forgotPassword.jsp", "", features);
    
    // dont want the link to go anywhere
    return false;
}

function printPage() {
    window.print();
    return false;
}

function placeOrder() {
    var obj = document.getElementById("continueButton");
    obj.disabled = true;
    return true;
}