﻿(function($) {
    $.fn.captchit = function(settings) {
        var config = {
            captchaGeneratorUrl : '/services/public/CaptchaImage.aspx', //Server side code for generating a captch image;
            captchaValidator : '/services/public/CaptchaValidator.aspx',
            alternate : 'לחץ ליצירת קוד חדש',
            css : 'captchit',
            submitCss : 'captchit-submit',
            onSuccess : null,
            onerror : null,
            img : null,
            textbox : null
        };
        
        if (settings) $.extend(config, settings);

        function validate(val){
            if(val.length==0)
                return;
                
            $.ajax({ 
                type:'POST',
                data : 'c='+val,
                url: config.captchaValidator, 
                dataType : 'html',
                context: document.body, 
                success: function(data, textStatus, XMLHttpRequest){
                    if(config.onSuccess!=null)
                        config.onSuccess();
                    else
                        alert('Approved');
                },
                error : function(XMLHttpRequest, textStatus, errorThrown){
                    regenerate();
                }
            });
        };
                
        //Generates a captcha code for the widget image;
        function regenerate(){
            var src = config.captchaGeneratorUrl + '?t=' + new Date().toLocaleString();
            $(config.img).attr('src',src);
            config.textbox.val('קוד שגוי - נסה שנית').addClass('error').blur();
            
        };
        
        this.each(function() {
            var d = $(this).empty();
            var src = config.captchaGeneratorUrl + '?t=' + new Date().toLocaleString();
            config.img = $('<img alt="" src="'+src +'" title="' + config.alternate + '" />').click(function(){
                regenerate();
            });
            
            config.textbox = $('<input maxlength="5" type="text" />').focus(function(){
                $(this).val('').removeClass('error');
            });
            
            var submit = $('.' + config.submitCss);
            if(submit.html()!=null){
                submit.click(function(){
                    validate(config.textbox.val());
                    return false;
                });
            }else{
                submit = $('<a class="generic-button" tabindex="0"><em></em><b><span>המשך</span></b><strong>&nbsp;</strong></a>').click(function(){
                    validate(config.textbox.val());
                    return false;
                });
            }
            d.append($('<font></font>').append(config.img));
            d.append(config.textbox);
            d.append(submit);
            d.addClass(config.css);
            d.keypress(function() {
                if(event.keyCode==13){
                    validate(config.textbox.val());
                    return false;
                }
            });
        });
        return this;
    };
})(jQuery);

