// simple ajax

function ajaxLoad(url, ajax_handler,params) {
	if(window.ActiveXObject) {
		var handler = new ActiveXObject("Microsoft.XMLHTTP");
		handler.onreadystatechange = function() { if(handler.readyState == 4) ajax_handler(handler,params); }
		handler.open('GET',url,true);
		handler.send();
	} else {
		var handler = new XMLHttpRequest();
		handler.onreadystatechange = function() { if(handler.readyState == 4) ajax_handler(handler,params); }
		handler.open('GET',url,true);
		handler.send(null);
	}
}

// sync ajax

function ajaxLoadSync(url,ajax_handler,params) {
	if(window.ActiveXObject) {
		var handler = new ActiveXObject("Microsoft.XMLHTTP");
		handler.open('GET',url,false);
		handler.send();
		ajax_handler(handler,params);
	} else {
		var handler = new XMLHttpRequest();
		handler.open('GET',url,false);
		handler.send(null);
		ajax_handler(handler,params);
	}
}

var tt = new Date();

// number click

function updatePage(number){

    arrL = numbers[number].length;
    numberId = number;
    
    document.getElementById('parent_div').style.display = 'none';
    document.getElementById('loading_div').style.display = 'block';			
    
    if (arrL>0){  
        buildPage(number);        
    } else {                
        ajaxLoad('/loader.php?id='+number+'&t='+tt.getTime(), loaderHandler);         
    }    
}

// loader handler

function loaderHandler(h, params) {
    if(h.status == 200 && h.responseXML && (p = h.responseXML.documentElement) && p.tagName == 'result'){
	
        n = p.firstChild;
        
        if (n.tagName == 'err')
		{	
			document.getElementById('loading_div').style.display = 'none';			
			document.getElementById('error_div').style.display = 'block';
			
		} else {		                    
		    
		    // fullfill array
		    var i=0;
			while (n != null)
			{
			    numbers[numberId][i] = new Array();
				numbers[numberId][i]['id'] = n.getAttribute('id');
				numbers[numberId][i]['operator'] = n.getAttribute('operator');
				numbers[numberId][i]['cost'] = n.getAttribute('cost');
				numbers[numberId][i]['country'] = n.getAttribute('country');
									
				n = n.nextSibling;
				i++;
			} 
			
            document.getElementById('error_div').style.display = 'none';
		    buildPage(numberId);	 
		}
        
	}
}

// build page

function buildPage(number){
    
    // alert('update page: number =' + number + ' ; country = ' + country);
       
    // costs
    
    var tableElem = document.createElement('table');
    tableElem.className = 'table_1';

    // costs head
    var theadElem = document.createElement('thead');
    
    var trhElem = document.createElement("tr");
        
    var thElem1 = document.createElement("th");
    thElem1.className = "t_left";
    thElem1.innerHTML =  '<em><span class="table_1_t_l"></span>Оператор</em>';
    
    var thElem2 = document.createElement("th");
    thElem2.className = "colorOrange";
    thElem2.innerHTML =  '<em><span class="table_1_t_r"></span>Цена 1 смс для абонентa</em>';
                   
    trhElem.appendChild(thElem1);
    trhElem.appendChild(thElem2);
    theadElem.appendChild(trhElem);
    tableElem.appendChild(theadElem);
    
    // costs inner
    
    var tbodyElem = document.createElement('tbody');
    
    for (k in numbers[numberId]){
        
        var trElem = document.createElement("tr");
        
        var tdElem1 = document.createElement("td");
        tdElem1.className = "t_left";
        tdElem1.innerHTML =  '<img src="/design/images/flags/' +codes[numbers[numberId][k]['country']]+ '.gif"> &nbsp; ' + numbers[numberId][k]['operator'];
        
        var tdElem2 = document.createElement("td");
        tdElem2.className = "colorOrange";
        tdElem2.innerHTML =  numbers[numberId][k]['cost'] +' ' + currency[numbers[numberId][k]['country']];
                       
        trElem.appendChild(tdElem1);
        trElem.appendChild(tdElem2);
        tbodyElem.appendChild(trElem);
        
    }
    
    tableElem.appendChild(tbodyElem);
    
    // tax info 
    
    var pElem = document.createElement("p");
    pElem.className = "cntr colorOrange";
    
    var cellText = document.createTextNode(pricesTax);
    pElem.appendChild(cellText);
    
    var vs = document.getElementById('parent_div');	
	while(vs.firstChild) vs.removeChild(vs.firstChild);
	        
    vs.appendChild(tableElem);
    vs.appendChild(pElem);
    
    // display
    
    document.getElementById('parent_div').style.display = 'block';
    document.getElementById('loading_div').style.display = 'none';	
    
}

// build numbers

function buildNumbers(country){
    
    var ulElem = document.getElementById('numbers_bar');	
	while(ulElem.firstChild) ulElem.removeChild(ulElem.firstChild);

    for (k in used_numbers[country]){
        
        var liElem = document.createElement("li");    
        
        var hrefElem = document.createElement("a");
        hrefElem.id = used_numbers[country][k];
        hrefElem.onclick = function(){ updatePage(this.id) };
        hrefElem.title = numbersValue[used_numbers[country][k]];
        hrefElem.innerHTML = numbersValue[used_numbers[country][k]] + ' (~' + numbersCost[used_numbers[country][k]] + '$)'
        
        var strongElem = document.createElement("strong");
        strongElem.innerHTML = ' SMS';
        
        liElem.appendChild(hrefElem);
        liElem.appendChild(strongElem);
        ulElem.appendChild(liElem);       
    }
    
    if (country == minNumberCountry){
        updatePage(minNumberId);
    } else {
        updatePage(used_numbers[country][1]);
    }
    
}
