if(typeof webgalery3 == 'undefined'){
	webgalery3={};
}
webgalery3.WebGalery3 = function(){
    this.lastPointer = null
    this.images = []
    this.instanceName = "instance"
    this.buildNavigation = function(curPointer){
        var onSet = webgalery3.config.rows * webgalery3.config.cols
        var pagesNr = Math.ceil(this.images.length / onSet)
        var prevPointer = curPointer - onSet
        var nextPointer = curPointer + onSet
        var s = "<div"
        if (!webgalery3.config.multiple) {
            s += " id='WebGalery3Navigation'"
        }
        s += " class='WebGalery3Navigation'"
        s += ">"
        var itemsMax2 = Math.floor(webgalery3.config.pager.itemsMax / 2)
        var lowerLimit = curPointer / onSet - itemsMax2
        var upperLimit = curPointer / onSet + itemsMax2
        // table LeftItem
        s += "<table class='WebGaleryArrowTable' align='center'><tr class='WebGaleryArrowTableRow'><td class='WebGaleryArrowTableRowDivLeft'>"
        if (lowerLimit >= 0 && pagesNr > webgalery3.config.pager.itemsMax) {
            s += "<a href='javascript:webgalery3." + this.instanceName + ".buildSet(0)' class='WebGalery3Arrow WebGalery3ArrowLowerLimit'> &lt;&lt; &#160;</a>"
        }
        if (prevPointer > -1) {
            s += "<a href='javascript:webgalery3." + this.instanceName + ".buildSet(" + prevPointer + ")' class='WebGalery3Arrow'> &lt; </a>"
        }
        else {
            s += "<a class='WebGalery3Arrow' style='visibility:hidden'> &lt; </a>"
        }
        // table MiddleItem
        s += "</td><td class='WebGaleryArrowTableRowDivCenter'>"
        var isUpperSign = false
        // allwaysShowNumbers - pokazuj numerację galerii
        if (pagesNr > 1 || webgalery3.config.allwaysShowNumbers) {
            for (var i = 0; i < pagesNr; i++) {
                var pointer = i * onSet
                var curClass = pointer != curPointer ? "WebGalery3navigationA" : "WebGalery3navigationA WebGalery3navigationACurrent";

                if (i == lowerLimit || i == upperLimit) {
                    s += '...'
                    isUpperSign = i == upperLimit
                }
                else
                    if (i > lowerLimit && i < upperLimit) {
                        s += "<a href='javascript:webgalery3." + this.instanceName + ".buildSet(" + pointer + ")' class='" + curClass + "'>" + (i + 1) + "</a>"
                    }
            }
        }
        // table RightItem
        s += "</td><td class='WebGaleryArrowTableRowDivRight'>"

        if (nextPointer < (this.images.length)) {
            s += "<a href='javascript:webgalery3." + this.instanceName + ".buildSet(" + nextPointer + ")' class='WebGalery3Arrow'> &gt; </a>"
        }
        else {
            s += "<a class='WebGalery3Arrow' style='visibility:hidden'> &gt; </a>"

        }
        if (isUpperSign && pagesNr > webgalery3.config.pager.itemsMax) {
            s += "<a href='javascript:webgalery3." + this.instanceName + ".buildSet(" + ((pagesNr - 1) * onSet) + ")' class='WebGalery3Arrow WebGalery3ArrowUpperLimit'>&#160; &gt;&gt; </a>"
        }
        // table end
        s += "</td></tr></table>"
        s += "</div>"
        return s
    }
    /**
     * @param {Number} pointer Wskazuje index obrazka
     */
    this.buildSet = function(pointer){
        if (pointer == this.lastPointer) {
            return
        }
        this.lastPointer = pointer
        var blankImage = "&#160;";
        if (typeof webgalery3.config.blankImagePath == "string") {
            blankImage = "<img src='" + webgalery3.config.blankImagePath + "' class='" + webgalery3.config.blankImageClass + "' alt='' />"
        }
        var sTitle = ""
        if (webgalery3.config.title != undefined && webgalery3.config.title.length > 1) {
            sTitle += "<tr>"
            sTitle += "<td class='WebGalery3Title' colspan='" + webgalery3.config.cols + "'>"
            sTitle += webgalery3.config.title
            sTitle += "</td>"
            sTitle += "</tr>"
        }
        var s = "<table"
        if (!webgalery3.config.multiple) {
            s += " id='WebGalery3Table'"
        }
        s += " class='WebGalery3Table'"
        s += ">"
        if (sTitle != "" && webgalery3.config.title_attach == "before") {
            s += sTitle
        }
        var sizePart = ""
        if (webgalery3.config.miniature_width) {
            sizePart = "-conf" + webgalery3.config.miniature_width + "x" + webgalery3.config.miniature_height
        }
        var ids = []
        for (var i = 0; i < webgalery3.config.rows; i++) {
            s += "<tr>"
            for (var j = 0; j < webgalery3.config.cols; j++) {
                if (this.images[pointer]) {
                    var imEl = this.images[pointer]
                    imEl[0] = imEl[0].replace(new RegExp(sizePart), "")
                    imEl[0] = imEl[0].replace(/_m\.jpg/g, sizePart + '_m.jpg')
                    imEl[0] = imEl[0].replace(/_m\.png/g, sizePart + '_m.png')//TODO
                    s += "<td class='WebGalery3TD WebGalery3TDCol" + j + "'>"
                  var titStr=imEl[2]
				   if(imEl[2].indexOf("_extended_") > -1){
				   	var p=imEl[2].split("_extended_")
					titStr=p[0]
				   }
				    if (imEl[2].indexOf("config|") > -1) {
                        //format podpisu config|link|target|podpis
                        var confParts = imEl[2].split("|")
                        s += "<a href='" + confParts[1] + "' target='" + confParts[2] + "'>"
                       titStr= imEl[2] = confParts[3];
                    }
                    else {
                        s += "<a href='" + imEl[1] + "' onclick='OverPageBrowser.instance.showGaleryImage(" + pointer + ",false,undefined," + (webgalery3.config.multiple ? '"' + this.instanceName + '"' : 'undefined') + ");return false'>"
                    }
                    var imgId = "WG3Mini" + this.instanceName + pointer
                    ids.push(imgId)
                    s += "<img id='" + imgId + "' src='" + imEl[0] + "' alt='" + titStr + "' title='" + titStr + "' class='WebGalery3Image'/>"
                    s += ""
                    s += "<div class='WebGalery3Description'>"
                    s += titStr
                    s += "</div>"
                    s += "</td>"
                }
                else {
                    s += "<td class='WebGalery3TD WebGalery3TDCol" + j + "'>" + blankImage + "</td>"
                }
                pointer++
            }
            s += "</tr>"
            if (!this.images[pointer] && !webgalery3.config.allRows) {
                break;
            }
        }
        if (sTitle != "" && webgalery3.config.title_attach == "after") {
            s += sTitle
        }
        s += "</table>"

        var requiredNavigation = this.images.length > (webgalery3.config.rows * webgalery3.config.cols)
        if (requiredNavigation || webgalery3.config.navigationAlways) {
            var s2 = this.buildNavigation(this.lastPointer);
            if (webgalery3.config.pager.position == "after") {
                s = s + s2;
            }
            else
                if (webgalery3.config.pager.position == "before") {
                    s = s2 + s;
                }
        }//console.log(s)
        var contId = webgalery3.config.multiple ? "WebGalery3Container" + this.instanceName : "WebGalery3Container"
        $("#" + contId).html(s)
        if (webgalery3.config.showTooltips) {
            for (var k = 0; k < ids.length; k++) {
                $("#" + ids[k]).tooltip({
                    track: true,
                    delay: 0,
                    showURL: false
                })
            }
        }
        if (OverPageBrowser.config.fixFlvMiniatures) {
            OverPageBrowser.instance.fixFlvMiniatures()
        }
    }
    /**
     * [miniature_url, image_url, title]
     * @param {int} index
     */
    this.getImageRecord = function(index){
        return this.images[index]
    }
    this.buildDOM = function(id){
		//test czy jest kolekcja obrazków
        var els = $("#" + id + " > a")
        for (var i = 0; i < els.length; i++) {
            var el = els[i]
            this.images.push([el.firstChild.src, el.href, el.firstChild.alt])
        }
    }
    this.startOne = function(instanceName){
        this.instanceName = instanceName
        webgalery3[this.instanceName] = this
        this.buildDOM("WebGalery3Images" + instanceName)
        this.buildSet(0)
    }
    /**
     * Constructor
     */
    this.WebGalery3 = function(){
		var container=document.getElementById('WebGalery3Container')

			if (webgalery3.config.flashUI) {
				webgalery3.instance = this
				if (container) {
					this.buildDOM("WebGalery3Images")
					webgalery3.flashAdapter = new webgalery3.WebGalery3FlashAdapter()
					webgalery3.flashAdapter.buildUI()
				}
			}
			else
				if (!webgalery3.config.multiple) {
					webgalery3.instance = this
					if (container) {
						this.buildDOM("WebGalery3Images")
						this.buildSet(0)
					}
				}
    }
    this.WebGalery3()
}
onLoadQueue.appendOnLoad(webgalery3.WebGalery3)
