// DETECTS IF MAIN OBJ APP EXISTS, NAMESPACE THE APP CODE
if (!PT_JCDECAUX) var PT_JCDECAUX = {};
else if (PT_JCDECAUX && typeof (PT_JCDECAUX) != "object")
    throw new Error("PT_JCDECAUX is not an Object type");

// APPLICATION MAIN INIT - DOUGLAS COCKFORD POWER PATTERN
PT_JCDECAUX.Main = (function () {
    // PRIVATE ATTRIBUTES. ONLY PRIVELEGED METHODS MAY VIEW/EDIT/INVOKE

    // PRIVATE MEMBERS. ONLY PRIVELEGED METHODS MAY VIEW/EDIT/INVOKE.

    //RETURN OBJECT LITERAL.
    return {
        //PUBLIC ATTRIBUTES ANYONE MAY READ/WRITE.
        NAME: "Application initialize module",
        VERSION: 1.0,

        // PUBLIC MEMBERS ANYONE MAY READ/WRITE. (MAY BE OVERRIDEN).
        // PUBLIC METHOD THAT INITIALIZES MAIN APP.
        init: function () {



            this.initTabs(); 	// INIT GENERIC TABS.	
            this.initScroll(); 	// INIT GENERIC SCROLL PANE.
            this.menuTree(); 	// INIT MENU TREE.
            this.initFancyboxImg(); 	// INIT MENU TREE.
            this.initFancybox(); // INIT FANCYBOXVIDEO.
            this.customPagination('div.contentSearch', 6);
            this.customPagination('div.contentHuman', 3);
            this.customPagination('div.contentNews', 3);
            //this.customPagination('div.contentHuman',3);
            this.inputfileStyle();
            this.selectInit();
            this.initAlternate('table');
            this.initFancyboxImgGallery();
            this.initFancyboxVidGallery();

        },


        // INIT FANCYBOX WITH IMAGE GALLERY
        initFancyboxImgGallery: function () {
            if (!$('a[rel=example_group_img]').length) { return; }

            $("a[rel=example_group_img]").fancybox({
                'transitionIn': 'none',
                'transitionOut': 'none',
                'titlePosition': 'over',
                'titleFormat': function (title, currentArray, currentIndex, currentOpts) {
                    return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + ' ' + title + '</span>';
                }
            });
        },
        // INIT FANCYBOX WITH VIDEO GALLERY
        initFancyboxVidGallery: function () {
            if (!$('a[rel=example_group_vid]').length) { return; }

            $("a[rel=example_group_vid]").each(function () {
                var href = $(this).attr('href'),
					newHref = href.replace(new RegExp("watch\\?v=", "i"), 'v/');

                $(this).fancybox({
                    'padding': 0,
                    'autoScale': false,
                    'transitionIn': 'none',
                    'transitionOut': 'none',
                    'title': this.title,
                    'href': newHref,
                    'type': 'swf',
                    'swf': { 'wmode': 'transparent', 'allowfullscreen': 'true' },
                    'titleFormat': function (title, currentArray, currentIndex, currentOpts) {
                        return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + ' ' + title + '</span>';
                    }
                });
            });
        },


        // METHOD THAT INITIALIZES GENERIC TABS.

        initTabs: function () {

            if (!$('#example_1').length) { return false; }
            $('#example_1').tabs()
							.scrollabletab().find(".stWidthChecker").sortable({axis: "x"});;
        },



        // METHOD THAT ADDS ODD EVEN CLASS TO TABLE TR
        initAlternate: function alternate(el) {
            if (!$(el).length) { return false; }
            var elTable = $("table");

            elTable.find('tr:not(:has(th)):even').addClass('even');
            elTable.find('tr:not(:has(th)):odd').addClass('odd');

        },



        // METHOD THAT INITIALIZES GENERIC SCROLL PANE.
        initScroll: function () {

            if (!$('.scroll-pane').length) { return false; }

            $('.scroll-pane').jScrollPane();
        },


        // METHOD THAT INITIALIZES LATERAL MENU TREE
        /*menuTree : function (){
			
        if( !$('div.treeMenu').length ) { return false; }
			
        var elTreeWrapper 	= $('div.treeMenu'),
        elTreeMenu 		= elTreeWrapper.find('ul.listTreeMenu');	
			
        elTreeMenu.treeview({
        animated: "slow",
        collapsed: true,
        unique: true
        });
			
        },*/

        menuTree: function () {
            if (!$('div.treeMenu').length) { return; }

            var elTreeWrapper = $('div.treeMenu'),
				elTreeMenu = elTreeWrapper.find('ul.listTreeMenu');

            elTreeMenu.dcAccordion({
                eventType: 'click',
                classActive: 'active',
                autoClose: true,
                saveState: false,
                disableLink: false,
                menuClose: true,
                showCount: false,
                hoverDelay: 100,
                speed: 'slow'
            });

            elTreeMenu.find('li').filter(":last-child:not(ul)").addClass('last');

            elTreeMenu.find('a.noLink').bind('click', function (e) {
                e.preventDefault();
                e.stopPropagation();
            });
        },

        //METHOD THAT INITS SEARCH PAGINATION.
        customPagination: function (elResultsWrapper, iItemsPage) {

            if (!$(elResultsWrapper).length) { return false; }

            var elSearchWrapper = $(elResultsWrapper),
				elSearchResults = elSearchWrapper.find('div > ul'),
				elPaginator = elSearchWrapper.find('div.paginationWrapper'),
				elTotalItems = elSearchResults.find('> li'),
				iTotalPages = elTotalItems.length,
				iItemsPerPage = iItemsPage,
				sTextPagination = 'P&aacute;g';

            // ONLY EXECUTE PAGINATION IF THERE ARE ITEMS
            if (iTotalPages > iItemsPerPage) {

                elPaginator.aqPaging(
					{
					    current: 1,
					    pages: iTotalPages,
					    pagerMax: 3,
					    flip: true,
					    style: 4,
					    itemsPerPage: iItemsPerPage,
					    objToPaginate: elSearchResults,
					    textPagination: sTextPagination,
					    cb: function (p) {
					        window.setTimeout(function () {
					            fnSearchCallback(p);
					        }, 100);

					    }
					}
				);

            } else {

                fnSearchCallback();

            }

            // FUNCTION CALLBACK TO DISPLAY PAGE NUMBERS
            function fnSearchCallback(param) {

                var elDisplayPages = elSearchWrapper.find('.pageNumbers'),
					elCurrentItem = elDisplayPages.find('#currentItem'),
					elLastItem = elDisplayPages.find('#lastItem'),
					elTotalItems = elDisplayPages.find('#totalItems'),
					iCurrent = param || 1,
					iVisible = $('ul.results li:visible').length;

                if (iCurrent == 1) {
                    iCurrent = 1;
                } else {
                    iCurrent = ((iCurrent * iItemsPerPage) - iItemsPerPage) + 1;
                }

                var iLastItem = (iCurrent + iVisible) - 1;

                elCurrentItem.html(iCurrent);
                elLastItem.html(iLastItem);
                elTotalItems.html(iTotalPages);
            }

        },

        initFancyboxImg: function () {

            if (!$('.imageLink ').length) { return; }

            $(".imageLink").fancybox({
                /*'width' : 480,
                'height' : 340,*/
                'cyclic': true,
                'autoScale': false,
                'transitionIn': 'none',
                'transitionOut': 'none',
                'type': 'image',
                'autoDimensions': false
            });
        },

        initFancybox: function () {
            if (!$('.videoLink').length) { return; }

            $(".videoLink").fancybox({
                'width': 480,
                'height': 340,
                'autoScale': false,
                'transitionIn': 'none',
                'transitionOut': 'none',
                'type': 'iframe'
            });
        },
        inputfileStyle: function () {
            if (!$('.btnBrowser').length) { return false; }

            $("input.btnBrowser").filestyle({
                image: "/images/choose-file.gif",
                imageheight: 25,
                imagewidth: 83,
                width: 100
            });

        },
        selectInit: function () {

            if (!$('.subject').length) { return false; }

            $("#create").click(function () {
                $("SELECT").selectBox();
            });

            $("#destroy").click(function () {
                $("SELECT").selectBox('destroy');
            });

            $("#enable").click(function () {
                $("SELECT").selectBox('enable');
            });

            $("#disable").click(function () {
                $("SELECT").selectBox('disable');
            });

            $("#serialize").click(function () {
                $("#console").append('<br />-- Serialized data --<br />' + $("FORM").serialize().replace(/&/g, '<br />') + '<br /><br />');
                $("#console")[0].scrollTop = $("#console")[0].scrollHeight;
            });

            $("#value-1").click(function () {
                $("SELECT").selectBox('value', 1);
            });

            $("#value-2").click(function () {
                $("SELECT").selectBox('value', 2);
            });

            $("#value-2-4").click(function () {
                $("SELECT").selectBox('value', [2, 4]);
            });

            $("#options").click(function () {
                $("SELECT").selectBox('options', {

                    'Opt Group 1': {
                        '1': 'Value 1',
                        '2': 'Value 2',
                        '3': 'Value 3',
                        '4': 'Value 4',
                        '5': 'Value 5'
                    },
                    'Opt Group 2': {
                        '6': 'Value 6',
                        '7': 'Value 7',
                        '8': 'Value 8',
                        '9': 'Value 9',
                        '10': 'Value 10'
                    },
                    'Opt Group 3': {
                        '11': 'Value 11',
                        '12': 'Value 12',
                        '13': 'Value 13',
                        '14': 'Value 14',
                        '15': 'Value 15'
                    }

                });
            });

            $("#default").click(function () {
                $("SELECT").selectBox('settings', {
                    'menuTransition': 'default',
                    'menuSpeed': 0
                });
            });

            $("#fade").click(function () {
                $("SELECT").selectBox('settings', {
                    'menuTransition': 'fade',
                    'menuSpeed': 'fast'
                });
            });

            $("#slide").click(function () {
                $("SELECT").selectBox('settings', {
                    'menuTransition': 'slide',
                    'menuSpeed': 'fast'
                });
            });


            $("SELECT")
					.selectBox()
					.focus(function () {
					    $("#console").append('Focus on ' + $(this).attr('name') + '<br />');
					    $("#console")[0].scrollTop = $("#console")[0].scrollHeight;
					})
					.blur(function () {
					    $("#console").append('Blur on ' + $(this).attr('name') + '<br />');
					    $("#console")[0].scrollTop = $("#console")[0].scrollHeight;
					})
					.change(function () {
					    $("#console").append('Change on ' + $(this).attr('name') + ': ' + $(this).val() + '<br />');
					    $("#console")[0].scrollTop = $("#console")[0].scrollHeight;
					});


        }

    }
})();  // THIS PARENS CAUSES IMMEDIATE INITIALIZATION OF THE MODULE

// ON DOM READY INIT APPLICATION.
$(document).ready(function () {
    PT_JCDECAUX.Main.init();
    var $window = $(window);
    var windowHeight = $window.height();
    var target = 940;
    if (windowHeight > 940) {
        target = windowHeight;
    }
    $('body').css({ 'background-size': 'auto '+target+'px' });
});




