﻿function IsNumeric(sText, isIntegerCheck) {
   var ValidChars = isIntegerCheck ? "0123456789" : "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;
   
}

// Offline form related code
var fieldPrefix = null;
var field1, field2, field3, field4, field5, field6, field7, field8, field9, field10;
var fieldsContent = new Array(10);

function InitOfflineForm(fieldPrefixParam) {
    $("form").keydown(function(event) { if (event.keyCode == 13) $(this).submit(); });
    $("form").submit(function() { DisplayPopup('Connecting to ASDA...', 'Please wait while we import your receipt details from ASDA.', { DisplayProgressBar: false });
                                  return ValidateOfflineForm(); });

   fieldPrefix = fieldPrefixParam;
    field1 = "#" + fieldPrefix + "StoreNumber";
    field2 = "#" + fieldPrefix + "OperatorNumber";
    field3 = "#" + fieldPrefix + "TillNumber";
    field4 = "#" + fieldPrefix + "TransactionNumber";
    field5 = "#" + fieldPrefix + "ReceiptDateDay";
    field6 = "#" + fieldPrefix + "ReceiptDateMonth";
    field7 = "#" + fieldPrefix + "ReceiptDateYear";
    field8 = "#" + fieldPrefix + "ReceiptTimeHours";
    field9 = "#" + fieldPrefix + "ReceiptTimeMinutes";
    field10 = "#" + fieldPrefix + "ReceiptTimeSeconds";

    fieldsContent[0] = "eg 4158";
    SetInputBoxEvents(field1, 0, field2);

    fieldsContent[1] = "eg 00002425";
    SetInputBoxEvents(field2, 1, field3);
    fieldsContent[2] = "eg 23";
    SetInputBoxEvents(field3, 2, field4);
    fieldsContent[3] = "eg 05422";
    SetInputBoxEvents(field4, 3, field5);
    fieldsContent[4] = "DD";
    SetInputBoxEvents(field5, 4, field6);
    fieldsContent[5] = "MM";
    SetInputBoxEvents(field6, 5, field7);
    fieldsContent[6] = "YY";
    SetInputBoxEvents(field7, 6, field8);
    fieldsContent[7] = "HH";
    SetInputBoxEvents(field8, 7, field9);
    fieldsContent[8] = "MM";
    SetInputBoxEvents(field9, 8, field10);
    fieldsContent[9] = "SS";
    SetInputBoxEvents(field10, 9, null);
}

function SetInputBoxEvents(inputBox, inputIndex, nextInputName) {
    
    $(inputBox).focus(function() { if ($(this).val() == fieldsContent[inputIndex]) $(this).val(""); });
    $(inputBox).blur(function () { if ($(this).val() == "") $(this).val(fieldsContent[inputIndex]); });
    
    if (nextInputName != null)
        $(inputBox).autotab({ target: eval("'" + nextInputName.substring(1) + "'") });
}

function ProcessOfflineForm() {
    DisplayPopup('Connecting to ASDA...', 'Please wait while we import your receipt details from ASDA.<br />This may take a few seconds...', { });
    if (ValidateOfflineForm()) {
        document.forms[0].submit();
    } 
} 

function clearErrorField(fieldObject, fieldNumber) {
    $("#Step" + fieldNumber + "Error").hide();
    var currentFieldObject = $(fieldObject);
    currentFieldObject.css("border", "#969696 1px solid");    
}

function markErrorField(fieldObject, fieldNumber) {
    $("#Step" + fieldNumber + "Error").show();
    fieldObject.css("border", "#dd1925 2px solid");
}

function ProcessField(fieldName, fieldNumber) {
       var fieldObject = $(fieldName);
       if (!IsNumeric(fieldObject.val(), true)) {
            HidePopup();
            markErrorField(fieldObject, fieldNumber);
            return false;
        }
               
        clearErrorField(fieldName, fieldNumber);
        return true;
}

function ProcessDateTimeField(fieldName, fieldNumber, rangeMin, rangeMax) {
       var fieldObject = $(fieldName);
       if (!IsNumeric(fieldObject.val(), true)) {
            HidePopup();
            markErrorField(fieldObject, fieldNumber);
            return false;
        }
        
        if (rangeMin != null && rangeMax != null) {
            if (fieldObject.val() < rangeMin || fieldObject.val() > rangeMax) {
                HidePopup();
                markErrorField(fieldObject, fieldNumber);
                return false;
            }
        } 
        
        var currentFieldObject = $(fieldObject);
        currentFieldObject.css("border", "#969696 1px solid");   
        
        return true;
}

function CheckFieldSize(fieldName, fieldNumber, expectedSize) {
    var fieldObject = $(fieldName);
    
    if (fieldObject.val().length == expectedSize)
        return true;
    else {
        HidePopup();
        markErrorField(fieldObject, fieldNumber);
        return false;
    }
}

function ValidateOfflineForm() {
        $("#GeneralErrorMessage").hide();
        $("#GeneralErrorMessage2").hide();
        
        var wasError = false;
            
        if (!CheckFieldSize(field1, 1, 4) || !ProcessField(field1, 1))
            wasError = true;
        
        if (!ProcessField(field2, 2))
            wasError = true;
        
        if (!ProcessField(field3, 3))
            wasError = true;
        
        if (!ProcessField(field4, 4))
            wasError = true;
        
        var dateErrorOccured = false;
        
        if (!ProcessDateTimeField(field5, 5, 1, 31)) {
            wasError = true;
            dateErrorOccured = true;
        }
        
        if (!ProcessDateTimeField(field6, 5, 1, 12)) {
            wasError = true;
            dateErrorOccured = true;
        }
        
        if (!CheckFieldSize(field7, 5, 2) || !ProcessDateTimeField(field7, 5, 0, 99)) {
            wasError = true;
            dateErrorOccured = true;
        }
        
        if (!dateErrorOccured) {
            $("#Step5Error").hide();
        }
        
        var timeErrorOccured = false;
                   
        if (!ProcessDateTimeField(field8, 6, 0, 23)) {
            wasError = true;
            timeErrorOccured = true;
        }
        
        if (!ProcessDateTimeField(field9, 6, 0, 59)) {
            wasError = true;
            timeErrorOccured = true;
        }
        
        if (!ProcessDateTimeField(field10, 6, 0, 59)) {
            wasError = true;
            timeErrorOccured = true;
        }
        
        if (!timeErrorOccured) {
            $("#Step6Error").hide();
        }
        
        return !wasError;
}

function InitOnlineForm() {
    $('INPUT[type="password"]').keydown(function(event) { if (event.keyCode == 13) 
        {
            DisplayPopup('Logging into ASDA...', 'Please wait while we import your last order from ASDA.com<br />This may take about a minute...', { });
            $("form").submit();
        } 
    });
}

function InitVoucherForm() {
    $('form').keydown(function(event) { if (event.keyCode == 13) 
        {
            DisplayPopup('Please wait...', '', { DisplayProgressBar: true });
            $(this).submit();
        } 
    });
}

function MarkEmailFieldInvalid() {
    var emailField = $("#" + fieldPrefix + "Email");
    emailField.css("border", "#dd1925 2px solid");
    $("#EmailAddressError").show();
}

function InvalidLoginDetails() {
    var emailField = $("#" + fieldsPrefix + "Email");
    emailField.css("border", "#dd1925 2px solid");
    var passwordField = $("#" + fieldsPrefix + "Password");
    passwordField.css("border", "#dd1925 2px solid");
    $("#ErrorMessage").show();
}

function ReceiptNotFoundError() {
    $("#GeneralErrorMessage").show();
    for (var i=1; i<=10; i++) {
        $(eval("field" + i)).css("border", "#dd1925 2px solid");
    } 
    
    $(".FormPanel").css("margin-top", "14px");
}

function PrematureReceiptNotFoundError() {
    $("#GeneralErrorMessage3").show();
    
    $(".FormPanel").css("margin-top", "14px");
}

/* Vouchers error handling */
function InvalidVoucherEmail() {
    var emailField = $("#" + fieldsPrefix + "Email");
    emailField.css("border", "#dd1925 2px solid");
    $("#EmailAddressError").show();
}

function InvalidVoucherName() {
    var nameField = $("#" + fieldsPrefix + "Name");
    nameField.css("border", "#dd1925 2px solid");
    $("#NameError").show();
}

function InvalidVoucherPostcode() {
    var postcodeField = $("#" + fieldsPrefix + "Postcode");
    postcodeField.css("border", "#dd1925 2px solid");
    $("#PostcodeError").show();
}

function InvalidVoucherAddress() {
    var homeAddressField = $("#" + fieldsPrefix + "HomeAddress");
    homeAddressField.css("border", "#dd1925 2px solid");
    $("#HomeStreetError").show();
}

function InvalidVoucherTown() {
    var townField = $("#" + fieldsPrefix + "Town");
    townField.css("border", "#dd1925 2px solid");
    $("#TownError").show();
}

function NavigateURL(url) {
    document.location.href = url;
}

function processOnlineForm()
{
    if ($(".emailfield").attr("value") != "" && $(".passwordfield").attr("value") != "")
    {
        DisplayPopup('Logging into ASDA...', 'Please wait while we import your last order from ASDA.com<br />This may take about a minute...', {});
        $("form").submit();
    }
    else
    {
        $("p.ErrorMessage").html("Please fill both fields");
        $("p.ErrorMessage").show();
        $(".emailfield").css("border", "#dd1925 2px solid");
        $(".passwordfield").css("border", "#dd1925 2px solid");
    }
}

function InitsIFR(topPadding) {
	sIFR.replaceElement(".FlashHeaderText", named({ sFlashSrc: "http://i.groceries.asda.com/swf/asdaromy.swf", sWmode: 'transparent',sFlashVars: 'offsetTop=' + topPadding, sColor: "#FFFFFF", sBgColor: "#7AC142" }));
}
