if(typeof webgalery3 == 'undefined'){
	webgalery3={};
}
webgalery3.singletor=null;
webgalery3.WebGalery3 = function(){
    this.lastPointer = null
    this.images = []
    this.instanceName = "instance"
    	/**
		 * Pager
		 */
    this.buildNavigation = function(curPointer){
        var prevPointer = curPointer - this.onSet
        var nextPointer = curPointer + this.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 / this.onSet - itemsMax2
        var upperLimit = curPointer / this.onSet + itemsMax2
        // table LeftItem
        s += "<table class='WebGaleryArrowTable' align='center'><tr class='WebGaleryArrowTableRow'><td class='WebGaleryArrowTableRowDivLeft'>"
        if (lowerLimit >= 0 && this.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 (this.pagesNr > 1 || webgalery3.config.allwaysShowNumbers) {
            for (var i = 0; i < this.pagesNr; i++) {
                var pointer = i * this.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 && this.pagesNr > webgalery3.config.pager.itemsMax) {
            s += "<a href='javascript:webgalery3." + this.instanceName + ".buildSet(" + ((this.pagesNr - 1) * this.onSet) + ")' class='WebGalery3Arrow WebGalery3ArrowUpperLimit'>&#160; &gt;&gt; </a>"
        }
        // table end
        s += "</td></tr></table>"
        s += "</div>"
        return s
    };
    /**
	 * Nawigacja na strzałkach l-p
	 *
	 * @arguments direction string l/r
	 */
    this.buildNavigationLR = function(curPointer,direction){
    	var s="";
    	var prevPointer = curPointer - this.onSet
        var nextPointer = curPointer + this.onSet
    	  if (direction=="l") {
        	if (prevPointer > -1) {
                s += "<a href='javascript:webgalery3." + this.instanceName + ".buildSet(" + prevPointer + ")' class='WebGalery3Arrow left'> <span>&lt;</span> </a>"
            }
            else {
                s += "<a class='WebGalery3Arrow' style='visibility:hidden'> &lt; </a>"
            }
        }else if (direction=="r") {
    		if(nextPointer < (this.images.length)){
    			s += "<a href='javascript:webgalery3." + this.instanceName + ".buildSet(" + nextPointer + ")' class='WebGalery3Arrow right'> <span>&gt;</span> </a>"
    		}else {
                s += "<a class='WebGalery3Arrow' style='visibility:hidden'> &gt; </a>"

            }
        }
    	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 s2l="";
        var s2r="";
        if(webgalery3.config.pager.position == "left_right"){
        	s2l="<table class=\"rlTable\"><tr><td class='lrTD'>"+this.buildNavigationLR(this.lastPointer,"l")+"</td><td class='lrTD'>";
        	s2r="</td><td class='lrTD'>"+this.buildNavigationLR(this.lastPointer,"r")+"</td></tr></table>";
        }
        var s = s2l;
        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];//console.log(imEl);
                    imEl[0] = imEl[0].replace(new RegExp(sizePart), "");//console.log(imEl);
                    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]
                    var isTitle=typeof titStr !="undefined";
                    if(!isTitle){
                    	titStr="";
                    }
				   if(isTitle && imEl[2].indexOf("_extended_") > -1){
				   	var p=imEl[2].split("_extended_")
					titStr=p[0]
				   }
				    if (isTitle && 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 += ""
                    	if(webgalery3.config.descriptionShow){
                    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>";
        s +=s2r;
        var requiredNavigation = this.images.length > (webgalery3.config.rows * webgalery3.config.cols)
        if (requiredNavigation || webgalery3.config.navigationAlways) {
            if(webgalery3.config.pager.position != "left_right"){
        	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]
    }
    /**
	 * Tworzy kolekcje na podstawie html
	 */
    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([$("img",el).attr("src"), el.href, $("img",el).attr("alt")])
        }//console.log(this.images);
        this.onSet = webgalery3.config.rows * webgalery3.config.cols
        this.pagesNr = Math.ceil(this.images.length / this.onSet)
    }
    /**
	 * Dla > 1 na stronie
	 */
    this.startOne = function(instanceName){
        this.instanceName = instanceName;
        webgalery3[this.instanceName] = this
        this.buildDOM("WebGalery3Images" + instanceName)
        this.buildSet(0)
    }
    this.run = 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) {
					$(".WebGalery3Container").each(function(i){
						//console.log(this)
						var ref=new webgalery3.WebGalery3();
						ref.startOne($(this).attr("id").substr("WebGalery3Container".length));
					});
			}else{
				webgalery3.instance = this
				if (container) {
					this.buildDOM("WebGalery3Images")
					this.buildSet(0)
				}
			}
    };
    /**
	 * Constructor
	 */
    this.WebGalery3 = function(){
    	this.run();
    };
    if(webgalery3.singletor==null){
    	webgalery3.singletor=this;
    	this.WebGalery3();
    }

}
onLoadQueue.appendOnLoad(webgalery3.WebGalery3)

