Стильный Инженерный Калькулятор для сайта вебмастера



Стильный Инженерный Калькулятор

Стильность этому калькулятору придает то, что он выглядит, как обычный инженерный микрокалькулятор, который, наверняка, многие держали в своих руках. По этой ссылке Вы можете посмотреть, как выглядят и работает этот Стильный Инженерный Калькулятор: http://enigma.nanoquant.ru/demo-script/calc/demo-calc4.html.

Если Вы хотите установить такой стильный инженерный калькулятор себе на свой сайт, то здесь находится инструкция по установке и коды, которые нужно скопировать на свой сайт.


Этот код нужно вставить вставьте между тегами head на той Вашей веб-странице, где будет находится стильный инженерный калькулятор.


<script language=javascript>
//<!--

var NDIGITS = 16;
var STACKSIZE = 12;

var value = 0; // current value in display
var memory = GetCookie("CalcMemory"); // current value in memory
if (!memory) memory = 0;
var level = 0; // no. of items on stack
var entered = true; // has value on display been 'entered'?
var decimal = 0; // multiplier when entering after decimal point
var fixed = 0; // force trailing zero display when entering decimals
var exponent = false; // currently entering exponent?
var inverse = false; // has the INV key been pressed?

if (location.search)
{
// pass in value through command line
value = location.search.substring(1,location.search.length);
}

function stackItem()
{
this.value = 0;
this.op = "";
}

function array(length)
{
this[0] = 0;
for (i=0; i {
this[i] = 0;
this[i] = new stackItem();
}
this.length = length;
}

stack = new array(STACKSIZE);

function push(value,op,prec)
{
if (level==STACKSIZE)
return false;
for (i=level;i>0; --i)
{
stack[i].value = stack[i-1].value;
stack[i].op = stack[i-1].op;
stack[i].prec = stack[i-1].prec;
}
stack[0].value = value;
stack[0].op = op;
stack[0].prec = prec;
++level;
return true;
}

function pop()
{
if (level==0)
return false;
for (i=0;i {
stack[i].value = stack[i+1].value;
stack[i].op = stack[i+1].op;
stack[i].prec = stack[i+1].prec;
}
--level;
return true;
}

function format(value)
{
var valStr = "" + value;
if (valStr.indexOf("N")>=0 || (value == 2*value && value == 1+value))
return "Error ";
var i = valStr.indexOf("e")
if (i>=0)
{
var expStr = valStr.substring(i+1,valStr.length);
if (i>11) i=11; // max 11 digits
valStr = valStr.substring(0,i);
if (valStr.indexOf(".")<0) valStr += ".";
valStr += " " + expStr;
}
else
{
var valNeg = false;
if (value < 0)
{ value = -value; valNeg = true; }
var valInt = Math.floor(value);
var valFrac = value - valInt;
var prec = NDIGITS - (""+valInt).length - 1; // how many digits available after period
if (! entered && fixed>0)
prec = fixed;
var mult = " 1000000000000000000".substring(1,prec+2);
var frac = Math.floor(valFrac * mult + 0.5);
valInt = Math.floor(Math.floor(value * mult + .5) / mult);
if (valNeg)
valStr = "-" + valInt;
else
valStr = "" + valInt;
var fracStr = "00000000000000"+frac;
fracStr = fracStr.substring(fracStr.length-prec, fracStr.length);
i = fracStr.length-1;
if (entered || fixed==0)
{
// remove trailing zeros unless fixed during entry.
while (i>=0 && fracStr.charAt(i)=="0")
--i;
fracStr = fracStr.substring(0,i+1);
}
if (i>=0) valStr += "." + fracStr;
// document.result.debugField.value = "prec "+prec+", mult "+mult+", frac "+frac;
}
return valStr;
}

function refresh()
{
var display = format(value);
if (exponent)
{
if (expval<0)
display += " " + expval;
else
display += " +" + expval;
}
if (display.indexOf(".")<0 && display != "Error ")
{
if (entered || decimal>0)
display += '.';
else
display += ' ';
}
display = " " + display;
display = display.substring(display.length-NDIGITS-1,display.length);
document.result.result.value = display;
inverse = false;
}

function clearAll()
{
level = 0;
clear();
}

function clear()
{
exponent = false;
value = 0;
enter();
refresh();
}

function evalx()
{
if (level==0)
return false;
op = stack[0].op;
sval = stack[0].value;
// alert("eval "+sval+op+value);
if (op == "+")
value = sval + value;
else if (op == '-')
value = sval - value;
else if (op == '*')
value = sval * value;
else if (op == '/')
value = sval / value;
else if (op == 'pow')
value = Math.pow(sval,value);
pop();
if (op=='(')
return false;
return true;
}

function openp()
{
enter();
if (!push(0,'(',0))
{
value = "NAN";
}
refresh();
}

function closep()
{
enter();
while (evalx())
;
refresh();
}

function operator(op)
{
enter();
if (op=='+' || op=='-')
prec = 1;
else if (op=='*' || op=='/')
prec = 2;
else if (op=="pow")
prec = 3;
if (level>0 && prec <= stack[0].prec)
evalx();
if (!push(value,op,prec))
{
value = "NAN";
}
refresh();
}

function enter()
{
if (exponent)
value = value * Math.exp(expval * Math.LN10);
entered = true;
exponent = false;
decimal = 0;
fixed = 0;
}

function equals()
{
enter()
while (level>0)
evalx();
refresh();
}

function digit(n)
{
if (entered)
{
value = 0;
digits = 0;
entered = false;
}
if (n==0 && digits==0)
{
refresh();
return;
}
if (exponent)
{
if (expval<0)
n = -n;
if (digits < 3)
{
expval = expval * 10 + n;
++digits;
refresh();
}
return;
}
if (value<0)
n = -n;
if (digits < NDIGITS-1)
{
++digits;
if (decimal>0)
{
decimal = decimal * 10;
value = value + (n/decimal);
++fixed;
}
else
value = value * 10 + n;
}
refresh();
}

function sign()
{
if (exponent)
expval = -expval;
else
value = -value;
refresh();
}

function period()
{
if (entered)
{
value = 0;
digits = 1;
}
entered = false;
if (decimal == 0)
{
decimal = 1;
}
refresh();
}

function exp()
{
if (entered || exponent)
return;
exponent = true;
expval = 0;
digits = 0;
decimal = 0;
refresh();
}

function inv()
{
inverse = !inverse;
}

function func(f)
{
enter();
if (f=="1/x")
value = 1/value;
else if (f=="swap")
{
var tmp = value;
value = stack[0].value;
stack[0].value = tmp;
}
else if (f=='n!')
{
if (value<0 || value>200 || value != Math.round(value))
value = "NAN";
else
{
var n = 1;
var i;
for (i=1;i<=value;++i)
n *= i;
value = n;
}
}
else if (f=="MR")
value = memory;
else if (f=="M+")
{
memory += value;
SetCookie("CalcMemory", memory);
}
else if (f=="Min")
{
memory = value;
SetCookie("CalcMemory", memory);
}
else if (inverse)
{
if (f=="sin")
value = Math.asin(value)*180/Math.PI;
else if (f=="cos")
value = Math.acos(value)*180/Math.PI;
else if (f=="tan")
value = Math.atan(value)*180/Math.PI;
else if (f=="log")
value = Math.exp(value * Math.LN10);
else if (f=="log2")
value = Math.exp(value * Math.LN2);
else if (f=="ln")
value = Math.exp(value);
else if (f=="sqrt")
value = value*value;
else if (f=="pi")
value = Math.E;
}
else
{
if (f=="sin")
value = Math.sin(value/180 * Math.PI);
else if (f=="cos")
value = Math.cos(value/180 * Math.PI);
else if (f=="tan")
value = Math.tan(value/180 * Math.PI);
else if (f=="log")
value = Math.log(value)/Math.LN10;
else if (f=="log2")
value = Math.log(value)/Math.LN2;
else if (f=="ln")
value = Math.log(value);
else if (f=="sqrt")
value = Math.sqrt(value);
else if (f=="pi")
value = Math.PI;
}
refresh();
}

function hex()
{
document.bgColor = document.result.result.value;
}

/////////////
//
// Cookie Functions - Second Helping (21-Jan-96)
// Written by: Bill Dortch, hIdaho Design
// The following functions are released to the public domain.
//

function getCookieVal (offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}

// Function to create or update a cookie.
// name - String object object containing the cookie name.
// value - String object containing the cookie value. May contain
// any valid string characters.
// [expires] - Date object containing the expiration data of the cookie. If
// omitted or null, expires the cookie at the end of the current session.
// [path] - String object indicating the path for which the cookie is valid.
// If omitted or null, uses the path of the calling document.
// [domain] - String object indicating the domain for which the cookie is
// valid. If omitted or null, uses the domain of the calling document.
// [secure] - Boolean (true/false) value indicating whether cookie transmission
// requires a secure channel (HTTPS).
//
function SetCookie (name, value) {
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie = name + "=" + escape (value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}

function DeleteCookie (name) {
var exp = new Date();
exp.setTime (exp.getTime() - 1); // This cookie is history
var cval = GetCookie (name);
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}

//
// End of cookie functions
//////////

// -->
</script>


В тег body нужно добавить этот атрибут (выделено красным).

<body onLoad="refresh()">


Следующий код нужно вставить между тегами body на той же веб-странице в то самое место, в котором Вы хотите, чтобы находился стильный инженерный калькулятор.

Разумеется тегам input, table, tr и td можно присвоить любые нужные Вам стили, и, вообще, можно отформатировать этот калькулятор так, как Вы сами считаете нужным.

<table align=center bgcolor=gray border=2>
<tr>
<td align=center>
<FORM name=result>
<INPUT size=18 name=result onFocus="refresh(); this.blur();" style="font-family: MS Sans Serif; text-align:right; color: #00FF00; font-weight: bold; background-color: #000000">
</FORM>
<IMG SRC="scalc.gif" width=159 height=224 usemap="#map" border=0>
<MAP name="map">
<AREA SHAPE=rect HREF="javascript:digit(0)" COORDS="12,191,32,209">
<AREA SHAPE=rect HREF="javascript:period()" COORDS="40,191,60,209">
<AREA SHAPE=rect HREF="javascript:exp()" COORDS="68,191,88,209">
<AREA SHAPE=rect HREF="javascript:sign()" COORDS="96,191,116,209">
<AREA SHAPE=rect HREF="javascript:equals()" COORDS="124,191,144,209">

<AREA SHAPE=rect HREF="javascript:digit(1)" COORDS="12,166,32,184">
<AREA SHAPE=rect HREF="javascript:digit(2)" COORDS="40,166,60,184">
<AREA SHAPE=rect HREF="javascript:digit(3)" COORDS="68,166,88,184">
<AREA SHAPE=rect HREF="javascript:operator('+')" COORDS="96,166,116,184">
<AREA SHAPE=rect HREF="javascript:operator('-')" COORDS="124,166,144,184">

<AREA SHAPE=rect HREF="javascript:digit(4)" COORDS="12,141,32,159">
<AREA SHAPE=rect HREF="javascript:digit(5)" COORDS="40,141,60,159">
<AREA SHAPE=rect HREF="javascript:digit(6)" COORDS="68,141,88,159">
<AREA SHAPE=rect HREF="javascript:operator('*')" COORDS="96,141,116,159">
<AREA SHAPE=rect HREF="javascript:operator('/')" COORDS="124,141,144,159">

<AREA SHAPE=rect HREF="javascript:digit(7)" COORDS="12,116,32,134">
<AREA SHAPE=rect HREF="javascript:digit(8)" COORDS="40,116,60,134">
<AREA SHAPE=rect HREF="javascript:digit(9)" COORDS="68,116,88,134">
<AREA SHAPE=rect HREF="javascript:clear()" COORDS="96,116,116,134">
<AREA SHAPE=rect HREF="javascript:clearAll()" COORDS="124,116,144,134">

<AREA SHAPE=rect HREF="javascript:openp()" COORDS="12,90,32,104">
<AREA SHAPE=rect HREF="javascript:closep()" COORDS="40,90,60,104">
<AREA SHAPE=rect HREF="javascript:func('Min')" COORDS="68,90,88,104">
<AREA SHAPE=rect HREF="javascript:func('MR')" COORDS="96,90,116,104">
<AREA SHAPE=rect HREF="javascript:func('M+')" COORDS="124,90,144,104">

<AREA SHAPE=rect HREF="javascript:operator('pow')" COORDS="12,65,32,79">
<AREA SHAPE=rect HREF="javascript:func('n!')" COORDS="40,65,60,79">
<AREA SHAPE=rect HREF="javascript:func('sqrt')" COORDS="68,65,88,79">
<AREA SHAPE=rect HREF="javascript:func('1/x')" COORDS="96,65,116,79">
<AREA SHAPE=rect HREF="javascript:func('swap')" COORDS="124,65,144,79">

<AREA SHAPE=rect HREF="javascript:inv()" COORDS="12,40,32,54">
<AREA SHAPE=rect HREF="javascript:func('sin')" COORDS="40,40,60,54">
<AREA SHAPE=rect HREF="javascript:func('cos')" COORDS="68,40,88,54">
<AREA SHAPE=rect HREF="javascript:func('tan')" COORDS="96,40,116,54">
<AREA SHAPE=rect HREF="javascript:func('pi')" COORDS="124,40,144,54">

<AREA SHAPE=rect HREF="javascript:func('log')" COORDS="12,15,32,29">
<AREA SHAPE=rect HREF="javascript:func('ln')" COORDS="40,15,60,29">
<AREA SHAPE=rect HREF="javascript:func('log2')" COORDS="68,15,88,29">
<AREA SHAPE=rect HREF="javascript:hex()" COORDS="96,15,116,29">
<AREA SHAPE=rect HREF="javascript:alert('\(C\) Copyright Rolf Howarth 1996')" COORDS="124,15,144,29">
</MAP>
</td>
</tr>
</table>


Внимание! Если эти коды копируются из Вашего браузера в Вашу веб-страницу неправильно, то нужно их сначала скопировать в какой-нибудь самый простой текстовый редактор, например, в Блокнот. А уже потом оттуда их скопировать на свою веб-страницу.

Рисунок для этого калькулятора скачиваем здесь: scalc.zip. Этот архив нужно распаковать в ту же самую папку, где находится веб-страница с калькулятором.

Если Вы хотите увеличить размер калькулятора, то нужно не только увеличить размеры рисунка, но и переделать координаты областей ссылок на этом рисунке. Иначе, кнопки калькулятора будут изображены в одном месте экрана монитора, а области рисунка, работающие как ссылки, будут в других местах. Координаты областей рисунка, которые выполняют роль ссылок, задаются в тегах area в атрибутах coords.

Классификация заработка в Интернете
Заработок в Интернете без своего сайта:
Заработок в Интернете
с вложениями денег:
Инвестиции в Интернете без сайта
Бинарные опционы
Валютная биржа Forex
Заработок на криптовалюте
Биржа спортивных ставок
Аукцион E-Bay
Заработок на хайпах


Заработок в Интернете
без вложений денег:
Заработок в Интернете
для тех у кого нет сайта
Серфинг
Копирайтинг и рерайтинг
Файлообменники
Постинг на форумах
Переводы с иностранного
Опросы и анкеты
ФотоШоп и художники
Репетиторство
Социальные сети
Просмотр видеороликов
Экзотика
Как набрать рефералов
Фриланс


Заработок в Интернете на своем сайте:
Свой домен
Хостинг
Сайтострой
Раскрутка сайта
Раскрутка в соц.сетях
Почтовая рассылка
Прямые ссылки
Самые простые
заработки на сайте
Интернет-магазин
Приложения:
Кошелек WebMoney
Авторские права
Список Аддурилок
HTML-редактор
с учебниками
FTP-клиент FileZilla Client
Простые шаблоны
Бесплатные хостинги
Как создать свой сайт

Разное:
Как распознать лохотрон
Словарь
Юмор
Архив
Блог?...
Скорее КинжЛог!






Наши Услуги:
Вычислительные услуги для трейдеров
Наши Сервисы:
Поиск по сайту
Написать автору сайта пару ласковых слов
Генератор сайтов
Скачать халяву
Визуальный онлайновый конвертор
Мастер Рефералов
Генератор паролей
Генератор цветовых схем
Чистильщик HTML кода
Microsoft Word вер.10
Бесплатные скрипты