var bannerTime = 5000;

function hideMenu() {
    $(this).find('ul').css({visibility: 'hidden'});
    if ($(this).hasClass('a')) {
        $(this).removeClass('a');
    }
    setTimeout("Cufon.replace('#main-menu > ul > li > a')", 100);
}

function showInputError(elem) {
    var err = $(elem).siblings('.error-message');
    if (err.length > 0) {
        var w = $(elem).outerWidth(),
            h = $(elem).outerHeight(),
            o = $(elem).offset(),
            eh = err.outerHeight();
            
        err.css({
            top: o.top + (h / 2) - (eh / 2) + 'px',
            left: o.left + w + 10 + 'px'
        }).fadeIn();
    }
}

function hideInputError(elem) {
    $(elem).siblings('.error-message:visible').fadeOut();
}

function bannerSlider() {
    if ($('#banner-1 .slider li').length > 0) {
        var curr = $('#banner-1 .slider li.active');
        if (curr.next().length > 0) {
            curr.next().first().click();
        } else {
            curr.parent().children().first().click();
        }
        setTimeout('bannerSlider();', bannerTime);
    }
}

function unique(a)
{
   var r = new Array();
   o:for(var i = 0, n = a.length; i < n; i++)
   {
      for(var x = 0, y = r.length; x < y; x++)
      {
         if(r[x]==a[i]) continue o;
      }
      r[r.length] = a[i];
   }
   return r;
}

/*function formSubmit() {
        $(this).find('input, textarea').blur();
        
        if ($(this).find('.error-message:visible').length <= 0) {
            $.post('mail.php', $(this).serialize(), function (data) {
                $('.form form').fadeOut(200);
                $('.form .confirm-message').html(data);
            });
        }
        
        return false;
    }*/

$(document).ready(function () {
    $('#main-menu > ul > li').hover(function () {
        $(this).addClass('a');

        Cufon.replace('#main-menu > ul > li > a');

        if ($(this).has('ul')) {
            var ul = $(this).find('ul').first();
            var h = $(this).innerHeight();
            
            ul.css({
                top: h + 'px',
                left: '0px',
                visibility: 'visible',
                display: 'none'
            }).slideDown(200);
        }
    }, hideMenu);
    
    $('#main-menu ul ul li.sub-item:has(ul)').hover(function () {
        var ul = $(this).find('ul').first();
        var w = $(this).outerWidth();
        var t = $(this).position().top;
        
        if ($.browser.msie == true && parseFloat($.browser.version) == 6) {
            t = 0;
        }
        
        ul.css({
            top: t + 'px',
            left: w + 'px',
            visibility: 'visible',
            display: 'none'
        }).slideDown(200);
    }, hideMenu);
    
    $('#banner-1 .slider li').click(function () {
        $(this).siblings().removeClass('active');
        $(this).addClass('active');
        Cufon.replace('#banner-1 .slider a');
        $('#banner-1 .frame img').hide();
        $('#banner-1 #' + $(this).find('a').attr('rel')).fadeIn(200);
    });
    
    $('#content .slide .sliders div').click(function () {
        $(this).siblings().removeClass('active');
        $(this).addClass('active');
        $(this).parent().parent().find('img').hide();
        $(this).parent().parent().find('#' + $(this).find('a').attr('rel')).fadeIn(200);
    });
    
    $('#footer .contact .mail').click(function () {
        window.location.href = $(this).find('a').attr('href');
    });
    
    $('li:has(a)').not('.toggle-1 li, .toggle-2 li, .tabs-1 li, .tabs-2 li').click(function () {
        var a = $(this).find('a').first();
        if (a.attr('href') != undefined) {
            window.location.href = a.attr('href');
        }
        
    });
    
    $('.toggle-1 li > span, .toggle-2 li > span').click(function () {
        if (!$(this).parent().hasClass('active')) {
            $(this).parent().siblings('.active').removeClass('active').children('div').slideUp();
            $(this).parent().addClass('active').children('div').slideDown();
        }
    });
    
    $('.tabs-1 > ul > li, .tabs-2 > ul > li').click(function () {
        if (!$(this).hasClass('active')) {
            $(this).siblings('.active').removeClass('active');
            $(this).addClass('active');
            $(this).parent().siblings('div').hide();
            $('#' + $(this).find('a').attr('rel')).show();
        }
    });
    
    $('#search input').focus(function () {
        if ($(this).val() == 'Search') {
            $(this).val('');
        }
    }).blur(function () {
        if ($(this).val() == '') {
            //$(this).val('Search');
        }
    });
    
    // validation
/*    $('.form .input input, .form .input textarea').blur(function () {
        var name = $(this).attr('name');
        if (name.indexOf('email') > -1) {
            // check for email
            var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
            if (reg.test($(this).val()) == false) {
                showInputError(this);
            } else {
                hideInputError(this);
            }
        } else if ($(this).val() == '') {
            showInputError(this);
        } else {
            hideInputError(this);
        }
    });*/
    
    //$('.form form .submit button').click(function (e) {
    //    $(this).parents('form').first().submit();
    //});
    //
//    $('.form form').submit(formSubmit);
    
    setTimeout('bannerSlider();', bannerTime);
    
    
    $("a[rel^='prettyPhoto']").prettyPhoto();
    
    $('#footer .contact .mail').click(function () {
        window.location.href = $(this).find('a').attr('href');
    });

    // Re-enabled Free Signup Button for Communicator
    $('input[name=BillingProfile][rel=Communicator]').click(function()
    {
        $('input#CommunicatorSignup').attr('disabled', false);

        $('input#ProductId').val('1');
        
        $('input[name=BillingProfile][rel=Central]').attr('checked', false);
        $('input[name=BillingProfile][rel=MPro]').attr('checked', false);
        $('input#CentralSignup').attr('disabled', true);
        $('input#MProSignup').attr('disabled', true);
    });
    // Re-enabled Free Signup Button for Central
    $('input[name=BillingProfile][rel=Central]').click(function()
    {
        $('input#CentralSignup').attr('disabled', false);


        $('input#ProductId').val('2');
        
        $('input[name=BillingProfile][rel=Communicator]').attr('checked', false);
        $('input[name=BillingProfile][rel=MPro]').attr('checked', false);
        $('input#CommunicatorSignup').attr('disabled', true);
        $('input#MProSignup').attr('disabled', true);
    });
    // Re-enabled Free Signup Button for MPro
    $('input[name=BillingProfile][rel=MPro]').click(function()
    {
        $('input#MProSignup').attr('disabled', false);
        $('input#ProductId').val('6');
        $('input[name=BillingProfile][rel=Central]').attr('checked', false);
        $('input[name=BillingProfile][rel=Communicator]').attr('checked', false);
        $('input#CentralSignup').attr('disabled', true);
        $('input#CommunicatorSignup').attr('disabled', true);
    });

    // Check Password Strength
    $('input#Password').keyup(function()
    {
        var Strength = GetPasswordStrength($(this).val());
        if (Strength == 0)
        {
            $('div#password-strength').hide();
        }
        else
        {
            var Class = '';
            if (Strength <= 2)
            {
                Class = 'weak';
            }
            else if (Strength < 4)
            {
                Class = 'ok';
            }
            else
            {
                Class = 'strong';
            }
            $('div#password-strength').attr('class', '').addClass('password-strength-' + Class).html('Strength: ' + Class.toUpperCase()).show();
        }
    });

    function GetPasswordStrength(Password)
    {
        var Strength = 0;

        // Length 6 characters or more
        Password.length >= 6
            && Strength++;

        // Length 12 characters or more
        Password.length >= 12
            && Strength++;

        // Contains lowercase characters
        Password.match(/[a-z]+/)
            && Strength++;

        // Contains digits
        Password.match(/[0-9]+/)
            && Strength++;

        // Contains uppercase characters
        Password.match(/[A-Z]+/)
            && Strength++;

        // Contains unusual characters
        Password.match(/[^\w]+/)
            && Strength++;

        return Strength;
    }

    var TimedRemoteSuggestion = 0;

    // Build username suggestions
    function SuggestUsername()
    {
        
        $('#username-suggestions').show();
        // Central can generate any username
        /*if ($('input[name=ProductId]').val() == 2)
        {
            var FirstName = $('input#FirstName').val().toLowerCase();
            var Surname = $('input#Surname').val().toLowerCase();
            var Email = $('input#Email').val().toLowerCase();
            var Usernames = new Array();

            if (FirstName && Surname)
            {
                Usernames.push(FirstName + '.' + Surname);
            }
            if (FirstName)
            {
                Usernames.push(FirstName);
            }
            if (Surname)
            {
                Usernames.push(Surname);
            }
            if (Email)
            {
                var EmailParts = Email.split('@');
                Usernames.push(EmailParts[0]);
            }

            Usernames = unique(Usernames);

            var Suggestions = '';
            for (i = 0; i < Usernames.length; i++)
            {
                Suggestions += '<li>' + Usernames[i] + '</li>';
            }
            $('ul#username-suggestions-list').html(Suggestions).show();
        }
        else
        {*/
            TimedRemoteSuggestion != 0
                && clearTimeout(TimedRemoteSuggestion);
            TimedRemoteSuggestion = setTimeout(SuggestUsernameRemote, 500);
        //}
    }

    function SuggestUsernameRemote()
    {
        var FirstName = $('input#FirstName').val().toLowerCase();
        var Surname = $('input#Surname').val().toLowerCase();
        var Email = $('input#Email').val().toLowerCase();
        var ProductId = $('input[name=ProductId]').val();

        $.getJSON('username_suggestions.php?',
            {
                FirstName:  FirstName,
                Surname:    Surname,
                Email:      Email,
                ProductId:  ProductId
            },
            function(Usernames)
            {
                if (Usernames != null)
                {
                    var Suggestions = '';
                    $.each(Usernames, function(Id, Username)
                    {
                        Suggestions += '<li>' + Username + '</li>';
                    });
                    $('ul#username-suggestions-list').html(Suggestions).parent('div').show();
                }
                else
                {
                    $('ul#username-suggestions-list').parent('div').hide();
                }


            }
        );
    }

    $('ul#username-suggestions-list li').live('click', function()
    {
        $('input#Username').val($(this).html());
    });

    $('input#FirstName').keyup(SuggestUsername);
    $('input#Surname').keyup(SuggestUsername);
    $('input#Email').keyup(SuggestUsername);

    $('input#Username').keyup(function()
    {
        GenerateUsername = $('input#Username').val().length == 0;
    });

    // Populate the CountryCode field with the country prefix
    // Always do it if the country is manually changed
    $('select#CountryId').change(function()
    {
        var Prefix = $(this).children('option:selected').attr('rel');
        $('input#CountryCode').val(Prefix);
    });

    // If it looks like the user put something in, do not overwrite it
    if ($('input#CountryCode').length > 0)
    {
        if ($('input#CountryCode').val().length < 5)
        {
            var Prefix = $('select#CountryId').children('option:selected').attr('rel');
            $('input#CountryCode').val(Prefix);
        }
    }

    $('a#GenerateCaptcha').click(function()
    {
        var Counter = parseInt($('input#CaptchaRegen').val()) + 1;
        $('input#CaptchaRegen').val(Counter);
        $('img#SecurityCaptcha').attr('src', 'captchaimage.php?refresh=' + Counter + '&token=' + $('input#SecurityKey').val());
        return false;
    });

    $('a#close').click(function()
    {
        $(this).parent('div').hide();
        $('div#greyout').hide();
        return false;
    });


    // Setup SubIndustry
    function PopulateIndustryHorizontal(IndustryVertical)
    {
        return;
        if (IndustryVertical == '')
        {
            $('div#sub-industry').html('');
        }
        else
        {
            var IndustryHorizontal = $('input#IndustryHorizontal').val();
            $('div#sub-industry').load('sub_industry.php?IndustryVertical=' + IndustryVertical + '&IndustryHorizontal=' + IndustryHorizontal);
        }
    }

/*    function UpdateCompanySection()
    {
        var VatBusinessTypeId = $('input[name=VatBusinessTypeId]:checked').val();

        if (VatBusinessTypeId == 1)
        {
            $('div#company-section').hide();
            $('input#Company').removeClass('validate[required]');
            $('input#VatNumber').removeClass('validate[required]');
            $('select#IndustryVertical').removeClass('validate[required]');
        }
        else if (VatBusinessTypeId == 2)
        {
            $('div#company-section').show();
            $('input#Company').addClass('validate[required]');
            $('input#VatNumber').addClass('validate[required]');
            $('select#IndustryVertical').addClass('validate[required]');
        }
        else
        {
            $('div#company-section').hide();
            $('input#Company').removeClass('validate[required]');
            $('input#VatNumber').removeClass('validate[required]');
            $('select#IndustryVertical').removeClass('validate[required]');
        }
    }

    $('input[name=VatBusinessTypeId]').change(function()
    { 
        UpdateCompanySection();
    });
    UpdateCompanySection();*/

    $('select#IndustryVertical').change(function()
    {
        PopulateIndustryHorizontal($(this).val());
    });
    PopulateIndustryHorizontal($('select#IndustryVertical').val());
});

