//window.onerror = HandleError; 

//function HandleError(message, url, line) { 
//  var str = "An error has occurred in this dialog. Error: " + line + "" + message; 
//  window.status = str; 
//  return true; 
//} // Error 발생시 수행

// 기본 변수 
var submit_process = false; // 넘길때 사용 하는 변수 
var submit_return  = 'BAISC'; // 리턴으로 들어온 아작스체대한 판단유보 

var win_ie_ver = parseFloat(navigator.appVersion.split("MSIE")[1]);
if (navigator.userAgent.indexOf('Mac')        >= 0) { win_ie_ver = 0; }
if (navigator.userAgent.indexOf('Windows CE') >= 0) { win_ie_ver = 0; }
if (navigator.userAgent.indexOf('Opera')      >= 0) { win_ie_ver = 0; }
if (navigator.userAgent.indexOf('Firefox')    >= 0) { win_ie_ver = 0; }

function submit_check() {
	if (!submit_process) 
	{
		return true;
	}
	else {
		alert('실행중 입니다.\n\n잠시만 기다려 주십시오');
		return false;
	}
}

function submit_lock() {
	submit_process = true;
}

function submit_unlock() {
	submit_process = false;
}

// 페이지 이동 스크립트 기본형
function go_link_page(link_page) 
{
	//alert("2:"+link_page+'========================================');
    //trace(link_page);
	// document.location.href

	//if(win_ie_ver == 0)
	//{
	//	alert('2:'+link_page+'==');				
	//}

    document.location.href = link_page;
}

// 새창 열기 기본 스크립트
function open_window(name, url, left, top, width, height, toolbar, menubar, statusbar, scrollbar, resizable)
{
  toolbar_str = toolbar ? 'yes' : 'no';
  menubar_str = menubar ? 'yes' : 'no';
  statusbar_str = statusbar ? 'yes' : 'no';
  scrollbar_str = scrollbar ? 'yes' : 'no';
  resizable_str = resizable ? 'yes' : 'no';

  newWin= window.open(url, name, 'left='+left+',top='+top+',width='+width+',height='+height+',toolbar='+toolbar_str+',menubar='+menubar_str+',status='+statusbar_str+',scrollbars='+scrollbar_str+',resizable='+resizable_str);
}


// 에러 입력시에 배열에 넣기 위해서 
function error_push(ecode, estr) {
	var item_obj  = new Object();
	item_obj.xml_key = ecode; 
	item_obj.xml_value = estr; 
	return item_obj;
}


// 환면 전환시 화면에서 다른 작업 못하도록 
function show_waiting() 
{
  var _x = document.body.clientWidth/2 + document.body.scrollLeft - 150;
  var _y = document.body.clientHeight/2 + document.body.scrollTop - 75;
  document.getElementById('submit_waiting').style.posLeft=_x;
  document.getElementById('submit_waiting').style.posTop=_y;
  document.getElementById('submit_waiting').style.visibility='visible';
}

// 환면 전환시 화면에서 
function hide_waiting() {
  document.getElementById('submit_waiting').style.visibility='hidden';
}


// 공백 없애기
function get_trim(str) 
{
     var pattern = /(^\s*)|(\s*$)/g; 
     str = str.replace(pattern, '');
     return str;
}

// 이메일 유효성 체크
function get_check_email(str)
{
	//str = get_trim(str);
	if(!str) return false;

    //var pattern = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
	var pattern = /([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/;

	if (!pattern.test(str)) 
    {
	    return false;
	}
	return true;
}

// 숫자만 
function get_check_num(str)
{
	//str = get_trim(str);
	if(!str) return false;

    var reg = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
    if (str.search(reg) != -1) {
	    return true;
	}
	return false;
}

// 영문또는 숫자만  
function get_check_numalpa(str)
{
    var reg = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
    if (str.search(reg) != -1) {
	    return true;
	}
	return false;
}

// 문자 길이 반환 (영문 1byte, 한글 2byte 계산)
function get_len(str) {
    var len;
    var tmp;
	var tot_cnt = 0;

	if(!str) return false;
	len = str.length;
    
	for(k=0;k < len;k++){
	    tmp = str.charAt(k);
	    if(escape(tmp).length > 4) tot_cnt += 2;
	    else tot_cnt++;
	}

	return tot_cnt;
}


// 주민등록번호 검사
function get_check_jumin(str) 
{
	// /**
	// /* @deprecated
	// */
	
	
	return true;
	
	
	//alert("0 :"+str);
	if(!str) return false;

	var pattern = /(^[0-9]{13}$)/; 
    if (!pattern.test(str)) 
    { 
	    return false;
    }
    else 
    {
            var sum_1 = 0;
            var sum_2 = 0;
            var at  = 0;
			var att = 0;
            var jumin_number= str;
            sum_1 = (jumin_number.charAt(0)*2)+
                    (jumin_number.charAt(1)*3)+
                    (jumin_number.charAt(2)*4)+
                    (jumin_number.charAt(3)*5)+
                    (jumin_number.charAt(4)*6)+
                    (jumin_number.charAt(5)*7)+
                    (jumin_number.charAt(6)*8)+
                    (jumin_number.charAt(7)*9)+
                    (jumin_number.charAt(8)*2)+
                    (jumin_number.charAt(9)*3)+
                    (jumin_number.charAt(10)*4)+
                    (jumin_number.charAt(11)*5);
            sum_2 = sum_1 % 11;

            if (sum_2 == 0) 
                at = 10;
            else 
            {
                if (sum_2 == 1) 
                    at = 11;
                else 
                    at = sum_2;
            }

            att = 11 - at;

            if (jumin_number.charAt(12) != att || 
                jumin_number.substr(2,2) < '01' ||
                jumin_number.substr(2,2) > '12' ||
                jumin_number.substr(4,2) < '01' ||
                jumin_number.substr(4,2) > '31' ||
                jumin_number.charAt(6) > 4) 
            {
		       return false;
            }

    }
        
    return true;		
} 

function select_checkbox(f_name,check_name) { 
    if(f_name.uid_all.checked == true)
	{
		select_checkbox_all(f_name,check_name);
	}
	else
	{
		select_checkbox_del(f_name,check_name)
	}
return; 
} 

// 전체 선택
function select_checkbox_all(f_name,check_name) { 

   for( var i=0; i< f_name.elements.length; i++) { 
      var m = f_name.elements[i];      
	  if ((m.name != check_name) && (m.type=="checkbox")) {
	      m.checked = true; 
	  }
   } 
return; 
} 

// 전체 해제 
function select_checkbox_del(f_name,check_name) { 
   for( var i=0; i< f_name.elements.length; i++) { 
      var m = f_name.elements[i]; 
	  if ((m.name != check_name) && (m.type=="checkbox")) {
          m.checked = false; 
	  }
   } 
return; 
}


// 전체삭제
function submit_ajax_really(f_name,view_div,class_change,method_change)
{
    if (confirm('\n삭제는 복구가 불가능합니다.\n삭제시 데이터는 완전 삭제됩니다.\n\n(정말로 삭제 하시겠습니까?)\n')) 
	{ 
	  //document.f_name.submit();
	  submit_ajax_change(f_name,'',view_div,'',class_change,method_change,'');
	}
    return false;
}

// 전체삭제
function submit_really(f_name,view_div,class_change,method_change)
{
    if (confirm('삭제하면 내 편지함에서 제거됩니다.\n정말로 삭제하겠습니까?\n')) 
	{ 
	  //document.f_name.submit();
	  submit_change(f_name,'',view_div,'',class_change,method_change,'');
	}
    return false;
}

// 친구 삭제 
function submit_network_cancel(f_name,view_div,class_change,method_change,mem_uid,mem_fuid)
{
    if (confirm('정말로 1촌을 취소하시겠습니까?')) 
	{ 
		f_name.c.value       = class_change;
		f_name.m.value       = method_change;
        f_name.uid.value     = mem_fuid;
		f_name.uid_two.value = mem_uid;
	    f_name.submit();
	    //submit_change(f_name,'',view_div,'',class_change,method_change,'');
	}
    return false;
}

// 쪽지 보내기 스크립트 
function submit_noten_write(tform,tmode,view_div,reurl)
{
    var thisform = tform;
    var item_list = new Array(); 
	var noten_title=thisform.noten_title.value.replace(/\s/g,'');
    if(noten_title== "")
    {
		item_list.push(error_push("error", "제목을 입력하여 주십시오."));
    }

    if(thisform.noten_body.value == "")
    {
		item_list.push(error_push("error", "내용을 입력하여 주십시오.")); 
    }

    item_size = item_list.length;            
    // 즉 에러 일때 상황 
    if(item_size > 0) 
    {    
	// 화면에 에러 내용 뿌려 주기 
       get_message_objdiv(item_list,view_div);
       return false;
    }

    // AJAX 실행 모듈
    submit_ajax_action(thisform,'',view_div,reurl);
    //submit_action(thisform,'',view_div,reurl);

    return;
}

function submit_report_write(tform,tmode,view_div,reurl)
{
    var thisform = tform;
    var item_list = new Array(); 

    var report_type = thisform.report_type.options[thisform.report_type.selectedIndex].value;

    if(report_type == "0")
    {
	item_list.push(error_push("error", "신고내용을 선택하여 주십시오."));
    }

    if(thisform.report_body.value == "")
    {
	item_list.push(error_push("error", "내용을 입력하여 주십시오.")); 
    }

    item_size = item_list.length;            
    // 즉 에러 일때 상황 
    if(item_size > 0) 
    {    
	// 화면에 에러 내용 뿌려 주기 
       get_message_objdiv(item_list,view_div);
       return false;
    }

    // AJAX 실행 모듈
    submit_ajax_action(thisform,'',view_div,reurl);
    //submit_action(thisform,'',view_div,reurl);

    return;
}

//  공대여자 이쁘대요 
function image_auto_resize(this_s,width,height){ 
 var ta_image = new Image(); 
 ta_image.src = this_s.src; 
  if(!width){this_s.removeAttribute('width'); 
  this_s.style.width='auto';} 
  else if(width < ta_image.width){ 
  this_s.width = width; 
  }else{ 
  this_s.width = ta_image.width; 
  } 
  if(!height){this_s.removeAttribute('height'); 
  this_s.style.height='auto';} 
  else if(height < ta_image.height){ 
  this_s.height = height; 
  }else{ 
  this_s.height = ta_image.height; 
  } 
} 

function image_auto_resize_inarea(this_s,width,height,view)
{ 
//this_s안의 모든 이미지는 자동 리사이즈 된다. 
 //alert(this_s.childNodes.length); 
 if(!view){view=true;} 
 if(!this_s){return;} 
 if(this_s.nodeType!=1){return;} 
 for(var i=0,m=this_s.childNodes.length;i<m;i++){ 
  var ta = this_s.childNodes[i]; 
  
  if(ta.nodeName=='IMG'){ 
  //ta.style.border='1px solid #333333';  
  image_auto_resize(ta,width,height); 

  if(view){ 
    if(!ta.title){ta.title=ta.src;} 
    if(!ta.onclick){ 
    ta.style.cursor='pointer'; 
    ta.onclick=function(){js_image_view(this,1);} 
    } 
    if(!ta.onload) 
    ta.onload=function(){image_auto_resize(this,width,height);} 
    if(!ta.onmouseover)  
    ta.onmouseover=function(){image_auto_resize(this,width,height);} 
  } 
  } 
  if(ta.childNodes.length>0){ 
  image_auto_resize_inarea(ta,width,height); 
  } 
 } 
 return; 

} 


function isUrl(s) {  
	var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/  
	return regexp.test(s);  
}

function isEMail(value) {  
	var exp_email1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;  
	var exp_email2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;  
	return !exp_email1.test(value) && exp_email2.test(value);  
}

function flash_viewer(src,width,height,flashvars){
	if (isUrl(src))
		document.write("<EMBED quality='high' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent' allowScriptAccess='always' src='"+src+"' width='"+width+"' height='"+height+"' FlashVars='"+flashvars+"'></EMBED>");
}


// 페이지 상단 라인에 메시지를 보여주고 닫는 스크립트
// 기본적으로 link_main_wrap 안에 붙이고,  link_main_wrap 이 없으면 topWrap_newtork 안에 붙인다.
function topline_msg(msg){
    if(document.getElementById('topline_msg')){
        if(('#topline_msg').html() != msg){
            $('#topline_msg').slideUp('fast').html(msg).slideDown('slow');    
        }
    }
    else{
        if(document.getElementById('link_main_wrap')){
            $('#link_main_wrap').prepend("<div id='topline_msg'></div>");
        }
        else if(document.getElementById('topWrap_network')){
            $('#topWrap_network').prepend("<div id='topline_msg'></div>");
        }
        
        $('#topline_msg').html(msg).css({'background-color':'#D0EFB0','font-size':'12px','padding':'1em','clear':'both'}).slideDown('slow');
    }
    setTimeout('delete_topline()',4000);
    
    $('html,body').animate({scrollTop: 0}, 100);
}

function delete_topline(){
    $('#topline_msg').slideUp('slow');
    setTimeout("$('#topline_msg').remove();",2000);
}


function base64_encode (data) {
    // http://kevin.vanzonneveld.net
    // +   original by: Tyler Akins (http://rumkin.com)
    // +   improved by: Bayron Guevara
    // +   improved by: Thunder.m
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Pellentesque Malesuada
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // -    depends on: utf8_encode
    // *     example 1: base64_encode('Kevin van Zonneveld');
    // *     returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='
    // mozilla has this native
    // - but breaks in 2.0.0.12!
    //if (typeof this.window['atob'] == 'function') {
    //    return atob(data);
    //}
    var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
        ac = 0,
        enc = "",
        tmp_arr = [];

    if (!data) {
        return data;
    }

    data = this.utf8_encode(data + '');

    do { // pack three octets into four hexets
        o1 = data.charCodeAt(i++);
        o2 = data.charCodeAt(i++);
        o3 = data.charCodeAt(i++);

        bits = o1 << 16 | o2 << 8 | o3;

        h1 = bits >> 18 & 0x3f;
        h2 = bits >> 12 & 0x3f;
        h3 = bits >> 6 & 0x3f;
        h4 = bits & 0x3f;

        // use hexets to index into b64, and append result to encoded string
        tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
    } while (i < data.length);

    enc = tmp_arr.join('');

    switch (data.length % 3) {
    case 1:
        enc = enc.slice(0, -2) + '==';
        break;
    case 2:
        enc = enc.slice(0, -1) + '=';
        break;
    }

    return enc;
}

function base64_decode (data) {
    // http://kevin.vanzonneveld.net
    // +   original by: Tyler Akins (http://rumkin.com)
    // +   improved by: Thunder.m
    // +      input by: Aman Gupta
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   bugfixed by: Pellentesque Malesuada
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // -    depends on: utf8_decode
    // *     example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');
    // *     returns 1: 'Kevin van Zonneveld'
    // mozilla has this native
    // - but breaks in 2.0.0.12!
    //if (typeof this.window['btoa'] == 'function') {
    //    return btoa(data);
    //}
    var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
        ac = 0,
        dec = "",
        tmp_arr = [];

    if (!data) {
        return data;
    }

    data += '';

    do { // unpack four hexets into three octets using index points in b64
        h1 = b64.indexOf(data.charAt(i++));
        h2 = b64.indexOf(data.charAt(i++));
        h3 = b64.indexOf(data.charAt(i++));
        h4 = b64.indexOf(data.charAt(i++));

        bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;

        o1 = bits >> 16 & 0xff;
        o2 = bits >> 8 & 0xff;
        o3 = bits & 0xff;

        if (h3 == 64) {
            tmp_arr[ac++] = String.fromCharCode(o1);
        } else if (h4 == 64) {
            tmp_arr[ac++] = String.fromCharCode(o1, o2);
        } else {
            tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
        }
    } while (i < data.length);

    dec = tmp_arr.join('');
    dec = this.utf8_decode(dec);

    return dec;
}


function utf8_decode (str_data) {
    // http://kevin.vanzonneveld.net
    // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
    // +      input by: Aman Gupta
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Norman "zEh" Fuchs
    // +   bugfixed by: hitwork
    // +   bugfixed by: Onno Marsman
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: utf8_decode('Kevin van Zonneveld');
    // *     returns 1: 'Kevin van Zonneveld'
    var tmp_arr = [],
        i = 0,
        ac = 0,
        c1 = 0,
        c2 = 0,
        c3 = 0;

    str_data += '';

    while (i < str_data.length) {
        c1 = str_data.charCodeAt(i);
        if (c1 < 128) {
            tmp_arr[ac++] = String.fromCharCode(c1);
            i++;
        } else if (c1 > 191 && c1 < 224) {
            c2 = str_data.charCodeAt(i + 1);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
            i += 2;
        } else {
            c2 = str_data.charCodeAt(i + 1);
            c3 = str_data.charCodeAt(i + 2);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
            i += 3;
        }
    }

    return tmp_arr.join('');
}

function utf8_encode (argString) {
    // http://kevin.vanzonneveld.net
    // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: sowberry
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman
    // +   improved by: Yves Sucaet
    // +   bugfixed by: Onno Marsman
    // +   bugfixed by: Ulrich
    // +   bugfixed by: Rafal Kukawski
    // *     example 1: utf8_encode('Kevin van Zonneveld');
    // *     returns 1: 'Kevin van Zonneveld'

    if (argString === null || typeof argString === "undefined") {
        return "";
    }

    var string = (argString + ''); // .replace(/\r\n/g, "\n").replace(/\r/g, "\n");
    var utftext = "",
        start, end, stringl = 0;

    start = end = 0;
    stringl = string.length;
    for (var n = 0; n < stringl; n++) {
        var c1 = string.charCodeAt(n);
        var enc = null;

        if (c1 < 128) {
            end++;
        } else if (c1 > 127 && c1 < 2048) {
            enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128);
        } else {
            enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128);
        }
        if (enc !== null) {
            if (end > start) {
                utftext += string.slice(start, end);
            }
            utftext += enc;
            start = end = n + 1;
        }
    }

    if (end > start) {
        utftext += string.slice(start, stringl);
    }

    return utftext;
}

/**
* 벽보에 글 보내기
*/
function post_on_wall(title,url){
    url = curlyquote(url);
    title = curlyquote(title);
    var data = encodeURIComponent('{"title":"'+title+'","url":"'+url+'"}');
    location.href = '/index.php?go=send_wall&data='+data;
    
}

/**
* twitter wall에 쓰기
*/
function send_to_twitter(shareurl,txt)
{
    var orginal_referer = encodeURIComponent(location.href);
    shareurl = encodeURIComponent(shareurl);
    txt = encodeURIComponent(txt);
 
    location.href = 'http://twitter.com/share?original_referer='+orginal_referer+'&text='+txt+'&url='+shareurl;
    
}

/**
* 페이스북에 글 쓰기
*/
function post_on_facebook_wall(app_id,link,picture,name,caption,desc,msg,redirect){
    link = encodeURIComponent(link);
    if(picture!= '') picture = encodeURIComponent(link);
    name = encodeURIComponent(name);
    caption = encodeURIComponent(caption);
    if(desc.length > 141) desc = desc.substring(0,141) + '...';
    desc = encodeURIComponent(desc);
    msg = encodeURIComponent(msg);
    if(redirect=='') redirect = location.href;
    redirect = encodeURIComponent(redirect);
    
    location.href='http://www.facebook.com/dialog/feed?app_id='+app_id+'&link='+link+'&picture='+picture+'&name='+name+'&caption='+caption+'&message='+msg+'&redirect_uri='+redirect+'&description='+desc;
  
}

function curlyquote(str) {
     str = str.replace(/\"([^\"]*)\"/gi,"&#8220;$1&#8221;");
     str = str.replace(/\'([^\']*)\'/gi,"&#8216;$1&#8217;");
     return str;
}

/**
* 로그인을 한 후 특정 사이트로 갈 수 있도록 유도
*/
function go_via_login(urltogo){
    if(jQuery.trim(urltogo)=='' || typeof(urltogo)=='undefined'){
        urltogo = location.href;
    }
    urltogo = encodeURIComponent(urltogo);
    location.href = '/index.php?c=user_log&m=login&redirection_url='+urltogo;    
}

function banner_click_log(bn) {
	$.post(
		"/index.php", 
		{c: 'main_main', m: 'banner_click_log', banner_name: bn},
		function(data){
			if (data.success == "ok") {}
		}, "json"
	);
}

/**
* 브라우저 검색 기능
* Browser name: BrowserDetect.browser
* Browser version: BrowserDetect.version
* OS name: BrowserDetect.OS
*/

var BrowserDetect = {
    init: function () {
        this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
        this.version = this.searchVersion(navigator.userAgent)
            || this.searchVersion(navigator.appVersion)
            || "an unknown version";
        this.OS = this.searchString(this.dataOS) || "an unknown OS";
    },
    searchString: function (data) {
        for (var i=0;i<data.length;i++)    {
            var dataString = data[i].string;
            var dataProp = data[i].prop;
            this.versionSearchString = data[i].versionSearch || data[i].identity;
            if (dataString) {
                if (dataString.indexOf(data[i].subString) != -1)
                    return data[i].identity;
            }
            else if (dataProp)
                return data[i].identity;
        }
    },
    searchVersion: function (dataString) {
        var index = dataString.indexOf(this.versionSearchString);
        if (index == -1) return;
        return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
    },
    dataBrowser: [
        {
            string: navigator.userAgent,
            subString: "Chrome",
            identity: "Chrome"
        },
        {     string: navigator.userAgent,
            subString: "OmniWeb",
            versionSearch: "OmniWeb/",
            identity: "OmniWeb"
        },
        {
            string: navigator.vendor,
            subString: "Apple",
            identity: "Safari",
            versionSearch: "Version"
        },
        {
            prop: window.opera,
            identity: "Opera"
        },
        {
            string: navigator.vendor,
            subString: "iCab",
            identity: "iCab"
        },
        {
            string: navigator.vendor,
            subString: "KDE",
            identity: "Konqueror"
        },
        {
            string: navigator.userAgent,
            subString: "Firefox",
            identity: "Firefox"
        },
        {
            string: navigator.vendor,
            subString: "Camino",
            identity: "Camino"
        },
        {        // for newer Netscapes (6+)
            string: navigator.userAgent,
            subString: "Netscape",
            identity: "Netscape"
        },
        {
            string: navigator.userAgent,
            subString: "MSIE",
            identity: "Explorer",
            versionSearch: "MSIE"
        },
        {
            string: navigator.userAgent,
            subString: "Gecko",
            identity: "Mozilla",
            versionSearch: "rv"
        },
        {         // for older Netscapes (4-)
            string: navigator.userAgent,
            subString: "Mozilla",
            identity: "Netscape",
            versionSearch: "Mozilla"
        }
    ],
    dataOS : [
        {
            string: navigator.platform,
            subString: "Win",
            identity: "Windows"
        },
        {
            string: navigator.platform,
            subString: "Mac",
            identity: "Mac"
        },
        {
               string: navigator.userAgent,
               subString: "iPhone",
               identity: "iPhone/iPod"
        },
        {
            string: navigator.platform,
            subString: "Linux",
            identity: "Linux"
        }
    ]

};
BrowserDetect.init();


/**
* captcha 이미지를 다른 것으로 바꾸어 줌
* id - 이미지의 id
*/
function replaceCaptcha(id){
    var link = document.getElementById(id).getAttribute('src');
    var baselink = '/classes/captcha/captcha.php?salt=';
    newlink = baselink + Math.floor(Math.random()*10001);
    
    if(newlink == link){
        alert('죄송합니다. 이미지 로딩을 위해 다시 한번 눌러주세요');  // 이 메시지 나올 확률은 1억분의 1
    }
    else{
        $('#'+id).attr('src',newlink);
    }
}

/**
* php 의 implode 와 같은 방법으로 사용함
*/
function implode (glue, pieces) {
    // *     example 1: implode(' ', ['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: 'Kevin van Zonneveld'
    // *     example 2: implode(' ', {first:'Kevin', last: 'van Zonneveld'});
    // *     returns 2: 'Kevin van Zonneveld'
    var i = '',
        retVal = '',
        tGlue = '';
    if (arguments.length === 1) {
        pieces = glue;
        glue = '';
    }
    if (typeof(pieces) === 'object') {
        if (Object.prototype.toString.call(pieces) === '[object Array]') {
            return pieces.join(glue);
        } else {
            for (i in pieces) {
                retVal += tGlue + pieces[i];
                tGlue = glue;
            }
            return retVal;
        }
    } else {
        return pieces;
    }
}

/**
* javascript array 및 object 를 세부적으로 보여줌
*/
function dump(arr,level) {
    var dumped_text = "";
    if(!level) level = 0;
    
    //The padding given at the beginning of the line.
    var level_padding = "";
    for(var j=0;j<level+1;j++) level_padding += "    ";
    
    if(typeof(arr) == 'object') { //Array/Hashes/Objects 
        for(var item in arr) {
            var value = arr[item];
            
            if(typeof(value) == 'object') { //If it is an array,
                dumped_text += level_padding + "'" + item + "' ...\n";
                dumped_text += dump(value,level+1);
            } else {
                dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
            }
        }
    } else { //Stings/Chars/Numbers etc.
        dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
    }
    return dumped_text;
}


/**
* 사용자 이벤트를 Google Analytics 로 기록을 남기고, 제시된 link object 의 href 로 페이지 이동
* 이 스크립트를 이용하기 위해선 페이지에 Goodle Analytics Tracking (Asynchronous 방식) 이 적용되어 있어야 함
* 이 함수는 속성으로 href 가 있는 객체(a, area, link, or location)에 한해서 적용됨
* 
* link - javascript object
* category - 트래킹 하는 객체 그룹에 대한 이름. 필수. 다음 중에 하나를 사용하도록 권장 ('AD SERVICE','LINKNOW AD')
* action -  해당 객체에 대한 유저의 상호작용을 표시하는 문자열. category 와 쌍으로 존재해야 함. 필수
* opt_label - 이벤트 데이터에 대한 추가적인 차원(dimension)를 나타내는 문자열. 옵션 
* opt_value - 사용자 이벤트에 대한 데이터 값을 정수(integer)로 나타냄. 옵션
* 
* -- 사용 예 --
* 
* google_track_and_move(this, 'banner_linknow', 'click','CNN THE BIZ',member_id);return false;
* 
* 위에서 return false; 를 하는 것은 원 link object 의 href 를 disable 시키기 위함.
*/
function google_track_and_move(link, category, action,opt_label,opt_value){
    // track event asynchronously
    if (typeof(opt_label) !='undefined' && opt_label != '' && typeof(opt_value) !=='undefined' && opt_value != '')
    {
        _gaq.push(['_trackEvent',category, action, opt_label, opt_value]); 
    }
    else if (typeof(opt_label) !='undefined' && opt_label != '' && (typeof(opt_value) ==='undefined' || opt_value === ''))
    {
        _gaq.push(['_trackEvent',category,action,opt_label]); 
    }
    else
    {
        _gaq.push(['_trackEvent',category,action]); 
    }
    
    // move to object link 
    if(link.target==='_blank'){
        setTimeout('window.open("' + link.href +'","mywindow")',700);        
    }
    else{
        setTimeout('document.location = "' + link.href + '"',700);
    }
}


function google_track(category, action,opt_label,opt_value){
    
    // track event asynchronously
    if (typeof(opt_label) !='undefined' && opt_label != '' && typeof(opt_value) !=='undefined' && opt_value != '')
    {
        _gaq.push(['_trackEvent',category, action, opt_label, opt_value]); 
    }
    else if (typeof(opt_label) !='undefined' && opt_label != '' && (typeof(opt_value) ==='undefined' || opt_value === ''))
    {
        _gaq.push(['_trackEvent',category,action,opt_label]); 
    }
    else
    {
        _gaq.push(['_trackEvent',category,action]); 
    }
}

