관련 검색어
더보기
(function(){ var NetizenToggle = function(type){ this.type = (type) ? type : ""; this.btnEl = daum.$E("netizen_more_btn_" + type); this.listsWrapper = daum.$E("netizen_lists_" + this.type); this.lists = daum.$$("#netizenColl_" + this.type + " .list_keyword span.wsn"); this.etccode = 1; }; NetizenToggle.prototype = { getType: function(){ var lists = this.lists; var type = ""; var list = this.lists[this.lists.length-1]; var top = daum.Element.getCoordsTarget(list, list.parentNode).top; if(top > 40){ type = "type3"; }else if(top > 25){ type = "type2"; }else{ type = "type1"; } return type; }, checkFirstTime: function(){ var type = this.getType(); if(type=="type3"){ this.btnEl.removeClassName("hide"); this.btnEl.innerHTML = '더보기'; this.listsWrapper.className = "list_keyword type2"; } if(type=="type2"){ this.listsWrapper.className = "list_keyword type2"; } }, setBtnStatus: function(opt1, opt2){ if(opt1=="more"){ this.btnEl.removeClassName("fold"); this.btnEl.innerHTML = '더보기'; }else if(opt1=="fold"){ this.btnEl.addClassName("fold"); this.btnEl.innerHTML = '접기'; } if(typeof(opt2)!="undefined"){ if(opt2=="hide"){ this.btnEl.addClassName("hide"); }else if(opt2=="show"){ this.btnEl.removeClassName("hide"); } } }, check: function(){ var type = this.getType(); if(this.listsWrapper.hasClassName("type1")){ }else if(this.listsWrapper.hasClassName("type2")){ if(type=="type2"){ this.setBtnStatus("more","hide"); }else if(type=="type3"){ this.setBtnStatus("more","show"); } }else if(this.listsWrapper.hasClassName("type3")){ if(type=="type2"){ this.setBtnStatus("more","hide"); this.listsWrapper.className = "list_keyword type2"; }else if(type=="type3"){ this.setBtnStatus("fold","show"); } } }, toggle: function(){ var type = this.getType(); if(type == "type1"){ }else{ if(this.btnEl){ if(this.btnEl.innerHTML == '더보기'){ this.setBtnStatus("fold"); this.listsWrapper.className = "list_keyword type3"; }else{ this.setBtnStatus("more"); this.listsWrapper.className = "list_keyword type2"; } } } }, init: function(){ if(this.btnEl){ daum.Event.addEvent(this.btnEl, "click", daum.Function.bind(function(e){ this.toggle(); }, this)); daum.Event.addEvent(window, "resize", daum.Function.bind(function(e){ this.check(); }, this)); this.checkFirstTime(); } } }; var netizenToggle; netizenToggle = new NetizenToggle("top"); netizenToggle.init(); netizenToggle.checkFirstTime(); netizenToggle.checkFirstTime(); })();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* 계산결과가 17자리 이상일 경우 오차가 발생할 수 있습니다.
- 관련계산기
- 날짜 | 환율 | 단위변환
var _jsCalc = function(opt) {
var exprShow = ''; // 보여지는수식
var exprCalc = ''; // 실제계산용수식
var rstValue = 0; // 결과(입력)값
var lastRstValue = ""; //이전 결과값
var filterChar1 ="@#$&_=|,[]{}<>?\\\"\';:`~"; // 입력제한 특수문자
var filterChar2 = ".+-*/%^";
var filterChar3 = "+-*/%^Mm";
var rst1_div = ''; // 수식div영역
var rst2_div = ''; // 결과(입력)div영역
var input_area = ''; // 결과(입력)input영역
var calcMode='Deg'; // radian degree 모드
var opt = opt;
var rst1_div = 'calc'+ opt +'_result_box1';
var hist_div = "calc_history";
var input_area = "calc_input_area";
var rst2_div = 'calc'+ opt +'_result_box2';
return {
modeCheck : function(){
if(daum.$("radio_rad").checked) calcMode='Rad';
else calcMode='Deg';
},
// 입력되는 키 체크
keyCheckAndCal : function(event){
event = event || window.event;
var code = event.charCode || event.keyCode;
var c = String.fromCharCode(code);
//엔터가 들어오면 계산
if(code == 13){
exprShow = daum.$(input_area).value;
this.cal('run');
if (daum.ie) event.returnValue=false;
else event.preventDefault();
return false;
}
else if(lastRstValue!="" && (daum.$(input_area).value==0 || daum.$(input_area).value=="")){
if(filterChar3.indexOf(c)>=0){
daum.$(input_area).value = lastRstValue;
}
}
// 특수문자 차단
else if ( filterChar1.indexOf(c)>=0 ){
if (daum.ff){
if(event.keyCode>0) return false;
else {
alert("숫자만 입력해주세요");
event.preventDefault();
}
return false;
}
else if (daum.ie) event.returnValue=false;
else event.preventDefault();
alert("숫자만 입력해주세요");
return false;
}
else if(code>=0 && c!="." && filterChar2.indexOf(c)<0){
if(daum.$(input_area).value=="0"){
daum.$(input_area).value="";
}
return false;
}
else return false;
},
// 계산하기
getCalcResult : function(expr){
if(expr.search(/\d{17}/)>=0){
alert("17자리 미만의 숫자만 입력해 주세요");
return "";
}
if (expr.search(/(sin|cos|tan|log|ln|\!){2}/i)>=0
|| expr.search(/[\^\^]{2}/i)>=0
|| expr.search(/[√√]{2}/i)>=0
|| expr.search(/[sin|cos|tan][\^]/i)>=0
|| expr.search(/[sin|cos|tan][√]/i)>=0 ){
alert("올바른 연산식을 입력해 주세요");
return "";
}
try{
with (Math){
var temp = "";
temp = this.deleteComma(expr);
temp = this.convertEe(temp);
temp = this.convertMod(temp);
temp = this.convertXtoStar(temp);
temp = this.insertHiddenMultiple(temp);
temp = this.convertToSinCosTan(temp);
temp = this.convertToSqrt(temp);
temp = this.convertToLog(temp);
temp = this.convertToLn(temp);
temp = this.convertToPow(temp);
temp = this.convertToFactorial(temp);
expr = temp;
rstValue = eval(expr);
if(rstValue.length>22) {
rstValue=rstValue.toExponential(15);
rstValue=this.convertEe(rstValue);
}
}
if(isNaN(rstValue)){
alert("올바른 연산식을 입력해 주세요");
return "";
}
else{
return rstValue;
}
}
catch(e){
alert("올바른 연산식을 입력해 주세요");
return "";
}
},
checkDoubleDot : function (){
if(daum.$(input_area).value.indexOf("..")>=0){
daum.$(input_area).value = daum.$(input_area).value.replace("..", ".");
}
//테스트
},
// 히스토리 붙이기
addHistory : function(){
var tempStr = ''+exprShow+' = '+rstValue+'
';
daum.$(hist_div).innerHTML += tempStr;
exprShow = rstValue;
daum.$("calc_history").style.display="inline";
},
// div영역에 결과값 뿌리기
setDivResult : function(){
var rstValueComma = this.insertComma(rstValue);
daum.$(rst2_div).innerHTML = rstValueComma;
},
// input 영역에 결과값 뿌리기
setInpResult : function(){
if(daum.$(rst1_div).scrollHeight>50){
daum.$(rst1_div).style.overflowY="scroll";
}
daum.$(input_area).value = "";
daum.$(rst1_div).scrollTop += daum.$(rst1_div).scrollHeight;
},
// 생략된 곱셈기호를 삽입
insertHiddenMultiple : function(expr){
var reg = /(\d{1}|[)])([(]|sin|SIN|cos|COS|tan|TAN|sqrt|SQRT|root|ROOT|pow|POW|log|LOG|ln|LN|pi|PI|E|√)/;
while (reg.test(expr)){
expr = expr.replace(reg, '$1' + '*' + '$2');
}
var reg2 = /([)|pi])(\d{1})/i;
while (reg2.test(expr)){
expr = expr.replace(reg2, '$1' + '*' + '$2');
}
return expr ? expr : 0;
},
// 1000단위 콤마 삽입
insertComma : function(n) {
n += '';
var reg = /(^[+-]?\d+)(\d{3})/;
while (reg.test(n)){
n = n.replace(reg, '$1' + ',' + '$2');
}
return n;
},
// 1000단위 콤마 제거
deleteComma : function(n){
n += '';
n = n.replace(/,/gi, '');
return n;
},
// 연산자 앞의 값 찾기.
findFrontValue : function(expr,current){
var start;
var state=0;
// 기호 바로 앞이 숫자라면
if(parseInt(expr.charAt(current-1))>=0){
for(var i=current-1;i>=0;i--){
if(!((parseInt(expr.charAt(i-1))>=0)||expr.charAt(i-1)==".")){
start = i;
break;
}
}
return expr.substring(start,current);
}
// 기호 바로 앞이 숫자가 아니라면. 즉, 괄호라면
else{
for(var i = current; i>=0 ; i--){
if(expr.charAt(i)==')') {
state++;
}
else if(expr.charAt(i)=='(') {
state--;
if(state==0) {
if(expr.substring(i-3,i)=="sin"||expr.substring(i-3,i)=="cos"||expr.substring(i-3,i)=="tan"||expr.substring(i-3,i)=="pow"||expr.substring(i-3,i)=="log"){
start = i-3;
}
else if(expr.substring(i-4,i)=="sqrt" || expr.substring(i-4,i)=="root"){
start = 1-4;
}
else{
start = i;
}
break;
}
}else if(expr.charAt(i).toLowerCase() == 'e') {
start = i;
}
}
return expr.substring(start,current);
}
},
findBackValue : function(expr,current){
var end;
var state=0;
// 기호 바로 뒤가 숫자라면
if(parseInt(expr.charAt(current+1))>=0){
for(var i=current+1;i<=expr.length;i++){
if(!((parseInt(expr.charAt(i+1))>=0)||expr.charAt(i+1)==".")){
end = i;
break;
}
}
return expr.substring(current+1,end+1);
}
// 기호 바로 뒤가 숫자가 아니라면. 즉, 괄호라면
else if(expr.charAt(current+1)=="("){
for(var i = current; i<=expr.length ; i++){
if(expr.charAt(i)=='(') {
state++;
}
else if(expr.charAt(i)==')') {
state--;
if(state==0) {
end = i;
break;
}
}
}
return expr.substring(current+1,end+1);
}
// 기호 바로 뒤가 +- 기호라면
else if(expr.charAt(current+1)=="+" || expr.charAt(current+1)=="-"){
if(parseInt(expr.charAt(current+2))>=0){
for(var i=current+2;i<=expr.length;i++){
if(!((parseInt(expr.charAt(i+1))>=0)||expr.charAt(i+1)==".")){
end = i;
break;
}
}
return expr.substring(current+1,end+1);
}
else{
for(var i = current+1; i<=expr.length ; i++){
if(expr.charAt(i)=='(') {
state++;
}
else if(expr.charAt(i)==')') {
state--;
if(state==0) {
end = i;
break;
}
}
}
}
return expr.substring(current+1,end+1);
}
else return "";
},
convertToPow : function(expr){
while(expr.search(/\^/i)!=-1)
{
var current = expr.search(/\^/i);
var front = this.findFrontValue(expr,current);
var back = this.findBackValue(expr,current);
expr = expr.replace(front+"^"+back,"pow("+front+","+back+")");
}
return expr;
},
convertToLog : function(expr){
while(expr.search(/log/g)!=-1)
{
var current = expr.search(/log/g);
var back = this.findBackValue(expr,current+2);
expr = expr.replace("log"+back,"(¶("+back+")/LN10)");
}
expr = daum.String.replaceAll(expr,"¶","log");
return expr;
},
convertToLn : function(expr){
while(expr.search(/ln/g)!=-1)
{
var current = expr.search(/ln/g);
var back = this.findBackValue(expr,current+1);
expr = expr.replace("ln"+back,"(log("+back+"))");
}
return expr;
},
convertToSqrt : function(expr){
var patt = /\√/gi;
while(patt.exec(expr)!=null){
var current = expr.search(/\√/gi);
var back = this.findBackValue(expr,current);
expr = expr.replace("√"+back,"(sqrt("+back+"))");
}
patt = /root/g;
while(patt.exec(expr)!=null){
var current = expr.search(/root/g);
var back = this.findBackValue(expr,current+3);
expr = expr.replace("root"+back,"(sqrt("+back+"))");
}
return expr;
},
convertToSinCosTan : function(expr){
var end;
var patt = /sin/g;
while(patt.exec(expr)!=null){
var current = expr.search(/sin/g);
var back = this.findBackValue(expr,current+2);
if(calcMode=="Rad"){
expr = expr.replace("sin"+back,"(¶s("+back+"))");
}
else if(calcMode=="Deg"){
expr = expr.replace("sin"+back,"(¶s("+back+"/180*PI))");
}
}
patt = /cos/g;
while(patt.exec(expr)!=null){
var current = expr.search(/cos/g);
var back = this.findBackValue(expr,current+2);
if(calcMode=="Rad"){
expr = expr.replace("cos"+back,"(¶c("+back+"))");
}
else if(calcMode=="Deg"){
expr = expr.replace("cos"+back,"(¶c("+back+"/180*PI))");
}
}
patt = /tan/g;
while(patt.exec(expr)!=null){
var current = expr.search(/tan/g);
var back = this.findBackValue(expr,current+2);
if(calcMode=="Rad"){
expr = expr.replace("tan"+back,"(¶t("+back+"))");
}
else if(calcMode=="Deg"){
expr = expr.replace("tan"+back,"(¶t("+back+"/180*PI))");
}
}
expr = daum.String.replaceAll(expr,"¶s","sin");
expr = daum.String.replaceAll(expr,"¶c","cos");
expr = daum.String.replaceAll(expr,"¶t","tan");
return expr;
},
convertToFactorial : function(expr){
while(expr.search(/\!/i)!=-1)
{
var current = expr.search(/\!/i);
var front = this.findFrontValue(expr,current);
var factoVal = this.factorial(front);
expr = expr.replace(front+"!",factoVal);
}
return expr;
},
convertEe : function(expr){
expr = expr.replace(/e/g,"■");
expr = expr.replace(/E/g,"□");
expr = expr.replace(/■/g,"E");
expr = expr.replace(/□/g,"e");
return expr;
},
convertXtoStar : function(expr){
expr = expr.replace(/x/gi,"*");
return expr;
},
convertMod : function(expr){
expr = expr.replace(/mod/gi,"%");
return expr;
},
roundRP : function(n, digits) {
if (digits >= 0) return parseFloat(n.toFixed(digits)); // 소수부 반올림
digits = Math.pow(10, digits); // 정수부 반올림
var t = Math.round(n * digits) / digits;
return parseFloat(t.toFixed(0));
},
// 버튼 누를 때
cal : function(letter){
if(letter!="run" && daum.$(input_area).value=="0" && letter!="."){
daum.$(input_area).value = "";
}
if(opt=='1' || opt=='2') rstValue = this.deleteComma(daum.$(input_area).value);
switch(letter){
case 'Clear' :
if(opt=='1'||opt=='2'){
// 클리어 누른상태에서 클리어 한 번 더 누르면 히스토리도 초기화.
if(daum.$(rst2_div).innerHTML == "" && (daum.$(input_area).value=="" || daum.$(input_area).value=="0")){
daum.$(hist_div).innerHTML = "";
daum.$("calc_history").style.display="none";
}
rstValue=0;
daum.$(input_area).value = "0";
exprShow = "0";
lastRstValue="";
daum.$(rst2_div).innerHTML = "";
break;
}
if(opt!='4' && opt!='5') daum.$(input_area).value = '';
break;
case '+' :
case '-' :
case '*' :
case '/' :
if(lastRstValue!="" && daum.$(input_area).value==0){
this.insertValueToLastPos(daum.$('calc_input_area'), lastRstValue+letter );
exprShow = daum.$(input_area).value;
}
else{
this.insertValueToLastPos(daum.$('calc_input_area'), letter );
exprShow = daum.$(input_area).value;
}
break;
case 'bs':
exprShow = daum.$(input_area).value;
if(daum.String.byteLength(exprShow)>0){
exprShow = daum.String.cutString(exprShow, exprShow.length-1, "");
}
daum.$(input_area).value = exprShow;
break;
case 'run':
if(opt=='1' || opt=='2' ){
//빈칸일때 엔터누르면 0으로 초기화.
if(daum.$(input_area).value=="" || daum.$(input_area).value=="0"){
lastRstValue="";
rstValue=0;
daum.$(input_area).value = "0"
daum.$(rst2_div).innerHTML = "";
break;
}
rstValue = this.getCalcResult(daum.$(input_area).value);
exprShow = daum.$(input_area).value;
if(exprShow.search(/code/gi)>=0) break; // native 코드 출력 막기
if(rstValue!=="") {
this.setDivResult();
this.addHistory();
this.setInpResult();
lastRstValue = rstValue;
}
}
break;
case 'pm':
if(rstValue=="") daum.$(input_area).value=0;
if(lastRstValue!="" && daum.$(input_area).value==0){
daum.$(input_area).value = "(" + lastRstValue + ")*-1";
}
else{
daum.$(input_area).value = "(" + daum.$(input_area).value +")*-1";
exprShow = daum.$(input_area).value;
}
break;
case '00':
if(rstValue=="" || rstValue=="0") daum.$(input_area).value="0";
else {
this.insertValueToLastPos(daum.$(input_area), letter );
exprShow = daum.$(input_area).value;
}
break;
case 'pct':
if(rstValue=="") daum.$(input_area).value=0;
if(lastRstValue!="" && daum.$(input_area).value==0){
daum.$(input_area).value = "(" + lastRstValue + ")*0.01";
}
else{
daum.$(input_area).value = "(" + daum.$(input_area).value + ")*0.01";
exprShow = daum.$(input_area).value;
}
break;
default :
if(filterChar2.indexOf(letter)>=0 && (daum.$(input_area).value==""||daum.$(input_area).value=="0")){
daum.$(input_area).value="";
}
//daum.$(input_area).value += letter;
this.insertValueToLastPos(daum.$('calc_input_area'), letter );
exprShow = daum.$(input_area).value;
break;
}
if(opt!='5' && opt!='4') {
daum.$(input_area).focus(); // 마우스로 입력하다가 엔터눌러도 작동하게 하기 위해 포커스를 inputbox로 이동.
//daum.$(input_area).value = daum.$(input_area).value; // IE 포커스 위치 문제 해결
}
},
factorial : function(n){
if ((n == 0) || (n == 1))
return 1;
else
{
rtv = (n * this.factorial(n-1));
return rtv;
}
},
saveCurrentPos : function(objTextArea) {
if (objTextArea.createTextRange) {
objTextArea.currentPos = document.selection.createRange().duplicate();
}
},
insertValueToLastPos : function(objTextArea, text) {
if (objTextArea.createTextRange && objTextArea.currentPos) {
var currentPos = objTextArea.currentPos;
currentPos.text = ( currentPos.text.charAt(currentPos.text.length - 1) == ' ' )
? ( text + ' ' )
: text;
} else if( objTextArea.setSelectionRange ){
var start = objTextArea.selecti[안내]태그제한으로등록되지않습니다-xxonStart;
var end = objTextArea.selectionEnd;
var dummy = [objTextArea.value.substr(0,start), objTextArea.value.substr(end)];
objTextArea.value = dummy[0] + text + dummy[1];
objTextArea.setSelectionRange( start+text.length, start+text.length);
} else {
objTextArea.value += text;
}
objTextArea.focus();
}
};
};
function checkInputLength(idV,maxV){
idV = daum.$(idV);
var st=idV.value;
var stLen=st.length;
var cByte=0;
var len=0;
var oChar="";
var strRst="";
for(var i=0; i< stLen; i++){
oChar = st.charAt(i);
escape(oChar).length>4 ? cByte += 2 : cByte++;
if(cByte <= maxV) len = i + 1;
}
if(cByte > maxV)
{
alert( maxV + " 글자를 초과 입력할수 없습니다. \n 초과된 내용은 자동으로 삭제 됩니다. ");
strRst = st.substr(0, len);
idV.value = strRst;
}
idV.focus();
}
var calc = new _jsCalc('1');
// 버튼 이벤트 처리 시작
daum.addEvent( daum.$("calculatorBox"), "click", function(ev){
var target = daum.getElement( ev );
if((target.id).indexOf("calcbtn")>=0){
if(target.id=="calcbtn_run"){
target.style.background = "url(http://imgsrc.search.daum-img.net/search_all/2008_new/calculator/bt_calc_enter.gif)";
target.style.backgroundPosition = "-168px 0px";
}
else{
target.style.background = "url(http://imgsrc.search.daum-img.net/search_all/2008_new/calculator/bt_calc_click.gif)";
target.style.backgroundPosition = "0px -" + (((target.id).substr(7)-1)*50) + "px";
calc.cal(target.value);
calc.checkDoubleDot();
}
setTimeout(function(){
if(target.id=="calcbtn_run"){
target.style.background = "url(http://imgsrc.search.daum-img.net/search_all/2008_new/calculator/bt_calc_enter.gif)";
target.style.backgroundPosition = "0px 0px";
}
else{
target.style.background = "url(http://imgsrc.search.daum-img.net/search_all/2008_new/calculator/bt_calc_off.gif)";
target.style.backgroundPosition = "0px -" + (((target.id).substr(7)-1)*50) + "px";
}
}
,100);
}
}, true );
daum.addEvent( daum.$("calculatorBox"), "mouseover", function(ev){
var target = daum.getElement( ev );
if((target.id).indexOf("calcbtn")>=0){
if(target.id=="calcbtn_run"){
target.style.background = "url(http://imgsrc.search.daum-img.net/search_all/2008_new/calculator/bt_calc_enter.gif)";
target.style.backgroundPosition = "-84px 0px";
}
else{
target.style.background = "url(http://imgsrc.search.daum-img.net/search_all/2008_new/calculator/bt_calc_on.gif)";
target.style.backgroundPosition = "0px -" + (((target.id).substr(7)-1)*50) + "px";
}
}
}, true );
daum.addEvent( daum.$("calculatorBox"), "mouseout", function(ev){
var target = daum.getElement( ev );
if((target.id).indexOf("calcbtn")>=0){
if(target.id=="calcbtn_run"){
target.style.background = "url(http://imgsrc.search.daum-img.net/search_all/2008_new/calculator/bt_calc_enter.gif)";
target.style.backgroundPosition = "0px 0px";
}
else{
target.style.background = "url(http://imgsrc.search.daum-img.net/search_all/2008_new/calculator/bt_calc_off.gif)";
target.style.backgroundPosition = "0px -" + (((target.id).substr(7)-1)*50) + "px";
}
}
}, true );
daum.addEvent( daum.$("calc_input_area"), "select", function(ev){
var target = daum.getElement(ev);
calc.saveCurrentPos( target );
},true);
daum.addEvent( daum.$("calc_input_area"), "click", function(ev){
var target = daum.getElement(ev);
calc.saveCurrentPos( target );
},true);
daum.addEvent( daum.$("calc_input_area"), "keyup", function(ev){
var target = daum.getElement(ev);
calc.saveCurrentPos( target );
},true);