﻿var ExternalLinks = 
{
    start: function()
    {
        if (!document.getElementsByTagName) return;
        var anchors = document.getElementsByTagName("a");
        for (var i=0; i < anchors.length; i++)
        {
            var anchor = anchors[i];
            if (anchor.getAttribute("href") &&
            anchor.getAttribute("rel") == "external")
            anchor.target = "_blank";
        }
    }
}

var IE6FlickerFix =
{
    start: function()
    {
        try { document.execCommand("BackgroundImageCache", false, true); } 
        catch(err) {}
    }
}

var Tooltips =
{
    start: function() 
    {
        //Tooltips
        if ($$('.tooltip') != null)
        {
            $$('.tooltip').each(function(item, index) 
            {
                var toolTipBox = item.select('.tooltipbox')[0];
                CreateRolloverMenu(item, toolTipBox);
            });
        }
        
        if($$('.warningtooltip') != null)
        {
            $$('.warningtooltip').each(function(item, index) 
            {
                var toolTipBox = item.select('.warningtooltipbox')[0];
                CreateRolloverMenu(item, toolTipBox);
            });
        }
        
        //Allowance  Rollover
        if ($$('.allowancerollover') != null)
        {
            $$('.allowancerollover').each(function(item, index) 
            {
                var allowance = item.select('.tooltipbox')[0];
                CreateRolloverMenu(item, allowance);
            });
        }
        if($('companylookupbox') != null)
        {
            var companyLookupFindButton = $('companylookupbox').select('.companylookupfindbutton')[0];
            Event.observe(companyLookupFindButton, 'click', function() 
            {  
                if($('companylookupbox').select('.companylookuptb')[0] == "")
                {
                    
                }
            });
        }
    }
}

var Registration =
{
    start: function()
    {
        //Account Type Selection Toggler
        if ($$('.subradio')[0] != null)
        {
            var radios = $$('.subradio');
            if (radios[1] != null)
            {
                var panel = radios[1].next();
                
                if (radios[0].descendants()[0].checked) 
                    panel.addClassName('displaynone');
                else panel.removeClassName('displaynone');
                
                Event.observe(radios[0], 'click', function() { panel.addClassName('displaynone'); });
                Event.observe(radios[1], 'click', function() { panel.removeClassName('displaynone'); });
           }
        }
        
        //Subscription Account Type functionality
        var firstSelected = false;
        if ($$('.HfSubscriptiontType')[0] != null)
        {
            $$('.subscriptionradio').each(function(item, index) 
            {
                Event.observe(item, 'click', function() 
                {
                    $$('.HfSubscriptiontType')[0].value = item.next().value;
                });
            });
        }
    }
}

var Basket =
{
    start: function() 
    {
        //-----Togglers to hide items in the basket
        var togglers = $$('.baskettoggle');
        togglers.each(function(item, index) 
        {
            //Add click events to toggle item detail
            Event.observe(item, 'click', function() 
            {
                var section = item.ancestors()[2].next();
                if (this.innerHTML == 'Detail')
                {
                    this.innerHTML = 'Hide';
                    section.removeClassName('displaynone');
                }
                else
                {
                    this.innerHTML = 'Detail';
                    section.addClassName('displaynone');
                }
            });
        });
        
        //-----Allow option to add a reference to a basket item
        $$('.addreference').each(function(item, index) 
        {   
            Event.observe(item, 'click', function()
            {
                //Hide H4 element
                item.ancestors()[1].previous().previous().addClassName('displaynone');
                //Show DIV containing textbox
                item.ancestors()[1].previous().removeClassName('displaynone');
            });
        });
        
        //-----Setup buttons for cancelling a reference
        $$('.hidereference').each(function(item, index)
        {
            Event.observe(item, 'click', function()
            {
                //Show H4 element
                item.ancestors()[0].previous().removeClassName('displaynone');
                //Hide DIV containing textbox
                item.ancestors()[0].addClassName('displaynone');
            });
        });
        
        //-----Toggle panel to exclude previous downloads
        if ($$('.exclusionlist')[0] != null)
        {
            $$('.exclusionlist').each(function(table, index)
            {
                var nonepanel = table.next();
                var allpanel = table.next().next();
                var somepanel = table.next().next().next();
                var radios = table.getElementsBySelector('input');
                    
                nonepanel.addClassName('displaynone');
                allpanel.addClassName('displaynone');
                somepanel.addClassName('displaynone');
                    
                radios.each(function(item, index)
                {
                    if (item.checked)
                    {
                        if (index == 0) nonepanel.removeClassName('displaynone');
                        else if (index == 1) allpanel.removeClassName('displaynone');
                        else if (index == 2) somepanel.removeClassName('displaynone');
                    }
                        
                    Element.observe(item, 'click', function()
                    {
                        nonepanel.addClassName('displaynone');
                        allpanel.addClassName('displaynone');
                        somepanel.addClassName('displaynone');
                        
                        if (this.value == 'None') nonepanel.removeClassName('displaynone');
                        if (this.value == 'All') allpanel.removeClassName('displaynone');
                        if (this.value == 'Some') somepanel.removeClassName('displaynone');
                    });
                });
            });
        }
    }
}

var TopNavigation = 
{
    start: function() 
    {
        if ($$('.mainnavdropdownparent') != null)
        {
            $$('.mainnavdropdownparent').each(function(item)
            {
                CreateRolloverMenu(item, item.descendants()[1]);
            });
        }
    }
}

var Site = 
{
    start: function()
    {
        ExternalLinks.start();
        IE6FlickerFix.start();
        Tooltips.start();
        Registration.start();
        Basket.start();
        TopNavigation.start();
        
        //Create instance objects to run searches depending on current page
        if ($$('.HfRequiresSalesLeadsJS')[0].value == 'true') var businessSalesLeads = new BusinessSalesLeads();
        if ($$('.HfRequiresLookalikeJS')[0].value == 'true') var businessLookAlikes = new BusinessLookAlikes();
        if ($$('.HfRequiresCompanyLookupJS')[0].value == 'true') var companyLookups = new CompanyLookups();
    }
}

Event.observe(window, 'load', function() { Site.start(); });

function CreateRolloverMenu(parent, child)
{
    parent.dropDownElement = child;
    Event.observe(parent, 'mouseover', function() 
    { 
        this.dropDownElement.removeClassName('displaynone');
        this.addClassName('hovering');
        if (this.hasClassName('selected'))
        {
            this.removeClassName('selected');
            this.addClassName('requiresselection');
        }
    });
    Event.observe(parent, 'mouseout', function() 
    { 
        this.dropDownElement.addClassName('displaynone'); 
        this.removeClassName('hovering');
        if (this.hasClassName('requiresselection'))
        {
            this.removeClassName('requiresselection');
            this.addClassName('selected');
        }
    });
}

function displaywarningtooltip(visible, location)
{
    if (visible)
        $(location).select('.warningtooltipboxspan')[0].removeClassName('displaynone');
    else
        $(location).select('.warningtooltipboxspan')[0].addClassName('displaynone');
}

function SetUniqueRadioButton(nameregex, current)
{
   re = new RegExp(nameregex);
   for(i = 0; i < document.forms[0].elements.length; i++)
   {
      elm = document.forms[0].elements[i]
      if (elm.type == 'radio')
         if (re.test(elm.name))
            elm.checked = false;
   }
   current.checked = true;
}

//Disable payment button once clicked
function DisableDoubleClick()
{
    var button = $$('.paymentproceed')[0];
    var loader = button.next();
    
    button.addClassName('displaynone');
    loader.removeClassName('displaynone');
}

//Disable basket buy button once clicked
function DisableBasketDoubleClick()
{
    var buttons = $$('.basketbutton');
    var loader = $$('.basketprocessing')[0];
    
    buttons.each(function(btn) {
        btn.addClassName('displaynone');
    });
    loader.removeClassName('displaynone');
}

//Disable basket buy button once clicked
function DisableSearchDoubleClick()
{
    var button = $$('.searchproceedbutton')[0];
    var loader = $$('.searchprocessing')[0];
    
    button.addClassName('displaynone');
    loader.removeClassName('displaynone');
}