var cache = [];
var mainTabs = [0,1,6,7,8];
var hashTable = new Hashtable();
hashTable.clear();

function ClearContent(div)
{
    if ( div.hasChildNodes() )
    {
        while ( div.childNodes.length >= 1 )
        {
            div.removeChild( div.firstChild );       
        } 
    }
}

// item options ...
function CreateOptionsLinks(responseXML)
{
    div = document.getElementById('CenterContent');
    ClearContent(div);
    
    if ( responseXML.hasChildNodes() )
    {
        for (var i=0; i < responseXML.childNodes.length; i++)
        {
            if (responseXML.childNodes[i].firstChild == null)
                continue;
            var value = responseXML.childNodes[i].firstChild.nodeValue;
            value = value.trim();
            var idValue = responseXML.childNodes[i].getAttribute('id');
            
            newlink = document.createElement('a');
            newlink.setAttribute('id', "filterOption"+i);
            newlink.setAttribute('href', "javascript:__doPostBack('filterOption-" + idValue + "','"+ value +"')");
            newlink.appendChild(document.createTextNode( value ));

            div.appendChild(newlink);
            
            if (!idValue.match("^0-.*"))
            {
                div.appendChild(document.createElement("br"));
            }
            else
            {
                // insert some blanks
                myElement = document.createElement("span");
                div.appendChild(myElement);
                myElement.innerHTML = "&nbsp &nbsp";
            }
        } 
    }
    else
    {
        emptyDirectoryCategoryDiv = document.getElementById('EmptyDirectoryCategory');
        var theNode = emptyDirectoryCategoryDiv.cloneNode(true);
        theNode.style.visibility = "visible";
        div.appendChild(theNode);
    }
}

function SelectTab(itemGroup)
{
    var selectedTab = document.getElementById('ctl00_MainContentPlaceHolder_SelectedTab');
    if (selectedTab != null)
    {
        selected = document.getElementById('directoryItem'+selectedTab.value);
        if (selected != null)
        {
            if (mainTabs.contains(selectedTab.value))
            {
                selected.style.backgroundImage = "url(/portal/search/images/menuMainItem.jpg)";
            }
            else
            {
                selected.style.backgroundImage = "url(null)";
            }
        }
    }

    element = document.getElementById('directoryItem'+itemGroup);
    if (element != null)
    {
        if (mainTabs.contains(itemGroup))
        {
            element.style.backgroundImage = "url(/portal/search/images/menuOverMainItem.jpg)";
        }
        else
        {
            element.style.backgroundImage = "url(/portal/search/images/menuOver.jpg)";
        }
    }
    
    selectedTab.value = itemGroup;
}

function LoadITDirectoryOptionDetails(itemGroup)
{
    var currentLanguageHidden = document.getElementById('ctl00_MainContentPlaceHolder_CurrentLanguageHidden');
    // base language
    var currentLanguage = "en";
    if ((currentLanguageHidden != null) && (currentLanguageHidden.value != ""))
    {
        currentLanguage = currentLanguageHidden.value;
    }

    // define a response handler
    function responseHandler(ajaxRequest)
    {
        SelectTab(itemGroup);
        
        // get the XML document from the request
        var responseXML = ajaxRequest.responseXML.documentElement;
        
        // cache
        hashTable.put(itemGroup+"@@"+currentLanguage, responseXML);

        // Grab the data from the XML document and put it into the content section
        CreateOptionsLinks(responseXML);
    }

    if (hashTable.containsKey(itemGroup+"@@"+currentLanguage))
    {
        SelectTab(itemGroup);
        
        // use the cached info
        var responseXML = hashTable.get(itemGroup+"@@"+currentLanguage);
        CreateOptionsLinks(responseXML);
    }
    else
    {
        // 'ticks' used to avoid Cache
        var date = new Date()
        var ticks = date.getTime()
    
        // send the AJAX request
        ajaxSend('get', '/portal/search/GetITDirectoryItemOptions.aspx', 'itemGroup='+itemGroup+'&null='+ticks, responseHandler);
    }
}

// items ...
function CreateItemsLinks(responseXML)
{
    div = document.getElementById('DirectoryMenu');
    ClearContent(div);
    
    if ( responseXML.hasChildNodes() )
    {
        for (var i=0; i < responseXML.childNodes.length; i++)
        {
            var value = responseXML.childNodes[i].firstChild.nodeValue;
            value = value.trim();
            var idValue = responseXML.childNodes[i].getAttribute('id');
            var controlId = 'directoryItem'+i;
          
            var newlink = document.createElement('a');
            newlink.setAttribute('id', controlId);
            newlink.setAttribute('href', "#");
            newlink.idValue = idValue;
            newlink.onmouseover = function() { LoadITDirectoryOptionDetails('' + this.idValue+''); }
            
            if (mainTabs.contains(i))
            {
                newlink.style.backgroundImage = "url(/portal/search/images/menuMainItem.jpg)";
                newlink.style.paddingLeft = "8px";
            }
            else
            {
                newlink.style.paddingLeft = "15px";
            }
            
            newlink.appendChild(document.createTextNode( value ));         
                        
            // insert some blanks
            myElement = document.createElement("span");
            newlink.appendChild(myElement);
            myElement.innerHTML = "&nbsp &nbsp";

            div.appendChild(newlink);
        } 
    }
}

function LoadITDirectoryItems()
{
    // define a response handler
    function responseHandler(ajaxRequest)
    {
        // get the XML document from the request
        var responseXML = ajaxRequest.responseXML.documentElement;
        
        // cache
        hashTable.put('directoryItems', responseXML);

        // Grab the data from the XML document and put it into the content section
        CreateItemsLinks(responseXML);
    }
    
    if (hashTable.containsKey('directoryItems'))
    {
        // use the cached info
        var responseXML = hashTable.get('directoryItems');
        CreateItemsLinks(responseXML);
    }
    else
    {
        // 'ticks' used to avoid Cache
        var date = new Date()
        var ticks = date.getTime()
    
        // send the AJAX request
        ajaxSend('get', '/portal/search/GetITDirectoryItems.aspx', '&null='+ticks, responseHandler);
    }
}

function SelectResults(isChecked)
{
    var contentDiv = document.getElementById("ResultsContent"); 
    var inputs = contentDiv.getElementsByTagName("input"); 
    for (var i = 0; i < inputs.length; i++)
    { 
        if (inputs[i].id.match(".*CheckBox_CompanyId_.*"))
        {
            inputs[i].checked = isChecked;
        }
    }
}

function AddItemToBasket(item)
{
    var basketContent = document.getElementById("BasketContent");
    if (!basketContent)
        return;
        
    // insert some blanks
    myItemSpan = document.createElement("span");
    myItemSpan.innerHTML = item;
    myItemSpan.title = item;
    myItemSpan.setAttribute("class","boxBasketItem");
    
    tempSpan = document.createElement("span");
    tempSpan.appendChild(myItemSpan);
    tempSpan.appendChild(document.createElement("br"));

    basketContent.innerHTML = tempSpan.innerHTML + basketContent.innerHTML;
}

function AddToBasket(item)
{
    // define a response handler
    function responseHandler(ajaxRequest)
    {
        var responseText = ajaxRequest.responseText;
        
        // match if the response text not contains the word "ERROR_"
        if(!responseText.match("ERROR_"))
        {
            AddItemToBasket(responseText);
        }
    }
    
    // 'ticks' used to avoid Cache
    var date = new Date()
    var ticks = date.getTime()
    
    // send the AJAX request
    ajaxSend('get', '/portal/basket/AddItem.aspx', 'item='+item+'&null='+ticks, responseHandler);
}

function LoadLatestTabSelected()
{
    //preselect the latest tab selected
    var id = 0;
    var selectedTab = document.getElementById('ctl00_MainContentPlaceHolder_SelectedTab');
    if ((selectedTab != null) && (selectedTab.value != ""))
    {
        id = selectedTab.value;
    }

    LoadITDirectoryOptionDetails(id);
}

function IsInteger(s) {
    return (s.toString().search(/^[0-9]+$/) == 0);
}

function CheckCurrentPage()
{
    var recordsPerPageTextBox = document.getElementById('ctl00_MainContentPlaceHolder_RecordsPerPageTextBox');
    if ((recordsPerPageTextBox == null) && (recordsPerPageTextBox.value == ""))
    {
        return false;
    }

    // no numeric caracteres are allowed
    if (!IsInteger(recordsPerPageTextBox.value))
    {
        return false;
    }
    
    // cero is not allowed
    if (recordsPerPageTextBox.value == "0")
    {
        return false;
    }
    
    var currentPageHidden = document.getElementById('ctl00_MainContentPlaceHolder_CurrentRecordsPerPageValueHidden');
    if (currentPageHidden != null)
    {
        if (currentPageHidden.value == recordsPerPageTextBox.value)
        {
            return false;
        }
    }
    
    return true;
}