﻿/*
 * jQuery Form Plugin
 * version: 2.21 (08-FEB-2009)
 * @requires jQuery v1.2.2 or later
 *
 * Examples and documentation at: http://malsup.com/jquery/form/
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
;
(function($){

    function josa(str, tail){
        return (hasFinalConsonant(str)) ? tail.substring(0, 1) : tail.substring(1, 2);
    }
    
    function hasFinalConsonant(str){
        str = this != window ? this : str;
        var strTemp = str.substr(str.length - 1);
        return ((strTemp.charCodeAt(0) - 16) % 28 != 0);
    }
    
    function doError(el, type, action){
        var pattern = /{([a-zA-Z0-9_]+)\+?([가-힣]{2})?}/;
        var name = (hname = el.attr("TITLE")) ? hname : el.attr("NAME");
        pattern.exec(type);
        var tail = (RegExp.$2) ? josa(eval(RegExp.$1), RegExp.$2) : "";
        alert((type.replace(pattern, eval(RegExp.$1) + tail)));
        if (action == "sel") {
            el.select();
        }
        else {
            el.value = "";
        }
        el.focus();
        return false;
    }
    

    $.fn.required = function(){
        return (this != null && this.val() != "") ? true : doError(this, "{name+을를} 입력하세요");
    };
    $.fn.req = function(){
    	if(this == null || this.val() == "")  {
    		return doError(this, "{name+을를} 입력하세요");
    	}
    };
    
    $.fn.enough = function(num){
    	return (this.val().length >= num)? true : doError(this,"{name+은는} "+num+"자 이상입력하세요");	
    };
    
    $.fn.isover = function(num){
    	return (this.val().length <= num)? true : doError(this,"{name+은는} "+num+"자까지만 입력하세요");	
    };
    
    $.fn.isexact = function(num){
    	return (this.val().length == num)? true : doError(this,"{name+은는} "+num+"자리 입니다");	
    };
    
    $.fn.isemail = function(){
        var pattern = /^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/;
        return (pattern.test(this.val())) ? true : doError(this,"{name+을를} 입력하세요");
    };
    
    $.fn.isurl = function(url){
        var pattern = /http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}/;
        return (pattern.test(url) == true) ? true : doError(this,"{name+을를} 바르게 입력해주세요");
    };
    
    $.fn.isid = function(){
    	var pattern = /^[a-zA-Z]{1}[a-zA-Z0-9_]+$/;
    	return (pattern.test(this.val())) ? true : doError(this,"{name+은는} 첫글자를 영문으로 시작해야하고,\n그 이후에는 영문,숫자, _ 문자만 사용할 수 있습니다");
    };
    
    $.fn.isnum = function(){
    	var pattern = /^[0-9]+$/;
    	return (pattern.test(this.val())) ? true : doError(this,"{name+은는} 반드시 숫자로만 입력해야 합니다");
    };

    $.fn.iseng = function(){
    	var pattern = /^[a-zA-Z]+$/;
    	return (pattern.test(this.val())) ? true : doError(this,"{name+은는} 반드시 영문자로만 입력해야 합니다");
    };
    
    $.fn.isengnum = function(){
    	var pattern = /^[a-zA-Z0-9]+$/;
    	return (pattern.test(this.val())) ? true : doError(this,"{name+은는} 반드시 영문자,숫자로만 입력해야 합니다");
    };

    $.fn.ishan = function(){
    	var pattern = /^[가-힣]+$/;
    	return (pattern.test(this.val())) ? true : doError(this,"{name+은는} 반드시 한글로만 입력해야 합니다");
    };

    $.fn.isenghan = function(){
    	var pattern = /^[가-힣a-zA-Z]+$/;
    	return (pattern.test(this.val())) ? true : doError(this,"{name+은는} 반드시 한글,영문자로만 입력해야 합니다");
    };

    $.fn.isenghannum = function(){
    	var pattern = /^[가-힣a-zA-Z0-9]+$/;
    	return (pattern.test(this.val())) ? true : doError(this,"{name+은는} 반드시 한글,영문자,숫자로만 입력해야 합니다");
    };

    $.fn.ishannum = function(){
    	var pattern = /^[가-힣0-9]+$/;
    	return (pattern.test(this.val())) ? true : doError(this,"{name+은는} 반드시 한글,숫자로만 입력해야 합니다");
    };
    
    $.fn.ishan1 = function(){
    	var pattern = /[가-힣]/;
    	return (pattern.test(this.val())) ? true : doError(this,"{name+은는} 반드시 한글을 포함해야 합니다");
    };


    $.fn.isphone = function(num){
        var pattern = /^([0]{1}[0-9]{1,2})-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/;
        return (pattern.exec(num))? true : doError(this,"{name+을를} 바르게 입력하세요");
    };

	$.fn.trim = function(text){
		var pattern = /^(\s|\u00A0)+|(\s|\u00A0)+$/;
		return (text || "").replace(pattern, "" );
	};
    
	$.fn.reset = function() {
		$( this ).
		find( ':text, :password, textarea' ).
			attr( 'value', '' ).end().
	    find( ':checkbox, :radio' ).
	    	attr( 'checked', false ).end().
	    find( 'select' ).
	    	attr( 'selectedIndex', -1 );
	};
	

})(jQuery);


function toCurrency(anynum, decimal) {
	if('-1' == anynum) return '';
	// decimal - the number of decimals after the digit from 0 to 3
	// -- Returns the passed number as a string in the xxx,xxx.xx format.
	divider = 10;
	switch (decimal) {
	case 0:
		divider = 1;
		break;
	case 1:
		divider = 10;
		break;
	case 2:
		divider = 100;
		break;
	default: // for 3 decimal places
		divider = 1000;
	}

	workNum = Math.abs((Math.round(anynum * divider) / divider));

	workStr = "" + workNum

	if (workStr.indexOf(".") == -1) {
		workStr += "."
	}

	dStr = workStr.substr(0, workStr.indexOf("."));
	dNum = dStr - 0
	pStr = workStr.substr(workStr.indexOf("."))

	while (pStr.length - 1 < decimal) {
		pStr += "0"
	}

	if (pStr == '.')
		pStr = '';

	// --- Adds a comma in the thousands place.
	if (dNum >= 1000) {
		dLen = dStr.length
		dStr = parseInt("" + (dNum / 1000)) + ","
				+ dStr.substring(dLen - 3, dLen)
	}

	// -- Adds a comma in the millions place.
	if (dNum >= 1000000) {
		dLen = dStr.length
		dStr = parseInt("" + (dNum / 1000000)) + ","
				+ dStr.substring(dLen - 7, dLen)
	}
	retval = dStr + pStr
	// -- Put numbers in parentheses if negative.
	if (anynum < 0) {
		retval = "(" + retval + ")";
	}

	// You could include a dollar sign in the return value.
	// retval = "$"+retval

	return retval;
}


$(document).ready(function() {
	//읽기전용속성 지정
	$('.readonly').attr('readonly','readonly');
	
	/* 입력제어 한글영문 자동 선택(클래스를 선택하지않고 임의로 스타일 지정 standalone일수도 있으니까.)  */
	//한글전용 클래스 지정
	$('.han').css('ime-mode','active');
	//영문전용 클래스 지정
	$('.eng').css('ime-mode','disabled');
	
	//페이드 효과
	$(":input:text, :input:password").fadeTo("slow", .60);
	$(":input:text, :input:password").focus(function(){
		if(!$(this).hasClass('readonly'))
			$(this).fadeTo("fast", 1);
	});
	$(":input:text, :input:password").blur(function(){
	    $(this).fadeTo("fast", .60);
	});
	
	//클릭시 점선 테두리 없게..난 디자이너야.
	$(":input[type='checkbox'], :input[type='radio'], :input[type='button']").click(function(){
	    $(this).blur();
	});
	
	//데이터 그리드 공통 이펙트
	/* 로딩시 페이드 인 */
	$('.ef_fade tbody tr').fadeTo(1, .10);
	$('.ef_fade tbody tr').each(function() {
		$(this).fadeTo(300, 1);
	});

	/* 로우 구분 색깔 자동 적용 */
	$('.ef_even tbody tr:even').addClass('even_color');
	$('.ef_odd tbody tr:odd').addClass('even_color');

	/* 호버시 페이드 효과 */
	$('.ef_hover tbody tr').hover(
		function () {
			$(this).addClass('hover_color');
		}, 
		function () {
			$(this).removeClass('hover_color').fadeTo("fast", .7).fadeTo("fast", 1);
	});


	/* image swap on rollover */
	var overed
	$('.rollover').hover(
		function () {
			var iname = $(this).attr("src");
			if(iname.indexOf("_over") > -1)
				overed = iname;
			else 
				$(this).attr({src: iname.replace(".","_over.")});
		}, 
		function () {
			var iname = $(this).attr("src");
			if(iname != overed)
				$(this).attr({src: iname.replace("_over","")});
	});

});		

function onerror(statusText,responseText) {
	alert(responseText); 
}


Array.prototype.sum = function(){
	for(var i=0,sum=0;i<this.length;sum+=this[i++]);
	return sum;
}
Array.prototype.max = function(){
	return Math.max.apply({},this)
}
Array.prototype.min = function(){
	return Math.min.apply({},this)
}

/*
 * 한글 지원 서브스트링
 * keyword : 서브스트링 substr substring
 */
String.prototype.ksub = function(len, tail) {
	var str = this;
	var l = 0;
	for (var i=0; i<str.length; i++) {
		l += (str.charCodeAt(i) > 128) ? 2 : 1;
		if (l > len) return str.substring(0,i)+''+tail;
	}
	return str;
}


function showLayer(tgtEl) {document.getElementById(tgtEl).style.display = "block"; }
function hideLayer(tgtEl) {document.getElementById(tgtEl).style.display = "none"; }

function createLayer(w, h){
	/*
	//배경
	var layerBg = document.createElement("div");
	layerBg.id = "alertBgDiv";
	layerBg.style.position = 'absolute';
	layerBg.style.top = 0;
	layerBg.style.left = 0;
	layerBg.style.width = document.body.clientWidth;
	layerBg.style.height = document.body.clientHeight;
	layerBg.style.background = '#000';
	layerBg.style.zIndex = 200;
	layerBg.style.filter = 'alpha(opacity=60, style=0)';
	document.body.appendChild(layerBg);
	*/

	//레이어
	var layer = document.createElement("div");
	layer.id = "alertDiv";
	layer.style.position = 'absolute';
	layer.style.width = w;
	layer.style.height = h;
	layer.style.left = document.body.clientWidth / 2 - (w/2);
	layer.style.top = 100//document.body.clientHeight / 2 - (h/2);
	layer.style.zIndex = 210; 
	document.body.appendChild(layer);
	return layer.id;
}

function cancelLayer(){  
	//document.body.removeChild(document.getElementById('alertBgDiv'));
	document.body.removeChild(document.getElementById('alertDiv'));
}


function getQuerystring(key, default_) {
	if (default_==null) default_=""; 
	key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
	var qs = regex.exec(window.location.href);
	if(qs == null)
		return default_;
	else
		return qs[1];
}

//20110720 개인정보캠페인
function campaign_20110801(){
	if(getCookie('campaign') != 'X' && getQuerystring('cv') == 'Y')
	{
		id = createLayer(495, 630);
		document.getElementById(id).innerHTML = "<iframe src='https://www.outback.co.kr/event/20110801_memberinfo/popup.aspx' style='width:100%; height:100%'></iframe>";
	}
}

//20111109 반송이메일변경유도
function campaign_20111109(){
	if(getCookie('campaign') != 'X' && getQuerystring('cv') == 'Y')
	{
		id = createLayer(495, 480);
		document.getElementById(id).innerHTML = "<iframe src='https://www.outback.co.kr/popup/20111109_returnemail/popup.aspx' style='width:100%; height:100%'></iframe>";
	}
}
