//////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////jQUERY on load////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////// 
$(document).ready(function() {
    buffer = []; //global
    //CSS3
    //--
    

    //$('#Newsletter').newsletterSignup();
    
    //Newsletter AJAX form
    // prepare the form when the DOM is ready 
    //pre-submit Ajax form settings
    var mail_title = $('LABEL[for=youremail]').text().toLowerCase();
    $('LABEL[for=youremail]').hide();
    $('#youremail').val(mail_title).focusin(function() {
        if ($(this).val() == mail_title) { $(this).val(''); }
    }).focusout(function() {
        if ($(this).val() == '') { $(this).val(mail_title); }
    });

    
    var options = { 
        target:     '#Newsletter',
        url:        'ar',
        type:       'post',
        dataType:   'json',
        data:       { action:"newsletter" },
        // $.ajax options can be used here too
        beforeSubmit: function(formData, jqForm, options) {
        //pre-submit callback
            form = $("FORM", this.target);
            //checking 'yourname' field
            if ($('INPUT[name=yourname]', form).val() == '') {
                alert('Please, Enter your name.');
                $('INPUT[name=yourname]', form).focus();
                return false;
            }
            //checking 'email' field
            var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
            if (!filter.test($('INPUT[name=youremail]', form).val())) {
                alert('Please, Enter the valid e-mail address.');
                $('INPUT[name=youremail]', form).focus();
                return false;
            }
            $("#Newsletter .submit").addClass('af_load');
            //var queryString = $.param(formData); 
            //alert('About to submit: \n\n' + queryString); 
            return true; 
        },
        success: function(responseText, statusText, xhr, $form) { 
        //post-submit callback
        //console.log(responseText);
        
            var tpl = '<b>{text}</b><p>{post}</p><a href="#" id="new_newsletter" title="Subscribe another email"><i>Back</i></a>';
            var res = tpl.supplant(responseText);
            $('#Newsletter DD').hide().html(res).fadeIn('slow');
            $("#Newsletter .submit").removeClass('af_load');
        
        }
    }; 
    $('#Newsletter FORM[name=newsletter] INPUT[type=submit]').live('click', function() { 
        $('#Newsletter FORM[name=newsletter]').ajaxSubmit(options); 
        return false; 
    });
    var newsletter = $("#Newsletter FORM").clone();
    $('#new_newsletter').live('click', function() {
        $("#Newsletter DD").hide().html(newsletter).fadeIn('slow');
        return false;        
    });
    //-- newsletter
    
    
   
    
}); //--onload


jQuery.fn.newsletterSignup = function(){
    //console.log(typeof(this));
    //console.log(this.length);
    if ((typeof(this) != 'undefined')&&(this.length == 1)) {
        var form = $('FORM', this); // Newsletter form
        var body = $('DD', this); // Newsletter body
        var submit = $('.submit', this); // Newsletter Submit block
        var iSubmit = $('INPUT', submit); // Newsletter Submit field
        
        var ar = 'ar'; // ar ~ Ajax Receiver page
        var ar_act = 'newsletter'; // ar_act ~ Ajax Receiver's action name
        var anewID = 'new_newsletter'; // ID for link that making anew newsletter
        var fnName = 'yourname'; // fn ~ Field Name
        var fnMail = 'youremail'; // fn ~ Field Name
                                               
        var lMail = $('LABEL[for='+fnMail+']', this); // l ~ Label
        var iMail = $('#'+fnMail, this); // i ~ Input
        var tMail = lMail.text(); // t ~ title/text
        lMail.hide();
        iMail.val(tMail)
            .live('focusin', function(){ if ($(this).val() == tMail){ $(this).val(''); }})
            .live('focusout', function(){ if ($(this).val() == ''){ $(this).val(tMail); }});
        
        var ar_opt = { //ajax receiver options 
            target:     form.attr('id'),
            url:        ar,
            type:       'post',
            dataType:   'json',
            data:       { action:ar_act },
            beforeSubmit: function(formData, jqForm, options) {
                //form = $("FORM", this.target);
                // checking 'email' field
                var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
                if (!filter.test(iMail.val())) {
                    alert('Please, Enter the valid e-mail address');
                    iMail.focus();
                    return false;
                }
                //var queryString = $.param(formData); 
                //alert('About to submit: \n\n' + queryString); 
                submit.addClass('loading');
                return true; 
            },
            success: function(json, statusText, xhr, $form) { 
                //console.log(json);
                if (json['status']) var tpl = '<b>{text}</b><p>{post}</p><a href="#anew" id="'+anewID+'" title="Subscribe another email">To subscribe another email</a>';
                else var tpl = '<b>Error</b><p>Something is wrong</p><a href="#anew" id="new_newsletter" title="Subscribe another email">Please try again</a>';
                var res = tpl.supplant(json);
                body.hide().html(res).fadeIn('slow');
                submit.removeClass('loading');
            }
        }
        
        iSubmit.live('click', function(){ 
            form.ajaxSubmit(ar_opt);
            return false;
        });
        
        var anew = form.clone();
        $('#'+anewID, this).live('click', function() {
            body.hide().html(anew).fadeIn('slow');
            return false;        
        });
        
    }
}

/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////// Additional functions ////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
/**
*  Javascript trim, ltrim, rtrim
*  http://www.webtoolkit.info/
**/

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
