382 rindas
		
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			382 rindas
		
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | 
						|
<html>
 | 
						|
<head>
 | 
						|
  <title></title>
 | 
						|
  <link href='pages.css' type='text/css' rel='stylesheet' />
 | 
						|
  <style type='text/css'>
 | 
						|
  * {
 | 
						|
    color: #ddd;
 | 
						|
    font: 12px 'dejavu sans mono';
 | 
						|
  }
 | 
						|
 | 
						|
  body {
 | 
						|
    margin: 0;
 | 
						|
    padding: 0;
 | 
						|
    background-color: #000;
 | 
						|
    overflow: hidden;
 | 
						|
  }
 | 
						|
 | 
						|
  div {
 | 
						|
    float: left;
 | 
						|
  }
 | 
						|
 | 
						|
  div.result {
 | 
						|
    float: none;
 | 
						|
    width: 100%;
 | 
						|
  }
 | 
						|
 | 
						|
  textarea {
 | 
						|
    float: left;
 | 
						|
    border: none;
 | 
						|
    background: none;
 | 
						|
    padding: 0;
 | 
						|
    overflow: hidden;
 | 
						|
  }
 | 
						|
  </style>
 | 
						|
  <script type='text/javascript' src='pages.js'></script>
 | 
						|
 | 
						|
  <script type='text/javascript'>
 | 
						|
  /* 
 | 
						|
  This program is free software. It comes without any warranty, to
 | 
						|
  the extent permitted by applicable law. You can redistribute it
 | 
						|
  and/or modify it under the terms of the Do What The Fuck You Want
 | 
						|
  To Public License, Version 2, as published by Sam Hocevar. See
 | 
						|
  http://sam.zoy.org/wtfpl/COPYING for more details.
 | 
						|
  */
 | 
						|
  window.onload = function() {
 | 
						|
    var is_firefox
 | 
						|
    if (navigator.userAgent.indexOf('Firefox') != -1) is_firefox = true
 | 
						|
    else is_firefox = false
 | 
						|
    
 | 
						|
    input_margin_top = 0
 | 
						|
    input_margin_right = 0
 | 
						|
    input_margin_bottom = 0
 | 
						|
    if (is_firefox) input_margin_left = -1
 | 
						|
    else input_margin_left = 0
 | 
						|
    
 | 
						|
    ans = 0
 | 
						|
    
 | 
						|
    curr_input_start = document.createElement('div')
 | 
						|
    curr_input_start.innerHTML = '>'
 | 
						|
    document.body.appendChild(curr_input_start)
 | 
						|
    
 | 
						|
    input_start_width = curr_input_start.scrollWidth
 | 
						|
    input_start_height = curr_input_start.scrollHeight
 | 
						|
    
 | 
						|
    curr_input = document.createElement('textarea')
 | 
						|
    curr_input.onkeydown = function() {
 | 
						|
      this.style.height = this.scrollHeight + 'px'
 | 
						|
    }
 | 
						|
    curr_input.onkeyup = function() {
 | 
						|
      this.style.height = this.scrollHeight + 'px'
 | 
						|
    }
 | 
						|
    curr_input.style.marginTop = input_margin_top + 'px'
 | 
						|
    curr_input.style.marginRight = input_margin_right + 'px'
 | 
						|
    curr_input.style.marginBottom = input_margin_bottom + 'px'
 | 
						|
    curr_input.style.marginLeft = input_margin_left + 'px'
 | 
						|
    curr_input.style.width = getw() - input_start_width - input_margin_left - input_margin_right + 'px'
 | 
						|
    curr_input.style.height = input_start_height + 'px'
 | 
						|
    document.body.appendChild(curr_input)
 | 
						|
    curr_input.focus()
 | 
						|
    
 | 
						|
    continue_ok = true
 | 
						|
    
 | 
						|
    window.onresize = function() {
 | 
						|
    curr_input.style.width = getw() - input_start_width - input_margin_left - input_margin_right + 'px'
 | 
						|
    setTimeout("curr_input.style.height = curr_input.scrollHeight + 'px'", 100)
 | 
						|
    }
 | 
						|
    
 | 
						|
    document.onkeydown = function(event) {
 | 
						|
      if (!continue_ok) return
 | 
						|
      var code = getcode(event)
 | 
						|
      if (code == 13) {
 | 
						|
        var input_value, caltxt, len, oresult, result, result_elem, nl_elem, replace_elem
 | 
						|
        input_value = curr_input.value
 | 
						|
        caltxt = process_all(input_value)
 | 
						|
        
 | 
						|
        if (caltxt != '') {
 | 
						|
          try {
 | 
						|
            oresult = eval(caltxt)
 | 
						|
            //parent.document.title = caltxt
 | 
						|
            if (typeof(oresult) == 'number') result = (oresult + '') //.replace(/\./g, ',')
 | 
						|
            else result = oresult
 | 
						|
            
 | 
						|
            if (oresult == 'NaN') result = 'Error: Not a number'
 | 
						|
            else if (oresult == 'Infinity') result = 'Error: Infinity'
 | 
						|
            else ans = oresult
 | 
						|
          }
 | 
						|
          catch(e) {
 | 
						|
            result = 'Error'
 | 
						|
          }
 | 
						|
          if (result.substr(0, 5) == 'Error') result += '<br />Type "help" for help.'
 | 
						|
        }
 | 
						|
        else {
 | 
						|
          result = ''
 | 
						|
        }
 | 
						|
        
 | 
						|
        
 | 
						|
        nl_elem = document.createElement('br')
 | 
						|
        document.body.appendChild(nl_elem)
 | 
						|
        
 | 
						|
        if (result != '' && result != 'undefined') {
 | 
						|
          result_elem = document.createElement('div')
 | 
						|
          result_elem.className = 'result'
 | 
						|
          result_elem.innerHTML = '>>>' + result
 | 
						|
          document.body.appendChild(result_elem)
 | 
						|
        }
 | 
						|
        
 | 
						|
        replace_elem = document.createElement('div')
 | 
						|
        replace_elem.innerHTML = '>' + input_value
 | 
						|
        document.body.insertBefore(replace_elem, curr_input)
 | 
						|
        document.body.removeChild(curr_input_start)
 | 
						|
        document.body.removeChild(curr_input)
 | 
						|
        
 | 
						|
        curr_input_start = document.createElement('div')
 | 
						|
        curr_input_start.innerHTML = '>'
 | 
						|
        document.body.appendChild(curr_input_start)
 | 
						|
        
 | 
						|
        curr_input = document.createElement('textarea')
 | 
						|
        curr_input.onkeydown = function() {
 | 
						|
          this.style.height = this.scrollHeight + 'px'
 | 
						|
        }
 | 
						|
        curr_input.onkeyup = function() {
 | 
						|
          this.style.height = this.scrollHeight + 'px'
 | 
						|
        }
 | 
						|
        curr_input.style.marginTop = input_margin_top + 'px'
 | 
						|
        curr_input.style.marginRight = input_margin_right + 'px'
 | 
						|
        curr_input.style.marginBottom = input_margin_bottom + 'px'
 | 
						|
        curr_input.style.marginLeft = input_margin_left + 'px'
 | 
						|
        curr_input.style.width = getw() - input_start_width - input_margin_left - input_margin_right + 'px'
 | 
						|
        curr_input.style.height = input_start_height + 'px'
 | 
						|
        
 | 
						|
        window.scrollBy(0, 100000)
 | 
						|
      }
 | 
						|
      continue_ok = false
 | 
						|
    }
 | 
						|
    
 | 
						|
    document.onkeyup = function(event) {
 | 
						|
      var code = getcode(event)
 | 
						|
      if (code == 13) {
 | 
						|
        document.body.appendChild(curr_input)
 | 
						|
        curr_input.focus()
 | 
						|
        curr_input.value = ''
 | 
						|
      }
 | 
						|
      continue_ok = true
 | 
						|
    }
 | 
						|
 | 
						|
    document.ondblclick = function() {
 | 
						|
      curr_input.focus()
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  function getcode(event) {
 | 
						|
    var e, code
 | 
						|
    if (window.event) e = window.event
 | 
						|
    else e = event
 | 
						|
    
 | 
						|
    if (e.which) code = e.which
 | 
						|
    else if (e.charCode) code = e.charCode
 | 
						|
    else if (e.keyCode) code = e.keyCode
 | 
						|
    else code = 0
 | 
						|
    
 | 
						|
    return code
 | 
						|
  }
 | 
						|
 | 
						|
  function getw() {
 | 
						|
    var w
 | 
						|
    if (self.innerHeight)
 | 
						|
      w = self.innerWidth
 | 
						|
    else if (document.documentElement && document.documentElement.clientHeight)
 | 
						|
      w = document.documentElement.clientWidth
 | 
						|
    else if (document.body)
 | 
						|
      w = document.body.clientWidth
 | 
						|
    return w
 | 
						|
  }
 | 
						|
 | 
						|
  function process_all(txt) {
 | 
						|
    var newtxt, txtspl, txtsta, replaces, len, i
 | 
						|
    newtxt = txt
 | 
						|
    
 | 
						|
    if (newtxt.indexOf('=') != -1) {
 | 
						|
      txtspl = newtxt.split('=')
 | 
						|
      newtxt = txtspl[1]
 | 
						|
      txtsta = txtspl[0] + '='
 | 
						|
    }
 | 
						|
    else
 | 
						|
      txtsta = ''
 | 
						|
    
 | 
						|
    replaces = [
 | 
						|
      [/\ /g, ''],
 | 
						|
      //[/\,/g, '.'], // Uncomment to allow "," as "." (used in some countries)
 | 
						|
      [/\'/g, ','],
 | 
						|
      [/\_/g, ','],
 | 
						|
      [/\*\*/g, '^'],
 | 
						|
      [/\&pi/gi, 'Math.PI'],
 | 
						|
      [/\π/gi, 'Math.PI'],
 | 
						|
      [/\&e/gi, 'Math.E'],
 | 
						|
      [/log\(/gi, 'log('],
 | 
						|
      [/ln\(/gi, 'ln('],
 | 
						|
      [/sqrt\(/gi, 'sqrt('],
 | 
						|
      [/r\(/gi, 'sqrt('],
 | 
						|
      [/sin\(/gi, 'sin('],
 | 
						|
      [/sin\^\(-1\)\(/gi, 'asin('],
 | 
						|
      [/sin\^-1\(/gi, 'asin('],
 | 
						|
      [/cos\(/gi, 'cos('],
 | 
						|
      [/cos\^\(-1\)\(/gi, 'acos('],
 | 
						|
      [/cos\^-1\(/gi, 'acos('],
 | 
						|
      [/tan\(/gi, 'tan('],
 | 
						|
      [/tan\^\(-1\)\(/gi, 'atan('],
 | 
						|
      [/tan\^-1\(/gi, 'atan(']
 | 
						|
    ]
 | 
						|
 | 
						|
    len = replaces.length
 | 
						|
    for (i = 0; i < len; i++) {
 | 
						|
      newtxt = newtxt.replace(replaces[i][0], replaces[i][1])
 | 
						|
    }
 | 
						|
    
 | 
						|
    if (newtxt == 'help')
 | 
						|
      return "'This is a simple calculator. It is able to put a number in the power of a number and supports functions like sin(), asin(), cos(), acos(), tan(), atan(), log() og ln(). To take the power of a number, write \"x^y\" or \"x**y\". To take the squareroot of a number, write \"r(x)\". To take another root of a number, write \"r(x,y)\". Type \"&pi\" for pi and \"&e\" for e. Trigonometric functions use degrees, not radians. The log() function uses 10 as its base, while the ln() function uses e. To use a previous result, type \"ans\".'"
 | 
						|
    else if (newtxt != '')
 | 
						|
      return txtsta + process_part(newtxt)
 | 
						|
    else
 | 
						|
      return txtsta + newtxt
 | 
						|
  }
 | 
						|
 | 
						|
  function process_part(txt) {
 | 
						|
    var number_parts, operator_parts, bracket_count, len, i, curr, indexOfBracket, special_characters, newtxt, last, add_operator
 | 
						|
    number_parts = []
 | 
						|
    number_parts[0] = ''
 | 
						|
    operator_parts = []
 | 
						|
    
 | 
						|
    bracket_count = 0
 | 
						|
    
 | 
						|
    len = txt.length
 | 
						|
    for (i = 0; i < len; i++) {
 | 
						|
      curr = txt.substr(i, 1)
 | 
						|
      
 | 
						|
      if (curr == '(') bracket_count++
 | 
						|
      else if (curr == ')') bracket_count--
 | 
						|
      
 | 
						|
      if ((curr == '+' || curr == '-' || curr == '*' || curr == '/' || curr == '^') && bracket_count == 0) {
 | 
						|
        number_parts[number_parts.length] = ''
 | 
						|
        operator_parts[operator_parts.length] = txt.substr(i, 1)
 | 
						|
      }
 | 
						|
      else {
 | 
						|
        number_parts[number_parts.length - 1] += txt.substr(i, 1)
 | 
						|
      }
 | 
						|
    }
 | 
						|
    
 | 
						|
    len = number_parts.length
 | 
						|
    if (number_parts[0] == '') number_parts[0] = '0'
 | 
						|
    if (number_parts[len - 1] == '') number_parts[len - 1] = '0'
 | 
						|
    for (i = 0; i < bracket_count; i++) {
 | 
						|
      number_parts[len - 1] += ')'
 | 
						|
    }
 | 
						|
    for (i = 0; i < len; i++) {
 | 
						|
      if (number_parts[i] != '') {
 | 
						|
        indexOfBracket = number_parts[i].indexOf('(')
 | 
						|
        if (indexOfBracket != -1) number_parts[i] = number_parts[i].substr(0, indexOfBracket) +  '(' + process_part(number_parts[i].substr(indexOfBracket + 1, number_parts[i].length - indexOfBracket - 2)) + ')'
 | 
						|
      }
 | 
						|
    }
 | 
						|
    
 | 
						|
    special_characters = '^'
 | 
						|
    newtxt = ''
 | 
						|
    
 | 
						|
    for (i = 0; i < len; i++) {
 | 
						|
      last = (i == len - 1) ? true : false
 | 
						|
      add_operator = true
 | 
						|
      
 | 
						|
      if (!last && special_characters.indexOf(operator_parts[i]) != -1) {
 | 
						|
        add_operator = false
 | 
						|
        
 | 
						|
        if (operator_parts[i] == '^')
 | 
						|
          newtxt += 'pow(' + number_parts[i] + ',' + number_parts[i + 1] + ')'
 | 
						|
      }
 | 
						|
      else if (special_characters.indexOf(operator_parts[i - 1]) == -1) {
 | 
						|
        newtxt += number_parts[i]
 | 
						|
      }
 | 
						|
      
 | 
						|
      if (!last && add_operator) newtxt += operator_parts[i]
 | 
						|
    }
 | 
						|
    
 | 
						|
    return newtxt
 | 
						|
  }
 | 
						|
 | 
						|
 | 
						|
  function sin(num) {
 | 
						|
    return Math.sin(num * Math.PI / 180)
 | 
						|
  }
 | 
						|
 | 
						|
  function cos(num) {
 | 
						|
    return Math.cos(num * Math.PI / 180)
 | 
						|
  }
 | 
						|
 | 
						|
  function tan(num) {
 | 
						|
    return Math.tan(num * Math.PI / 180)
 | 
						|
  }
 | 
						|
 | 
						|
 | 
						|
  function asin(num) {
 | 
						|
    return (Math.asin(num) / Math.PI) * 180
 | 
						|
  }
 | 
						|
 | 
						|
  function acos(num) {
 | 
						|
    return (Math.acos(num) / Math.PI) * 180
 | 
						|
  }
 | 
						|
 | 
						|
  function atan(num) {
 | 
						|
    return (Math.atan(num) / Math.PI) * 180
 | 
						|
  }
 | 
						|
 | 
						|
 | 
						|
  function sqrt(num1, num2) {
 | 
						|
    if (num2 == undefined)
 | 
						|
      return Math.sqrt(num1)
 | 
						|
    else return pow(num1, 1 / num2)
 | 
						|
  }
 | 
						|
 | 
						|
  function pow(num1, num2) {
 | 
						|
    return Math.pow(num1, num2)
 | 
						|
  }
 | 
						|
  
 | 
						|
 | 
						|
  function log(num) {
 | 
						|
    return Math.log(num) / Math.log(10)
 | 
						|
  }
 | 
						|
 | 
						|
  function ln(num) {
 | 
						|
    return Math.log(num)
 | 
						|
  }
 | 
						|
  
 | 
						|
  
 | 
						|
  function max(num1, num2) {
 | 
						|
    return Math.max(num1, num2)
 | 
						|
  }
 | 
						|
  
 | 
						|
  function min(num1, num2) {
 | 
						|
    return Math.min(num1, num2)
 | 
						|
  }
 | 
						|
  
 | 
						|
  function round(num) {
 | 
						|
    return Math.round(num)
 | 
						|
  }
 | 
						|
  
 | 
						|
  function floor(num) {
 | 
						|
    return Math.floor(num)
 | 
						|
  }
 | 
						|
  
 | 
						|
  function ceil(num) {
 | 
						|
    return Math.ceil(num)
 | 
						|
  }
 | 
						|
  
 | 
						|
  function rand() {
 | 
						|
    return Math.random()
 | 
						|
  }
 | 
						|
  
 | 
						|
  function randint(num1, num2) {
 | 
						|
    return Math.floor(Math.random() * (num2 - num1 + 1)) + num1
 | 
						|
  }
 | 
						|
  </script>
 | 
						|
</head>
 | 
						|
<body></body>
 | 
						|
</html> |