/*
 * 페이지 로딩이 완료 되는 시점에 공통 모듈 이벤트 처리
 * */
$(document).ready(function(){
	//환율 xml 로드
	//var ex = "http://www.naver.com/include/timesquare/widget/exchange.xml";
	
	//메뉴 하이라이트
	var curmenunum=$.cookie('curmenu');
	$("div#gnb_menu li").each(function(i){
		var menunum = i+1;
		$(this).removeClass("menu0"+menunum+"_on")
			   .addClass((menunum==curmenunum)?"menu0"+menunum+"_on":"menu0"+menunum)
			   .click(function(){
					$.cookie('curmenu', menunum, {expires:0});
		});
	});
	//로그인 처리
	setLoginControl();
	
//	//환율조회 전송 처리
//	$("#btn_ex_submit").click(function(){
//		alert($("div#ex_div").html());
//		var a=$("input#a").val();
//		var surl = "http://www.fxware.com/forex-currency/forex.asp";
//		//http://www.fxware.com/forex-currency/convert.asp?a=100&up_f=JPY&up_t=KRW&up_l=en&up_d=p
//	});
	
	//msn 문의
	$('img#_msn_').css('cursor','pointer').click(function(){
		var url = "http://settings.messenger.live.com/Conversation/IMMe.aspx?invitee=1b78b7f90805f36e@apps.messenger.live.com&mkt=ko-KR";
		var target = $('iframe#msn');
		try {
			target.attr('src', url).toggle(500);
		}catch(e){
			window.open(url);
		}
	});
	
	//서브 검색 달력 플러그인 적용
	$('form#subSearch #searchCheckIn').attr("readonly", true).datepicker($.datepicker.regional["ko"]);
	$('form#subSearch #searchCheckOut').attr("readonly", true).datepicker($.datepicker.regional["ko"]);
	
});

function setLoginControl(){
	//로그인 클릭 처리
	var loginchecker1 = new defaultChecker(new Array("#loginEmail", "#loginPassword"));
	var loginchecker2 = new defaultChecker(new Array("#checkEmail", "#checkName", "#checkBirth"));
	$('a#login').click(function(){
		$('form#frm_login').show();
		$('form#frm_search').hide();
		$('form#frm_findpasswd').hide();
		$('span#tag-findpasswd').show();
	});
	$('a#search').click(function(){
		$('form#frm_login').hide();
		$('form#frm_search').show();
		$('form#frm_findpasswd').hide();
		$('span#tag-findpasswd').hide();
	});
	$('a#findpasswd').click(function(){
		$('form#frm_login').hide();
		$('form#frm_search').hide();
		$('form#frm_findpasswd').show();
	});
	//로그인 폼 전송 처리
	$("#frm_login").submit(function()
	{
		var retVal = $("form").checkFormText({'isDefalut':true,'color':'#FFEEEE','timer':'3000','filter':'#loginEmail, #loginPassword'});
		if(!retVal)return retVal;
		return checkLogin();
	});
	//비밀번호 찾기 폼 전송 처리
	$("#frm_findpasswd").submit(function()
	{
		var retVal = $("form").checkFormText({'isDefalut':true,'color':'#FFEEEE','timer':'3000','filter':'#checkEmail, #checkName, #checkBirth'});
		if(!retVal)return false;
		alert("입력하신 생년월일로 비밀번호를 초기화 합니다.");
		var dataString = $(this).serialize();
		$.ajax({
			type: "POST",
			url: "/login_auth.do",
			data: dataString,
			success: function(msg){
				if(msg!=""){alert(msg)};
			}
		});
		return false;
	});
	//이용안내클릭 팝업
	$('a#guide').each(function(){
		$(this).click(function(){
			window.open("/html/guide.html","term","width=820, height=600, scrollbars=yes")
		});
	});
}

function checkLogin(){
	var ret=true;
	var dataString="";
	//공백체크
	ret = $("form").checkFormText({'color':'#FFFAFA','timer':'1000','filter':'#loginEmail, #loginPassword'});
	
	if(ret){
		if ($('form#frm_login input#flagMode').val() == 'logout')return true;
	
		try {
			$("#frm_login input").each(function(i){
				if (this.name) {
					dataString += this.name + "=" + $(this).val() + "&";
				}
			});
		} 
		catch (e) {
		}
		
		$.ajax({
			type: "POST",
			url: "/login.do",
			data: dataString,
			success: function(msg){
				//alert(msg);
				$('div#head_lnb').html(msg);
				setTimeout("$('span#login-status').fadeOut(1000)", 5000);
				setLoginControl();
			/*
		 if(msg=="NO"){
		 alert("로그인 정보를 다시 확인 하세요.");
		 }else{
		 $("div.login-top").load("/index.jsp div.login-contain");
		 }
		 */
			}
		});
		$("input#btn-login").val('로그인중');
	}
	return false;
}

//팝업주소
function searchZipCode(){
	//objForm = document.seachZipcode;
	//objForm.action = "/searchZipcode.do";
	//objForm.method = "get";
	winChild = window.open("/searchZipcode.do","zipcode","toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,width=450px,height=350px,top=200px,left=200px'");
	//objForm.target = "zipcode";
	//objForm.submit();
}
//팝업주소
function childControll(){	
	winChild.setObjIdName("zipCode","address","addressDetail");
}	

/*cookie 설정 플러그인*/
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};

/*
 * 함수 이름 : confirmButtons()
 * 작성자 : yuniri (2010.09.28)
 * 기능 : Input box의 기본값 체크 함수

 * 적용방법 : jsp 페이지 </body>아래쪽에 다음과 같이 객체 생성
 * var checker = new confirmButtons({id:"#input1_id, #input2_id"});
 * */
function confirmButtons() {
	this.config = {
		isConfirm:true,
		id: '',
		yes: function(){alert('yes')},
		confirm: '정말 삭제하시겠습니까?',
		alertbox: '<div class="_question">#confirm#<span class="_no">닫기</span></div>',
		confirmbox: '<div class="_question">#confirm#<span class="_yes">예</span><span class="_no">아니요</span></div>',
		params:[]
	};
	for (var n in arguments[0]) { this.config[n]=arguments[0][n]; };
	if (this.config.isConfirm) {
		var box = this.config.confirmbox.replace('#confirm#', this.config.confirm);
	}else{
		var box = this.config.alertbox.replace('#confirm#', this.config.confirm);
	}
	var yes = this.config.yes;
	var no = this.config.no;
	var params = this.config.params;
	$(this.config.id).each(function(i){
		$(this).click(function(){
			if($(this).next('div.question').length <= 0){
				$('div._question').remove();
				$(this).after(box);
			}
			$('div._question').animate({opacity: 1}, 300);
			$('span._yes').focus();			
			$('span._yes').click(function(){
				yes(params);
				$('span._no').trigger('click');
			});			
			$('span._no').click(function(){
				$(this).parents('div._question').fadeOut(300, function() {
					$(this).remove();
				});
			});
		});
	});
}

/*
 * 함수 이름 : defaultChecker()
 * 작성자 : yuniri (2010.09.28)
 * 기능 : Input box의 기본값 체크 함수
 * 적용방법 : jsp 페이지 </body>아래쪽에 다음과 같이 객체 생성
 * var checker = new defaultChecker(new Array("#input1_id", "#input2_id",...));
 * */
function defaultChecker(objId){
	$(objId).each(function(i){
		var $chkObj = $($(objId)[i]);
	
		$chkObj.focus(
			function(){
				if($chkObj.val() == $chkObj.attr("defaultValue")){
					$chkObj.val("");
				}
			}).blur(
			function(){
				if($chkObj.val() == ""){
					$chkObj.val($chkObj.attr("defaultValue"));
				}
			});
	});

}
/*
 * 함수 이름 : checkFormText()
 * 작성자 : yuniri (2010.09.28)
 * 기능 : Input box의 공백값 체크
 * 적용방법 : 
 * config적용 하지 않는 경우 : $("form").checkFormText();
 * config적용 하는 경우 : $("form").checkFormText({'color':'#FFEEEE','timer':'3000','filter':'.contact_validator'});
 * filter 항목에 체크 해야 할 input 타입의 jQuery is메소드 파라메터를 적용 ex) '.class명 #id :filter'
 * */
$.fn.checkFormText = function(settings) {
	var defaultFileters = ".contact_validator";
	var config = {	'color' : '#EEEEFF',
					'timer' :'1200',
					'filter':defaultFileters,
					'compare':"",
					'isDefault':true,
					'isNumber':false,
					'isAphabet':false,
					'isdate':false,
					'isTelNum':false,
					'isEmail':false,
					'isHomepage':false};
	if (settings) $.extend(config, settings);
	var isOk = true;
	var isFocus = true;
	var chkPattern = /^[0-9]+$/;
	var chkAphabetPattern = /^[A-Za-z0-9]+$/;
	var chkEmailPattern = /^[-!#$%&\'*+\\./0-9=?A-Z^_a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_a-z{|}~]+$/;
	var chkHomepagePattern = new RegExp("(http|https|ftp|telnet|news|irc)://([-/.a-zA-Z0-9_~#%$?&=:200-377()]+)","gi");
	

	
	$("select, input:visible").each(function(i){
		
		$chkInput = $(this);
		if($chkInput.is(config.filter)){
			
			var txtVal = $(this).val();
			
			if(config.isTelNum == true || config.isdate == true){
				txtVal = txtVal.replace(/\.|-/gi,'');
			}
						
			var txtDefalutVal = $(this).attr("defaultValue");
			if(txtVal==config.compare || txtVal.length==0 || 
				(config.isDefault == true && txtVal==txtDefalutVal) ||
				(config.isNumber == true && !chkPattern.test(txtVal)) ||
				(config.isAphabet == true && !chkAphabetPattern.test(txtVal)) ||
				(config.isEmail == true && !chkEmailPattern.test(txtVal)) ||
				(config.isHomepage == true && !chkHomepagePattern.test(txtVal)) ||
				(config.isTelNum == true && !chkPattern.test(txtVal)) ||
				(config.isdate == true && (!chkPattern.test(txtVal) || txtVal.length < 8))) {
				isOk = false;
				if(isFocus){
					$(this).focus();
					isFocus = false;
				}
				$(this).css("background-color",config.color);
				var txtObj = this;
				setTimeout(function(){ txtObj.style.backgroundColor=''; },config.timer);
			}
		}
	});
	return isOk;
};


/*
 * 함수 이름 : DateDiff()
 * 작성자 : yuniri (2010.09.28)
 * 기능 : 두 날짜의 차이를 리턴
 * 적용방법 : 
* */
function DateDiff(date1, date2, splitString){
	var v0;
	var v1;
	v0=date1.split(splitString); //첫번째 입력폼의 값을 - 구분자로 나누어 배열로 변환
	v1=date2.split(splitString); //두번째 입력폼의 값을 - 구분자로 나누어 배열로 변환

	v0=new Date(v0[0],v0[1],v0[2]).valueOf(); //일자에 해당하는 타임스탬프로 변환
	v1=new Date(v1[0],v1[1],v1[2]).valueOf();

	cha=(v1-v0)/(1000*60*60*24); //일차이를 구한뒤 하루에 해당하는 값으로 곱하여, 초단위를 일단위로 변환

	if(cha>365){ 
		//alert('일년이 넘습니다.'+cha);
	} else {
		//alert('일년이 안넘습니다.'+cha);
	}
	return cha;
}

/*
 * 함수 이름 : setDate()
 * 작성자 : yuniri (2010.09.28)
 * 기능 : 체크인, 체크아웃 날짜 체크
 * 적용방법 : 
* */
function setDate(i, o, t)
{
	var objIn = $("#"+i);
	var objOut = $("#"+o);
	var objDays = $("#"+t);
	
	if(objIn.val()=="")
	{
		alert(" 먼저 체크인 날짜를 선택해 주세요 ");
		//objDays.options[0].selected = true;
		$("#"+t+" option:eq(0)").attr("selected", "selected");
		return;
	}
	var ndate = objIn.val();
	if (ndate.length <10){
		ndate=ndate.substring(0,4) + "." + ndate.substring(4,6) + "." + ndate.substring(6,8);
		objIn.val(ndate);
	}
	ndate = ndate.split('.');
	if (objDays.val() == ""){
		return;
	}
	var yyyy = ndate[0];
	var mm = parseInt(ndate[1],10);
	var dd = parseInt(ndate[2],10);
 
	if(parseInt(mm,10)<10)
	{
		var nmm = "0" + mm;
	}else
	{
		var nmm = mm;
	}
	if(parseInt(dd,10)<10)
	{
		var ndd = "0" + dd;
	}else
	{
		var ndd = dd;
	}
	var ngt = objDays.val();
	var cDate = addDay(yyyy, parseInt(mm,10), parseInt(dd,10), ngt);
	var months = parseInt(cDate.getMonth())+1;
	var days = cDate.getDate();
 
	if(parseInt(months,10)<10)
	{
		months = "0" + months;
	}
	if(parseInt(days,10)<10)
	{
		days = "0" + days;
	}
	objOut.val(cDate.getFullYear() + "." + months + "." + days);
}
/*
 * 함수 이름 : addDay()
 * 작성자 : yuniri (2010.09.28)
 * 기능 : 체크인, 체크아웃 날짜 체크
 * 적용방법 : 
* */
function addDay(yyyy, mm, dd, pDay)
{
	var oDate;
	dd = parseInt(dd)*1 + parseInt(pDay)*1;
	mm--;
 
	oDate = new Date(yyyy, mm, dd)
	return oDate;
}
	//---------------------------------------------------------------------
	// Function name : getFormattedVal 
	// Description   : 숫자를 포멧이 갖추어진 문자열로 바꿈

	//                 ###3 <= 숫자3은 세자리마다 ,를 찍겠다는 말

	//                 .##### <= .(소수점)뒤로 5자리까지 표현하겠다는 말

	// Parameter     : value  : 검사할 값

	//                 format : 변환할 형태
	// Return        :  변환된 값 리턴
	// -------------------------------------------------------------------- 
	// Usage         : getFormattedVal(value , "###3.#####")
	//---------------------------------------------------------------------

	function getFormattedVal(value,format) {
	    value = ""+value;
	
	    if(!format)
	      return value;
	
	    var sp = parseInt(format.charAt(3));
	
	    if(!sp)
	      return value;
	
	    var pos = 0;
	    var ret = "";
	    var vSplit = value.split('.');
	    var fSplit = format.split('.');
	    var fp = fSplit[1];
	    var fv = vSplit[1];
	    var lv = vSplit[0];
	    var len = lv.length;
	
	    for(var i = len % sp; i < len; i += sp){
	        if(i == 0 || lv.charAt(i-1) == '-')
	            ret += lv.substring(pos,i);
	        else
	            ret += lv.substring(pos,i)+',';
	        pos = i;
	    }
	
	    ret += lv.substring(pos,len);
	
	    if(!fv)
	        fv = "";
	    if(!fp)
	        fp = "";
	
	    var len1 = fp.length;
	    var len2 = fv.length;
	
	    if(len1)
	      ret += '.' + fv.substring(0,len1) + fp.substring(len1,len2);
	    return ret;
	}
	
	
function Ytabs() {

	this.defaults = {
		id: null,
		active: 1,
		timeout: null,
		interval: null,
		tabclass: '_lists_',
		activeclass: 'active',
		isImgtab:false
	};
	
	for (var n in arguments[0]) { this.defaults[n]=arguments[0][n]; };	
	
	this.getTabs = function() {
        
		
        var retnode = [];
        var elem = document.getElementById(this.defaults.id).getElementsByTagName('*');
		
		var regexp = new RegExp("(^|\\s)" + this.defaults.tabclass.replace(/\-/g, "\\-") + "(\\s|$)");
	
        for (var i = 0; i < elem.length; i++) {
        if (regexp.test(elem[i].className)) retnode.push(elem[i]);
        }
    
        return retnode;
    
    };
	
	this.links = document.getElementById(this.defaults.id + '-nav').getElementsByTagName('li');
	
	this.tabImgs = document.getElementById(this.defaults.id + '-nav').getElementsByTagName('img');
	
	this.show = function(number){
        for (var i = 0; i < this.tabs.length; i++) {
			this.tabs[i].style.display = ((i + 1) == number) ? 'block' : 'none';
			
			if (this.defaults.isImgtab) {
				this.tabImgs[i].src = ((i + 1) == number) ? $(this.tabImgs[i]).attr("src").replace(".jpg", "_on.jpg") : $(this.tabImgs[i]).attr("src").replace("_on.jpg", ".jpg");
			}
			else {
				this.links[i].className = ((i + 1) == number) ? this.defaults.activeclass : '';
			}
		}
    };
	
	 this.rotate = function(interval){
    
        this.show(this.defaults.active);
        this.defaults.active++;
    
        if(this.defaults.active > this.tabs.length) this.defaults.active = 1;
    
        var self = this;
        this.defaults.timeout = setTimeout(function(){self.rotate(interval);}, interval*1000);
    
    };
	
	this.tabs = this.getTabs();
	this.show(this.defaults.active);
	
	var self = this;
	for (var i = 0; i < this.links.length; i++) {
	this.links[i].customindex = i+1;
	this.links[i].onclick = function(){ if (self.defaults.timeout) clearTimeout(self.defaults.timeout); self.show(this.customindex); return false; };
    }
	
	if (this.defaults.interval) this.rotate(this.defaults.interval);
	
};

jQuery.resimg = function(element, options){ 
    var setting = { imageWidth:600, borderColor:false } 
    $.extend(setting, options); 
	
    var imageWidth = setting.imageWidth; 
    var borderColor = setting.borderColor; 
	
	//alert($(element).children().get().length); 
    $(element).each(function(){ 
	var img_width = $(this).outerWidth(); 
    var img_height = $(this).outerHeight(); 

	//원래 사이즈를 저장한다. 
    //$(this).attr("tmp_width", img_width); 
    //$(this).attr("tmp_height", img_height); 
	var i = $(element).index($(this)); 
	$(element)[i].tmp_width = img_width; 
    $(element)[i].tmp_height = img_height; 
	
    // 이미지 폭이 테이블 폭보다 크다면 테이블폭에 맞춘다 
    if(img_width > imageWidth) { 
        imageHeight = parseFloat(img_width/ img_height); 
        $(this).width(imageWidth).height(parseInt(imageWidth / imageHeight)).css("cursor", "pointer"); 
//$(this).width(imageWidth).css("cursor", "pointer"); 
    } 

    if (borderColor) $(this).css({ "border" : "1px solid "+ borderColor }); 
}); 
}
// 페이지 맨 위로 이동 
function goTop(){
	$( 'html, body' ).animate( { scrollTop: 0 }, 500 );
}

//flashLoad(파일경로, 가로, 세로, 아이디, 배경색, 변수, 윈도우모드)
function flashLoad(url,w,h,id,bg,vars,win) {

	var win = "transparent";

	// 플래시 코드 정의
	var flashStr=
	"<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0' width='"+w+"' height='"+h+"' id='"+id+"' align='middle'>"+
	"<param name='allowScriptAccess' value='always' />"+
	"<param name='movie' value='"+url+"' />"+
	"<param name='FlashVars' value='"+vars+"' />"+
	"<param name='wmode' value='"+win+"' />"+
	"<param name='menu' value='false' />"+
	"<param name='quality' value='high' />"+
	"<param name='bgcolor' value='"+bg+"' />"+
	"<param name='base' value='.'>"+
	"<embed src='"+url+"' FlashVars='"+vars+"' wmode='"+win+"' menu='false' quality='high' base='.' bgcolor='"+bg+"' width='"+w+"' height='"+h+"' name='"+id+"' align='middle' allowScriptAccess='always' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' />"+
	"</object>";

	// 플래시 코드 출력
	document.write(flashStr);
	
	//Flash의 ExternalInterface가 Form Tag내에서 오류나는 버그를 해결하는 코드     
	eval("window." + id + " = document.getElementById('" + id + "');");

}

