	function array_search (array,val) {
		for (var i = 0; i < array.length; i++) {
			if (array[i] == val) {
				return i;
			}
		}
		return false;
	};

	 function conv(from_str, to_str){
	 	from=array_search( indexes, from_str );
	 	to=array_search( indexes, to_str );

	 	value=document.forms['form1'].elements[0].value;
	 	
	 	value=value.replaceAll(" ","");
	 	
	 	value=value*valutes[from]/valutes[to];

	 	value=value.toFixed(2);
	 	document.forms['form1'].elements[0].value=number_format(value,2,'.',' ');
	 }
	 
global_action="";
old_value=0;
first_digit=false;
global_value=0;


String.prototype.replaceAll = function(search, replace){
  return this.split(search).join(replace);
}


function number_format( number, decimals, dec_point, thousands_sep ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // *     example 1: number_format(1234.5678, 2, '.', '');
    // *     returns 1: 1234.57     
 
    var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
    var d = dec_point == undefined ? "." : dec_point;
    var t = thousands_sep == undefined ? "," : thousands_sep, s = n < 0 ? "-" : "";
    var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
    
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}

function is_numeric( mixed_var ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: David
    // *     example 1: is_numeric(186.31);
    // *     returns 1: true
    // *     example 2: is_numeric('Kevin van Zonneveld');
    // *     returns 2: false
    // *     example 3: is_numeric('+186.31e2');
    // *     returns 3: true
 
    return !isNaN( mixed_var );
}
 function ee(value){
 		if(is_numeric(value)&&is_numeric(old_value)){
 			formula=old_value+global_action+value;
  			old_value=eval(formula);
 		}	
  		return old_value;
 }
 function prepare_out(val){
 	
 	if((val.toString()).length>12) val=val.toExponential(2);
 	
 	return val;
 }
 function memory(action,cell){
 	
 	value=document.forms['form1'].elements[0].value;
 	value=value.replaceAll(" ","");
 	value=value*1;
 	
 	switch(action){
 		case("plus"):
 			m[cell]=m[cell]+value;
 		break;
 		case("cancel"):
 			m[cell]=0;
 		break;
 		case("result"):
 			if((global_action!="")&&(old_value==0)){
	 			old_value=value;
	 		} 		
 			document.forms['form1'].elements[0].value=m[cell];
 		break;
 	}
 	first_digit=true;
 	if(m[cell]!=0)
 		document.getElementById('m'+cell).innerHTML="&nbsp;&nbsp;&nbsp;"+prepare_out(m[cell]);
 	else 	
 		document.getElementById('m'+cell).innerHTML="";
 }
 function calc(action){
 	value=document.forms['form1'].elements[0].value;
 	value=value.replaceAll(" ","");
 	
 	
 	if(value=="") value=0;
 	
 	
 	
 		if((global_action!="")&&(old_value==0)){
	 		old_value=value;
	 	}

 		switch(action){
 			case("equal"):
	 		
	 				if(old_value!=0) value=ee(value);
	 				old_value=0;
 					global_action="";
 					first_digit=true;
	 			
 			break;
 			case("plus"):
	 			
	 				if(old_value!=0) value=ee(value); 			
	 				global_action="+";
	 				first_digit=true;
	 			
 			break;
 			case("divide"):
	 			
	 				if(old_value!=0) value=ee(value); 			
	 				global_action="/";
					first_digit=true;
	 		
 			break;
 			case("multiply"):
	 			
	 				if(old_value!=0) value=ee(value); 			
	 				global_action="*";
 					first_digit=true;
	 		
 				
 			break;
 			case("minus"):
	 			
	 				if(old_value!=0) value=ee(value); 			
	 				global_action="-";
 					first_digit=true;
	 		
 				
 			break;
 			case("percent"):
	 	
	 				if(old_value!=0) value=ee(value/100); 			
	 				global_action="";
	 				old_value=0;
 					first_digit=true;
	 		
 			break;
 		
	 		case("backspace"):
 					value=value.substring(0,value.length-1);
 					if(value.length<1){
	 					value=0;
 					}	
 			break;
 			case("cancel"):
	 			value=0;
 				global_action="";
 				old_value=0;
 			break;
 			case("plusminus"):
	 			value=-value;
 			break;
 			case("revert"):
	 			value=1/value;
 			break;
 			case("sqrt"):
	 	
	 				value=Math.sqrt(value);
 					global_action="";
	 			
 			break;
 			case(","):
	 			value=value+".";
 			break;
		
 			
 			default:
 				
	 			if((value==0)&&(value.length==1)) { value=""; }
 				if(first_digit) {value=""; first_digit=false; }
 				value=value+action;
 				 //alert(value); 
 			break;
 		}
 		
 		if(!is_numeric(value)) value='?';
 		
 		document.forms['form1'].elements[0].value=value;
 }
