
var StringUtil = {
	version: '1.0.0.0',
	position: function(o, pos){
		var wnd = $(window), doc = $(document),
			pTop = doc.scrollTop(), pLeft = doc.scrollLeft(),
			minTop = pTop;

		if ($.inArray(pos, ['center','top','right','bottom','left']) >= 0) {
			pos = [
				pos == 'right' || pos == 'left' ? pos : 'center',
				pos == 'top' || pos == 'bottom' ? pos : 'middle'
			];
		}
		if (pos.constructor != Array) {
			pos = ['center', 'middle'];
		}
		if (pos[0].constructor == Number) {
			pLeft += pos[0];
		} else {
			switch (pos[0]) {
				case 'left':
					pLeft += 0;
					break;
				case 'right':
					pLeft += wnd.width() - $(o).outerWidth();
					break;
				default:
				case 'center':
					pLeft += (wnd.width() - $(o).outerWidth()) / 2;
			}
		}
		if (pos[1].constructor == Number) {
			pTop += pos[1];
		} else {
			switch (pos[1]) {
				case 'top':
					pTop += 0;
					break;
				case 'bottom':
					pTop += wnd.height() - $(o).outerHeight();
					break;
				default:
				case 'middle':
					pTop += (wnd.height() - $(o).outerHeight()) / 2;
			}
		}
		pTop = Math.max(pTop, minTop);

		$(o).css({top: pTop, left: pLeft});
	},
	checkLength: function(o,n,min,max, proc, option) {
		if ( o.val().length > max || o.val().length < min ) {
			o.addClass('ui-state-error');

			var msg = '';

			if(min != max) msg = " 입력해주세요. ("+min+"자 ~ "+max+"자)";
			else msg = " 입력해주세요. ("+min+"자)";

			if(proc){
				proc(n + msg, option);
			} else {
				//this.messageBox(n + msg, o);
				alert(n + msg);
			}
			o.focus();

			return false;
		} else {
			return true;
		}
	},
	checkCompanyNo: function(o) {
		if (!chkCompNum(o.val())) {
			alert("사업자등록번호가 입력되지 않았거나 잘못된 사업자등록번호 입니다.\t\r정확히 입력해주세요.\t\r");
			o.val('');
			o.focus();
			return false;
		}
		return true;
	},
	checkRadioChecked: function(str, msg) {
		var o = $(':input:radio[name='+str+']:checked').val();
		if ( typeof o == "undefined" ) {
			alert(msg + " 선택하세요.");
			return false;
		} else {
			return true;
		}
	},
	checkBlank: function(o,n, proc, option) {
		if ( o.val() == '' ) {
			o.addClass('ui-state-error');

			var msg = ' 입력하세요. ';

			if(proc){
				proc(n + msg, option);
			} else {
				//this.messageBox(n + msg, o);
				alert(n + msg);
			}
			o.focus();

			return false;
		} else {
			return true;
		}
	},
	checkDuplicat: function(o,n, proc, option) {
		if ( o.val() == '' ) {
			o.addClass('ui-state-error');

			var msg = ' 확인하세요. ';

			if(proc){
				proc(n + msg, option);
			} else {
				//this.messageBox(n + msg, o);
				alert(n + msg);
			}
			o.focus();

			return false;
		} else {
			return true;
		}
	},
	checkEditorBlank: function(o,n, proc, option) {
		if ( o.getIR() == '' ) {
			var msg = ' 입력하세요. ';

			if(proc){
				proc(n + msg, option);
			} else {
				//this.messageBox(n + msg, o);
				alert(n + msg);
			}
			//o.focus();

			return false;
		} else {
			return true;
		}
	},
	checkSelected: function(o,n, proc, option) {
		if ( o.attr('selectedIndex') <= (o.attr('last') || 0) ) {
			o.addClass('ui-state-error');

			var msg = ' 선택하세요. ';

			if(proc){
				proc(n + msg, option);
			} else {
				//this.messageBox(n + msg, o);
				alert(n + msg);
			}
			o.focus();

			return false;
		} else {
			return true;
		}
	},
	checkChecked: function(o,n, proc, option) {
		if ( o.attr('checked') == false ) {
			o.addClass('ui-state-error');

			var msg = ' 선택하세요. ';

			if(proc){
				proc(n + msg, option);
			} else {
				//this.messageBox(n + msg, o);
				alert(n + msg);
			}
			o.focus();

			return false;
		} else {
			return true;
		}
	},
	checkEmail: function(o, proc, option) {
		if ( !this.boolCheckEmail(o.val()) ) {
			o.val('');
			o.addClass('ui-state-error');

			if(proc){
				proc("이메일형식으로 입력하세요. (ex - test@test.com) ", option);
			} else {
				//this.messageBox("이메일형식으로 입력하세요. (ex - test@test.com) ", o);
				alert("이메일형식으로 입력하세요. (ex - test@test.com) ");
			}
			o.focus();

			return false;
		} else {
			return true;
		}
	},
	checkDate: function(o, proc, option) {
		if ( !this.boolCheckDate(o.val()) ) {
			o.val('');
			o.addClass('ui-state-error');

			if(proc){
				proc("날짜형식으로 입력하세요. (ex - 20100118) ", option);
			} else {
				//this.messageBox("이메일형식으로 입력하세요. (ex - test@test.com) ", o);
				alert("날짜형식으로 입력하세요. (ex - 20100118) ");
			}
			o.focus();

			return false;
		} else {
			return true;
		}
	},
	checkPermitDate: function(o, proc, option) {
		if ( !this.boolCheckPermitDate(o.val()) ) {
			o.val('');
			o.addClass('ui-state-error');

			if(proc){
				proc(new Date().getYear() + "년 이전 년도부터 등록이 가능합니다.", option);
			} else {
				alert(new Date().getYear() + "년 이전 년도부터 등록이 가능합니다.");
			}
			o.focus();

			return false;
		} else {
			return true;
		}
	},
	checkNumber: function(o, proc, option) {
		if ( !this.boolCheckNumber(o.val())) {
			o.val('');
			alert("숫자만 입력해주세요.");
			o.focus();

			return false;
		} else {
			return true;
		}
	},
	checkIpAddress: function(o) {
		if ( !this.boolIpAddress(o.val())) {
			o.val('');
			o.addClass('ui-state-error');
			alert("아이피를 입력해주세요. (ex - 000.000.000.000) ");
			o.focus();
			return false;
		} else {
			return true;
		}
	},
	checkTel: function(o, n, proc, option) {
		if ( !this.boolCheckTel(o.val())) {
			o.val('');
			o.addClass('ui-state-error');
			if(proc){
				proc(n + " 형식으로 입력해주세요. (ex - 000-0000-0000) ", option);
			} else {
				//this.messageBox("전화번호 형식으로 입력해주세요. (ex - 000-0000-0000) ", o);
				alert(n + " 형식으로 입력해주세요. (ex - 000-0000-0000) ");
			}
			o.focus();

			return false;
		} else {
			return true;
		}
	},
	checkKorean: function(o, proc, option) {
		if ( !this.boolCheckKorean(o.val())) {
			o.val('');
			o.addClass('ui-state-error');

			if(proc){
				proc("한글을 제외한 영문,특수문자로 입력해주세요.", option);
			} else {
				//this.messageBox("한글을 제외한 영문,특수문자로 입력해주세요.", o);
				alert("한글을 제외한 영문,특수문자로 입력해주세요.");
			}
			o.focus();

			return false;
		} else {
			return true;
		}
	},
	checkId: function(o, proc, option) {
		if ( !this.boolCheckID(o.val())) {
			o.val('');
			o.addClass('ui-state-error');

			if(proc){
				proc("영문,숫자로만 입력해주세요.", option);
			} else {
				//this.messageBox("영문,숫자문자로만 입력해주세요.", o);
				alert("영문,숫자문자로만 입력해주세요.");
			}
			o.focus();

			return false;
		} else {
			return true;
		}
	},
	checkId2: function(o) {
		var str = o.val();

		if (str.length < 4 || str.length > 20) {
			alert("아이디를 입력해주세요.\t\r아이디는 영문자, 숫자 4자 이상 20자 이내로 입력하셔야 합니다.\t\r");
			o.val('');
			o.focus();
			return false;
		}
		var regExp = /[^a-z]/i;
		if (regExp.test(o.val().charAt(0))) {
			alert("아이디의 첫글자는 영문자로 시작해야 됩니다.\t\r");
			o.val('');
			o.focus();
			return false;
		}
		if ( !this.boolCheckKorean(str)) {
			alert("아이디는 영문자와 숫자만 사용가능합니다.\t\r");
			o.val('');
			o.focus();
			return false;
		}

		return true;
	},
	checkPasswd: function(o, o2) {
		if(o.val() == ""){
			alert("비밀번호를 입력하세요.");
			o.focus();
			return false;
		}
		if(o.val().length < 6){
			alert("6자 이상의 비밀번호를 입력하세요.");
			o.focus();
			return false;
		}
		if(o2.val() == ""){
			alert("비밀번호 확인을 입력하세요.");
			o2.focus();
			return false;
		}
		if (o.val() != o2.val()) {
			alert("비밀번호와 비밀번호 확인이 일치하지 않습니다. 다시 입력하십시오");
			o2.val('');
			o2.focus();
			return false;
		}
		return true;
	},
	checkJumin: function(o, proc, option) {
		if ( !this.boolCheckJumin(o.val())) {
			o.val('');
			o.addClass('ui-state-error');

			alert("주민번호 형식으로 입력해주세요. ex) xxxxxx-xxxxxxx ");

			o.focus();

			return false;
		} else {
			return true;
		}
	},
	checkJuminNo2: function(o, o2) {
		if(o.val() == ""){
			alert("주민등록번호 앞자리를 입력하세요.");
			o.focus();
			return false;
		}
		if(o2.val() == ""){
			alert("주민등록번호 뒷자리를 입력하세요.");
			o2.focus();
			return false;
		}
		var str = o.val() + o2.val();
		if (!chkJumin(str)) {
			alert("잘못된 주민등록번호 입니다.\t\r정확히 입력해주세요.\t\r");
			o.val('');
			o.focus();
			return false;
		}
		return true;
	},
	messageBox: function(msg, o){
		$("#alert-msg").html(msg);
		$('#alert').dialog('open');
	},
	messageBoxOK: function(){
	},
	boolCheckNumber: function(number){
		if(number != "")
		{
			if ( !(/[^0-9]/g).test(number) ){
				return true;
			}
		}
		return false;
	},
	boolCheckTel: function(tel){
		if ( !(/^\d{2,3}-\d{3,4}-\d{4}$/).test(tel) ){
			return false;
		}
		return true;
	},
	boolIpAddress: function(ip){
		if ( !(/^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$/).test(ip) ){
			return false;
		}
		return true;
	},
	boolCheckDate: function(date){
		//if ( !(/[12][0-9]{3}[01][0-9}{1}[0123][0-9]{1}/).test(date) ){
		if(!(/^[0-9]{4}[0-9]{2}[0-9]{2}/).test(date)){
			return false;
		}
		return true;
	},
	boolCheckPermitDate: function(date){
		if ( date.substring(0,4) >= new Date().getYear() ){
			return false;
		}
		return true;
	},
	boolCheckEmail: function(email){
		if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/).test(email)){
			return false;
		}		
		return true;
	},
	boolCheckKorean: function(str){
		if( !((/[\xA1-\xFExA1-\xFE]/img).test(str)) ){
			return false;
		}		
		return true;
	},
	boolCheckID: function(str){
		if( ((/[^a-zA-Z0-9]/img).test(str)) ){
			return false;
		}		
		return true;
	},
	boolCheckJumin: function(jumin){
		if( !(/^\d{6}-[1|2|3|4]\d{6}$/).test(jumin) ){
			return false;
		}
		return true;
	},
	flashChertWrite: function(strXMLData){

		var script = "<OBJECT classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0' WIDTH='100%' HEIGHT='400' id='FusionCharts' ALIGN='' VIEWASTEXT>";
		script = script + "<PARAM NAME='FlashVars' value='&dataXML=" + strXMLData + "'>";
		script = script + "<PARAM NAME=movie VALUE='/Resource/Swf/Column3D.swf?chartWidth=700&chartHeight=400'>";
		script = script + "<PARAM NAME=quality VALUE=high>";
		script = script + "<PARAM NAME=bgcolor VALUE=#FFFFFF>";
		script = script + "<PARAM NAME=wmode value=transparent>";
		script = script + "<EMBED src='/Resource/Swf/Column3D.swf?chartWidth=700&chartHeight=400' FlashVars='&dataXML=" + strXMLData + "' wmode='transparent' quality=high bgcolor=#FFFFFF WIDTH='100%' HEIGHT='400' NAME='FusionCharts' ALIGN='' TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/go/getflashplayer'></EMBED>";
		script = script + "</OBJECT>";

		return script;
	}
};


$(function(){
});
		
// old school cookie functions
var Cookies = {};
Cookies.set = function(name, value){
	 var argv = arguments;
	 var argc = arguments.length;
	 var expires = (argc > 2) ? argv[2] : null;
	 var path = (argc > 3) ? argv[3] : '/';
	 var domain = (argc > 4) ? argv[4] : null;
	 var secure = (argc > 5) ? argv[5] : false;
	 document.cookie = name + "=" + escape (value) +
	   ((expires == null) ? "; expires=Thu, 01-Jan-19 00:00:01 GMT" : ("; expires=" + expires.toGMTString())) +
	   ((path == null) ? "" : ("; path=" + path)) +
	   ((domain == null) ? "" : ("; domain=" + domain)) +
	   ((secure == true) ? "; secure" : "");
};

Cookies.get = function(name){
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	var j = 0;
	while(i < clen){
		j = i + alen;
		if (document.cookie.substring(i, j) == arg)
			return Cookies.getCookieVal(j);
		i = document.cookie.indexOf(" ", i) + 1;
		if(i == 0)
			break;
	}
	return null;
};

Cookies.clear = function(name) {
  if(Cookies.get(name)){
	document.cookie = name + "=" +
	"; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
};

Cookies.getCookieVal = function(offset){
   var endstr = document.cookie.indexOf(";", offset);
   if(endstr == -1){
	   endstr = document.cookie.length;
   }
   return unescape(document.cookie.substring(offset, endstr));
};

//주민등록번호유효체크
function chkJumin(num) {
    var reg = /([0-9]{6})-?([0-9]{7})/;
    if (!reg.test(num)) return false;

    var ssn = RegExp.$1 + RegExp.$2 + RegExp.$3;
    var sum = 0;
    var digit = "234567892345";
    for (var i = 0; i < 12; i++)
        sum += parseInt(ssn.charAt(i)) * parseInt(digit.charAt(i));

    var result = (11 - (sum % 11)) % 10;
    var check = parseInt(ssn.charAt(12));

    if (result != check) return false;

    return true;
}
//사업자번호체크
function chkCompNum(str) {
    var reg = /([0-9]{3})-?([0-9]{2})-?([0-9]{5})/;
    if (!reg.test(str)) return false;

    var strCompNum = RegExp.$1 + RegExp.$2 + RegExp.$3;
    if (strCompNum == "0000000000") return false;

    var intSum = 0;
    var strDigit = "13713713";
    var intEnd = strCompNum.charAt(9);

    for (var i = 0; i < 8; i++)
        intSum = intSum + (parseInt(strCompNum.charAt(i)) * parseInt(strDigit.charAt(i))) % 10;

    var strTemp = parseInt(strCompNum.charAt(8)) * 5 + "0";
    var intChk = parseInt(strTemp.charAt(0)) + parseInt(strTemp.charAt(1));
    var intMatch = (10 - (intSum + intChk) % 10) % 10;

    if (intEnd != intMatch) return false;

    return true;
}
