loading = '<div id="loading"><img src="images/43.gif" /></div>';
preloadImg = new Image();
preloadImg.src = "images/43.gif";

$(document).ready(function(){       

    $.reject();

    $('.overlay').height($(document).height());

    $(':input[alt]').addClass('ihint');
    
    $(':input[alt]').attr('value', function() {
        return this.alt;
    });    
    
    $(':input[alt]').blur(function(){
        if ($(this).attr('alt')) {
            if ($(this).val() == '') {
                $(this).addClass('ihint');
                $(this).val($(this).attr('alt'));
            }
        }
    });
    
    $(':input[type=text], :input[type=textarea]').live('blur', function(){
        checkField($(this));
    });

    $(':input[alt]').focus(function(){
        if ($(this).attr('alt')) {
            if ($(this).val() == $(this).attr('alt')) {
                $(this).removeClass('ihint');
                $(this).val('');
            }
        }
    });

    $('#sendContactMessage').live("click", function(){      
        if (!validate('#contactForm')) return false;    
        $('.overlay').fadeTo('slow', 0.8);        
        $.ajax({
            url: 'contact.php',
            data: $('#contactForm').serialize(),
            beforeSend: function() { 
                $('#contactMessageHolder').html(loading);
                $('#contactMessage').fadeIn('slow');
            },
            success: function(msg) { 
                $('#contactMessageHolder').html(msg);
                $('#contactForm')[0].reset();
            }
        });
        return false;
    });
    
    $('#acceptRule').click(function(){
        $('#rules').fadeOut('slow');
        resetErrors('#signupForm');
        $('#signupHolder').fadeIn('slow');
        return false;
    });
    
    $('.close').live("click", function(){
        $('.fixed').fadeOut('slow');
        $('.overlay').fadeOut('slow');
        return false;
    });
    
    $('.overlay').live("click", function(){
        $('.fixed').fadeOut('slow');
        $('.overlay').fadeOut('slow');
        return false;
    });
    
    $('.setupTrade').live("click", function(){
        $("input[name='tradesite']").val($(this).attr('alt'));
        $('.overlay').fadeTo('slow', 0.8);
        $.ajax({
            url: 'manage/rules.php',
            data: 'site=' + $(this).alt,
            beforeSend: function() {
                $('#rulesHolder').html(loading);
                $('#rules').fadeIn('slow');
            },
            success: function(msg) {
                $('#rulesHolder').html(msg);
            }
        });
        return false;
    });
    
    $('#addTrade').click(function(){
        if (!validate('#signupForm')) return false;
        $.ajax({
            url: 'trade.php',
            data: $('#signupForm').serialize(),
            beforeSend: function() {
                $('#signupHolder').fadeOut('slow');
                $('#signupMessageHolder').html(loading);
                $('#signupMessage').fadeIn('slow');
            },
            success: function(msg) {
                $('#signupMessageHolder').html(msg);
            }
        });
        return false;
    });
    
    $('#addTrade').blur(function(){
        $('#s_domain').focus();
    });
});

function showError(field, error)
{
    $(field).after('<em>' + error + '</em>');
    $(field).addClass('inputError');
    position = $(field).position();
    width = $(field).outerWidth();
    $(field).next('em').css({'left' : position.left + width + 20, 'top' : position.top + 4});
    $(field).next('em').animate({opacity: 'show', left: position.left + width + 10}, 'slow');
}

function checkField(field)
{
    $(field).next('em').remove();
    $(field).removeClass('inputError');
    
    if ($(field).val() == '' || $(field).hasClass('ihint'))
    {
        showError(field, 'Please, type ' + $(field).attr('name'));
        return false;
    }
    
    patterns = {
        domain: /^([^\.]*\.(?!info|biz)[^\.]{2,3})$/i,
        url: /^(https?:\/\/[^\.]*\..*)$/i,
        email: /^\w+[\.\w\-]*\w+@\w+[\.\w\-]*\w+\.\w{2,4}$/i,
        icq: /^(\d{5,9})$/i
    }
    
    switch ($(field).attr('id')) 
    {
        case 's_domain' :
        {
            if (!/^([^\.]*\.(?!info|biz|org)[^\.]{2,3})$/i.test($(field).val()))
            {
                showError(field, 'Please, type correct domain');
                return false;
            }

            if (!$('#s_url').hasClass('ihint') && $('#s_url').val().indexOf($(field).val()) < 0)
            {
                showError(field, 'The domain doesn\'t appear in the url');
                return false;
            }
            break;
        }
        
        case 's_title' : 
        {
            if ($(field).val().length > 19)
            {
                showError(field, 'Title must be less than 19 symbols.');
                return false;
            }
            break;
        }
        
        case 's_url' :
        {
            if (!/^(https?:\/\/[^\.]*\..*)$/i.test($(field).val()))
            {
                showError(field, 'Please, type correct url');
                return false;
            }

            if (!$('#s_domain').hasClass('ihint') && $(field).val().indexOf($('#s_domain').val()) < 0)
            {
                showError(field, 'The domain doesn\'t appear in the url');
                return false;
            }
            break;
        }
        
        case 's_email' : 
        case 'c_email' :
        {
            if (!/^\w+[\.\w\-]*\w+@\w+[\.\w\-]*\w+\.\w{2,4}$/i.test($(field).val()))
            {
                showError(field, 'Please, type correct e-mail');
                return false;
            }
            
            if (/^.*use.*icq.*$/i.test($(field).val()))
            {
                showError(field, 'Don\'t be a donkey, please');
                return false;
            }
            break;
        }

        case 's_icq' :
        {
            if (!/^(\d{5,9})$/i.test($(field).val()))
            {
                showError(field, 'Please, type correct icq number');
                return false;
            }
            break;
        }
    }
    return true;
}

function validate(form)
{
    result = true;
    
    $(form + ' :input[type=text], ' + form + ' :input[type=textarea]').each(function()
    {
        if (!checkField($(this))) 
        {
            result = false;
        }
    });
    
    return result;
}

function resetErrors(form)
{
    $(form + ' :input[type=text], ' + form + ' :input[type=textarea]').each(function()
    {
        $(this).next('em').remove();
        $(this).removeClass('inputError');
    });
}