﻿var selectedItem;

function selectPreviousResult()
{
    changeSelection(getPreviousResult());
}

function selectNextResult()
{
    changeSelection(getNextResult());
}

function selectFirstResult()
{
    changeSelection(getFirstResult());
}

function selectLastResult()
{
    changeSelection(getLastResult());
}

function changeSelection(newItem)
{
    if(newItem)
    {
        // Deselect the old item and select the new one
        deSelectItem(selectedItem);
        selectItem(newItem);
        
        // Show the results
        showResults();
        
        // Set the text
        setSearchPhrase(newItem.innerHTML);
    }
}

function deSelectItem(oldItem)
{
    if (oldItem)
    {
        oldItem.style.background = "white";
        oldItem.style.color = "black";
        
        selectedItem = null;
    }
}

function selectItem(newItem)
{
   if (newItem)
    {
        newItem.style.background = "#4d753f";
        newItem.style.color = "#fff";
        selectedItem = newItem;
    }
}

function clickItem(item)
{
    if (item)
    {
        hideResults();
        
        window.location="s.aspx?search=" + item.innerHTML + "&searchtype=product";
    }
}

function checkKey(textField, e)
{
    // Get the pressed key
    var keyCode = getKeyCode(e);

    // Hide the results if too few characters entered, or the escape key is pressed
    if (!textField || textField.value.length <= 1 || keyCode == 27)
    {
        hideResults();
        return;
    }
    
    if(e.altKey || e.ctrlKey || e.shiftKey)
    {
        // Ignore input if any modifier keys are pressed
        return;
    }

    // Handle function keys    
    switch(keyCode)
    {
        case 13 : // Enter
            hideResults();
            return;
        case 38 : // Up
            selectPreviousResult();
            return;
        case 40 : // Down
            selectNextResult();
            return;
        case 36 : // Home
            selectFirstResult();
            return;
        case 35 : // End
            selectLastResult();
            return;
        case 37 : // Left
        case 39 : // Right
        case 16 : // Shift
        case 17 : // Ctrl
        case 18 : // Alt
            // Ignore
            return;
    }
    
    // Reset selection for new results
    selectedItem = null;
    
    // Perform the search
    performSearch(textField.value);
}

function getKeyCode(e)
{
	if (e.keyCode)
	{
	    return e.keyCode;
	}
	else
	{
	    if (e.which)
	    {
	        return e.which;
	    }
	    else
	    {
	        return null;
	    }
	}
}

function performSearch(item) 
{
    if (window.XMLHttpRequest)
    {
        // Non-IE
        req = new XMLHttpRequest();
        req.onreadystatechange = performSearchComplete;
        try 
        {
            req.open("GET", "iaAjax.ashx?action=search&phrase=" + item, true);
            req.send(null);
        } 
        catch (e) 
        {
            alert(e);
        }
    } 
    else
    {
        if (window.ActiveXObject) 
        {
            // IE
            req = new ActiveXObject("Microsoft.XMLHTTP");
            if (req) 
            {
                req.onreadystatechange = performSearchComplete;
                req.open("GET", "iaAjax.ashx?action=search&phrase=" + item, true);
                req.send();
            }
        }
    }
}
 
function performSearchComplete() 
{
    if (req.readyState == 4 && req.status == 200)
    {
        if (req.responseText == "NORESULTS")
        {
            hideResults();
            return;
        }
        
        showResults();
        setResults(req.responseText);
    }
}

function getPreviousResult()
{
    var selectedResultId = getSelectedResultId();
    if(selectedResultId == 0)
    {
        return getLastResult();
    }
    else
    {
        return getResultById(selectedResultId - 1);
    }
}

function getNextResult()
{
    var selectedResultId = getSelectedResultId();
    if(selectedResultId == 0)
    {
        return getFirstResult();
    }
    else
    {
        return getResultById(selectedResultId + 1);
    }
}

function getFirstResult()
{
    return getResultById(1);
}

function getLastResult()
{
    return getResultById(getResultCount());
}

function getResultById(id)
{
    return document.getElementById("result-" + id);
}

function getSelectedResultId()
{
    return selectedItem ? parseInt(selectedItem.id.substring(7)) : 0;
}

function hideResults()
{
    var resultsElement = getResultsElement();
    if(resultsElement)
    {
        resultsElement.style.display = "none";
    }
}

function showResults()
{   
    var resultsElement = getResultsElement();
    if(resultsElement)
    {
        resultsElement.style.display = "block";
    }
}

function setResults(text)
{
    var resultsElement = getResultsElement();
    if(resultsElement)
    {
        resultsElement.innerHTML = text;
    }
}

function getResultCount()
{
    var resultsElement = getResultsElement();
    if(resultsElement)
    {
        return resultsElement.childNodes.length;
    }
}

function getResultsElement()
{
    return document.getElementById("searchautoresults");
}

function setSearchPhrase(searchPhrase)
{
    var txtSearch = document.getElementById("txtSearch");
    if(txtSearch)
    {
        txtSearch.value = searchPhrase;
    }
}

function checkJS()
{
    var noJSDirectory = document.getElementById("noJSDirectory");
    {
    if (noJSDirectory)
        noJSDirectory.href = "javascript:;";                
    }
    
    var noJSReview = document.getElementById("noJSReview");
    if (noJSReview)
    {          
        noJSReview.href = "javascript:;";
    }
	
	var noJSDirectory = document.getElementById("noJSDirectory2");
    {
    if (noJSDirectory)
        noJSDirectory.href = "javascript:;";                
    }
    
    var noJSReview = document.getElementById("noJSReview2");
    if (noJSReview)
    {          
        noJSReview.href = "javascript:;";
    }
	
    
    var downloadForm = document.getElementById("downloadForm");
    if (downloadForm)
    {
        downloadForm.target = "ACSframe";
        downloadForm.submit();    
    }
    
    var delivery = document.getElementById("delivery");
        
    if (delivery)
    {
        var bankTransfer = document.getElementById("BankTransfer");
        var bankTransferChecked = false;
        if (bankTransfer)
        {
            // exception for AU: show invoice address section and hide delivery address section by default
            var b_street = document.getElementById("b_street");
        
            if (bankTransfer.checked && !b_street)
            {
                bankTransferChecked = true;
            }
        }
        
        var cheque = document.getElementById("Cheque");
        var chequeChecked = false;
        if (cheque)
        {
            if (cheque.checked)
            {
                chequeChecked = true;
            }
        }
        
        var showDelivery = document.getElementById("show_delivery");
        var showDeliveryChecked = false;
        if (showDelivery)
        {
            if (showDelivery.checked)
            {
                showDeliveryChecked = true;
            }
        }
        
        
        if (!bankTransferChecked && !chequeChecked && !showDeliveryChecked)
        {
            delivery.style.display = "none";  
        }      
    }
}

function toggleDeliveryBox()
{
    
    if (document.getElementById("delivery") != null)
    {
        if (document.getElementById("delivery").style.display == "none")
        {
            document.getElementById("delivery").style.display = "block";
            document.getElementById("s_street").value = "";
            document.getElementById("s_street1").value = "";
            document.getElementById("s_street2").value = "";
            document.getElementById("s_city").value = "";
            document.getElementById("s_state").value = "";
            document.getElementById("s_zip").value = "";
        }
        else if (document.getElementById("delivery").style.display == "block")
        {
            document.getElementById("delivery").style.display = "none";
            document.getElementById("s_street").value = document.getElementById("b_street").value;
            document.getElementById("s_street1").value = document.getElementById("b_street1").value;
            document.getElementById("s_street2").value = document.getElementById("b_street2").value;
            document.getElementById("s_city").value = document.getElementById("b_city").value;
            document.getElementById("s_state").value = document.getElementById("b_state").value;
            document.getElementById("s_zip").value = document.getElementById("b_zip").value;
        }
    } 
      
}

function copyValue(source, destination)
{
    if ((source != null) && (document.getElementById(destination) != null))
    {
        document.getElementById(destination).value = source.value;
    }
}

function validateCheckout(checkout, errorMessage)
{

    var validates = true;
    
    if (!checkValue(document.getElementById("name"))) validates = false;
    if (!checkValue(document.getElementById("cardnumber"))) validates = false;
    if (!checkValue(document.getElementById("cvv"))) validates = false;
    if (!checkExpiryValue(document.getElementById("ExpiryMonth"))) validates = false;
    if (!checkExpiryValue(document.getElementById("ExpiryYear"))) validates = false;
    if (!checkValue(document.getElementById("b_street"))) validates = false;
    if (!checkValue(document.getElementById("b_city"))) validates = false;
    if (!checkValue(document.getElementById("b_zip"))) validates = false;
    if (!checkValue(document.getElementById("emailaddress"))) validates = false;
    if (!checkValue(document.getElementById("ContactNumber"))) validates = false;
    if (!checkValue(document.getElementById("province"))) validates = false;
    if (!checkValue(document.getElementById("ELVaccountHolderName"))) validates = false;
    if (!checkValue(document.getElementById("ELVbankAccountNr"))) validates = false;
    if (!checkValue(document.getElementById("ELVbankLocationId"))) validates = false;
    if (!checkValue(document.getElementById("ELVbankName"))) validates = false;
    if (!checkValue(document.getElementById("ELVbankLocation"))) validates = false;
    
    if (document.getElementById("AcceptTerms") != null)
    {
        if (!document.getElementById("AcceptTerms").checked) validates = false;   
    }
            
    if (!validates) alert(errorMessage);
    return validates;
    
}

function checkExpiryValue(itemToCheck)
{
    var result = true;
    
    if (itemToCheck != null)
    {
        if (itemToCheck.value == "-")
        {
            result = false;
        }
    }

    return result;  
}

function checkValue(itemToCheck)
{
    //returns false if an item fails to validate
    
    var result = true;
    
    if (itemToCheck != null)
    {
        if (itemToCheck.value == "")
        {
            result = false;
        }
    }

    return result;  
}