(function($) {
	
	$.getHashIndex = function(){
		var urlHalves = String(document.location).split('#');
		if(urlHalves.length==2){
			return parseInt(urlHalves[1]);
		} else {
			return 0;
		}
	};
	
	
	$.fn.preloadImage = function(suffix){
		var cache = [];
		
		return this.each(function(index, el){
			$(this).data('info', {
				out: this.src, 
				over: this.src.replace('.jpg', suffix +'.jpg'), 
				selected:false
			}).parent('a').focus(function(){this.blur();});
			
			
			var cacheImage = document.createElement('img');
			cacheImage.src = $(this).data('info').over;
			cache.push(cacheImage);
		});
	};
	
	$.fn.processResetMenu = function(selectedIndex) {
		return this.each(function(index, el) {
			var image = $(this),
				info = image.data('info'),
				out = info.out,
				over = info.over;
			
			if (index == selectedIndex) {
				info.selected = true;
				image.attr('src', over);
			} else {
				info.selected = false;
				image.attr('src', out);
			}
		});	
	};
	
	$.fn.processOverMenu = function(selectedIndex) {
	
		return this.each(function(index, el) {
			var image = $(this),
				info = image.data('info'),
				out = info.out,
				over = info.over;

			image.hover(function(){
				if (!info.selected) image.attr('src', over);
			},function(){
				if (!info.selected) image.attr('src', out);
			});
		});

	};	

	$.chkField = function(f){
		var message = '';
		
		$('[vali]', f).each(function(){
			var result = false;
			var args = $(this).attr('vali').split('||', 3);
			
			//강제 trim
			this.value = $.trim(this.value);
			
			switch(args[0]) {
			case 'C':
				//인자 2개(object, value) 짜리 함수 (return true/false) 가 콜백으로 정의되어 있어야 한다.
				result = eval(args[1]+'(this, this.value);');
				break;
			case 'M':
				var re = new RegExp(args[1], 'gi');
				result = re.test(this.value);
				break;			
			case 'O':
				if(this.value.length>0) {
					var re = new RegExp(args[1], 'gi');
					result = re.test(this.value);
				}
				break;
			case 'P':
				//다른 input value(args[1]) 와 비교 (패스워드)
				result = ($('input[name='+args[1]+']', f).val()==this.value);
				break;
			case 'R':
				//필수 라디오 박스 검사(args[1] 인자 필요없음)
				result = ($(':radio[name='+this.name+']:checked', f).length > 0)
				break;
			case 'A':
				//checkbox 검사(args[1] 인자 필요없음)
				result = (this.checked==true);
				break;
			}
			
			if (result == false) {
				message += '- ' + args[2] + '\n';
			}
		});
		
		return message;
	}	
	
	
})(jQuery);

