/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
//PARAMS:
//            articleListId : id elementu dom, który zawiera liste artykułów
//            articleContentId : id elementu dom, który zawiera artykuły
//            urlReplaceCode :  Ciąg znaków w url'u, który będzie podmieniany wartością z tagu "tagName" atrybutu "attributeName"
//            urlPattern :  url gdzie znajduje sie artykuł np www.evl.pl/?article_id=^*^    , gdzie ^*^ jest zmienną "urlReplaceCode"
//            tagName :     nazwa tagu, który reprezentuje artykuł
//            attributeName :   nazwa artykułu który będzie zawierał ciąg znaków wstawiany zamiast "urlReplaceCode"
//            linkRemovalPrefix : prefix, który będzie usuwany z attributeName
//            defaultArticle : indeks artykułu, który będzie sie wyświetlał jako pierwszy
//            loadingImagePath: ścieżka do zdjęcia loadingu


(function($) {
    $.extend($.fn, {
        articleChanger: function(options) {

            var params={
                "urlReplaceCode": "^*^",
                "tagName": "a",
                "attributeName" : "id",
                "linkRemovalPrefix": "article_",
                "defaultArticle": 1
                ,"articlePrefix": "content_"
            };

            params = $.extend(params, options);
            //console.log("params" , params);
            this.each(function() {
                
                var $articleList = $("#" + params.articleListId );
                //console.log("$articleList" , $articleList);
                var $articleContent = $("#" + params.articleContentId );
                
                $articleList.find(" "+ params.tagName).each(function(){
                    //console.log("article: " , $(this));
                    var appendDivArticleId = params.articlePrefix + $(this).attr(params.attributeName);
                    var $appendDivArticle = $("<div id="+ appendDivArticleId + " style> <div>").css("display", "none");
                    $appendDivArticle.data("state", 0);
                    $articleContent.append($appendDivArticle);
                    
                    $(this).click(function(){

                        // znajdujemy diva z artykułem
                        var appendDivArticleId = params.articlePrefix + $(this).attr(params.attributeName);
                        var $appendDivArticle = $("#"+ appendDivArticleId );
                        //console.log("$appendDivArticle: " , $appendDivArticle);
                        var divState = $appendDivArticle.data("state");
                        //console.log("divState: " , divState);
                        switch (divState) {
                            case 0:
                                var articleId = $(this).attr(params.attributeName).substring(params.linkRemovalPrefix.length);
                                var articleUrl = params.urlPattern.replace(params.urlReplaceCode,articleId);
                                //console.log("articleUrl: " , articleUrl);
                                $.ajax({
                                    url: articleUrl ,
                                    scriptCharset: "utf-8" ,
                                    type : "POST",
                                    dataType: "html",
                                    success: function(msg){

                                        $appendDivArticle.html(msg);
                                        $appendDivArticle.data("state",2);

                                        $("#" + params.articleContentId + " div[id ^= '"+params.articlePrefix+"']").each(function(){
                                            $(this).css("display", "none");
                                        });

                                        //console.log("displayNONE: " , $("#" + params.articleContentId + " div[id ^= '"+params.articlePrefix+"']"));
                                        $appendDivArticle.css("display", "block");

                                    },
                                    error : function(){
                                        
                                    }
                                });
                                break;
                            case 1:
                                
                                break;
                            case 2:
                                    // dla wszystkich artykółów ustawiamy css na none

                                    $("#" + params.articleContentId + " div[id ^= '"+params.articlePrefix+"']").each(function(){
                                            $(this).css("display", "none");
                                        });
                                    $appendDivArticle.css("display", "block");
                                break;
                            default:
                                break;
                        }

                        // sprawdzamy jego stan
                        //  0 : jeszcze nigdy niewczytany
                        //  1 : wczytuje się
                        //  2 : jest wczytany
                        //      jeżeli 0 to wczytaj artykół
                        //      jeżeli 1 to nie rób nic
                        //      jeżeli 2 to ustaw jego styl na diplay:none
                        
                        return false;
                    });
                });
                
                // dla każdego artykułu dodaj zmienne


            });

            return null;
        }

    });
    

 })(jQuery);
