/******************************************************
	* jQuery plug-in
	* jQuery Image Scale Carousel
	* Developed by J.P. Given (http://johnpatrickgiven.com)
	* Useage: anyone so long as credit is left alone
******************************************************/

var iscGlobal = {};


iscGlobal.x = 0; // Object X
iscGlobal.y = 0; // Object Y
iscGlobal.c = 0; // Object center point
iscGlobal.ct = 0; // Object center point from top
iscGlobal.imgCount = 1;
iscGlobal.current = 0;
iscGlobal.autoplay = false;
iscGlobal.autoplayTimer = 3000;

$(window).resize(function() {
	iscGlobal.x = iscGlobal.cObj.offset().left;
	iscGlobal.y = iscGlobal.cObj.offset().top;
	iscGlobal.c = iscGlobal.x + (iscGlobal.cObj.width() / 2);
	iscGlobal.ct = iscGlobal.y + (iscGlobal.cObj.height() / 2);
	isc_posCount();
});


(function($) {
    $.fn.isc = function(args) {

        if (args.autoplay) {
            iscGlobal.autoplay = true;
            if (args.autoplayTimer > 0) {
                iscGlobal.autoplayTimer = args.autoplayTimer;
            }
        }

        iscGlobal.cObj = $(this);
        iscGlobal.current = 0;
        iscGlobal.imgCount = 1;
        iscGlobal.imagesLength = args.imgArray.length;

        // set up the CSS
        iscGlobal.cObj.css("overflow", "hidden");
        //iscGlobal.cObj.css("overflow-x","hidden");

        //Append the images
        iscGlobal.cObj.append('<div class="internal_swipe_container"></div>');

        for (i = 0; i < args.imgArray.length; i++) {
            $(".internal_swipe_container").append('<div class="jq_swipe_image" id="swipe_div_' + i + '"><img id="swipe_img_' + i + '" src="' + args.imgArray[i] + '" border="0"></div>');

            $("#internal_swipe_container").css({
                width: iscGlobal.cObj.width(),
                height: iscGlobal.cObj.height(),
                overflow: "hidden"
            });

            // Containing div height for loader
            $(".jq_swipe_image").css({
                "height": iscGlobal.cObj.height() + "px",
                "background-color": "#FFF"
            });

            // Image visibility hidden until loaded
            $('#swipe_img_' + i).css("visibility", "hidden");

            $('#swipe_img_' + i).load(function() {
                // Lose the background loader image
                $(this).parent('div').css({
                    "background-image": "url()",
                    "background-color": "inherit"
                });

                // Show image
                $(this).css({
                    "visibility": "visible",
                    "position": "relative"
                });

                // Resize the img object to the proper ratio of the container.
                var iw = $(this).width();
                var ih = $(this).height();
                if (iscGlobal.cObj.width() > iscGlobal.cObj.height()) {
                    //alert($(this).attr("id") + " width: " + iw + "|" + ih);
                    if (iw > ih) {
                        var fRatio = iw / ih;
                        $(this).css({
                            "width": iscGlobal.cObj.width() + "px",
                            "height": Math.round(iscGlobal.cObj.width() * (1 / fRatio))
                        });

                        var newIh = Math.round(iscGlobal.cObj.width() * (1 / fRatio));

                        if (newIh < iscGlobal.cObj.height()) {
                            var fRatio = ih / iw;
                            $(this).css({
                                "height": iscGlobal.cObj.height(),
                                "width": Math.round(iscGlobal.cObj.height() * (1 / fRatio))
                            });
                        }
                    } else {
                        var fRatio = ih / iw;
                        $(this).css({
                            "height": iscGlobal.cObj.height(),
                            "width": Math.round(iscGlobal.cObj.height() * (1 / fRatio))
                        });
                    }
                } else {
                    var fRatio = ih / iw;
                    $(this).css({
                        "height": iscGlobal.cObj.height(),
                        "width": Math.round(iscGlobal.cObj.height() * (1 / fRatio))
                    });
                }

                // Center image within container

                if ($(this).width() > iscGlobal.cObj.width()) {
                    var wDiff = ($(this).width() - iscGlobal.cObj.width()) / 2;
                    $(this).css("left", "-" + wDiff + "px");
                }

                if ($(this).height() > iscGlobal.cObj.height()) {
                    var hDiff = ($(this).height() - iscGlobal.cObj.height()) / 2;
                    $(this).css("top", "-" + hDiff + "px");
                }

            });
        }

        // Set CSS for image container after appended
        $(".internal_swipe_container").css("width", ($(this).width() * args.imgArray.length) + "px");
        $(".jq_swipe_image").css({
            "float": "left",
            "text-align": "center",
            "overflow": "hidden",
            "width": $(this).width() + "px"
        });

        // Get the position of the obj the image will be loaded into
        iscGlobal.x = iscGlobal.cObj.offset().left;
        iscGlobal.y = iscGlobal.cObj.offset().top;
        iscGlobal.c = iscGlobal.x + (iscGlobal.cObj.width() / 2);
        iscGlobal.ct = iscGlobal.y + (iscGlobal.cObj.height() / 2);

        // Append Nav
        iscGlobal.cObj.append('<div id="swipe_nav_prev" class="trans"><div></div></div>');
        iscGlobal.cObj.append('<div id="swipe_nav_next" class="trans"><div></div></div>');

        $('#swipe_nav_next').bind("click", function() {
            iscGlobal.autoplay = false;
            iscGlobal.imgCount++;
            if (iscGlobal.imgCount == args.imgArray.length) { $('#swipe_nav_next').css("display", "none"); }
            $('.internal_swipe_container').animate({
                left: '-=' + iscGlobal.cObj.width()
            }, 400, function() {
                // Animation complete.
                iscGlobal.current = iscGlobal.current + 1;
                $("#count_container li").removeClass("current");
                $("#count_" + iscGlobal.current).addClass("current");
            });
        });

        $('#swipe_nav_prev').bind("click", function() {
            iscGlobal.autoplay = false;
            iscGlobal.imgCount--;
            if (iscGlobal.imgCount == 1) { $('#swipe_nav_prev').css("display", "none"); }
            $('.internal_swipe_container').animate({
                left: '+=' + iscGlobal.cObj.width()
            }, 400, function() {
                // Animation complete.
                iscGlobal.current = iscGlobal.current - 1;
                $("#count_container li").removeClass("current");
                $("#count_" + iscGlobal.current).addClass("current");
            });
        });

        // Append Count
        $("body").append('<ul id="count_container" class="trans"></ul>');

        for (i = 0; i < args.imgArray.length; i++) {
            $("#count_container").append('<li id="count_' + i + '" onclick="isc_jumpTo(' + i + ');" class="counter"></li>');
        }

        $("#count_" + iscGlobal.current).addClass("current");

        $(".counter").css({
            "width": iscGlobal.cObj.width() / args.imgArray.length + "px"
        });

        isc_posCount();

        $(document).mousemove(function(e) {
            // Set global mouse position
            iscGlobal.mX = e.pageX;
            iscGlobal.mY = e.pageY;

            // Bounding box coordinents of object
            var bY = iscGlobal.y + (iscGlobal.cObj.outerHeight(true) - 6);
            var rX = iscGlobal.x + iscGlobal.cObj.outerWidth(true);
            if (((iscGlobal.mY > iscGlobal.y) && (iscGlobal.mY < bY)) && ((iscGlobal.mX > iscGlobal.x) && (iscGlobal.mX < rX))) {
                if (iscGlobal.mX < iscGlobal.c) { // Prev
                    if (iscGlobal.imgCount > 1) {
                        $('#swipe_nav_next').css("display", "none");
                        $('#swipe_nav_prev').css({
                            "height": (iscGlobal.cObj.outerHeight(true) - 6) + "px",
                            "width": (iscGlobal.cObj.width() * 0.2) + "px"
                        }).fadeIn();
                    }
                } else if (iscGlobal.mX > iscGlobal.c) { // Next
                    if (iscGlobal.imgCount < args.imgArray.length) {
                        $('#swipe_nav_prev').css("display", "none");
                        $('#swipe_nav_next').css({
                            "height": (iscGlobal.cObj.outerHeight(true) - 6) + "px",
                            "right": "0px",
                            "width": (iscGlobal.cObj.width() * 0.2) + "px"
                        }).fadeIn();
                    }
                }
            } else {
                $('#swipe_nav_next,#swipe_nav_prev').css("display", "none");
            }
        });

        if (iscGlobal.autoplay) {
            setTimeout("isc_timeJump()", iscGlobal.autoplayTimer);
        }


    }
})(jQuery);

function isc_timeJump() {
	if (iscGlobal.imgCount == iscGlobal.imagesLength) { 
		iscGlobal.imgCount = 1;
		iscGlobal.current = 0;
		var total_length = (iscGlobal.cObj.width() * iscGlobal.imagesLength) - iscGlobal.cObj.width();
		$('.internal_swipe_container').animate({
			left: '+=' + total_length
		}, 400, function() {
			// Animation complete.
			$("#count_container li").removeClass("current");
			$("#count_" + iscGlobal.current).addClass("current");
		});
	} else {
		iscGlobal.imgCount ++;
		$('.internal_swipe_container').animate({
			left: '-=' + iscGlobal.cObj.width()
		}, 400, function() {
			// Animation complete.
			iscGlobal.current = iscGlobal.current + 1;
			$("#count_container li").removeClass("current");
			$("#count_" + iscGlobal.current).addClass("current");
		});
	}
	
	
	if (iscGlobal.autoplay) {
		setTimeout("isc_timeJump()",iscGlobal.autoplayTimer);
	}
}

function isc_jumpTo(index) {
	iscGlobal.autoplay = false;
	
	$('#swipe_nav_next,#swipe_nav_prev').css("display","none");
	
	if (index > iscGlobal.current) {
		var diff = index - iscGlobal.current;
	} else {
		var diff = iscGlobal.current - index;
	}
	
	var go_to_xy = iscGlobal.cObj.width() * diff;
	
	if (index >= iscGlobal.current) {
		var str = '-=';
	} else {
		var str = '+=';
	}
	
	iscGlobal.current = index;
	
	$('.internal_swipe_container').animate({
		left: str + go_to_xy
	}, 400, function() {
		$("#count_container li").removeClass("current");
		$("#count_" + iscGlobal.current).addClass("current");
		
		iscGlobal.imgCount = index + 1;
	});
}

function isc_posCount() {
	$("#count_container").css({
		"left":iscGlobal.x + "px",
		"top":(iscGlobal.y + iscGlobal.cObj.height() - 6) + "px"
	});
}
