//convert params string to hash table
function QueryStringToHash(query) {
    var query_string = {};
    var vars = query.split("&");
    for (var i=0;i<vars.length;i++) {
	var pair = vars[i].split('=',2);

	pair[0] = decodeURIComponent(pair[0]);
	if (!pair[1]) continue;
	pair[1] = decodeURIComponent(pair[1].replace(/\+/g, ' '));
	//
	// If first entry with this name
	if (typeof query_string[pair[0]] === "undefined") {
	    query_string[pair[0]] = pair[1];
	// If second entry with this name
	} else if (typeof query_string[pair[0]] === "string") {
	    var arr = [ query_string[pair[0]], pair[1] ];
	    query_string[pair[0]] = arr;
	// If third or later entry with this name
	} else {
	    query_string[pair[0]].push(pair[1]);
	}
    }
    return query_string;
};
function to_nonlinear(num) {
    if (num == 0) {
	return 0
	}
    if (num == 1) {
	return 500
	}
    else if (num < 16) {
	return  1000*(parseInt(num)-1)
    }
    else if ((num >= 16) && (num < 21)) {
	return  15000+ 2000*(parseInt(num)-16)
    }
    else  {
	return  25000+ 5000*(parseInt(num)-21)
    }
}

function to_linear(num){
    if (num == 0) return 0
    else if (num==500) return 1
    else if (num>500 && num<15000) return num/1000 + 1
    else if (num>=15000 && num<25000) return (num-15000)/2000 + 16
    else return (num - 25000)/5000 + 21
}
function to_thousands_format(num){
    var array = (num + "");
    var i;
    var numstring="";
    for (i=array.length-1;i>=0;i--){
	numstring = array.substr(i,1) + numstring;
	if((array.length  - i) % 3 == 0 && i!=0) numstring = "." + numstring;
    }
    return numstring;
}


