/*
* $Id: getrate.js 665 2009-02-26 01:17:40Z jason $
*
* Fetches rate info from the database for display when making a call.
*/
var _rate_cache = [ ];
/**
* Retrieve the rate for a call from src to dst.
* See PHP get_rate().
*/
function request_rate( src, dst ) {
if( _rate_cache[src] && _rate_cache[src][dst] )
{
update_rate( _rate_cache[src][dst] );
return;
}
var xmlrpc = _make_xhr( );
if( xmlrpc ) {
xmlrpc.open('GET', 'query/rate/' + escape(src) + '/' + escape(dst) + '/' );
xmlrpc.onreadystatechange = function () {
request_rate_cb( xmlrpc, src, dst );
};
xmlrpc.send(null);
}
}
/**
* Callback for request_rate.
*/
function request_rate_cb( xmlrpc, src, dst ) {
if( xmlrpc.readyState == 4 && xmlrpc.status == 200 )
{
var rate = eval( "("+xmlrpc.responseText+")" );
if( !_rate_cache[src] )
_rate_cache[src] = [ ];
_rate_cache[src][dst] = rate;
update_rate( rate );
}
}
/**
* Updates the rate display.
*/
function update_rate( rate ) {
var ratefield = document.getElementById('currrate');
ratefield.innerHTML = //rstChild.nodeValue =
(rate.rate_amount == -1) ? 'You may not make calls from this number.'
: (rate.rate_amount == -2) ? 'Destination number is invalid.'
: (rate.rate_amount == '') ? ''
: (rate.rate_amount == 0) ? 'Free!'
: '' + rate.rate_text + '';
if( rate == '' ) {
ratefield.style.display = 'none';
}
else {
ratefield.style.display = 'inline';
}
if( rate.rate_amount > 0 ) {
$('#src_rate_desc').html( '
'+rate.src_desc );
$('#dst_rate_desc').html( '
'+rate.dst_desc );
}
/*if(document.getElementById('shcurtext')) {
display_rate();
}*/
}
// update el's corresponding country code text field
function fillCCbox( selectid ) {
var select = document.getElementById( selectid );
var ccbox = document.getElementById( selectid + 'txt' );
ccbox.value = '+' + select.options[select.selectedIndex].value;
//var split_cnt_code = select.options[select.selectedIndex].value.split('|');
//ccbox.value = '+' + split_cnt_code[1];
}
function cc2cnt( ccEl, cntEl )
{
// strip out non-digits
var cc = ccEl.value.replace( /[^\d]+/, "" );
ccEl.value = "+" + cc; // format display
var found = false;
for( i=0; i