/* flash */
function setEmbed() {
  var obj = new String;
  var parameter = new String;
  var embed = new String;
  var html = new String;
  var allParameter = new String;
  var clsid = new String;
  var codebase = new String;
  var pluginspace = new String;
  var embedType = new String;
  var src = new String;
  var width = new String;
  var height = new String;

  this.init = function( getType , s ,w , h ) {
    if ( getType == "flash" ) {
      clsid = "D27CDB6E-AE6D-11cf-96B8-444553540000";
      codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0";
      pluginspage = "http://www.macromedia.com/go/getflashplayer";
      embedType = "application/x-shockwave-flash";
    }
    /* type 추가
    else if ( ) {
    }
    */
    parameter += "<param name='movie' value='"+ s + "'>\n";
    parameter += "<param name='quality' value='high'>\n";
    src = s;
    width = w;
    height = h;
  }

  this.parameter = function( parm , value ) {
    parameter += "<param name='"+parm +"' value='"+ value + "'>\n";
    allParameter += " "+parm + "='"+ value+"'";
  }

  this.show = function() {
    if ( clsid ) {
      obj = "<object classid='clsid:"+ clsid +"' codebase='"+ codebase +"' width='"+ width +"' height='"+ height +"'>\n";
    }

    embed = "<embed src='" + src + "' pluginspage='"+ pluginspage + "' type='"+ embedType + "' width='"+ width + "' height='"+ height +"'"+ allParameter +" ></embed>\n";

    if ( obj ) {
      embed += "</object>\n";
    }

    html = obj + parameter + embed;

    document.write( html );
  }
}

/* jquery.validator 추가 메소드 시작 */

jQuery.validator.defaults.ignoreTitle=true;
jQuery.validator.messages= {
    required: "필수입력항목입니다.",
    remote: "Please fix this field.",
    email: "정확한 이메일 주소를 입력하세요.",
    url: "정확한 웹주소를 입력하세요.",
    date: "정확한 날짜형식을 입력하세요.",
    dateISO: "정확한 날짜형식(예,2011-01-01)으로 입력하세요.",
    number: "숫자를 입력하세요.",
    digits: "숫자를 입력하세요.",
    creditcard: "Please enter a valid credit card number.",
    equalTo: "비밀번호가 일치하지 않습니다.",
    accept: "허용되는 파일확장자가 아닙니다.",
    maxlength: $.validator.format("최대 {0}자 이하로 입력하세요."),
    minlength: $.validator.format("최소 {0}자 이상 입력하세요."),
    rangelength: $.validator.format("최소 {0}자 부터 최대 {1}자 까지 입력할 수 있습니다."),
    range: $.validator.format("최소{0} 부터 {1}까지의 숫자로 입력하십시요."),
    max: $.validator.format("최대 {0} 까지 입력할 수 있습니다."),
    min: $.validator.format("최소 {0} 부터 입력할 수 있습니다."),
    regExp: "입력값이 유효하지 않습니다.",
    onlyKo: "한글만 입력가능합니다.",
    onlyKoEn: "한글 및 영문만 입력가능합니다.",
    idCheck_01: "영문자로시작하는 영문/숫자 조합 이 6~15자리 이내여야 합니다.",
    idCheck_02: "영문/숫자 조합이어야 합니다.",
    idCheck_03: "영문/숫자 조합이어야 합니다.",
    pwCheck_01: "영문/숫자/특수문자 조합이 8~15자리 이내여야 합니다.",
    imgFileCheck: "이미지형식의 파일만 첨부가능 합니다.",
    movFileCheck: "동영상형식의 파일만 첨부가능 합니다.",
    FileCheck: "허용되는 파일확장자가 아닙니다."
};

jQuery.validator.classRuleSettings= {
  required: {required: true},
  email: {email: true},
  url: {url: true},
  date: {date: true},
  dateISO: {dateISO: true},
  dateDE: {dateDE: true},
  number: {number: true},
  numberDE: {numberDE: true},
  digits: {digits: true},
  creditcard: {creditcard: true},
  imgFileCheck: {imgFileCheck: true},
  movFileCheck: {movFileCheck: true},
  FileCheck: {FileCheck: true}
},

/*
 * 정규표현식을 입력받아 유효성체크
 * Ex)
 * rules: {
 *   passwd: {
 *     regExp: ["^[a-zA-Z0-9\!\@\#\$\%\^\&\*\(\)]{4,10}"]
 *   }
 * }
 */
jQuery.validator.addMethod("regExp", function(value, element, param) {
	var ret = true;
	for(i=0; i<param.length; i++){
		ret = ret && value.match(new RegExp(param[i], "gi"));
	}
	
  return this.optional(element) || ret;
});

jQuery.validator.addMethod("onlyKo", function(value, element, param) {
  var ret = true;
  ret = ret && value.match(new RegExp("^[가-힣]+$", "gi"));
  
  return this.optional(element) || ret;
});

jQuery.validator.addMethod("onlyKoEn", function(value, element, param) {
  var ret = true;
  ret = ret && value.match(new RegExp("^[a-zA-Z가-힣]+$", "gi"));
  
  return this.optional(element) || ret;
});

jQuery.validator.addMethod("idCheck_01", function(value, element, param) {
  var ret = true;
  ret = ret && value.match(new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,14}$", "gi"));
  
  return this.optional(element) || ret;
});

jQuery.validator.addMethod("idCheck_02", function(value, element, param) {
  var ret = true;
  ret = ret && value.match(new RegExp("[0-9]", "gi"));
  
  return this.optional(element) || ret;
});

jQuery.validator.addMethod("idCheck_03", function(value, element, param) {
  var ret = true;
  ret = ret && value.match(new RegExp("[a-zA-Z]", "gi"));
  
  return this.optional(element) || ret;
});

jQuery.validator.addMethod("pwCheck_01", function(value, element, param) {
  var ret = true;
  ret = ret && value.match(new RegExp("^[a-zA-Z0-9\!\@\#\$\%\^\&\*\(\)]{8,15}$", "gi"));
  
  return this.optional(element) || ret;
});

jQuery.validator.addMethod("imgFileCheck", function(value, element, param) {
  param = typeof param == "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif|bmp";
  return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i"));
});

jQuery.validator.addMethod("movFileCheck", function(value, element, param) {
  param = typeof param == "string" ? param.replace(/,/g, '|') : "avi|mpe?g|mov|wmv|asf|asx|flv|swf|mp4|rm";
  return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i"));
});

jQuery.validator.addMethod("FileCheck", function(value, element, param) {
  param = typeof param == "string" ? param.replace(/,/g, '|') : "exe|jsp|php|asp|aspx|html|htm|js";
  return this.optional(element) || !value.match(new RegExp(".(" + param + ")$", "i"));
});

/**
 * 주민번호를 체크한다.
 */
jQuery.validator.addMethod("ssn", function(value, element, param){
  //value = value.replace("-", "");
  var obj = param.no1;
  var obj2 = param.no2;
  value = $(obj).val() + $(obj2).val();
  if (value.length!=13) return false;
  if (/[^0-9-]+/.test(value)) return false;
  var ssnCheck = 0;
  for (var i = 0; i < 12; i++) {
    ssnCheck += (i % 8 + 2) * value.charAt(i);
  }
  ssnCheck = (11 - ssnCheck % 11) % 10;
  if(ssnCheck != value.charAt(12)) {    
    return false;
  }
  $(obj).removeClass("error");
  if($(obj).next().is("em")) $(obj).next().remove();
  $(obj2).removeClass("error");
  if($(obj2).next().is("em")) $(obj2).next().remove();
  return true;
}, "유효하지 않은 주민번호 입니다.");

/* jquery.validator 추가 메소드 끝 */

$().ready(function(){
  $.ajaxSetup({
    type:"POST",
    dataType:"xml",
    contentTypeString:"text/xml",
    error:function(xhr, ts, et){
      alert(ts+" : "+et.message);
    }
  });
});

function commakbyte(value){
	value = Math.round(value/1024);
	var reg = /(^[+-]?\d+)(\d{3})/;
	var n = String(value);
	while(reg.test(n)){
		n=n.replace(reg,'$1'+','+'$2');
	}
	return n;
}

function commaNumber(value){
	var reg = /(^[+-]?\d+)(\d{3})/;
	var n = String(value);
	while(reg.test(n)){
		n=n.replace(reg,'$1'+','+'$2');
	}
	return n;
}

//클립보드로 복사하기
function copy_clip(meintext, title){
  if(confirm('현재 페이지 URL을 복사하시겠습니까?')) { 
    if (window.clipboardData) { 
      // the IE-manier
      window.clipboardData.setData("Text", meintext);
      // waarschijnlijk niet de beste manier om Moz/NS te detecteren;
      // het is mij echter onbekend vanaf welke versie dit precies werkt:
    } else if (window.netscape) {
      // dit is belangrijk maar staat nergens duidelijk vermeld:
      // you have to sign the code to enable this, or see notes below
      netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
      // maak een interface naar het clipboard
      var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
      if (!clip) return;
      // maak een transferable
      var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
      if (!trans) return;
      // specificeer wat voor soort data we op willen halen; text in dit geval
      trans.addDataFlavor('text/unicode');
      // om de data uit de transferable te halen hebben we 2 nieuwe objecten nodig om het in op te slaan
      var str = new Object();
      var len = new Object();
      var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
      var copytext=meintext;
      str.data=copytext;
      trans.setTransferData("text/unicode",str,copytext.length*2);
      var clipid=Components.interfaces.nsIClipboard;
      if (!clip) return;
      clip.setData(trans,null,clipid.kGlobalClipboard);
    }
    alert(title+"의 주소가 복사되었습니다.\n게시판이나 메신저 창에서 Ctrl+V를 눌러보세요.");
  
    return;
  } else return;
} 

function twitter(msg, url) {
   var href = "http://twitter.com/share?text=" + encodeURIComponent(msg) + "&url=" + encodeURIComponent(url);
   pop_win(href, 'twitter');
   /*var win = window.open(href, 'twitter', '');
   if (win) {
     win.focus();
   }*/
}

function Me2Day(msg, url, tag) {
  var href = "";
  // get short url
  $.ajax({
    url:'http://api.bitly.com/v3/shorten?login=kyoon6921&apiKey=R_cec8a479f9808e0d7d25d796868eae63&fomat=json&callback=?',
    type:"get",
    dataType:"jsonp",
    async:false,
    data:{longUrl:url}, 
    success:function(data) {
      href = "http://me2day.net/posts/new?new_post[body]=" + encodeURIComponent(msg) + "'"+encodeURIComponent(data.data.url)+"':" + encodeURIComponent(data.data.url) + "&new_post[tags]=" + encodeURIComponent(tag);
    },
    complete:function(xhr,ret) {
      pop_win(href, 'me2Day');
    }
  });
}

function facebook(url) {
   var href = "";
   // get short url
   $.ajax({
     url:'http://api.bitly.com/v3/shorten?login=kyoon6921&apiKey=R_cec8a479f9808e0d7d25d796868eae63&fomat=json&callback=?',
     type:"get",
     dataType:"jsonp",
     async:false,
     data:{longUrl:url}, 
     success:function(data) {
       href = "http://www.facebook.com/sharer.php?u=" + encodeURIComponent(data.data.url);
     },
     complete:function(xhr,ret) {
       pop_win(href, 'facebook');
     }
   });
}

function facebook_m(url) {
  var href = "";
  href = "http://www.facebook.com/sharer.php?u=" + encodeURIComponent(url);
  pop_win(href, 'facebook');
}

function pop_win(url,name){
  var win = window.open(url, name, '');
  if(win) win.focus();
}

function toggleInit(el, el_first, option){
  target = $(el+" > li > a");
  target_image = $(el+" > li > a > img");
  target_2depth = $(el+"> li > ul");
  target_2depth_menu = $(el+" > li > ul > li > a");
  $(target_image).eq(el_first).attr("src", $(target_image).eq(el_first).attr("src").replace(/\.gif$/, "on.gif"));

  target_count = $(el+" > li:has(a)");
  for(var i=0; i<target_count.length; i++){
    $(el+" > li > ul:eq("+i+")").hide();
  }
  $(el+" > li > ul:eq("+el_first+")").show();
  target.bind("focus", toggleListener).bind("click", toggleListener);
  target_2depth_menu.bind("focus", toggleListener_2depth).bind("click", toggleListener_2depth);

  option = $(option+" > span > a");
  option.bind("click", toggleShowHide);
  if(!option){
    return false;
  }
}
function toggleListener(el){
  $(target_2depth).hide();
  for(var i=0; i<target_count.length; i++){
    $(target_image).eq(i).attr("src", $(target_image).eq(i).attr("src").replace(/on\.gif$/, ".gif"));
  }
  $(this).parent().find("ul").toggle();
  $(this).children().attr("src", $(this).children().attr("src").replace(/\.gif$/, "on.gif"));
}
function toggleListener_2depth(el){
  $(target_2depth_menu).removeClass("on");
  $(this).addClass("on");
}
function toggleShowHide(el){
  if($(this).attr("rel") == "show"){
    $(target).parent().find("ul").show();
  }
  else{
    $(target).parent().find("ul").hide();
  }
}

function initTab(el){
  tab = $(el+"> li");
  tabAnchor = $(el+"> li > a");
  for(i=0; i<tabAnchor.length; i++){
    $(el+"> li > div").eq(i).hide();
  }
  tabContainer = $(el+"> li > div");
  $(tabContainer).eq(0).show();
  $(tabAnchor).children().eq(0).attr("src", $(tabAnchor).children().eq(0).attr("src").replace(/\.gif$/,"on.gif"));
  tabAnchor.bind("click", initTabListener).bind("focus", initTabListener);
}
function initTabListener(el){
  $(tabContainer).hide();
  for(var i=0; i<tabAnchor.length; i++){
    $(tabAnchor).children().eq(i).attr("src", $(tabAnchor).children().eq(i).attr("src").replace(/on\.gif$/,".gif"));
  }
  $(this).children().attr("src", $(this).children().attr("src").replace(/\.gif$/,"on.gif"));
  $(this).parent().find("div").show();
  
  return false;
}


function initBook(el){
  book = $(el+"> li");
  bookAnchor = $(el+"> li > a");
  for(i=0; i<bookAnchor.length; i++){
    $(el+"> li > div").eq(i).hide();
  }
  bookContainer = $(el+"> li > div");
  $(bookContainer).eq(0).show();
  $(bookAnchor).children().eq(0).attr("src", $(bookAnchor).children().eq(0).attr("src").replace(".gif","on.gif"));
  bookAnchor.bind("click", initBookListener).bind("focus", initBookListener);
}
function initBookListener(el){
  $(bookContainer).hide();
  for(var i=0; i<bookAnchor.length; i++){
    $(bookAnchor).children().eq(i).attr("src", $(bookAnchor).children().eq(i).attr("src").replace("on.gif",".gif"));
  }
  $(this).children().attr("src", $(this).children().attr("src").replace(".gif","on.gif"));
  $(this).parent().find("div").show();
}

function hallCng(){
  $(".info_library > div:gt(0)").hide();
  var container = $(".info_library > div");
  var target = $(".tab_hall > li > a");
  var target_img = $(".tab_hall > li > a > img:first");
  $(target_img).attr("src", $(target_img).attr("src").replace(".gif", "on.gif"));
  target.bind("click", function(){
    $(container).hide();
    for(var i=0; i<target.length; i++){
      $(target).eq(i).children().attr("src", $(target).eq(i).children().attr("src").replace("on.gif", ".gif"));
    }
    $(this).children().attr("src", $(this).children().attr("src").replace(".gif", "on.gif"));
    conts = $(this).attr("rel");
    $("."+conts).show();
  });
}

function notice_getCookie( name ) {
  var nameOfCookie = name + "=";
  var x = 0;
  while ( x <= document.cookie.length ) {
    var y = (x+nameOfCookie.length);
    if ( document.cookie.substring( x, y ) == nameOfCookie ) {
      if ( (endOfCookie=document.cookie.indexOf( ";", y )) == -1 )
        endOfCookie = document.cookie.length;
      var value = document.cookie.substring( y, endOfCookie );
      
//      commonMain.Decrypt(unescape( value ), {callback : function(data){
//        value = data;
//      }, async : false});

      return value;
    }
    x = document.cookie.indexOf( " ", x ) + 1;
    if ( x == 0 )  break;
  }
  return "";
}

function setCookie( name, value, expiredays ) {
//  commonMain.Encrypt(value, {callback : function(data){
//    value = data;
//  }, async : false});
  
  var todayDate = new Date();
  todayDate.setDate( todayDate.getDate() + expiredays );
  document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";";
}

function delCookie( name ) {
  var todayDate = new Date();
  todayDate.setTime( todayDate.getTime() - 1 );
  var cval = notice_getCookie( name );
  document.cookie = name + "=" + cval + "; path=/; expires=" + todayDate.toGMTString() + ";";
}

function open_pop(seq,j,width,height,scroll,top,left) { 
  if ( notice_getCookie( "newwin"+j ) != "done" ) {
    window.open('/common/popup/popupNow.do?seq='+seq+'','newwin'+j+'','width='+width+',height='+height+',scrollbars='+scroll+',top='+top+',left='+left+'');
  }
}

// 화면 확대 축소 추가
//Zoom In & Zoom Out
function zoomInOut(contentid, how, mc) {
  
  if(GetCookie("zoomVal") != null && GetCookie("zoomVal") != ""){
    document.all[contentid].style.zoom = GetCookie("zoomVal");
    currZoom=GetCookie("zoomVal");
  }
  else{
    document.all[contentid].style.zoom = '100%'; 
    currZoom = '100%';
  }
  if (((how == "in") && (parseInt(currZoom) >= maxRate)) || ((how == "out") && (parseInt(currZoom) <= minRate)) ) {
    return; 
  }
  if (how == "in") {
    document.all[contentid].style.zoom = parseInt(document.all[contentid].style.zoom)+zoomRate+'%';
  }
  else {
    document.all[contentid].style.zoom = parseInt(document.all[contentid].style.zoom)-zoomRate+'%';
  }
  SetCookie("zoomVal",document.all[contentid].style.zoom);
}

var gsMonthNames = new Array(
	'Jan',
	'Feb',
	'Mar',
	'Apr',
	'May',
	'Jun',
	'Jul',
	'Aug',
	'Sep',
	'Oct',
	'Nov',
	'Dec'
);

// a global day names array
var gsDayNames = new Array(
	'Sun',
	'Mon',
	'Tue',
	'Wed',
	'Thu',
	'Fri',
	'Sat'
);

// the date format prototype
Date.prototype.format = function(f) {
	if (!this.valueOf()) return '&nbsp;';
		 
	var d = this;
	 
	return f.replace(/(yyyy|mmmm|mmm|mm|dddd|ddd|dd|hh|nn|ss|a\/p)/gi,
		function($1) {
  		switch ($1) {
    		case 'yyyy': return d.getFullYear();
    		case 'mmmm': return gsMonthNames[d.getMonth()];
    		case 'mmm':  return gsMonthNames[d.getMonth()].substr(0, 3);
    		case 'mm':   return (d.getMonth() + 1).zf(2);
    		case 'dddd': return gsDayNames[d.getDay()];
    		case 'ddd':  return gsDayNames[d.getDay()].substr(0, 3);
    		case 'dd':   return d.getDate().zf(2);
    		case 'hh':   return ((h = d.getHours() % 12) ? h : 12).zf(2);
    		case 'nn':   return d.getMinutes().zf(2);
    		case 'ss':   return d.getSeconds().zf(2);
    		case 'a/p':  return d.getHours() < 12 ? 'a' : 'p';
  		}
		}
	);
};

String.prototype.zf = function(l) { return '0'.string(l - this.length) + this; };
String.prototype.string = function(l) { var s = '', i = 0; while (i++ < l) { s += this; } return s; };
Number.prototype.zf = function(l) { return this.toString().zf(l); };

String.prototype.cutting = function(len) {
  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)+"..";
  }
  return str;
};

/*###########################################################*/
/*#  인클라우드 UTIL 정의 시작                                                                     #*/
/*###########################################################*/

if(icu == null) var icu = {};

icu.nvl = function(el, val) {
  if(typeof el == "object"){
    if(el == null) {
      if(val==null) return "";
      else return val;
    }
    else return el;
  }else{
    if(el == "undefined" || el == null) return val;
    else return el;
  }
};

icu.removeTag = function(str){
  var lt = str.indexOf("<");

  if (lt != -1) {
    var gt = str.indexOf(">", lt);
    if (gt != -1) {
      str = str.substring(0, lt) + str.substring(gt + 1);
      // 재귀 호출
      str = icu.removeTag(str);
    }
  }
  return str.replace("&nbsp;", " ");
};

/**
 * 태그를 없앤다.
 *  str = "<script>123</script>"
 *  icu.removeTag(str, "script|noscript", true); => ""
 *  icu.removeTag(str, "script", false); => "123"
 */
icu.removeTag = function(str, tag, cont){
  var regexp;
  if(cont){
//    regexp = new RegExp("\<("+tag+")([^\<\>]*)>([^\<\>]*|\n*)\<\/("+tag+")([^\<\>]*)>", "gi");
    var tags = tag.split("|");
    str = str.replace(/\r\n/gi,"");
    for(i=0; i<tags.length; i++){
      var f_str = "</"+tags[i].toUpperCase()+">";
      var match = true;
      while(match){
        var f_i = str.indexOf("<"+tags[i].toUpperCase());
        var l_i = str.indexOf("</"+tags[i].toUpperCase()+">");
        if(f_i<0 && l_i<0) {
          match = false;
        }else{
          str = str.replace(str.substring(f_i, l_i+(f_str.length)),"");
        }
      }
    }
  }else{
    regexp = new RegExp("\<(\/?)("+tag+")([^\<\>]*)>", "gi");
    str = str.replace(regexp,"");
  }
  return str;
};

String.prototype.trim = function() {
  return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
};

/*###########################################################*/
/*#  인클라우드 UTIL 정의 끝                                                                        #*/
/*###########################################################*/

function menuActive(subName, active) {
  $("ul[id^="+subName+"]").each(function(n){
    if($(this).attr("id").replace(subName,"")==active) $(this).css("visibility","visible");
    else $(this).css("visibility","hidden");
  });
}
