﻿var url="";
	function calculate(value,origin) {
alert("value = "+value+"\norigin = "+origin);
        var http_request = false;
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType) {
				// set type accordingly to anticipated content type
				http_request.overrideMimeType('text/xml');
			}
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
        http_request.onreadystatechange = function() { results(http_request); };
        http_request.open('POST', url+'calculate.php', true);
		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		parameter = "&value="+value+"&origin="+origin;
        http_request.send(parameter);
    }

	function results(http_request){
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
				window.xmlDoc = http_request.responseXML;
				var root = xmlDoc.getElementsByTagName('root').item(0);
				var values = root.getElementsByTagName('value');
				var origin = root.getElementsByTagName('origin');
				var result = new Array;
				var broken_info = new Array;
				var temp = new Array;
				for(i=0;i<values.length;i++){
					var broken_info = values.item(i).firstChild.data.split('=');
					var the_property = broken_info[0].replace(/\n/g, "");
					var the_value = broken_info[1].replace(/\n/g, "");
					result[the_property] = the_value;
				}
				temp = origin.item(0).firstChild.data.split('=');
				origin = temp[1].replace(/\n/g, "");
				if((origin == "ipcidr") || (origin == "ipoctet")){
					/* writing the resulting figures into the fields */
					if(!document.getElementById(origin).value){
						document.getElementById(origin).value=0;
					} else {
						document.getElementById('ipdeclow').value = result['ipdeclow'];
						document.getElementById('ipdechigh').value = result['ipdechigh']; 
						document.getElementById('ipdecdiff').value = result['ipdecdiff'];
					}
				} else if((origin == "ipdeclow") || (origin == "ipdechigh") || (origin == "ipdecboth")) {
					document.getElementById('ipoctet').value = result['ipoctet'];
				}
            } else {
                alert('There was a problem with the request.');
            }
        }
	}




// Create a repeat-string-N-times method for all String objects
function str_rep(n) {
	var s = "", t = this.toString()
	while (--n >= 0) s += t
	return s
}
String.prototype.rep = str_rep

function round(num, d){ 
	n = Math.pow(10, !d ? 2 : d);
	n = Math.round(num*n) / n;
	return n
}

function fieldchange(value,field){
	expression = /,/g;
	value = value.replace(expression,".");
	expression = /[^0-9-.]/g;
	value = value.replace(expression,"");
	if(value == ""){value = 0;}
	var tmp;

	document.getElementById(field).value = value;
// alert(field);
	if(field=="ps"){
		document.getElementById('kw').value = round(value * 0.73549875,2);
		document.getElementById('hp').value = round(value * (0.73549875 / 0.74569987158227022),2);
	} else
	if(field=="hp"){
		document.getElementById('kw').value = round(value * 0.74569987158227022,2);
		document.getElementById('ps').value = round(value * (0.74569987158227022 / 0.73549875),2);
	} else
	if(field=="kw"){
		document.getElementById('ps').value = round(value / 0.73549875,2);
		document.getElementById('hp').value = round(value / 0.74569987158227022,2);
	} else
	if(field=="lkm"){
		result = round((100 / value) / 1.60934 * 3.785,2);
		if(result == "Infinity"){result = 0;}
		document.getElementById('mpg').value = result;
	} else
	if(field=="mpg"){
		result = round((1 / value) / 1.60934 * 3.785 * 100,5);
		if(result == "Infinity"){result = 0;}
		document.getElementById('lkm').value = result;
	} else
	if(field=="inch"){
		document.getElementById('cm').value = round(value * 2.54,4);
		document.getElementById('m').value = round(value * 0.0254,4);
		document.getElementById('ft').value = round(value * 0.08333333,4);
	} else
	if(field=="cm"){
		document.getElementById('inch').value = round(value / 2.54,4);
		document.getElementById('m').value = round(value / 100,4);
		document.getElementById('ft').value = round(value / 30.48,4);
	} else
	if(field=="ft"){
		document.getElementById('m').value = round(value * 0.3048,4);
		document.getElementById('inch').value = round(value * 12,4);
		document.getElementById('cm').value = round(value * 30.48,4);
	} else
	if(field=="m"){
		document.getElementById('ft').value = round(value * 3.28084,4);
		document.getElementById('cm').value = round(value * 100,4);
		document.getElementById('inch').value = round(value * 39.37008,4);
	} else 
	if(field=="mile"){
		document.getElementById('km').value = round(value*1.60934,4);
	} else 
	if(field=="km"){
		document.getElementById('mile').value = round(value*0.621371,4);
	} else 
	if(field=="litre"){
		document.getElementById('galus').value = round(value*0.264172051242,4);
		document.getElementById('galimp').value = round(value*0.219969248299,4);
		document.getElementById('quart').value = round(value*1.05668820497,4);
		document.getElementById('pintus').value = round(value*2.11337640993,4);
		document.getElementById('pintimp').value = round(value*1.75975398639,4);
		document.getElementById('flozus').value = round(value*33.8140225589,4);
	} else 
	if(field=="galus"){
		document.getElementById('litre').value = round(value*3.785411799993673,4);
		document.getElementById('galimp').value = round(value*0.8326741881476207,4);
		document.getElementById('quart').value = round(value*4,4);
		document.getElementById('pintus').value = round(value*8,4);
		document.getElementById('pintimp').value = round(value*6.6613935051698725,4);
		document.getElementById('flozus').value = round(value*128,4);
	} else
	if(field=="galimp"){
		document.getElementById('litre').value = round(value*4.546090000001814,4);
		document.getElementById('galus').value = round(value*1.2009499204294531,4);
		document.getElementById('quart').value = round(value*4.803799681717813,4);
		document.getElementById('pintus').value = round(value*9.60759936343,4);
		document.getElementById('pintimp').value = round(value*8,4);
		document.getElementById('flozus').value = round(value*153.72158981488136,4);
	} else
	if(field=="pintus"){
		document.getElementById('litre').value = round(value*0.473176475,4);
		document.getElementById('galus').value = round(value*0.125,4);
		document.getElementById('galimp').value = round(value*0.104084273519,4);
		document.getElementById('quart').value = round(value*0.5,4);
		document.getElementById('pintimp').value = round(value*0.832674188148,4);
		document.getElementById('flozus').value = round(value*16,4);
	} else
	if(field=="pintimp"){
		document.getElementById('litre').value = round(value*0.56826125,4);
		document.getElementById('galus').value = round(value*0.150118740054,4);
		document.getElementById('galimp').value = round(value*0.125,4);
		document.getElementById('quart').value = round(value*0.6004749602132842,4);
		document.getElementById('pintus').value = round(value*1.20094992043,4);
		document.getElementById('flozus').value = round(value*19.2151987269,4);
	} else
	if(field=="quart"){
		document.getElementById('litre').value = round(value*0.94635295,4);
		document.getElementById('galus').value = round(value*0.25,4);
		document.getElementById('galimp').value = round(value*0.208168547037,4);
		document.getElementById('pintus').value = round(value*2,4);
		document.getElementById('pintimp').value = round(value*1.6653483763,4);
		document.getElementById('flozus').value = round(value*32,4);
	} else
	if(field=="flozus"){
		document.getElementById('litre').value = round(value*0.0295735296875,4);
		document.getElementById('galus').value = round(value*0.0078125,4);
		document.getElementById('galimp').value = round(value*0.00650526709491,4);
		document.getElementById('pintus').value = round(value*0.0625,4);
		document.getElementById('pintimp').value = round(value*0.0520421367593,4);
		document.getElementById('quart').value = round(value*0.03125,4);
	} else
	if(field=="sqft"){
		document.getElementById('sqm').value = round(value/10.763910416709722,3);
		document.getElementById('acre').value = round(value/43560,3);
		document.getElementById('ar').value = round(value/1076.3910416709722,3);
		document.getElementById('ha').value = round(value/107639.10416709722,3);
	} else
	if(field=="sqm"){
		document.getElementById('sqft').value = round(value*10.763910416709722,3);
		document.getElementById('acre').value = round(value/4046.8564224,3);
		document.getElementById('ar').value = round(value/100,3);
		document.getElementById('ha').value = round(value/10000,3);
	} else
	if(field=="acre"){
		document.getElementById('sqft').value = round(value*43560,3);
		document.getElementById('sqm').value = round(value*4046.8564224,3);
		document.getElementById('ar').value = round(value*40.468564224,3);
		document.getElementById('ha').value = round(value*0.40468564224,3);
	} else
	if(field=="ar"){
		document.getElementById('sqft').value = round(value*1076.3910416709722,3);
		document.getElementById('sqm').value = round(value*100,3);
		document.getElementById('acre').value = round(value*247.10538,3);
		document.getElementById('ha').value = round(value/100,3);
	} else
	if(field=="ha"){
		document.getElementById('sqft').value = round(value*10763910416709722,3);
		document.getElementById('sqm').value = round(value*10000,3);
		document.getElementById('ar').value = round(value*100,3);
		document.getElementById('acre').value = round(value*2.4710538,3);
	} else
	if(field=="ftemp"){
		document.getElementById('ctemp').value = round((value-32)/9*5,3);
	} else
	if(field=="ctemp"){
		document.getElementById('ftemp').value = round((value*9/5)+32,3);
	} else
	if(field=="chf"){
		document.getElementById('euro').value = round(value* 0.61592,2);
		document.getElementById('usd').value = round(value*0.92439,2);
		document.getElementById('bht').value = round(value*31.36809,2);
	} else
	if(field=="euro"){
		document.getElementById('chf').value = round(value*1.62459,2);
		document.getElementById('usd').value = round(value*1.50105,2);
		document.getElementById('bht').value = round(value*50.93663,2);
	} else
	if(field=="usd"){
		document.getElementById('chf').value = round(value* 1.08280,2);
		document.getElementById('euro').value = round(value*0.66664,2);
		document.getElementById('bht').value = round(value*33.934,2);
	} else
	if(field=="bht"){
		document.getElementById('chf').value = round(value* 0.0323862,2);
		document.getElementById('euro').value = round(value*0.0199391,2);
		document.getElementById('usd').value = round(value*0.0299097,2);
	} else

	if(field=="kg"){
		document.getElementById('lbs').value = round(value* 2.2046,2);
		document.getElementById('tonus').value = round(value /907.18474,2);
		document.getElementById('tonuk').value = round(value /1016.0469088,2);
		document.getElementById('tonmetric').value = round(value / 1000,2);
	} else
	if(field=="lbs"){
		document.getElementById('kg').value = round(value /1000 * 453.59237,2);
		document.getElementById('tonus').value = round(value /2000,2);
		document.getElementById('tonuk').value = round(value /2240,2);
		document.getElementById('tonmetric').value = round(value * 453.59237 /1000000,2);
	} else
	if(field=="tonuk"){
		document.getElementById('tonus').value = round(value /2240 *2000,2);
		document.getElementById('tonmetric').value = round(value *1016.0469088 / 1000,2);
		document.getElementById('kg').value = round(value *1016.0469088,2);
		document.getElementById('lbs').value = round(value * 2240,2);
	} else
	if(field=="tonus"){
		document.getElementById('tonuk').value = round(value /2000 * 2240,2);
		document.getElementById('tonmetric').value = round(value *907.18474 / 1000,2);
		document.getElementById('kg').value = round(value *907.18474 ,2);
		document.getElementById('lbs').value = round(value * 2000,2);
	} else
	if(field=="tonmetric"){
		document.getElementById('tonus').value = round(value /907.18474 * 1000,2);
		document.getElementById('tonuk').value = round(value /1016.0469088 * 1000,2);
		document.getElementById('kg').value = round(value *1000,2);
		document.getElementById('lbs').value = round(value *1000000 / 453.59237,2);
	} else

	if(field=="ddeg"){
		document.getElementById('ndeg').value = parseInt(value);
		nmin = (value - parseInt(value))*60;
		document.getElementById('nmin').value = parseInt(nmin);
		nsec = nmin - parseInt(nmin);
		document.getElementById('nsec').value = round(nsec*60,1);
	} else
	if((field=="ndeg") || (field=="nmin") || (field=="nsec")){
		document.getElementById('ddeg').value = round(parseFloat(document.getElementById('ndeg').value) + parseFloat(document.getElementById('nmin').value/60) + parseFloat(document.getElementById('nsec').value/3600),6);
	} else
	if((field=="dimw") || (field=="diml") || (field=="dimh")){
		dimw = document.getElementById('dimw').value
		diml = document.getElementById('diml').value
		dimh = document.getElementById('dimh').value
		if(dimh == 0){
			if((dimw > 0) && (diml > 0)){
				document.getElementById('dim2d').value = dimw * diml;
				document.getElementById('dim3d').value = 0;
			}
		} else {
			if((dimw > 0) && (diml > 0)){
				document.getElementById('dim3d').value = dimw * diml * dimh;
				document.getElementById('dim2d').value = dimw * diml;
			}
		}
	} 
}







function fdoubleclick(value){
	value = "";
	return value;
}
function fblur(value){
	if(value == ""){
		value = "0";
	}
	return value;
}
function fclick(value){
	if(value == "0"){
		value = "";
	}
	return value;
}

function showselected(){
	selectedIndex = document.convert.menu.selectedIndex;
	if(selectedIndex){
		getcategory(document.convert.menu.selectedIndex);
	}
}

function getcategory(category){
	category_Array = new Array();
	allDivs_Array = new Array();
	allCategories_Array = new Array();

	category_Array[1] = "car-related";
	category_Array[2] = "length";
	category_Array[3] = "liquids";
	category_Array[4] = "area";
	category_Array[5] = "temperature";
	category_Array[6] = "degrees";
	category_Array[7] = "currency";
	category_Array[8] = "dimensions";
	category_Array[9] = "weight";
	category_Array[10] = "ip-addresses";
	
	for(i=1;i < category_Array.length ;i++){
		document.getElementById(category_Array[i]).style.display = "none";
	}
	document.getElementById(category_Array[category]).style.display = "block";
}

function checkipdecpair(value){
	var flags = 0x0;
	var flag_1 = 0x1;
	var flag_2 = 0x2;
	if(document.getElementById('ipdeclow').value > 0){
		flags = flags | flag_1;
	}
	if(document.getElementById('ipdechigh').value > 0){
		flags = flags | flag_2;
	}

	if(flags == 1){
		calculate(document.getElementById('ipdeclow').value,'ipdeclow')
	}
	if(flags == 2){
		calculate(document.getElementById('ipdechigh').value,'ipdechigh')
	}
	if(flags == 3){
		value = document.getElementById('ipdeclow').value + "-" + document.getElementById('ipdechigh').value;
		calculate(value,'ipdecboth');
	}
}
