/*!
 * jQuery Common Script
 *
 * Copyright (c) 2009 Kyu Hak Park
 *
 * Date: 2009-04-03
 * vision: 1.0
 */

var re = /[ \{\}\[\]\/?.,;:|\)*~`!^\-_+¦«<>@\#$%&\'\"\\\(\=]/gi;


/**
 * µ¥ÀÌÅÍ¸¦ HashMapÇüÅÂ·Î ´ã¾Æ °ü¸®ÇÑ´Ù.
 * .keys »ç¿ë¹ý : for(var key in obj.keys()){key:Å°°ª, obj.get(key)}
 * @author : H.H.Lee
 * @version : 1.0
 */
MirageMap = function(){
    this.mapObject = new Object();
    this.count=0;

    this.put = function (key, value) {
    	var map = this.mapObject;
        var addFlag = true;

        for(var n in map) {
            if(n == key) {
                map[key] = value;
                addFlag = false;
            }
        }
        if(addFlag) {
            map[key] = value;
            this.count++;
        }
    }
    this.get = function(key) {
        return this.mapObject[key];
    }
    this.keys = function(){
        return this.mapObject;
    }
    this.del = function(key){
        delete this.mapObject[key];
        this.count--;
    }
    this.size = function(){
        return this.count;
    }
    this.find = function(key){
    	var result = false;
    	for( var mapkey in this.keys()){
			if(mapkey == key){
				result=true;
				break;
			}
		}
        return result;
    }
}

/**
 * ¼³¸í : jqGridÀÇ °íÀ¯µ¥ÀÌÅÍÇüÅÂ¸¦ jsonÀ¸·Î º¯°æ½ÃÄÑÁØ´Ù.
 * »ç¿ë¹ý :	º¯°æµÈ RowµéÀ» Key(ex> "col1,col2,col3...coln")¿Í
 * 		ÇÔ²² ³Ñ±â°í jsonÇüÅÂÀÇ µ¥ÀÌÅÍ¸¦ Return¹Þ´Â´Ù.
 * 		java¿¡¼­ »ç¿ëÇÒ¶© map·Î º¯È¯ÇÏ¿© rows¸¦ Å°·Î ²¨³»°í ¹è¿­ÇüÅÂ·Î ÀúÀåµÈ µ¥ÀÌÅÍ¸¦ »ç¿ëÇÏ¸éµÈ´Ù.
 * @param : obj(¼öÁ¤µÈÀüÃ¼Row), keys(jsonµ¥ÀÌÅÍÀÇ Å°°ªÀÌµÉ ÀÌ¸§µé), type(rows, row)
 * @author : H.H.Lee
 * @version : 1.0
 */
jqGridToJson = function(obj, keys, type, selectCols){
	var keys = keys.split(",");
	var jsonData = '';
	var front = '{';
	if(type == 'rows'){
		jsonData = '{\"rows\":[';
		for(var i=0; i < obj.length; i++){
			if(i==0) {
				jsonData = jsonData + front;
			}else{
				front = ',{';
				jsonData = jsonData + front;
			}
			for(var j=0; j < keys.length; j++){
				var val = eval('obj[i].'+keys[j]);
				var selStr = eval('selectCols.'+keys[j]);
				if(j==0){
					if(typeof selStr !== 'undefined' && selStr != ''){
						var selRow = selStr.split(";");
						for(var h=0; h<selRow.length; h++){
							if(selRow[h].split(":")[1] == val){
								jsonData = jsonData +'\"'+ keys[j]+'\":\"'+selRow[h].split(":")[0]+'\"';
								break;
							}
						}
					}else{
						jsonData = jsonData +'\"'+ keys[j]+'\":\"'+val+'\"';
					}
				}else{
					if(typeof selStr !== 'undefined' && selStr != ''){
						var selRow = selStr.split(";");
						for(var h=0; h<selRow.length; h++){
							if(selRow[h].split(":")[1] == val){
								jsonData = jsonData +',\"'+ keys[j]+'\":\"'+selRow[h].split(":")[0]+'\"';
								break;
							}
						}
					}else{
						jsonData = jsonData +',\"'+ keys[j]+'\":\"'+val+'\"';
					}
				}
				if(j==keys.length-1) {
					jsonData = jsonData + "}";
				}
			}
		}
		jsonData = jsonData + ']}';
	}else{
		jsonData = '{';
		for(var j=0; j < keys.length; j++){
			var val = eval('obj.'+keys[j]);
			var selStr = eval('selectCols.'+keys[j]);
			if(j==0){
				if(typeof selStr !== 'undefined'){
					var selRow = selStr.split(";");
					for(var h=0; h<selRow.length; h++){
						if(selRow[h].split(":")[1] == val){
							jsonData = jsonData +'\"'+ keys[j]+'\":\"'+selRow[h].split(":")[0]+'\"';
							break;
						}
					}
				}else{
					jsonData = jsonData +'\"'+ keys[j]+'\":\"'+val+'\"';
				}
			}else{
				if(typeof selStr !== 'undefined'){
					var selRow = selStr.split(";");
					for(var h=0; h<selRow.length; h++){
						if(selRow[h].split(":")[1] == val){
							jsonData = jsonData +',\"'+ keys[j]+'\":\"'+selRow[h].split(":")[0]+'\"';
							break;
						}
					}
				}else{
					jsonData = jsonData +',\"'+ keys[j]+'\":\"'+val+'\"';
				}
			}
		}
		jsonData = jsonData + '}';
	}
	return jsonData;
}
/**
 * º¸³»¿Â Æûµ¥ÀÌÅÍ ÁýÇÕÀ» Jsonµ¥ÀÌÅÍ ÇüÅÂ·Î º¯°æÇÏ¿© ¸®ÅÏÇÑ´Ù.
 * ´Ü, °¢ ÆûÀº ÇÊ¼öÀûÀ¸·Î id°ªÀ» °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù.
 * »ç¿ë¹ý : $('¿øÇÏ´Â ÆûÁýÇÕ') (ex. htmlToJson($('[name*=txt]')); )
 * @author : H.H.Lee
 * @version : 1.0
 */
htmlToJson = function(collection){
	var key = '';
	var rdoKey = '';
	var oldKdy = '';
	var val = '';
	var count = 0;
	var jsonData = '{';
	$.each(collection.filter('input:radio'),function(){
		if($(this).attr('type') == 'radio'){
			if($(this).attr('checked')){
				key = $(this).attr('name');
				if($(this).attr('txtReplace') == 'all'){
					val = $(this).val().replace(re,'');
				}else{
					val = $(this).val();
				}
				jsonData = jsonData+'\"'+key+'\":\"'+val+'\"';
				//alert("key="+key);
			}else{
				if(val == ''){
					key = $(this).attr('name');
				}
			}
		}
		count++;
	});
	$.each(collection.filter('select'),function(){
		//if($(this).attr('type') == 'select'){
			key = $(this).attr('id');
			if($(this).attr('txtReplace') == 'all'){
				val = $(this).val().replace(re,'');
			}else{
				val = $(this).val();
			}
			//alert("key = "+key + "val = " + val);
			jsonData = jsonData+'\"'+key+'\":\"'+val+'\"';
		//}
		count++;
	});
	if(key!=''){jsonData = jsonData+'\"'+key+'\":\"'+val+'\"';}
	$.each(collection.not('input:radio'),function(){
		if($(this).attr('type') == 'text'){
			key = $(this).attr('id');
			if($(this).attr('txtReplace') == 'all'){
				val = $(this).val().replace(re,'');
			}else{
				val = $(this).val();
			}
		}
		if($(this).attr('type') != 'text' && $(this).attr('type') != 'radio'){
			key = $(this).attr('id');
			if($(this).attr('txtReplace') == 'all'){
				val = $(this).val().replace(re,'');
			}else{
				val = $(this).val();
			}
		}
		if(count==0 && key!=''){jsonData = jsonData+'\"'+key+'\":\"'+val+'\"';}
		if(count!=0 && key!=''){
			if(jsonData == '{') jsonData = jsonData+'\"'+key+'\":\"'+val+'\"';
			else jsonData = jsonData+',\"'+key+'\":\"'+val+'\"';
		}
		key = '';
		val = '';
		count++;
	});
	jsonData = jsonData + '}';
	return jsonData;
}

/**
 * º¸³»¿Â ¹è¿­À» ±¸È¹¹®ÀÚ¸¦ Æ÷ÇÔÇÑ ¹®ÀÚµ¥ÀÌÅÍ ÇüÅÂ·Î º¯°æÇÏ¿© ¸®ÅÏÇÑ´Ù.
 * »ç¿ë¹ý : $('¿øÇÏ´Â ÆûÁýÇÕ') (ex. arrayToString([name :[a,b,c...,n],name2 :[a,b,c...,n]], ','); )
 * @author : H.H.Lee
 * @version : 1.0
 */
arrayToString = function(array, delimiter){
	var returnStr = '';
	$.each(array, function(i){
		$.each(array[i], function(j){
			if(returnStr == '') returnStr = array[i][j];
			else returnStr = returnStr+delimiter+array[i][j];
		});
	});
	return returnStr;
}

/**
 * º¸³»¿Â °Ô½ÃÆÇ ¸®½ºÆ® Æ÷¸äÁ¤º¸¸¦ Jsonµ¥ÀÌÅÍ ÇüÅÂ·Î º¯°æÇÏ¿© ¸®ÅÏÇÑ´Ù.
 * °¢ ÄÃ·³ÀÇ ¼³Á¤°ªÀº ºó°ªÀ» Çã¿ëÇÏÁö ¾Ê´Â´Ù.
 * ¼ø¼­ : header, halign, mapKey, dalign, type, href, param, boardseq
 * ¼³¸í : header = ÇØ´õ¸í:»çÀÌÁî, halign = ÇØ´õÁ¤·Ä, mapKey = Äõ¸®ÀÇÄÃ·³¸í, dalign = µ¥ÀÌÅÍ¶óÀÎÀÇ Á¤·Ä,
 *		    type = ÄÃ·³Å¸ÀÔ(text:º¸ÅëÅØ½ºÆ®, href:¸µÅ©, check:Ã¼Å©¹Ú½º, radio:¶óµð¿À¹öÆ°),
 *		    href = ¸µÅ©Å¸ÀÔÀÇ hrefÁÖ¼Ò, param = hrefÀÇ ÆÄ¶ó¹ÌÅÍ, boardseq = °Ô½ÃÆÇ ¸®½ºÆ® ¹øÈ£
 * @author : H.H.Lee
 * @version : 1.0
 */
var format = '';
boardListFormat = function(options){
	var opts = $.extend({}, boardListFormat.defaults, options);
	format = '{'+
		'\"header\":\"'+opts.header+'\",'+
		'\"halign\":\"'+opts.halign+'\",'+
		'\"mapKey\":\"'+opts.mapKey+'\",'+
		'\"dalign\":\"'+opts.dalign+'\",'+
		'\"type\":\"'+opts.type+'\",'+
		'\"href\":\"'+opts.href+'\",'+
		'\"param\":\"'+opts.param+'\",'+
		'\"boardseq\":\"'+opts.boardseq+'\"'+
	'}';
}
boardListFormat.defaults = {
	header: '¹øÈ£:10%,Á¦¸ñ:50%,ÀÛ¼ºÀÚ:20%,ÀÛ¼ºÀÏ:20%',
	halign: 'center,center,center,center',
	mapKey: 'seq,subject,regId,regDate',
	dalign: 'center,left,center,center',
	type: 'text,text,text,text',
	href: '#',
	param: 'seq',
	boardseq: ''
};

/**
 * ¼³Á¤°ªÀ¸·Î ÆäÀÌÂ¡ ¸®½ºÆ®¸¦ ¸¸µç´Ù.
 * »ç¿ë¹ý : $('#div_board_page').paging('122','10','5','7');
 * tot = ÃÑ °Ô½Ã¹° ¼ö, row = ÇÑ È­¸é¿¡ Ç¥ÇöÇÒ °Ô½Ã¹° ¼ö, cut = ÇÑ¹ø¿¡ º¸¿©ÁÙ ÆäÀÌÁö ¼ö,
 * current = ÇöÀç ÆäÀÌÁö, css = ÇØ´ç div¿¡ Àû¿ë½ÃÅ³ class
 * @author : H.H.Lee
 * @version : 1.0
 */
var records = '';	// ÀüÃ¼ ·¹ÄÚµå ¼ö
var crtPage = '1';	// ÇöÀç ÆäÀÌÁö
var crtPage2 = '1';	// ÇöÀç ÆäÀÌÁö
var rowCut = '10';	// º¸¿©ÁÙ °Ô½Ã¹° ¶óÀÎ¼ö
var pageCut = '5';	// º¸¿©ÁÙ ÆäÀÌÁö ¼ö
$.fn.pager = function(options){
	var opts = $.extend({}, $.fn.pager.defaults, options);

	var self = this;
	var totPage = Math.ceil(opts.tot/opts.row);
	var testhtml = '';
	var pageNum = '';
	var pageClass = '';
	var pageListCut = 0;
	do{
		pageListCut++;
	}while(opts.current>(opts.cut*pageListCut))
	this.empty();
	this.append("<a id='"+opts.prevPListName+"' name='"+opts.prevPListName+"' href='#' style='vertical-align:middle;'><img src='"+opts.imgpath+"/"+opts.prevPListName+".gif' alt='ÀÌÀü10°³' hspace='1'></a>&nbsp;");
	this.append("<a id='"+opts.prevPName+"' name='"+opts.prevPName+"' href='#' style='vertical-align:middle;'><img src='"+opts.imgpath+"/"+opts.prevPName+".gif' alt='ÀÌÀü' hspace='1'></a>&nbsp;");
	for(var i=((opts.cut*pageListCut)-(opts.cut-1)); i<=totPage; i++){
		if((opts.cut*pageListCut) < i || totPage < i){break;}
		pageNum = i;
		pageClass = (i==opts.current)?opts.onCss:opts.offCss;
		if(i==((opts.cut*pageListCut)-(opts.cut-1))){
			if(i==opts.current){
				this.append("<span class='"+pageClass+"'><b>"+i+"</b></span>");
			}else{
				this.append("<a id='"+i+"' name='page_num' href='#' class='"+pageClass+"'>"+i+"</a>");
			}
		}
		else{
			if(i==opts.current){
				this.append(" | <span class='"+pageClass+"'><b>"+i+"</b></span>");
			}else{
				this.append(" | <a id='"+i+"' name='page_num' href='#' class='"+pageClass+"'>"+i+"</a>");
			}
		}
	}
	this.append("&nbsp;<a id='"+opts.nextPName+"' name='"+opts.nextPName+"' href='#' style='vertical-align:middle;'><img src='"+opts.imgpath+"/"+opts.nextPName+".gif' alt='´ÙÀ½' hspace='1'></a>&nbsp;");
	this.append("<a id='"+opts.nextPListName+"' name='"+opts.nextPListName+"' href='#' style='vertical-align:middle;'><img src='"+opts.imgpath+"/"+opts.nextPListName+".gif' alt='´ÙÀ½10°³' hspace='1'></a>&nbsp;");
	$('a[name=page_num], a[name='+opts.prevPName+'], a[name='+opts.nextPName+'], a[name='+opts.prevPListName+'], a[name='+opts.nextPListName+']').unbind();
	$('a[name=page_num]').click(function(){opts.onClickPage($(this).attr('id'));});
	$('a[name='+opts.prevPName+']').click(function(){
		if((opts.current*1) > 1){
			opts.onClickPage((opts.current*1)-1);
		}
	});
	$('a[name='+opts.prevPListName+']').click(function(){
		if((pageListCut-1) > 0){
			opts.onClickPage((opts.cut*pageListCut)-(opts.cut*(pageListCut-1)));
		}else	{
			opts.onClickPage(1);
		}
	});
	$('a[name='+opts.nextPName+']').click(function(){
		if((opts.current*1) < totPage){
			opts.onClickPage((opts.current*1)+1);
		}
	});
	$('a[name='+opts.nextPListName+']').click(function(){
		if((opts.cut*pageListCut) < totPage){
			opts.onClickPage((opts.cut*pageListCut)+1);
		}else	{
			opts.onClickPage(totPage);
		}
	});
}
$.fn.pager.defaults = {
  tot: '0', 			// ÃÑ °Ô½Ã¹°¼ö
  row: '10',			// ÇÑ ÆäÀÌÁö¿¡ º¸¿©ÁÙ °Ô½Ã¹°¼ö
  cut: '5',				// ÇÑ È­¸é¿¡ º¸¿©Áú ÆäÀÌÁö ¼ö
  current: '1',			// ÇöÀç ÆäÀÌÁö
  onCss: '',			// ¼±ÅÃµÈ ÆäÀÌÁö¹øÈ£¿¡ Àû¿ëÇÒ CSS
  offCss: '',			// ¹Ì¼±ÅÃµÈ ÆäÀÌÁö¹øÈ£¿¡ Àû¿ëÇÒ CSS
  onClickPage: null,	// ÆäÀÌÁö Å¬¸¯ ÀÌº¥Æ®
  imgpath:'',			// ÀÌ¹ÌÁö °æ·Î
  prevPName:'',			// ´ÙÀ½ÆäÀÌÁö ¹öÆ°¸í
  prevPListName:'',		// ´ÙÀ½ÆäÀÌÁö¸®½ºÆ® ¹öÆ°¸í
  nextPName:'',			// ÀÌÀüÆäÀÌÁö ¹öÆ°¸í
  nextPListName:''		// ÀÌÀüÆäÀÌÁö¸®½ºÆ® ¹öÆ°¸í
};



//===============================base64 ¾ÏÈ£È­========================================
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
encode64 = function(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) +
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);

   return output;
}
decode64 = function(input){
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}
function base64Encode(str) {
  return encode64(escape(str))
}
function base64Decode(str) {
  return unescape(decode64(str))
}
//===============================base64 ¾ÏÈ£È­========================================

/**
*	ÀÔ·ÂÃ¢ÃÊ±âÈ­		2009.04.07	H.H.Lee
*/
doFormInit = function(from_nm, not_filter){
	$('form[name='+from_nm+'] radio_person_type1').not(not_filter).attr('checked',true);
 	$('form[name='+from_nm+'] input:checkbox').not(not_filter).attr('checked',false);
 	$('form[name='+from_nm+'] input:text')
 		.add('form[name='+from_nm+'] textarea')
 		.add('form[name='+from_nm+'] select').not(not_filter).val('');
 	$('form[name='+from_nm+'] input:password').not(not_filter).val('');
}


/**
*	 ÇÊ¼ö ÀÔ·Â»çÇ× Ã¼Å©	2009.03.27	H.H.Lee
*/
mandatoryItemCheck = function(collection){
	var result = true;
	$.each(collection, function(){
		if($(this).filter('input:text').val() == ''
			|| $(this).filter('input:password').val() == ''
			|| $(this).filter('select').val() == ''
			|| $(this).filter('textarea').val() == ''){
			alert($(this).attr('title')+'(Àº/´Â) ÇÊ¼ö ÀÔ·Â»çÇ×ÀÔ´Ï´Ù.');
			$(this).effect('highlight',{},1000);
			$(this).focus();
			result = false;
			return result;
		}
	});
	return result;
}
