﻿ImageGallery = function(parent) {
	
	/* Global variables */
	this.parentObj = parent;
	this.container = null;
	this.imageGallery = null;
	this.imageList = [];
	this.ajax = null;
	this.currentImgP = 0;
	this.totalImgP = 0;
	
	/* Customisation variables */
	this.bigImgW = 490;
	this.bigImgH = 490;
	this.previewW = 135;
	this.previewH = 135;
	
	/* Cached objects */
	this.cbigImage = null;
	this.cimageName = null;
	this.cimageList = null;
	
	/* Initialisation */
	this.setup();
};

ImageGallery.prototype = {
	setup: function() {
		this.container = this.parentObj.cpContent;
	},
	
	build: function(url) {
		this.getData(url);
		this.createDom();
		//this.setListeners();
	},
	
	grabImages: function(html) {
		var parent = this;
		var dummy = $("<div>").addClass("pig-grabber").css({
			"top": "-10000px",
			"position": "absolute"
		}).html(html).appendTo("body");
		
		$("div.pig-grabber img").each(function() {
			var el = $(this);
			parent.imageList.push({
				img: el.attr("src")
			});
		});
		
		dummy.remove();
	},
	
	getData: function(url) {
		var parent = this;
		if(this.ajax) {
			this.ajax.abort();
		}
		
		var dummyArr = url.split("?");
		url = "/galleryjson?"+dummyArr[dummyArr.length-1];
		if (dummyArr[dummyArr.length-2] == '/resize') {
			dummyArr2 = dummyArr[dummyArr.length-1].split('&');
			url = "/galleryjson?categoryID="+dummyArr2[dummyArr2.length-1];
		}
		this.ajax = $.getJSON(url, function(request) {
			parent.imageList = request;
			parent.createGallery();
		});
	},
	
	createDom: function() {
		this.container.empty();
		this.imageGallery = $("<div>").addClass("p-dimensions").css({
			"width": "500px"
		}).html('<div class="pig-gallery">'+
			'<div class="pig-big-img">'+
				'<div class="pig-placeholder">'+
					'<div class="pig-img">'+
						'<img id="pig-img" src="" alt="" />'+
					'</div>'+
					'<p id="pig-img-name">нет названия</p>'+
				'</div>'+
			'</div>'+
			'<div class="pig-image-list">'+
				'<div class="pig-indent">'+
					'<div class="pig-overflow">'+
						'<div id="pig-img-list" class="pig-slider"></div>'+
					'</div>'+
				'</div>'+
				'<div onclick="Previewbox.cimageGallery.prev();" class="pig-left"></div>'+
				'<div onclick="Previewbox.cimageGallery.next();" class="pig-right"></div>'+
			'</div>'+
		'</div>').appendTo(this.container);
		
		this.cbigImage = $("#pig-img");
		this.cimageName = $("#pig-img-name");
		this.cimageList = $("#pig-img-list");
	},
	
	setListeners: function() {
		var parent = this;
		$("div.pig-left").click(function() {
			parent.prev();
		});
		$("div.pig-right").click(function() {
			parent.next();
		});
	},
	
	createGallery: function() {
		var parent = this;
		parent.cimageList.html("");
		
		$(this.imageList).each(function() {
			parent.cimageList.html(parent.cimageList.html()+'<div class="pig-item">'+
				'<div class="pig-placeholder">'+
					'<div class="pig-img">'+
						'<a onclick="Previewbox.cimageGallery.onClick(this);"><img src="'+this.src+'&w='+parent.previewW+'&h='+parent.previewH+'" alt="" title="'+this.title+'" /></a>'+
					'</div>'+
				'</div>'+
			'</div>');
		});
		var fItem = $("#pig-img-list a")[0];
		this.totalImgP = Math.round($(this.imageList).length/Math.round(this.cimageList.parent().width()/$("#pig-img-list div.pig-item").width()));
		if(this.totalImgP < 2) {
			$("div.pig-left, div.pig-right").hide();
		} else {
			$("div.pig-left").hide();
		}
		
		this.parentObj.setSize(".previewbox .p-content .p-dimensions", function(obj) {
			obj.onClick(fItem);
		}, this);
	},
	
	next: function() {
		var parent = this;
		if(this.currentImgP != this.totalImgP-1) {
			this.currentImgP++;
			this.cimageList.animate({
				"marginLeft": -(parent.currentImgP*parent.cimageList.parent().width())+"px"
			}, "slow", function() {
				
			});
		}
		if(this.currentImgP == this.totalImgP-1) {
			$("div.pig-left").show();
			$("div.pig-right").hide();
		} else {
			$("div.pig-left, div.pig-right").show();
		}
	},
	
	prev: function() {
		var parent = this;
		if(this.currentImgP != 0) {
			this.currentImgP--;
			this.cimageList.animate({
				"marginLeft": -(parent.currentImgP*parent.cimageList.parent().width())+"px"
			}, "slow", function() {
				
			});
		}
		if(this.currentImgP == 0) {
			$("div.pig-left").hide();
			$("div.pig-right").show();
		} else {
			$("div.pig-left, div.pig-right").show();
		}
	},
	
	onClick: function(domEl) {
		var el = $(domEl.childNodes[0]);
		var dummyArr = el.attr("src").split("&");
		
		this.cbigImage.attr("src", dummyArr[dummyArr.length-3]+"&w="+this.bigImgW+"&h="+this.bigImgW);
		this.cimageName.html(el.attr("title"));
	}
};
