(function($){
    $.fn.downloadWindow = function(options){
        var defaults, options;
        defaults = {
            'downloadLinkMask': 'uploads',
            'filesExtensions':['pdf'],
            'url' : '/',
            'cookie_id' : false,
            'cookie_value' : ''
        };
        options = $.extend(defaults, options);
        
        // not yet subcribe
        if($(this).length > 0){
            var $modalWindow = $(this);
            $("a[href*="+options.downloadLinkMask+"]").click(function(e){
                e.preventDefault();        
                var linkHref = $(this).attr('href');        
                var extension = linkHref.substr((linkHref.lastIndexOf('.') +1));
                //Check extensions
                if(jQuery.inArray(extension, options.filesExtensions)!=-1){
                    $modalWindow.jqmShow();            
                    //Form
                    var $form = $(options.form);

                    var checkSubcribe = jQuery('#ns_widget_mailchimp-check-3', $form);
                    $form.submit(function(){
                        //Subcribe doesnt check
                        if(checkSubcribe.is(':checked')==false){
                            window.location.replace(linkHref);
                            return false;
                        }else{
                            var ajax_loader;
                            ajax_loader = jQuery('<div></div>');			
                            ajax_loader.css({
                                'background-image' : 'url(' + options.loader_graphic + ')',
                                'background-position' : 'center center',
                                'background-repeat' : 'no-repeat',
                                'height' : '100%',
                                'left' : '0',
                                'position' : 'absolute',
                                'top' : '0',
                                'width' : '100%',
                                'z-index' : '100'				
                            });
                            $form.css({
                                'height' : '100%',
                                'position' : 'relative',
                                'width' : '100%'
                            });

                            $form.children().hide();
                            $form.append(ajax_loader);
                            jQuery.getJSON(options.url, $form.serialize(), function (data, textStatus){
                                var cookie_date, error_container, new_content;
                                if ('success' === textStatus){
                                    if (true === data.success){
                                        new_content = jQuery('<p>' + data.success_message + '</p>');
                                        new_content.hide();						
                                        $form.fadeTo(400, 0, function () {							
                                            $form.html(new_content);							
                                            new_content.show();							
                                            $form.fadeTo(400, 1);							
                                        });						
                                        if (false !== options.cookie_id) {
                                            cookie_date = new Date();
                                            cookie_date.setTime(cookie_date.getTime() + '3153600000');
                                            document.cookie = options.cookie_id + '=' + options.cookie_value + '; expires=' + cookie_date.toGMTString() + ';';
                                        }
                                        // redirect to file
                                        window.location.replace(linkHref);
                                        return false;
                                    }else{						
                                        error_container = jQuery('.error', $form);
                                        if (0 === error_container.length){													        						
                                            error_container = jQuery('<div class="error"></div>');							
                                            error_container.prependTo(jQuery('.form', $form));							
                                        }
                                        error_container.html(data.error);
                                        $form.children().show();
                                    }					
                                }
                                ajax_loader.remove()
                                return false;				
                            });    
                            return false;	
                            }
                    });    
                    /*Set download link*/
                    $('#downloadLinkModal').attr('href',linkHref);
                }; //Check extensions
            });   
        }else{
            window.location.replace(linkHref);
            return false;    
        }
    };
})(jQuery);

