
function getBrowserInfo(){
    var browser;
    var version;
    if(navigator.appName==""){
        browser="Unknown";
    } else {
        browser=navigator.appName;
    }

    version = parseFloat(navigator.appVersion);
    if ((Math.round(parseFloat(navigator.appVersion)*100)) - (parseInt(navigator.appVersion) * 100) == 0) {
        version = version + ".0";
    }

    if (navigator.appName.substring(0,9) == "Microsoft") {
        var msiestart = (navigator.appVersion.indexOf('(') + 1);
        var msieend = navigator.appVersion.indexOf(')');
        var msiestring = navigator.appVersion.substring(msiestart, msieend);
        var msiearray = msiestring.split(";");
        var platform = msiearray[2];
        var msieversion = msiearray[1].split(" ");
        version = msieversion[2];
    }
    return [browser,version];
};

function isIE7(){
    var verInfo = getBrowserInfo();
    if( verInfo[0].indexOf("Microsoft") != -1 && verInfo[1].indexOf("7.0") != -1 ){
        return true;
    }
    return false;
}

function isIE(){
    var info = getBrowserInfo();
    if( info[0].indexOf("Microsoft") != -1 ){
        return true;
    }
    return false;
}

function getIE7PlusFix(fix){
    if( isIE7() ){
        return fix;
    }
    return 0;
}

function trim(str){
	str = str.replace(/^\s*/,'').replace(/\s*$/, '');
	return str;
}

function isEmail(mail) {
	if(!/^[\w_-]+(\.[\w_-]+)*@[\w_-]+(\.[\w_-]+)*\.\w{2,3}$/.test(mail)) {
		return false;
	}

	return true;
}

function isNumber(num) {
	var numLen = num.length;
	for( var i = 0 ; i < numLen ; i++ ) {
		var chr = num.charAt(i);
		if( '0' > chr || '9' < chr ) {
			return false;
		}
	}

	return true;
}
function isNumberAndDot(num) {
	var numLen = num.length;
	for( var i = 0 ; i < numLen ; i++ ) {
		var chr = num.charAt(i);
		if( '0' > chr || '9' < chr ) {
			if(chr!="."){
				return false;
			}
		}
	}
	return true;
}
function isNumberAndDotAndComma(num) {
	var numLen = num.length;
	for( var i = 0 ; i < numLen ; i++ ) {
		var chr = num.charAt(i);
		if( '0' > chr || '9' < chr ) {
			if(chr!="."&&chr!=","){
				return false;
			}
		}
	}
	return true;
}
/*
* 이벤트에 의해 처리된다.
* 한글 전환 불가 모드에서 처리 해야 한다.
* 탭 버튼과 backspace 버튼은 검증에서 제외된다.
*/
function numericOnly(){
	/*
	* event code 8 = backspace
	* event code 9 = tab
	*/
	if(event.keyCode != 8 && event.keyCode != 9) {
		if((event.keyCode < 48)||(event.keyCode > 57)
				&& (event.keyCode < 96 || event.keyCode > 105 ) ) {
		   event.returnValue=false;
		}
	}
}

/*
* 이벤트에 의해 처리된다.
* 한글 전환 불가 모드에서 처리 해야 한다.
* 탭 버튼과 backspace 버튼은 검증에서 제외된다.
* firefox 에서 처리 되도록 수정
*/
function numericOnlyExt(e){
	/*
	* event code 8 = backspace
	* event code 9 = tab
	*/
	var charCode = (window.event) ?  event.keyCode : e.which;
	if (charCode > 31 && (charCode < 48 || charCode > 57)) {
		if(charCode != 46){
			return false;
		}
	}
	return true;
	/*
	if(e.keyCode != 8 && e.keyCode != 9) {
		if((e.keyCode<48)||(e.keyCode>57)) {
		   e.returnValue=false;
		}
	}
	*/
}

function returnImageSize(imageFileUrl){

	if(imageFileUrl == null || imageFileUrl ==""){
		return null;
	}

	var imagePath = imageFileUrl;
	var imageInfo = new Image();
	var ImageInfoArray = new Array(2);

	imageInfo.src = imagePath;
	ImageInfoArray[0] = imageInfo.width;
	ImageInfoArray[1] = imageInfo.height;

	return ImageInfoArray;
}

function isWhiteSpace(str){
	var pattern = /\s+/;
	if(str.length == 0 ){
		return true;
	}
	return (pattern.test(str) && str.length == RegExp.lastIndex) ? true : false;
}


function isCheckboxed(value){
	var obj = value;
	for(var i=0; i<obj.length;i++){
		if( obj[i].checked ) return true;
	}
	return false;
}

String.prototype.trim = function(){
	return this.replace(/(^\s*)|(\s*$)/gi, "");
}

/*
* return only character length except white space or new line
*/
String.prototype.lengthWithoutSpace= function() {
	return this.replace(/(\s)+/gi, "").length;
}

String.prototype.replaceAll = function(str1, str2){
	var temp_str = "";

	if (this.trim() != "" && str1 != str2){
		temp_str = this.trim();
		while (temp_str.indexOf(str1) > -1){
			temp_str = temp_str.replace(str1, str2);
		}
	}
	return temp_str;
}


function isImgFile(str){
	var ext = str.split(".");
	var imgchk = ext[ext.length-1].toUpperCase();

	if(imgchk == "JPG" || imgchk == "GIF" || imgchk == "BMP" || imgchk == "PNG"){
		return true;
	}else{
		return false;
	}
}

function isEng(str) {
	for(var i=0;i<str.length;i++){
		achar = str.charCodeAt(i);
		if( achar > 255 ){
			return false;
		}
	}
	return true;
}

/**
 * 오직 영어만 있는지의 여부를 판단한다.
 * isEng(str)함수고 제 역활을 하지 못해서 추가함
 * hmjkor@nowonplay.com
 */
function isOnlyEng(str){
	return str.search(/^[a-zA-Z]+$/) != -1;
}

function isKorean(str) {
	var i;
	var ch;

	for (i=0;i<str.length;i++) {
		ch = escape(str.charAt(i));

		if (strCharByte(ch) != 2) {
			return false;
		}
	}
	return true;
}

function strCharByte(chStr) {
	if (chStr.substring(0, 2) == '%u') {
		if (chStr.substring(2,4) == '00')
			return 1;
		else
			return 2;        //한글
	} else if (chStr.substring(0,1) == '%') {
		if (parseInt(chStr.substring(1,3), 16) > 127)
			return 2;        //한글
		else
			return 1;
	} else {
			return 1;
	}
}

function numberFormat(number) {
	var numStr = number.toString();
	if(numStr.length <= 1) {
		return "0"+numStr;
	} else {
		return number;
	}
}


function isLeapYear(year) {
	if((year%4==0) && (year%100!=0) || (year%400==0)){
		return true;
	}else{
		return false;
	}
}

function getRadioValue(ele) {

	for(i = 0; i < ele.length; i++) {
		if(ele[i].checked) {
			return ele[i].value;
		}
	}
}
/*
function getWeekDayString(num) {
	var str = "월요일";

	switch(num) {
		case 0 : str = "일요일";
			break;
		case 1 : str = "월요일";
			break;
		case 2 : str = "화요일";
			break;
		case 3 : str = "수요일";
			break;
		case 4 : str = "목요일";
			break;
		case 5 : str = "금요일";
			break;
		case 6 : str = "토요일";
			break;
	}

	return str;
}
*/
/*
* 엔터 값을 센다. \n 값
* textArea 같은 필드에서 현재 입력된 row count 를 구할 수 있다.
* 글자가 입력 되도 엔터값을 치면 않는다면 row count 는 0 이다
*/
function countLineBreaks (string) {
	var re = /\r\n|\r|\n/g;
	var n = 0;
	while (re.exec(string))
	  n++;
	return n;
}

/**
 * textarea의 rows보다 라인이 더 입력되면,
 * 입력받은 이벤트를 무시한다.
 * 따라서 onKeyPress 에 걸어줘야 함.
 */
function fixRowTextArea(textarea, maxRowCount){

	var lineBreaks = countLineBreaks(textarea.value);
	if(maxRowCount <= lineBreaks){
		for(i = lineBreaks; i >= maxRowCount; i--) {
			if(textarea.value.lastIndexOf("\n") != -1) {
				textarea.value = textarea.value.substring(0, textarea.value.lastIndexOf("\n")-1);
			}
		}
		/*
		alert("해당 필드에 입력 하실 수 있는 row 는 최대 " + maxRowCount + " 줄 까지 입니다.");
		event.keyCode = '';
		textarea.value = textarea.value.substring(0, textarea.value.lastIndexOf("\n")-1);
		*/
		return false;
	}else{
		return true;
	}
}

/**
 * 주민등록번호를 검사한다.
 * @param {Object} firstNumber 주민등록번호 앞자리
 * @param {Object} secondNumber 주민등록번호 뒷자리
 * @return true-유효한 주민번호
 */
function checkSocialNumber( firstNumber, secondNumber ){
	var i, sum = 0;
	var str = firstNumber + secondNumber;
	var first = firstNumber;
	var second=secondNumber;

	if( parseInt( second ) < 1000000 && parseInt( second ) > 2999999 ){
		return false;
	}

	if( str.length < 13 ){
		return false;
	}

	for (i=0,sum=0; i<12; i++){
		sum += ( ( ( i % 8 ) + 2 ) * ( str.charAt( i ) - "0" ) );
	}
	sum = 11 - ( sum % 11 );
	sum = sum % 10;

	if( sum == str.charAt( 12 ) ){
		return true;
	}
	return false;
}


/**
 * 외국인 등록번호 체크
 * @param {Object} firstNumber 첫번째 입력값
 * @param {Object} secondNumver 두번째 입력값
 * @return true - 유효한 번호
 */
function checkForeignNumber (firstNumber, secondNumver){
        var foreignNumber = firstNumber + secondNumber;

        if (isEmpty(foreignNumber)){
                return false;
        }
        if (foreignNumber.length != 13) {
                return false;
        }
        if ((foreignNumber.charAt(6) == "5") || (foreignNumber.charAt(6) == "6")){
           birthYear = "19";
        }else if ((foreignNumber.charAt(6) == "7") || (foreignNumber.charAt(6) == "8")){
           birthYear = "20";
        }else if ((foreignNumber.charAt(6) == "9") || (foreignNumber.charAt(6) == "0")){
           birthYear = "18";
        }else{
          alert("등록번호에 오류가 있습니다. 다시 확인하십시오.");
          return false;
        }
        birthYear += foreignNumber.substr(0, 2);
        birthMonth = foreignNumber.substr(2, 2) - 1;
        birthDate = foreignNumber.substr(4, 2);
        birth = new Date(birthYear, birthMonth, birthDate);

        if ( birth.getYear() % 100 != foreignNumber.substr(0, 2) ||
             birth.getMonth() != birthMonth ||
             birth.getDate() != birthDate) {
          return false;
        }
        return true;
}

function isEmpty(obj){
	if( obj == null ) {
		return true;
	}
	if( obj.trim() == "" ){
		return true;
	}
	return false;
}

function isEmptyObject(obj){
	if( obj.value == null ) {
		return true;
	}
	if( obj.value.trim() == "" ){
		return true;
	}
	return false;
}


function openLoadingDiv() {

}

function closeLoadingDiv() {

}

function removeOptions(ele) {
	for(i = ele.options.length; i >= 0; i--) {
		ele.options[i] = null;
	}
}

function addOptions(optionArray, textName, valueName, ele) {
	for(i = 0; i < optionArray.length; i++) {
		var optionMap = optionArray[i];
		ele.options.add(new Option(optionMap[textName], optionMap[valueName]));
	}
}
function addOptionsSelected(optionArray, textName, valueName, ele, selecti) {
	var tempi=0;
	for(i = 0; i < optionArray.length; i++) {
		var optionMap = optionArray[i];
		ele.options.add(new Option(optionMap[textName], optionMap[valueName]));
		if(optionMap[valueName]==selecti){
			tempi =i;
		}
	}
	if(selecti!=null&&selecti!="")
	ele.options.selectedIndex=tempi+1;
}


function getLastElement(eleStr) {

	var eles = document.getElementsByName(eleStr);
	return eles[eles.length-1];
}

function getFirstElement(eleStr) {
	var eles = document.getElementsByName(eleStr);
	return eles[0];
}

function getExtension(fileName) {

	return fileName.substring(fileName.lastIndexOf(".")+1, fileName.length);
}


function createHiddenElement(form, id, name, value ) {

	var newElement = document.createElement("INPUT");
	newElement.type = "hidden";
	newElement.name = name;
	newElement.id = id;
	newElement.value = value;
	form.appendChild(newElement);
	return newElement;

}

String.prototype.trim = function() {
	return this.replace(/(^ *)|( *$)/g, "");
}
String.prototype.ltrim = function() {
	return this.replace(/(^ *)/g, "");
}
String.prototype.rtrim = function() {
	return this.replace(/( *$)/g, "");
}

/*
 * input type='text' 빈공간을 없애준다.
 */
function checkEscape(srcElement){
      var objEv = srcElement;
      var numPattern = /[\s~!@\#$%^&*\()\-=+_'"\\|]/gi;
      if(numPattern.test(objEv.value)){
      objEv.value=objEv.value.replace(numPattern,"");
    }
}
 function checkEscape_b2b(srcElement){
     var objEv = srcElement;
     var numPattern = /[\s~!@\#$%^&*\()\=+_'"\\|]/gi;
     if(numPattern.test(objEv.value)){
     objEv.value=objEv.value.replace(numPattern,"");
   }
}

/*
 *  -_ 허용하는 함수입니다.
 */
function emailCheckEscape(srcElement){
      var objEv = srcElement;
      var numPattern = /[\s~!@\#$%^&*\()\=+'"\\|]/gi;
      if(numPattern.test(objEv.value)){
      objEv.value=objEv.value.replace(numPattern,"");
    }
}


// pwd 숫자, 영문자 체크해준다.
function codeMask( objects ) {
	var Svalue = objects.value;
	var	isNumber = 0;
	var	isChar = 0;
	if ( Svalue == "" ) {
		return -1;
	}

	for ( var Ncnt = 0 ; Ncnt < Svalue.length ; Ncnt ++ ) {
		if (( '0' <= Svalue.charAt( Ncnt )) && ( Svalue.charAt( Ncnt ) <= '9' )) {
			isNumber ++;
			continue;
		} else if (( 'A' <= Svalue.charAt( Ncnt )) && ( Svalue.charAt( Ncnt ) <= 'Z' )) {
			isChar ++;
			continue;
		} else if (( 'a' <= Svalue.charAt( Ncnt )) && ( Svalue.charAt( Ncnt ) <= 'z' )) {
			isChar ++;
			continue;
		} else {
			return 1;
		}
	}

	if ( isNumber == Svalue.length )
		return 2;

	if ( isChar == Svalue.length )
		return 3;

	return 0;
}
//pwd 숫자, 영문자 체크해준다.-학원 회원일 경우 슬래쉬 허용
function codeMask_b2b( objects ) {
	var Svalue = objects.value;
	var	isNumber = 0;
	var	isChar = 0;
	if ( Svalue == "" ) {
		return -1;
	}

	for ( var Ncnt = 0 ; Ncnt < Svalue.length ; Ncnt ++ ) {
		if (( '0' <= Svalue.charAt( Ncnt )) && ( Svalue.charAt( Ncnt ) <= '9' )) {
			isNumber ++;
			continue;
		} else if (( 'A' <= Svalue.charAt( Ncnt )) && ( Svalue.charAt( Ncnt ) <= 'Z' )) {
			isChar ++;
			continue;
		} else if (( 'a' <= Svalue.charAt( Ncnt )) && ( Svalue.charAt( Ncnt ) <= 'z' )) {
			isChar ++;
			continue;
		} else if (Svalue.charAt( Ncnt )=='-'){
			isChar ++;
			continue;
		} else {
			return 1;
		}
	}

	if ( isNumber == Svalue.length )
		return 2;

	if ( isChar == Svalue.length )
		return 3;

	return 0;
}
// pwd 연속된 숫자
function sequenceMask( objects ) {
	var Svalue = objects.value;
	var	isSame = 0;
	var	isAscending = 0;
	var	isDescending = 0;

	if ( Svalue == "" )
		return -1;

	for ( var Ncnt = 1 ; Ncnt < Svalue.length ; Ncnt ++ ) {
		var	prevChar = Svalue.charCodeAt( Ncnt - 1 );
		var	currChar = Svalue.charCodeAt( Ncnt );

		if ( prevChar == currChar ) {
			isSame ++;
			if ( isSame > 2 )
				return 1;
		} else
			isSame = 0;

		if ( prevChar + 1 == currChar ) {
			isAscending ++;
			if ( isAscending > 2 )
				return 2;
		} else
			isAscending = 0;

		if ( prevChar - 1 == currChar ) {
			isDescending ++;
			if ( isDescending > 2 )
				return 3;
		} else
			isDescending = 0;
	}

	return 0;
}

var PopUp = function(elementId){
	this.element = $(elementId);
	this.init();
}

/*
 * 팝업창을 띄워 준다.
 * 사용법 : var popUp = null;
 * Event.observe( window, 'load', function(){
 *	popUp = new PopUp('layerWrapper');
 * });
 * Event.observe를 이용하여 합니다.
 * popUp.show() 팝업창이 띄워진다.
 * popUp.hide() 팝업창을 닫아준다.
 */
	PopUp.prototype = {
	init : function(){
		if($('blackBg')==null){
			this.createDivBackground();
		}
	},
	showLayerWrapper : function(){
		//alert(this.element);
		var pos = this.position();
		this.element.setStyle({
			'position' : 'absolute',
			'zIndex' : '100',
			'left': pos[0] + "px",
			'top' : pos[1] + "px"
		});
		this.element.show();
	},
	getDimension : function(){
		var widthWithScroll = document.documentElement.scrollWidth;
		var heightWithScroll = document.documentElement.scrollHeight+ 30;
		//$('blackBg').style.width = widthWithScroll;
		$('blackBg').style.width = "100%";
		$('blackBg').style.height = heightWithScroll;
	},
	/*
	 * DIV 투명한 검은색 배경을 보여준다.
	 */
	show : function(){
		this.getDimension();
		$('blackBg').show();
		this.showLayerWrapper();
	},
	show2 : function(){
		this.getDimension();
		this.showLayerWrapper();
	},
	hide : function(){
		this.element.hide();
		$('blackBg').hide();
	},
	/*
	 * body에 DIV 투명한 검은색 배경을 만든다.
	 */
	createDivBackground : function () {
		var createDiv = document.createElement('div');
		createDiv.setAttribute('id', 'blackBg');
		createDiv.style.display = 'none';
		createDiv.style.position = 'absolute';
		createDiv.style.background = '#000000';
		createDiv.style.filter = 'alpha(opacity=50)';
		createDiv.style.zIndex = '99';
		createDiv.style.width = '100%';
		createDiv.style.top = 0;
		createDiv.style.left = 0;
		createDiv.style.opacity = '0.5';

		document.body.appendChild(createDiv);
	},
	position : function(){
		var topWithScroll = document.documentElement.scrollTop;
		var clientWithWidth = document.documentElement.clientWidth;
		var clientWithHeight = document.documentElement.clientHeight;
		var layerWrapperObjWidth = this.element.getWidth();
		var layerWrapperObjHeight = this.element.getHeight();

		var pos = [];
		pos[0] = (clientWithWidth - layerWrapperObjWidth)/ 2;
		pos[1] = (clientWithHeight - layerWrapperObjHeight)/ 2 + (topWithScroll - 30);
		if(pos[0]<0){
			pos[0] = 0;
		}
		if(pos[1]<0){
			pos[1] = 0;
		}
		return pos;
	}
}

var PopupBgWhite = function(elementId){
	this.element = $(elementId);
}

/*
 * 팝업창을 띄워 준다.
 * 사용법 : var popUp = null;
 * Event.observe( window, 'load', function(){
 *	popUp = new PopUp('layerWrapper');
 * });
 * Event.observe를 이용하여 합니다.
 * popUp.show() 팝업창이 띄워진다.
 * popUp.hide() 팝업창을 닫아준다.
 */
PopupBgWhite.prototype = {
	showLayerWrapper : function(){
		var pos = this.position();
		this.element.setStyle({
			'position' : 'absolute',
			'zIndex' : '100',
			'left': pos[0] + "px",
			'top' : pos[1] + "px"
		});
		this.element.show();
	},
	show : function(){
		this.showLayerWrapper();
	},
	hide : function(){
		this.element.hide();
	},
	position : function(){
		var topWithScroll = document.documentElement.scrollTop;
		var clientWithWidth = document.documentElement.clientWidth;
		var clientWithHeight = document.documentElement.clientHeight;
		var layerWrapperObjWidth = this.element.getWidth();
		var layerWrapperObjHeight = this.element.getHeight();

		var pos = [];
		pos[0] = (clientWithWidth - layerWrapperObjWidth)/ 2;
		pos[1] = (clientWithHeight - layerWrapperObjHeight)/ 2 + (topWithScroll - 30);
		if(pos[0]<0){
			pos[0] = 0;
		}
		if(pos[1]<0){
			pos[1] = 0;
		}
		return pos;
	}
}

/**
* textarea 박스의 byte수를 체크한다.
* 사용법
* <form method='post' name='form'>
* <textarea name='sms_msg' value='' onkeyup="length_count(this, 80)" onchange="length_count(this, 80)" onfocus="length_count(this, 80)"  cols=16 rows=5></textarea><br>
* <span id='sms_msg_count'>0</span> Byte (80바이트까지 입력가능합니다.)
* </form>
* 표시될 글자수의  name (sapn의 name)은 textarea name + '_count' 임
**/
function length_count(filed, max_count){
	var str;
	var str_count = 0;
	var cut_count = 0;
	var str_length = filed.value.length;

	for(k=0; k < str_length; k++){
		str = filed.value.charAt(k);
		if(escape(str).length > 4){
			str_count += 2;
		}else{
			// (\r\n은 1byte 처리)
			if(escape(str)=='%0A') {

			}else{
				str_count++;
			}
		}
		if(max_count < str_count){
			alert("글자수가 "+ max_count +" byte 이상은 사용불가능합니다");
			if(escape(str).length > 4){
				str_count -= 2;
			}else{
				str_count--;
			}
			filed.value = filed.value.substring(0,k);
			break;
		}
	}
}

var domainList = [
	'naver.com', 'chol.com', 'dreamwiz.com', 'empal.com', 'freechal.com',
	'gmail.com', 'hanafos.com', 'hanmail.net', 'hanmir.com', 'hitel.net',
	'hotmail.com', 'korea.com',	'lycos.co.kr', 'nate.com', 'netian.com',
	'paran.com', 'yahoo.com', 'yahoo.co.kr'
];

var EmailDomain = {
	domainList : [
		'naver.com', 'chol.com', 'dreamwiz.com', 'empal.com', 'freechal.com',
		'gmail.com', 'hanafos.com', 'hanmail.net', 'hanmir.com', 'hitel.net',
		'hotmail.com', 'korea.com',	'lycos.co.kr', 'nate.com', 'netian.com',
		'paran.com', 'yahoo.com', 'yahoo.co.kr'
	],
	isSelected : false,
	inputEle : null,
	selectDomain : function(ele, layerId){
		this.inputEle = ele;
		var divClass = ele.parentElement;
		divClass.style.position = 'relative';
		var eleValue= ele.value.toLowerCase();
		if(eleValue!=''){
			var cnt = 0;
			var ele = $(layerId);
			var innerStr = "<ul>";

			for(var i=0; i < this.domainList.length; i++){
				if(eleValue.substr(0, eleValue.length) == this.domainList[i].substr(0, eleValue.length)){
					var first = this.domainList[i].substr(0,1);
					var rest = this.domainList[i].substr(1);
					innerStr +='<li>';
					innerStr +='	<a style="cursor:pointer" onclick="EmailDomain.selectedDomain(\''+ this.domainList[i] +'\', '+ layerId +')">';
					innerStr +='<strong>'+ first +'</strong>' + rest;
					innerStr +='	</a>';
					innerStr +='</li>';
					cnt++;
				}
			}
			innerStr +="</ul>";

			ele.innerHTML = innerStr;

			if(cnt>0){
				ele.style.left = this.inputEle.offsetLeft - 10;
				ele.show();
			} else {
				ele.hide();
			}
		}
	},
	selectedDomain : function(val, layerId){
		this.inputEle.value = val;
		var divClass = this.inputEle.parentElement;
		divClass.style.position = '';
		$(layerId).hide();
	},
	doMouseOver : function(){
		EmailDomain.isSelected = true;
	},
	doMouseHide : function(){
		EmailDomain.isSelected = false;
	},
	doListHide : function(layerId){
		if(!EmailDomain.isSelected){
			if(this.inputEle!=null){
				var divClass = this.inputEle.parentElement;
				divClass.style.position = '';
				$(layerId).hide();
			}
		}
	}
}

// 검색 기간
function getFormattedDate(objDate) {
	year = ""+objDate.getFullYear();
	month = objDate.getMonth();
	date = objDate.getDate();
	year = year.substring(2);
	if(month < 9) {
		month = "0"+(month + 1);
	}

	if(date < 10) {
		date = "0"+date;
	}
	return year+month+date;
}
function setPeriod(startDate, endDate) {
	frm = $("searchForm");
	frm.SEARCH_START_DATE.value = startDate;
	frm.SEARCH_END_DATE.value = endDate;
}
function setPeriodToday(e) {
	Event.stop(e);
	var today = new Date();
	var strToday = getFormattedDate(today);
	setPeriod(strToday, strToday);
}
function setPeriodWeek(e) {
	Event.stop(e);
	var today = new Date();
	var startDate = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7);
	var endDate = today;

	var strStartDate = getFormattedDate(startDate);
	var strEndDate = getFormattedDate(endDate);
	setPeriod(strStartDate, strEndDate);
}
function setPeriodMonth(e) {
	Event.stop(e);
	var today = new Date();
	var startDate = new Date(today.getFullYear(), today.getMonth() - 1, today.getDate());
	var endDate = today;

	var strStartDate = getFormattedDate(startDate);
	var strEndDate = getFormattedDate(endDate);
	setPeriod(strStartDate, strEndDate);
}
function setPeriodThreeMonth(e) {
	Event.stop(e);
	var today = new Date();
	var startDate = new Date(today.getFullYear(), today.getMonth() - 3, today.getDate());
	var endDate = today;

	var strStartDate = getFormattedDate(startDate);
	var strEndDate = getFormattedDate(endDate);
	setPeriod(strStartDate, strEndDate);
}
function setPeriodSixMonth(e) {
	Event.stop(e);
	var today = new Date();
	var startDate = new Date(today.getFullYear(), today.getMonth() - 6, today.getDate());
	var endDate = today;

	var strStartDate = getFormattedDate(startDate);
	var strEndDate = getFormattedDate(endDate);
	setPeriod(strStartDate, strEndDate);
}
function setPeriodYear(e) {
	Event.stop(e);
	var today = new Date();
	var startDate = new Date(today.getFullYear() - 1, today.getMonth(), today.getDate());
	var endDate = today;

	var strStartDate = getFormattedDate(startDate);
	var strEndDate = getFormattedDate(endDate);
	setPeriod(strStartDate, strEndDate);
}
function setPeriodFulll(e) {
	Event.stop(e);
	var today = new Date();
	var endDate = today;
	var strStartDate = "000000";
	var strEndDate = getFormattedDate(endDate);
	setPeriod(strStartDate, strEndDate);
}


/**
* Ajax
*/
function httpRequest(_url, _fn, _prm) {
	var qry = '';
	var httpReq = new Ajax.Request(_url, {
		parameters: _prm,
		onComplete: function(httpReq) {
		var rep = httpReq.responseText;
		_fn(rep);
	},
	onException: httpException
	});
}

function httpException(){
	alert('오류가 발생하였습니다. 잠시후 다시 시도하여 주십시오.');
}

var LogIn = {
	validation : function() {
		var saveMemberId = $('saveMemberId');
		if(saveMemberId!=null){
			/* id save */
			if(saveMemberId.checked){
				if(!$('saveMemberId').getValue().blank()){
					setCookie( 'saveMemberId',  $('MEMBER_ID').getValue(), '365');
				}
			} else {
				deleteCookie('saveMemberId');
			}
		}
		var loginForm = $('loginForm');
		if(loginForm.MEMBER_ID.value.trim()==''){
			alert('아이디를 입력 하여 주십시오.');
			loginForm.MEMBER_ID.focus();
			return;
		}
		if(loginForm.MEMBER_PASSWORD.value.trim()==''){
			alert('패스워드를 입력 하여 주십시오.');
			loginForm.MEMBER_PASSWORD.focus();
			return;
		}
		return true;
	},
	httpRequest : function(event, isKeyDown){
		var loginForm = $('loginForm');
		if(isKeyDown) {
			if(event.keyCode != 13) {
				return;
			}
		}
		if(LogIn.validation()){
			dwr.engine.setErrorHandler(this.httpRequestError);
			var param = { 'MEMBER_ID': loginForm.MEMBER_ID.value, 'MEMBER_PASSWORD': loginForm.MEMBER_PASSWORD.value, 'returnURI' : $F('returnURI') };
			JLoginProcess.execute( param, function(res){
				if(res!=''){
					if(document.getElementById("choice_radio1")){
						location.href = "/schoolzone/my/class.do";
					}else{
						document.location.href = res;
					}
					
				} else {
					alert('로그인에 실패하였습니다. \r\n아이디/비밀번호를 확인하여 주십시오.');
				}
			});
		}
	},
	httpRequestError : function () {
		alert("DWR Server Error");
	},
	displayLoginBox : function(val){
		if(val=='0'){
			$('subLogin').hide();
			$('mainLogin').show();
		} else {
			$('subLogin').show();
			$('mainLogin').hide();
			LogIn.getMemberPointInfo();
		}
	},
	getMemberPointInfo: function(){
		JIndex.getMyPoint(function(res){
			var arry = res;
			(arry.length);
			if(arry[0] != -1){
				$('studyPoint').innerHTML = arry[0];
				$('bocachip').innerHTML = arry[1];
				$('coupon').innerHTML = arry[2];
			}else{
				$('studyPoint').innerHTML = 0;
				$('bocachip').innerHTML = 0;
				$('coupon').innerHTML = 0;
			}
		});
	}
}
var loginprocess=false;
var LogInEasySpeaking = {
	validation : function() {
		var loginForm = $('easyspeakingloginForm');
		if(loginForm.MEMBER_ID.value.trim()==''){
			alert('아이디를 입력 하여 주십시오.');
			loginForm.MEMBER_ID.focus();
			return;
		}
		if(loginForm.MEMBER_PASSWORD.value.trim()==''){
			alert('패스워드를 입력 하여 주십시오.');
			loginForm.MEMBER_PASSWORD.focus();
			return;
		}
		return true;
	},
	httpRequest : function(event, isKeyDown){
		
		var loginForm = $('easyspeakingloginForm');
		if(loginprocess){
			return;
		}
		if(isKeyDown) {
			if(event.keyCode != 13) {
				return;
			}
		}
		loginprocess=true;
		if(LogInEasySpeaking.validation()){
			//dwr.engine.setErrorHandler(this.httpRequestError);
			
			var param = { 'MEMBER_ID': loginForm.MEMBER_ID.value, 'MEMBER_PASSWORD': loginForm.MEMBER_PASSWORD.value,  'easyspeaking': 'ok' };
			JEasyspeakingLoginProcess.execute( param, function(res){
				loginprocess=false;
				if(res!=''){
					if(res=="notReg"){
						sendInfo();
					}else if(res=="notAgree"){
						if(confirm("이지스피킹 가입 약관에 약관에 동의하지 않으셨습니다.\n지금 약관에 동의하시겠습니까?")){
							var easyWin=window.open("/easyspeaking/agree.do?openlocation=easyspeaking","easyspeaking","width=720,height=390")
							if(easyWin==null){
								alert("팝업차단을 해제해주세요.");
							}
						}
					}else if(res=="withdrawal"){
						alert("탈퇴한 회원이십니다.\이지보카 사이트에서 다시 회원가입을 해주세요.");
					}else{
						sendLogin();
					}
					
				} else {
					alert('로그인에 실패하였습니다. \r\n아이디/비밀번호를 확인하여 주십시오.');
				}
			});
		}
	},
	httpRequestError : function () {
		alert("DWR Server Error!!");
	}
	
}

var MyPage = {
	validation : function() {
		var myPagePwCheckForm = $('myPagePwCheckForm');
		if(myPagePwCheckForm.MEMBER_PASSWORD.value.trim()==''){
			alert('패스워드를 입력 하여 주십시오.');
			myPagePwCheckForm.MEMBER_PASSWORD.focus();
			return;
		}
		return true;
	},
	httpRequest : function(event, isKeyDown){
		var myPagePwCheckForm = $('myPagePwCheckForm');
		if( isKeyDown ) {
			if(event.keyCode != 13) {
				return;
			}
		}
		if(MyPage.validation()){
//			dwr.engine.setErrorHandler(this.httpRequestError);
			var param = { 'MEMBER_ID': myPagePwCheckForm.MEMBER_ID.value, 'MEMBER_PASSWORD': myPagePwCheckForm.MEMBER_PASSWORD.value, 'returnURI' : $F('returnURI') };
			JMyPageProcess.execute( param, function(res){
				if(res!=''){
					document.location.href(res);
				} else {
					alert('아이디/비밀번호를 확인하여 주십시오.');
				}
			});
		}
	},
	httpRequestError : function () {
		alert("DWR Server Error");
	}
}

function passKorean(e) {
	var charCode = (window.event) ?  event.keyCode : e.which;
	//if (charCode > 31 && (charCode < 48 || charCode > 57)) {
	if (charCode < 128) {
		return false;
	}
	return true;
}

function isEnter(e, fnc) {
	var charCode = (window.event) ?  event.keyCode : e.which;
	if(13 == charCode) {
		fnc(e);
	}
}

/**
* textarea 박스의 byte수를 체크한다.
* 사용법
* <form method='post' name='form'>
* <textarea name='sms_msg' value='' onkeyup="length_count(this, 80)" onchange="length_count(this, 80)" onfocus="length_count(this, 80)"  cols=16 rows=5></textarea><br>
* <span id='sms_msg_count'>0</span> Byte (80바이트까지 입력가능합니다.)
* </form>
* 표시될 글자수의  name (sapn의 name)은 textarea name + '_count' 임
**/
function length_count(filed, max_count){
	var str;
	var str_count = 0;
	var cut_count = 0;
	var str_length = filed.value.length;

	for(k=0; k < str_length; k++){
		str = filed.value.charAt(k);
		if(escape(str).length > 4){
				str_count += 2;
			}else{
			// (\r\n은 1byte 처리)
			if(escape(str)=='%0A') {
			}else{
				str_count++;
			}
		}
		if(max_count < str_count){
			alert("글자수가 "+ max_count +" byte 이상은 사용불가능합니다");
			if(escape(str).length > 4){
				str_count -= 2;
			}else{
				str_count--;
			}
			filed.value = filed.value.substring(0,k);
			break;
		}
	}
	try{
		document.getElementById(filed.name+"_count").innerHTML = str_count;
		//eval("document.all."+ filed.name+"_count.innerHTML = str_count;");
	}catch(e){}
}

function lengthCount(filed, max_count){
	var str;
	var str_count = 0;
	var cut_count = 0;
	var str_length = filed.value.length;

	for(k=0; k < str_length; k++){
		str = filed.value.charAt(k);
		if(escape(str).length > 4){
			str_count += 2;
		}else{
			if(escape(str)=='%0A') {

			}else{
				str_count++;
			}
		}
		if(max_count < str_count){
			alert(max_count +"byte만 입력 가능 합니다.");
			if(escape(str).length > 4){
				str_count -= 2;
			}else{
				str_count--;
			}
			filed.value = filed.value.substring(0,k);
			break;
		}
	}
}

// className을 이용해서 선택된 checkbox의 값을 배열로 가지고 온다.
function getCheckedList(className) {
	var checkBoxes = $$("input."+className);
	var checkBoxLength = checkBoxes.length;
	var checkedWords = [];
	checkBoxes.each(function(el, i) {
		if(el.checked) {
			checkedWords.push(el.value);
		}
	});
	return checkedWords;
}

function getCheckedListByEl(els) {
	var checkBoxLength = els.length;
	var checkedWords = [];
	for(var i = 0; i < checkBoxLength; i++) {
		var el = els[i];
		if(el.checked) {
			checkedWords.push(el.value);
		}
	}
	return checkedWords;
}

//단어장 스크랩
function noteScrap(seq,login){
	if(login == 'true'){
		if(confirm("스크랩시 보카칩이 2chip차감됩니다.\n스크랩하시겠습니까?")){
			JThemeAll.carryThemeNote(seq,complete);
		}
	}else{
		var returnURI = document.URL;
		if(confirm("로그인이 필요한 서비스 입니다.\n로그인을 하시겠습니까?")){
			location.replace("/join/login.do?returnURI=" + encodeURIComponent(returnURI));
		}
	}
}

function complete(res){
	if(res == 2){
		alert("자신의 테마는 스크랩 할 수 없습니다.");
	}else if(res == 3){
		 location.replace("/join/login.do");
	}else if(res == -2){
		alert("보카칩이 부족합니다.\n단어장을 스크랩 하기 위해서는 \n보카칩이 필요햡니다.");
	}else{
		alert("스크랩 되었습니다.");
		location.reload();
	}
}

/**
 * 샘플 강의 팝업을 띄운다.(샘플 강의 레이어 보기에 사용)
 * hmjkor@nate.com
 * @param studySeq
 * @param phaseSeq
 * @return
 */
function startSampleStudy(studySeq, phaseSeq, studyName, mother_lang_code, meaning_lang_code){
	var form = $('sampleStudyForm');
	form.studySeq.value = studySeq;
	form.phaseSeq.value = phaseSeq;
	form.studyName.value = studyName;
	form.mother_lang_code.value = mother_lang_code;
	form.meaning_lang_code.value = meaning_lang_code;
	form.action="/corestudy/lectureSampleV2.jsp";
	window.open('', 'sampleStudy', 'width=980,height=580');
	form.target = "sampleStudy";
	form.submit();
}


function startPremiumStudy(commonStudySeq, studySeq, phaseSeq,  studyStatus , curLevelPosition, curLevelDetailPosition, studyName){
	var date = new Date();
	var form = $('premiumStudyForm');
	form.commonStudySeq.value = commonStudySeq;
	form.studySeq.value = studySeq;
	form.phaseSeq.value = phaseSeq;
	form.studyStatus.value = studyStatus;
	form.studyName.value = studyName;
	form.action="/corestudy/lectureView.jsp";

	//var url = '/corestudy/lectureView.jsp?dummy='+date.getTime() + '&studySeq=' + studySeq + '&phaseSeq=' + phaseSeq + '&commonStudySeq=' + commonStudySeq + "&studyName="+studyName;
	if( curLevelPosition  ){
		form.curLevelPosition.value = curLevelPosition;
		form.curLevelDetailPosition.value = curLevelDetailPosition;
		//url += "&curLevelPosition="+curLevelPosition+"&curLevelDetailPosition="+curLevelDetailPosition ;
	}
	//startPremiumStudy(studySeq, phaseSeq, commonStudySeq, studyName);
	//window.open(url , 'win', 'width=1024,height=768');

	window.open('', 'premiumStudy', 'width=1024,height=768');
	form.target = "premiumStudy";
	form.submit();
}


function startReviewStudy(commonStudySeq, studySeq, phase, studyName,reviewType){
	
	var date = new Date();
	var form = $('reviewStudyForm');
	form.commonStudySeq.value = commonStudySeq;
	form.studySeq.value = studySeq;
	form.phase.value = phase;
	form.studyName.value = studyName;
	form.reviewType.value = reviewType;
	form.action="/corestudy/reviewLectureView.jsp";

	window.open('', 'reviewStudy', 'width=1024,height=768');
	form.target = "reviewStudy";
	form.submit();
}

var sampleLayerPop = null;
var SampleLayer = {
	sampleLayerGet: function(){
	var sampleLayer = $('sampleLayer');
	if(sampleLayer==null){
		var createDiv = document.createElement('div');
		createDiv.setAttribute('id', 'sampleLayer');
		createDiv.className = 'popLy';
		createDiv.style.display = 'none';
		document.body.appendChild(createDiv);
	}
	sampleLayerPop = new PopUp('sampleLayer');
		var date = new Date();
		var url = '/study/sampleListLayer.do';
		var data = "code=all&dummy=" + date.getTime();
		var myAjax = new Ajax.Request(
		    url,
		    {method: 'post', parameters: data, onComplete: function(res){
			    $('sampleLayer').update(res.responseText);
			    sampleLayerPop.show();
			 }});
	},
	closeLayer: function(){
		sampleLayerPop.hide();
	}
}




/**
* 2009.04.21 추가 윤상진
* IE에서 셀렉트박스가 레이어위로 나오는 것을 해결하는 함수
* sample <div id=XXX onpropertychange="hideSelectBox(this)">
**/
function hideSelectBox(layerObj) {

    // 레이어 좌표
    var layerObj_left  = layerObj.offsetLeft;
    var layerObj_top    = layerObj.offsetTop;
    var layerObj_right  = layerObj.offsetLeft + layerObj.offsetWidth;
    var layerObj_bottom = layerObj.offsetTop + layerObj.offsetHeight;

    // 셀렉트박스의 좌표
    var el;

    var sbList = document.getElementsByTagName("select");
    if( sbList ){
        for (k=0; k < sbList.length; k++) {
            el = sbList[k];
            if (el.type == "select-one") {
                var el_left = el_top = 0;
                var obj = el;
                if (obj.offsetParent) {
                    while (obj.offsetParent) {
                        el_left += obj.offsetLeft;
                        el_top  += obj.offsetTop;
                        obj = obj.offsetParent;
                    }
                }
                el_left  += el.clientLeft;
                el_top    += el.clientTop;
                el_right  = el_left + el.clientWidth;
                el_bottom = el_top + el.clientHeight;

                // 좌표를 따져 레이어가 셀렉트 박스를 침범했으면 셀렉트 박스를 hidden 시킴
                var isOverlay =  ( (el_left >= layerObj_left && el_top >= layerObj_top && el_left <= layerObj_right && el_top <= layerObj_bottom) ||
                    (el_right >= layerObj_left && el_right <= layerObj_right && el_top >= layerObj_top && el_top <= layerObj_bottom) ||
                    (el_left >= layerObj_left && el_bottom >= layerObj_top && el_right <= layerObj_right && el_bottom <= layerObj_bottom) ||
                    (el_left >= layerObj_left && el_left <= layerObj_right && el_bottom >= layerObj_top && el_bottom <= layerObj_bottom) ) ;

                //TODO 히든 속성값 조절
                var isHidden = ( layerObj.style.display == 'none' || layerObj.style.visibility == 'hidden' );
                //alert( isOverlay + ":" +  isHidden);
                if( isOverlay ){
                    if( ! isHidden ){
                        el.style.visibility = 'hidden';
                    }else{
                        el.style.visibility = '';
                    }
                }
            }
        }
    }
}

/**
  * 쿠키 설정
  * @param cookieName 쿠키명
  * @param cookieValue 쿠키값
  * @param expireDay 쿠키 유효날짜
  */
function setCookie( cookieName, cookieValue, expireDate ){
	var today = new Date();
	today.setDate( today.getDate() + parseInt( expireDate ) );
	document.cookie = cookieName + "=" + escape( cookieValue ) + "; path=/; expires=" + today.toGMTString() + ";";
}


 /**
  * 쿠키값 추출
  * @param cookieName 쿠키명
  */
 function getCookie( cookieName ){
	var search = cookieName + "=";
	var cookie = document.cookie;

 	// 현재 쿠키가 존재할 경우
	if( cookie.length > 0 ){
 		 // 해당 쿠키명이 존재하는지 검색한 후 존재하면 위치를 리턴.
		startIndex = cookie.indexOf( cookieName );

  		// 만약 존재한다면
		if( startIndex != -1 ){
			// 값을 얻어내기 위해 시작 인덱스 조절
			startIndex += cookieName.length;

			// 값을 얻어내기 위해 종료 인덱스 추출
			endIndex = cookie.indexOf( ";", startIndex );

			// 만약 종료 인덱스를 못찾게 되면 쿠키 전체길이로 설정
			if( endIndex == -1) endIndex = cookie.length;

			// 쿠키값을 추출하여 리턴
			return unescape( cookie.substring( startIndex + 1, endIndex ) );
		} else {
			// 쿠키 내에 해당 쿠키가 존재하지 않을 경우
			return '';
		}
	} else {
		// 쿠키 자체가 없을 경우
		return '';
	}
}


 /**
  * 쿠키 삭제
  * @param cookieName 삭제할 쿠키명
  */
function deleteCookie( cookieName ){
	var expireDate = new Date();

	//어제 날짜를 쿠키 소멸 날짜로 설정한다.
	expireDate.setDate( expireDate.getDate() - 1 );
	document.cookie = cookieName + "= " + "; expires=" + expireDate.toGMTString() + "; path=/";
}
