﻿/// <reference path="jquery-1.3.1.js" />

(function($) {
    $.fn.DaRoter = function(options) {

        var settings = $.extend({}, $.fn.DaRoter.defaults, options);
        var globals = $.fn.DaRoter.globals;

        var ui = {};
        var pager = {};

        LoadThumbnails();

         function LoadThumbnails() {
             var qsData = {};
             qsData.link = settings.ajaxUrl;
				 
			var eventData = {};
			eventData.link = settings.xmlEventsUrl;
					
	  		    jQuery.ajax({
                type: "GET",
			    url: "getxml.aspx",
				async: false,
                data: eventData,                
                dataType: "xml",
                success: function(xml) {
                var $pageBox = jQuery('<ul class="drThumbPage"></ul>');
                    var i = 0;
                    jQuery("event", xml).each(function(index) {
				        if (i != 0)
						{							
                            var $thumb = jQuery('<li></li>');
                            var $this = jQuery(this);
                            var photosrc = $this.find('object').text();
                            var req = new RegExp('_\\d{3}.', 'gi');
									
							photosrc = photosrc.substring(photosrc.indexOf("/_cms"));
							var thumbsrc = settings.resizerPath + "?img=" + photosrc + "&w=" + settings.thumbSize;
							photosrc = settings.resizerPath + "?img=" + photosrc + "&w=" + settings.photoSize;				
							
							$thumb.append("<div class=\"photo\" style=\"background:url('"+ thumbsrc +"') no-repeat center center;\"> </div>");
							
                            $thumb.data("link", $this.find('url').text());
                            $thumb.data("title", $this.find('what').eq(0).attr("title"));
                            $thumb.data("desc", $this.find('what').text());
                            $thumb.data("pubDate", "2009-04-29 14:00:00");
                            $thumb.data("photosrc", photosrc);
                            $pageBox.append($thumb);

							globals.tempThumbs = $pageBox.html();
							globals.tempPhotoCount = parseInt(globals.tempPhotoCount) + parseInt(1);

							if (settings.photosInList == globals.tempPhotoCount || index +1  == jQuery("event", xml).size()) {
                                jQuery("#drThumbPages").append($pageBox);
                                $pageBox = jQuery('<ul class="drThumbPage" style="top:73px"></ul>');
                                globals.tempPhotoCount = 0;
                            }
                        }
                        i = parseInt(1) + parseInt(i);

                    });
                },
                error: function() {
                    debug("ajax error", this.msg);
                },
                complete: function() {
                     BindScene();
                     BindPager();
                     pager.$pages.find('li').eq(0).trigger('click');
                     startInterval(settings.interval);
               }
            });
			

            // jQuery.ajax({
                // type: "GET",
                // url: "getxml.aspx",
                // async: false,
                // data: qsData,
                // dataType: "xml",
                // success: function(xml) {
						// var $pageBox;
								
						// var lastUl = jQuery("#drThumbPages").children('ul').eq(jQuery("#drThumbPages").children('ul').length -1)
						
						// globals.tempPhotoCount = lastUl.children('li').length;
						
						// $pageBox = lastUl;
						// jQuery("item", xml).each(function(index) {
						
                        // var $thumb = jQuery("<li></li>");
                        // var $this = jQuery(this);

                        // if ($.browser.safari || $.browser.opera) {
                            // var photosrc = $this.find('content').eq(0).attr("url");
                        // }
                        // else {
                            // var photosrc = $this.find('media\\:content').eq(0).attr("url");
                        // }
                        // photosrc = photosrc.substring(photosrc.indexOf("/_files"));
                        // var thumbsrc = settings.resizerPath + "?img=" + photosrc + "&w=" + settings.thumbSize;
                        // photosrc = settings.resizerPath + "?img=" + photosrc + "&w=" + settings.photoSize;

                        // $thumb.append("<div class=\"photo\" style=\"background:url('"+ thumbsrc +"') no-repeat center center;\"> </div>");

                        // $thumb.data("link", $this.find('link').text());
                        // $thumb.data("title", $this.find('title').text());
                        // $thumb.data("desc", $this.find('description').text());
                        // $thumb.data("pubDate", $this.find('pubDate').text());
                        // $thumb.data("photosrc", photosrc);
	
                        // $pageBox.append($thumb);
											
                        // globals.tempPhotoCount++;
                        // if (settings.photosInList == globals.tempPhotoCount || index + 1 == jQuery("item", xml).size()) {
                            // jQuery("#drThumbPages").append($pageBox);
                            // $pageBox = jQuery('<ul class="drThumbPage" style="top:100px"></ul>');
                            // globals.tempPhotoCount = 0;
                        // }
                    // });
                // },
                // error: function() {
                    // debug("ajax error", this.msg);
                // },
                // complete: function() {
                    // BindScene();
                    // BindPager();
                    // pager.$pages.find('li').eq(0).trigger('click');
                    // startInterval(settings.interval);
                // }
            // });
         }



        function BindPager() {
            pager.$pages = jQuery("#drThumbPages .drThumbPage");
            pager.$pageUp = jQuery("#drPageDown");
            pager.$pageDown = jQuery("#drPageUp");
            pager.PageCount = pager.$pages.size();
            pager.CurrentPage = 0;
            pager.height = jQuery("#drThumbPages").height();

            pager.$pages.find('li').bind('click', function(e) {
                var $this = jQuery(this);
                ShowPhoto($this);
                SetThisThumbActive($this);
                stopInterval();
                return false;
            });

            pager.$pageUp.bind('click', PageUpClick)
            pager.$pageDown.bind('click', PageDownClick)
        }


        function BindScene() {
            ui.$scene = jQuery("#drScene");
            ui.$photo = ui.$scene.find("#drPhotoWrapper");
            ui.$title = ui.$scene.find("#drArticleTitle");
            ui.$date = ui.$scene.find("#drArticleDate");
            ui.$lead = ui.$scene.find("#drArticleLead");
            ui.$link = ui.$scene.find("#drArticleLink");
            ui.$loader = ui.$scene.find("#drViewLoader");
        }


        function ShowPhoto($thumb) {

            var imgsrc = $thumb.data("photosrc");
            var $img = jQuery('<img/>');

            ui.$loader.css("margin", ((ui.$scene.height() - ui.$loader.height()) / 2) + "px auto 0").show();


            $img.load(function() {
                ui.$scene.fadeOut(100, function() {
                    ui.$loader.hide();
                    ui.$photo.find("img").remove();
                    ui.$photo.append($img);
                    ui.$title.text($thumb.data("title"));
                    //ui.$date.text($thumb.data("pubDate"));
                    ui.$lead.text($thumb.data("desc"));
                    ui.$link.attr("href", $thumb.data("link"));
                    ui.$scene.fadeIn(100);
                });
            }).attr('src', imgsrc);
        }

        function SetThisThumbActive(clicked) {
            pager.$pages.find('li').removeClass('active');
            clicked.addClass('active');
        }

        function PageUpClick() {
            stopInterval();
            PageUp();
        }

        function PageDownClick() {
            stopInterval();
            PageDown();
        }


        function PageUp() {
            if (pager.PageCount > pager.CurrentPage + 1) {
                pager.$pages.filter(function(index) {
                    return index == pager.CurrentPage || index == pager.CurrentPage + 1;
                }).animate({ "top": "-=" + pager.height + "px" }, { queue: true, duration: 600 });
                pager.CurrentPage++;
            }
            return false;
        }

        function PageDown() {
            if (pager.CurrentPage > 0) {
                pager.$pages.filter(function(index) {
                    return index == pager.CurrentPage || index == pager.CurrentPage - 1;
                }).animate({ "top": "+=" + pager.height + "px" }, { queue: true, duration: 600 });
                pager.CurrentPage--;
            }
            return false;
        }

        function GoToFirstPage() {
            pager.$pages.animate({ "top": pager.height + "px" }, { queue: false, duration: 600 });
            pager.$pages.eq(0).animate({ "top": 0 }, { queue: false, duration: 600 });
            pager.CurrentPage = 0;
        }



        function startInterval(inter) {
            globals.interval = setInterval(NextImage, inter);
        };

        function stopInterval() {
            globals.interval = window.clearInterval(globals.interval)
        }

        function NextImage() {
            var $currentImage = pager.$pages.find('li.active');
            var $nextImage;

            if ($currentImage.next('li').size() > 0) {
                $nextImage = $currentImage.next('li');
            }
            else {
                if (pager.CurrentPage + 1 == pager.PageCount) {
                    GoToFirstPage();
                    $nextImage = pager.$pages.find('li').eq(0);
                }
                else {
                    $nextImage = pager.$pages.find('li.active').parent().next().find("li:first");
                    PageUp();
                }
            }

            ShowPhoto($nextImage);
            SetThisThumbActive($nextImage);

        }

        //end public functions
    };

    function debug(msg, msg2) {
        if (window.console && window.console.log) {
            window.console.log(msg + ' ' + msg2);
        }
    };

    $.fn.DaRoter.defaults = {
        photosInList: 5,
        photoSize: 555,
        thumbSize: 107,
        ajaxUrl: 'http://api.polskieradio.pl/rss.svc/articles/1/section/715/',
		xmlEventsUrl: 'http://www.polskieradio.pl/_cms/xml/lzr_zapowiedzi.xml',
        interval: 1500,
        resizerPath: 'http://www.polskieradio.pl/_controls/resize.aspx'
    };

    $.fn.DaRoter.globals = {
        pageIndex: 1, //index bierzącej strony w pagerze (1 based)
        pages: 1, //ilość stron w pagerze
        classPrefix: 'daGallery',
        interval: 0,
		tempPhotoCount: 0,
		tempThumbs: ''

    };
})(jQuery);