/**
 * jQuery.imgSrcChange - Easy src changer using jQuery.
 * Copyright (c) 2010 - 2011 Satoshi Miwa 310430@gmail.com | http://310430.org
 * Date: 05/16/2011
 * @author Satoshi Miwa
 * @version 2.0.0
 */

(function($){

	function formatCodes(locale) {
	};

 	jQuery.fn.imgSrcChange = function(options){

	var options = jQuery.extend({
		returnBasic: true,
		hover: true,
		active: false,
		current: false,
		connect: '_'
	}, options);

		return this.each(function(){
			var tagName = $(this)[0].tagName;
			switch(tagName) {
				case 'A':
					changeMotion($(this).find('img'));
					break;
				case 'IMG':
					changeMotion($(this));
					break;
				case 'INPUT':
					if($(this).attr('type') == 'image')	changeMotion($(this));
					break;
			};
		});

		function changeMotion(imgTag) {

			var basicSrc = getBasicSrc(imgTag);
			var hoverSrc = getChangeSrc(imgTag,'hover');
			var activeSrc = getChangeSrc(imgTag,'active');
			var currentSrc = getChangeSrc(imgTag,'current');

			if(options.current) {
				imgTag.attr('src',currentSrc);
			} else {
				if(options.returnBasic) {
					imgTag.mouseout(changeSrcBasic);
				}
				if(options.hover) {
					imgTag.mouseover(changeSrcHover);
				}
				if(options.active) {
					imgTag.mousedown(changeSrcActive);
				}
			}

			function changeSrcBasic() {
				$(this).attr('src',basicSrc);
			}
			function changeSrcHover() {
				$(this).attr('src',hoverSrc);
			}
			function changeSrcActive() {
				$(this).attr('src',activeSrc);
			}
		}
		function getBasicSrc(imgTag) {
			var src = imgTag.attr("src");
			return src;
		}
		function getChangeSrc(imgTag,state) {
			var src = getBasicSrc(imgTag);
			var changeSrc;
			if(src.indexOf('.') == -1) {
				changeSrc = false;
			} else {
				var filePath = src.match(/.*\//)[0];
				var fileName = src.match(/\/[^/]*$/)[0].split('/')[1];
				var imgName = getImgName(fileName,0);
				var extensionName = getImgName(fileName,1);

				changeSrc = filePath + imgName + options.connect + state + extensionName;
			}
			return changeSrc;
		}

		function getImgName(pathString,around) {

			var cutPoint = getCutPoint();
			var imgNameString;

			if(around) {
				imgNameString = pathString.substring(cutPoint,pathString.length);
			} else {
				imgNameString = pathString.substring(0,cutPoint);
			}

			return imgNameString;

			function getCutPoint() {
				for(var i=pathString.length; i>0; i--) {
					if(pathString.charAt(i) == '.') {
						return i;
						break;
					}
				}
			}
		}
	};
})(jQuery);

$(document).ready(function(){

	$('a.hover').imgSrcChange();
	$('img.hover').imgSrcChange();
	$('input.hover').imgSrcChange();

	$('a.active').imgSrcChange({active: true});
	$('img.active').imgSrcChange({active: true});
	$('input.active').imgSrcChange({active: true});

	$('a.current').imgSrcChange({current: true});
	$('img.current').imgSrcChange({current: true});
	$('input.current').imgSrcChange({current: true});

});

