$(function() {
    AddWaterMarks();
    WireUpProductServiceChangeValidationEvent();
    WireUpCompanyNameChangeValidationEvent();
    WireUpLocationChangeValidationEvent()
    WireUpSearchButtonClick();
    WireUpSearchButtonHover();
});

function AddWaterMarks() {
    $('#CompanyName').watermark('Company Name');
    $('#ProductOrService').watermark('Product/Service');
}

function WireUpProductServiceChangeValidationEvent() {
    $('#ProductOrService').keyup(function(event) {
        ValidateForm(event);
    });
}

function WireUpCompanyNameChangeValidationEvent() {
    $('#CompanyName').keyup(function(event) {
        ValidateForm(event);
    });
}

function WireUpLocationChangeValidationEvent() {
    $('#ChosenLocation').change(function(event) {
        ValidateForm(event);
    });
}

function ValidateForm(event) {
    if (event.keyCode != 13 && event.keyCode != 9) {
        IsSearchFormValid();
    }
}

function WireUpSearchButtonClick() {
    $('input#Search').click(function() {
        if (IsSearchFormValid()) {
            //alert("valid");
            return true;
        }
        else {
            //alert("invalid");
            return false;
        }
    });
}

function WireUpSearchButtonHover() {

    $('input#Search').hover(
      function() {
        $(this).css({"color":"#4093ce", "background-color":"#FFF"});
      },
      function() {
      $(this).css({ "color": "#FFF", "background-color": "#4093ce" });
      }
    );
}

function IsProductSearchTermValid($productOrServiceInput) {

    var productSearchTerm = $productOrServiceInput.val().trim();
    var splitStringArray = productSearchTerm.split(" ");
//    if (splitStringArray.length > 1) 
//    {
//            for (var i = 0; i < splitStringArray.length; i++) {
//                if (splitStringArray[i].length < 4) {
//                    //alert("product invalid");
//                    SetErrorBackgroundColour($productOrServiceInput)
//                    return false;
//                }
//            }
//    }
//    else 
    if (IsProductSearchTermDefault($productOrServiceInput) || productSearchTerm.length == 0)
    {
        //alert("product invalid");

        var $locationInput = $('#ChosenLocation')
        var $companyInput = $('#CompanyName')
        var isLocationValid = IsLocationValid($locationInput);
        var isCompanyValid = IsCompanyNameValid($companyInput);

        if (!isLocationValid && !isCompanyValid) {
            SetErrorBackgroundColour($productOrServiceInput)
        }
        return false;
    }
    //alert("product valid");
    return true;
}

function IsProductSearchTermDefault($productOrServiceInput) {

    var productSearchTerm = GetSearchTerm($productOrServiceInput);
    return productSearchTerm == "Product/Service" || productSearchTerm.length == 0;
}

function GetSearchTerm($productInput) {
    var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
    if (is_chrome) {
        if ($productInput.val().length > 0) {
            return $productInput.val().trim();
        }
        return $productInput.attr("placeholder");
    }
    return $productInput.val().trim();
}
    
function IsCompanyNameValid($companyName) {
    if ($companyName.val() == "Company Name" || $companyName.val().length == 0) {
        //alert("company name invalid");
        SetErrorBackgroundColour($companyName)
        return false;
    }
    else {
        //alert("company name valid");
        return true;
    }
}

function IsLocationValid($locationDropdown) {

    var locationText = $locationDropdown.find(':selected').text();
    if (locationText == "- - Select Location - -") {
        //alert("location invalid");
        SetErrorBackgroundColour($locationDropdown)
        return false;
    }
    else 
    {
        return true;
    }
}

function IsSearchFormValid() {

    var $productInput = $('#ProductOrService');
    var $locationInput = $('#ChosenLocation');
    var locationSelectedText = $locationInput.find(':selected').text().toLowerCase();
    var $companyInput = $('#CompanyName');
    var isProductTermValid = IsProductSearchTermValid($productInput);
    var isLocationValid = IsLocationValid($locationInput);
    var isCompanyValid = IsCompanyNameValid($companyInput);

    if(locationSelectedText == "uk wide" && (!isCompanyValid && !isProductTermValid))
    {
        SetErrorBackgroundColour($productInput);
        SetErrorBackgroundColour($companyInput);
        SetErrorMessage("Please enter a company name or product/service.");
    }
    else if (isProductTermValid || (IsProductSearchTermDefault($productInput) && (isLocationValid || isCompanyValid)))
    {
        ClearErrorMessage();
        //alert("search form valid");
        ResetBackgroundColour($productInput);
        ResetBackgroundColour($companyInput);
        ResetBackgroundColour($locationInput);
        return true;
    }
    else 
    {
        if (!isProductTermValid && (isLocationValid || isCompanyValid)) 
        {
            ResetBackgroundColour($companyInput);
            ResetBackgroundColour($locationInput);
            SetErrorMessage("Please enter a valid product/service search term.");
        }
        else if (!isProductTermValid && !IsProductSearchTermDefault($productInput)) 
        {
           SetErrorMessage("Please enter a valid product/service search term.");
        }
        else 
        {
            SetErrorMessage("Please enter at least one search term.");
        }
        return false;
    }
}

function SetErrorMessage(message) {
    $('#search-error').html(message);
    $('#search-error').css({ 'background-image': 'url(../Content/images/Icon-SearchError.png)' });
    $("ul.bold:first").css({ 'margin-bottom': '20px' });
}

function ClearErrorMessage() {
    if ($('#search-error').html().length > 0) {
        $('#search-error').html("");
        $('#search-error').css({ 'background-image': 'none' });
        $("ul.bold:first").css({ 'margin-bottom': '45px' });
        var is_IE6 = navigator.appVersion.indexOf('MSIE 6.') != -1;
        var is_IE7 = navigator.appVersion.indexOf('MSIE 7.')!= -1;
        var is_Firefox = navigator.appVersion.indexOf('firefox') != -1;
        var is_chrome = navigator.appVersion.indexOf('chrome') != -1;

        if (!is_IE6 && !is_IE7 && !is_Firefox && !is_chrome) {
            $("ul.bold:first").css({ 'margin-bottom': '45px' });
        }
        else {
            $("ul.bold:first").css({ 'margin-bottom': '20px' });
        }
    }
}

function SetErrorBackgroundColour(input) {
    SetColourBackGround(input, "#FDDDDD");
}

function ResetBackgroundColour(input) {
    SetColourBackGround(input, "white");
}


function SetColourBackGround(input, colour) {
    input.css("background-color", colour);
}

String.prototype.trim = function() {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

