/**
 *	공통으로 사용하는 함수들 정의
 */

// 브라우저 정보 확인하기 ================================================================ 
var Browser = new Object();
var ua = navigator.userAgent.toLowerCase(); 

Browser.isGecko = (ua.indexOf('gecko') != -1 && ua.indexOf('safari') == -1);
Browser.isMozilla = (Browser.isGecko && ua.indexOf('gecko/') + 14 == ua.length);
Browser.isIE = window.ActiveXObject ? true : false;
Browser.isMozilla = Browser.isFirefox = (ua.indexOf("firefox")!=-1);
Browser.isSafari = (ua.indexOf("safari")!=-1);
Browser.isOpera = (ua.indexOf("opera")!=-1);

if (Browser.isIE)
	Browser.version = navigator.appVersion.match(/MSIE \d+(.\d+)*/)[0].split(" ")[1];
else if (Browser.isFirefox) 
	Browser.version = navigator.userAgent.match(/Firefox\/\d+(.\d+)*/)[0].split("/")[1];
else
	Browser.version = parseFloat(navigator.appVersion);

// 예외정의 ========================================================================
var	UnsupportedBrowserException = "지원되지 않는 브라우저입니다.";

// 검색엔진 API키값 정의 ===============================================================
var	__APIKEY = "3e0ffa5da44f542872b058f2b64a5e11";

/**
 *	OS와 브라우저에 상관없이 범용적인 클립보드 복사 기능을 제공한다.
 *	단 _clipboard.swf파일이 있어야 한다.
 *	참조사이트: http://webchicanery.com/2006/11/14/clipboard-copy-javascript/
 */
function __clip(text2copy)
{
	var flashcopier = $("flashcopier");

	if ( flashcopier == undefined )
	{
		var flashcopier = document.createElement('div');
		flashcopier.id = "flashcopier";
		document.body.appendChild(flashcopier);
	}
	
	flashcopier.innerHTML = '<embed src="/images/_clipboard.swf" FlashVars="clipboard='
						  + text2copy.replace(/\"/, "&quot")
						  //+ escape(text2copy)
						  + '" width="0" height="0" type="application/x-shockwave-flash"></embed>';
}

/**
 *	변수값이 정의되지 않았다면 기본값을 반환한다.
 */
function __nullsafe(value, defaultValue)
{
	return (value) ? value : ((arguments.length > 1) ? arguments[1] : "");
}

/**
 *	목록보기 URL를 구성한다.
 */
function __contents_list_url(cateSeqnum, subcateSeqnum, page)
{
	return "/contents/" + cateSeqnum + ((subcateSeqnum) ? ("/" + subcateSeqnum) : "") + "/list.keywui" + ((page) ? "?page=" + page : "");
}

/**
 *	상세보기 URL를 구성한다.
 */
function __contents_view_url(cateSeqnum, subcateSeqnum, mvSeqnum)
{
	return "/contents/" + cateSeqnum + ((subcateSeqnum) ? ("/" + subcateSeqnum) : "") + "/view.keywui?mvSeqnum=" + mvSeqnum;
}

/**
 *	쿠키값을 읽는다.
 */
function __get_cookie(name)
{
	var start = document.cookie.indexOf(name + "=");
	var len = start + name.length + 1;
	
	if ( start != -1 )
	{
		var end = document.cookie.indexOf(";", len);
		if ( end == -1 ) end = document.cookie.length;
		
		return unescape(document.cookie.substring(len, end));
	}
	
	return null;
}

/**
 *	쿠키값을 설정한다.
 */
function __set_cookie(name, value)
{
	var today = new Date();
	today.setDate(today.getDate() + 365);
	
	document.cookie = name + "=" + value + ";path=/;expires=" + today.toGMTString();
}

/**
 *	쿠키값을 삭제한다.
 */
function __remove_cookie(name)
{
	document.cookie = name + "=" + ";domain=.chosun.com;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

/**
 *	폼에 들어있는 checkbox등의 element가 선택이 되었는지 확인한다.
 */
function __is_checked(formElement)
{
	if ( !formElement ) return false;
	if ( formElement.length )
	{
		for ( var i = 0; i < formElement.length; i++ ) 
			if ( formElement[i].checked ) return true;
		return false;
	}
	else
		return formElement.checked;
}

/**
 *	폼에 들어있는 checkbox등의 element에서 선택된 값을 반환한다.
 */
function __checked_value(formElement)
{
	if ( !formElement ) return "";
	if ( formElement.length )
	{
		for ( var i = 0; i < formElement.length; i++ ) 
			if ( formElement[i].checked ) return formElement[i].value;
		return "";
	}
	else
		return (formElement.checked) ? formElement.value : "";
}

/**
 *	일정한 문자열을 정해진 길이로 자른다. 만약 appender값이 정의되었다면 그 끝에 붙인다.
 */
function __trim(str, maxLen, appender)
{
	if ( str )
	{
		var i = 0;
		var	count = 0;
		var	isOver = false;
		
		for ( i = 0; i < str.length; i++ )
		{
			count += (str.charCodeAt(i) < 255) ? 1 : 2;
			if ( count > maxLen ) { isOver = true; break; }
		}
		
		return str.substring(0, i) + ((appender && isOver) ? appender : "");
	}
	
	return "";
}

/**
 *	문자열의 길이를 구한다. 한글 2, 영문 1로 계산한다.
 */
function __length(str)
{
	var	count = 0;

	if ( str )
	{
		for ( var i = 0; i < str.length; i++ ) count += (str.charCodeAt(i) < 255) ? 1 : 2;
	}
	
	return count;
}

/**
 *	로그아웃할 때 쿠키값을 제거한다.
 */
function __logout_impl()
{
	__remove_cookie("dz_info");
	__remove_cookie("keywui_info");
	__remove_cookie("keywui_nickname");
	__remove_cookie("keywui_memphoto");
	__remove_cookie("keywui_mbship");
	__remove_cookie("keywui_mbshipcode");
	__remove_cookie("keywui_email");
	__remove_cookie("keywui_intro");
}

// F5키 막기
window.document.onkeydown = protectKey;
function protectKey()
{
	// 새로고침을 막는 스크립트.. F5 번키..
	if(event.keyCode == 116)
	{
		event.keyCode = 0;
		return false;
	}
	// CTRL + R 즉 새로운 창 띄움을 막는 스크립트..
	else if ((event.keyCode == 82) && (event.ctrlKey == true))
	{
		event.keyCode = 0;
		return false;
	}
	// CTRL + N 즉 새로운 창 띄움을 막는 스크립트..
	else if ((event.keyCode == 78) && (event.ctrlKey == true))
	{
		event.keyCode = 0;
		return false;
	}
}