jQuery(document).ready(function() {
	jQuery.each(jQuery(".fxgallery"), function() {
		var fxobj = jQuery(this);
		//jQuery(fxobj).find(".fxgallery_slider").hide();
		$(fxobj)[0].onselectstart = function () { return false; };
		jQuery(fxobj).find(".fxgallery_images img").hide();//.animate({opacity: 0}, 0);
		jQuery(fxobj).find(".fxgallery_images").append('<div unselectable="on" class="fxgallery_drag_overlay"></div>');
		if ($.browser.mozilla || $.browser.opera) $(document).unbind("keypress", fxsliderKeypress).bind("keypress", fxsliderKeypress);
		else $(document).unbind("keydown", fxsliderKeypress).bind("keydown", fxsliderKeypress);
		
		jQuery(fxobj).mouseenter(function() {
			fxgalleryUpdateObjects(jQuery(this));
			if ($.browser.mozilla || $.browser.opera) {
				$(document).unbind("keypress", fxsliderKeypress).bind("keypress", fxsliderKeypress);
			} else {
				$(document).unbind("keydown", fxsliderKeypress).bind("keydown", fxsliderKeypress);
			}
		}).mouseleave(function() {
			//$(document).unbind("keypress", fxsliderKeypress);
			//$(document).unbind("keydown", fxsliderKeypress);
		});
		
		fxgallery_count = jQuery(fxobj).find(".fxgallery_images img").length;
		var img_counter = 0;
		var maxImgW = 0;
		var maxImgH = 0;
		jQuery.each(jQuery(fxobj).find(".fxgallery_images img"), function() {
			var src = jQuery(this).attr("src")+"?r="+(new Date()).getTime();
			jQuery(this).attr("src", src);
			jQuery(this).load(function() {
				img_counter++;
				var imgW = jQuery(this).width();
				var imgH = jQuery(this).height();
				if (imgW > maxImgW) maxImgW = imgW;
				if (imgH > maxImgH) maxImgH = imgH;
				if(img_counter == fxgallery_count) {
					jQuery(fxobj).find(".fxgallery_images").animate({width: maxImgW, height: maxImgH}, 500);
					jQuery(fxobj).find(".fxgallery_images img:first").animate({opacity: 0}, 0).show().animate({opacity: 1}, 500, function() {
						fxgalleryUpdateObjects(jQuery(".fxgallery:first"));
						jQuery(fxobj).css("background","none");
						jQuery(fxobj).find(".fxgallery_slider").bind("click", fxsliderClick);
						jQuery(fxobj).find(".fxgallery_dragPoint").bind("mousedown", fxsliderStartDrag).bind("mouseenter", fxsliderOver).bind("mouseout", fxsliderOut);
						jQuery(fxobj).find(".fxgallery_images").bind("mousedown", fximagesStartDrag);
					});
				}
			});
		});
		//jQuery(fxobj).find(".fxgallery_images img").load(function() {
	});
});
function fxsliderKeypress(event) {
	switch (event.keyCode) {
		case 37: //prev
			fxsliderUpdateImg(fxgallery_new_id-1);
			break;
		case 39: //next
			fxsliderUpdateImg(fxgallery_new_id+1);
			break;
		default:
			return; 
	}  
}
function fxsliderOver() {
	jQuery(this).addClass("fxgallery_dragPoint_hover");
}
function fxsliderOut() {
	jQuery(this).removeClass("fxgallery_dragPoint_hover");
}
var images_startDragPoint = 0;
function fximagesStartDrag(event) {
	jQuery("body").css("cursor", "ew-resize");
	images_startDragPoint = event.pageX;
	fxgalleryUpdateObjects(jQuery(this));
	jQuery(document).bind("mousemove", fximagesMove).bind("mouseup", fximagesStopDrag);
}
function fximagesStopDrag() {
	jQuery("body").css("cursor", "default");
	jQuery(document).unbind("mousemove", fximagesMove).unbind("mouseup", fximagesStopDrag);
}
function fximagesMove(event) {
	var id = Math.round((images_startDragPoint - event.pageX)/50);
	//jQuery("#log").html(id);
	if(id != 0) {
		images_startDragPoint = event.pageX;
		if (Math.abs(id) != 1) return;
		fxsliderUpdateImg(fxgallery_new_id-id);
	}
}
function fxsliderStartDrag() {
	fxgalleryUpdateObjects(jQuery(this));
	jQuery(dragPoint_obj).addClass("fxgallery_dragPoint_down");//.css("background-position", "0px -52px");
	jQuery("body").css("cursor", "pointer");
	jQuery(document).bind("mousemove", fxsliderMove).bind("mouseup", fxsliderStopDrag);
}
function fxsliderStopDrag() {
	jQuery(dragPoint_obj).removeClass("fxgallery_dragPoint_down");//.css("background-position", "");
	jQuery("body").css("cursor", "default");
	jQuery(document).unbind("mousemove", fxsliderMove).unbind("mouseup", fxsliderStopDrag);
}

var fxgallery_obj = null;
var dragPoint_obj = null;
var slider_obj = null;
var fxgallery_count = 0;
var fxgallery_step = 0;
function fxsliderMove(event) {
	var x = event.pageX;
	//var y = event.pageY;
	var minX = jQuery(slider_obj).offset().left;
	var maxX = minX + jQuery(slider_obj).width();
	if (x < minX) x = minX;
	if (x > maxX) x = maxX;
	x -= minX;
	newID = Math.round(x/fxgallery_step);
	fxsliderUpdateImg(newID);
}
function fxsliderClick(event) {
	if (jQuery(event.target).hasClass("fxgallery_dragPoint")) return;
	var x = event.pageX;
	fxgalleryUpdateObjects(jQuery(this));
	var minX = jQuery(slider_obj).offset().left;
	var maxX = minX + jQuery(slider_obj).width();
	if (x < minX) x = minX;
	if (x > maxX) x = maxX;
	x -= minX;
	newID = Math.round(x/fxgallery_step);
	fxsliderUpdateImg(newID);
}
var fxgallery_new_id = 0;
var fxgallery_old_id = 0;
function fxsliderUpdateImg(newID) {
	fxgallery_new_id = newID;
	if (newID == -1) fxgallery_new_id = fxgallery_count;
	if (newID > fxgallery_count) fxgallery_new_id = 0;

	if (fxgallery_old_id != fxgallery_new_id) {
		jQuery(dragPoint_obj).css("left", fxgallery_new_id*fxgallery_step);
		jQuery(fxgallery_obj).find(".fxgallery_images img").eq(fxgallery_new_id).show();
		jQuery(fxgallery_obj).find(".fxgallery_images img").eq(fxgallery_old_id).hide();
		fxgallery_old_id = fxgallery_new_id;
		//jQuery("#log").html("fxgallery_count: "+fxgallery_count+"<br />fxgallery_step: "+fxgallery_step+"<br />fxgallery_new_id: "+fxgallery_new_id);
	}
}
function fxgalleryUpdateObjects(galleryObj) {
	if (jQuery(galleryObj).hasClass("fxgallery")) fxgallery_obj = galleryObj;
	else fxgallery_obj = jQuery(galleryObj).parents(".fxgallery:first");
	
	slider_obj = jQuery(fxgallery_obj).find(".fxgallery_slider");
	dragPoint_obj = jQuery(fxgallery_obj).find(".fxgallery_dragPoint");
	fxgallery_count = jQuery(fxgallery_obj).find(".fxgallery_images img").length-1;
	fxgallery_step = jQuery(slider_obj).width()/fxgallery_count;
	fxgallery_new_id = Math.round(jQuery(dragPoint_obj).position().left / fxgallery_step);
	fxgallery_old_id = fxgallery_new_id;
	//jQuery("#log").html("fxgallery_count: "+fxgallery_count+"<br />fxgallery_step: "+fxgallery_step+"<br />fxgallery_new_id: "+fxgallery_new_id);
	//jQuery("#log").html(fxgallery_new_id);
}



