/* 	
	created by: Wes P
	created on: 9/18/2008
*/

(function($){

	$.fn.myGal = function(width, padding, speed) {
		return this.each(function() {
			new $mg(this, width, padding, speed);
		});
	}
	
	$.myGal = function(e, width, padding, speed) {
	
		this.container = $(e);
		this.containerWidth = width;
		this.containerPad = padding;
		this.rotateSpeed = speed;
		
		this.canAnimate = true;
		
		this.digi_img_count = $(".digi_image img", this.container).length;
		//this.digi_restraint_width = $(".digi_gallery", this.container).css("width").split("px")[0];
		
		this.digi_restraint_width = $(".digi_gallery", this.container).css("width").split("px")[0];
		this.digi_container_width = this.container.css("width").split("px")[0];
		
		// -----------------------------------------
		// not needed for non-podium implementations
		var totalMod = 0;
		var thisID = e.id.split("_")[2];
		thisID = "#cb" + thisID;
		
		totalMod += calculateMod(thisID + ".pch");
		totalMod += calculateMod(thisID + " .pch2");
		totalMod += calculateMod(thisID + " .pch3");
		totalMod += calculateMod(thisID + " .pch4");
		
		totalMod += calculateMod(thisID + ".pchb");
		totalMod += calculateMod(thisID + " .pchb2");
		totalMod += calculateMod(thisID + " .pchb3");
		totalMod += calculateMod(thisID + " .pchb4");
		
		this.digi_restraint_width -= totalMod;
		this.digi_container_width -= totalMod;
		
		$(".digi_gallery", this.container).css("width",this.digi_restraint_width + "px");
		this.container.css("width",this.digi_container_width + "px");
		// -----------------------------------------
		
		this.digi_gal_width = 0;
		this.show_photos = (this.digi_restraint_width / this.containerWidth) | 0;

		var tmp_width = (this.containerPad + this.containerWidth) * this.show_photos
		
		if(tmp_width > this.digi_restraint_width) {
			this.show_photos--;
			tmp_width = (this.containerPad + this.containerWidth) * this.show_photos
		}
		
		var add_margin = ((this.digi_restraint_width - tmp_width) / (this.show_photos * 2) );
		
		var new_margin = (add_margin*1) + (this.containerPad/2);
		
		
		$(".digi_image", this.container).css("margin-left", new_margin + "px").css("margin-right", new_margin + "px");
		
		this.containerPad += (add_margin * 2);
		
		this.digi_gal_width += (this.containerWidth + this.containerPad) * this.digi_img_count;
		if(this.digi_gal_width % 2 != 0) this.digi_gal_width++;
		$(".digi_container", this.container).css("width", this.digi_gal_width + "px");
		
		var self = this;
		
		this.next = function() {
			if(self.canAnimate) {
				self.blockAnimation();
				var curLeft = $(".digi_container", self.container).css("left").split("px")[0];
				var newLeft = (curLeft*1) - (self.containerPad + self.containerWidth) * self.show_photos;
			
				if (newLeft < ((self.digi_gal_width - (self.containerPad + self.containerWidth) * self.show_photos)) * -1) {
					newLeft = ((self.digi_gal_width - (self.containerPad + self.containerWidth) * self.show_photos)) * -1;
				}
				
				$(".digi_container", self.container).animate({
					left: newLeft + "px"
				}, self.rotateSpeed, self.unblockAnimation);
			}
		}
		
		this.back = function() {
			if(self.canAnimate) {
				self.blockAnimation();
				var curLeft = $(".digi_container", self.container).css("left").split("px")[0];
				
				var newLeft = (curLeft*1) + (self.containerPad + self.containerWidth) * self.show_photos;
				if(newLeft > 0) newLeft = 0;
				
				$(".digi_container", self.container).animate({
					left: newLeft + "px"
				}, self.rotateSpeed, self.unblockAnimation);
			}
		}
		
		this.blockAnimation = function() {
			self.canAnimate = false;
		}
		
		this.unblockAnimation = function() {
			self.canAnimate = true;
		}
		
		$(".digi_next", this.container).click(this.next);
		$(".digi_previous", this.container).click(this.back);

	}
	
	var $mg = $.myGal;
	
	function calculateMod(subClass) {
		
		leftMargin = $(subClass).css("margin-left");
		leftMargin = leftMargin != undefined ? leftMargin.split("px")[0] : 0;
		rightMargin = $(subClass).css("margin-right")
		rightMargin = rightMargin != undefined ? rightMargin.split("px")[0] : 0;
		
		if(leftMargin == "auto") leftMargin = 0;
		if(rightMargin == "auto") rightMargin = 0;
		
		
		leftPadding = $(subClass).css("padding-left");
		leftPadding = leftPadding != undefined ? leftPadding.split("px")[0] : 0;
		rightPadding = $(subClass).css("padding-right");
		rightPadding = rightPadding != undefined ? rightPadding.split("px")[0] : 0;
		
		if(leftPadding == "auto") leftPadding = 0;
		if(rightPadding == "auto") rightPadding = 0;
	
		return leftMargin*1 + rightMargin*1 + leftPadding*1 + rightPadding*1;
	}
	
})(jQuery);