var lock_ajax = false;

function get_countries( ){
	data = countries_list;
		if (data.result!="false") {
			var len = data.length;
			var options = '';
			var country = $.cookie('country');
	
	/*	??????????????????????????????????????????????????????????????????
	 * 
	 	for (var i = 0; i < len; i++) {
				if (data[i].id==country) {
					selected = ' selected ';
				} else {
					selected = "";
				}
				options += '<option value="' + data[i].prefix + '" '+selected+'">' + data[i].countryname + '</option>';
			}
		????????????????????????????????????????????????????????????????
	*/
			$("<option value=''></option>").appendTo($("#to_country"));
			$("<option value=''>---- Pro Destinations ---</option>").appendTo($("#to_country"));
			$("<option value=''></option>").appendTo($("#from_country"));
			$("<option value=''>---- Pro Destinations ---</option>").appendTo($("#from_country"));
				
			for(var i = 0; i < len; i++ ) { //because of ie6
				if (data[i].id==country) {
					$("<option value='"+data[i].prefix+"' selected>"+data[i].countryname+"</option>").appendTo($("#to_country"));
					$("<option value='"+data[i].prefix+"' selected>"+data[i].countryname+"</option>").appendTo($("#from_country"));					
					$('#to_prefix').val(data[i].prefix);
					if ($('#from_prefix').val()=="") {
						$('#from_prefix').val(data[i].prefix);
					}
				} else {
					$("<option value='"+data[i].prefix+"'>"+data[i].countryname+"</option>").appendTo($("#to_country"));
					$("<option value='"+data[i].prefix+"'>"+data[i].countryname+"</option>").appendTo($("#from_country"));	
				}
			}
		}
}


function recent_call(dial_to){

	$('#recent_calls').dialog('close');
	
	var len = document.getElementById('to_country').options.length;
	var country = document.getElementById('to_country');
	
	for (var i = 5; i >= 1; i--) {
		var prefix = String(dial_to).substring(0,i);
		for (c=0;c<len;c++){
			if (country.options[c].value == prefix) {
				var prefix_len = prefix.length;
				var full_len   = dial_to.length;
				var number     = String(dial_to).substring(prefix_len);
				$('#to_prefix').val(prefix);
				$('#to_phone').val(number);	
				$('#to_prefix').keyup();
				return;
			}
		}
	}
	return;
}

function get_timeout(from,to){
	$('#timeout').html('<img src="'+base+'images/small_loader.gif" name="t_loader" alt="loading.." />');	

	if (from==""){
		$('#timeout').html('please enter your phone #');
		return;
	}
	
	if (to==""){
		$('#timeout').html('invalid destination phone #');
		return;
	}
	
	if (underling){ //we dont show timeout to underlings
		return;
	}

	ptBase.calculate_timeout(from, to, function(data){
		if ((data.result != "false") && (data.result != false)) {
			var html = '<img style="vertical-align:middle;padding-right:2px;" src="'+base+'images/time.png" />'+data.result+' minutes';
			$('#timeout').html(html);
		} else {
			$('#timeout').html('invalid phone number');
		}
	});
	
	//lets update the balance too...
	get_balance();
	
}

function get_rate_numbers(from, to){

	if (underling){ //we dont show rates to underlings
		return;
	}
	
	ptBase.get_rate_numbers(from, to, function(data){

		if ((data.result != false) && (data.result != "false")) {
			html = '<img style="vertical-align:middle;padding-right:2px;" src="'+base+'images/dollar.png" />'+data.rate;
			$('#call_rate').html(html);
		} else {
			show_error( data.msg );
		}
	});
}

function my_number_input(){
	$("#nb").dialog('option', 'title', 'My phone number');
	$("#nb").dialog('option', 'buttons', {"Cancel": function(){$(this).dialog("close");}, 
		"Save": function(){
			current_number = {
								prefix:$("#nb #nb_prefix").val(), 
								number:$("#nb #nb_number").val()
								};
				save_my_number();			
				$(this).dialog("close");
		}});
	var number = $('#my_number').html();
	var prefix = get_prefix(number);
	show_nb(prefix);
	$('#nb_number').val(number.substring(prefix.length));
}



function confirm_callback(dial_to,close_dialog){
	$('#'+close_dialog).dialog('close');
	$('#confirm_to').html(dial_to);
	
	val = $('#my_number').html();
	
	$('#confirm_from').html(val);
	$("#confirm_callback").dialog('open');
}

function close_box(){
	$('#msgbox').dialog('close');
	if (($.cookie('balance') <= 0) || ($.cookie('balance') == "")) {
	//	setTimeout("new_popup()", 12000);
	}
}

function close_advert_pop(to_prefix,to_phone){
	$('#advert_pop').dialog('close');
	complete_call(to_prefix,to_phone);
}

function new_popup(){
	if (($.cookie('balance') <= 0) || ($.cookie('balance') == "")) {
		$('#advert_pop').dialog('open');
		//$('#advert_pop_text').html('');
	} 
	
}

function make_call(){
	var re = new RegExp(/\d+/g);
	var to_prefix = $('#to_prefix').val();
	var to_phone = "";
	var tmp = $('#to_phone').val();
	
	var digits_groups = tmp.match(re);
	if(digits_groups != null){
		for(var i=0; i<digits_groups.length; i++){
			to_phone += digits_groups[i];
		}
	}
	
	if(!ptBase.test_number(to_prefix)){
		show_error("Please, enter valid destination prefix");
		return;
	}
	
	if(!ptBase.test_number(to_phone)){
		show_error("Please, enter valid destination number");
		return;
	}

	if (($.cookie('balance')<=0) || ($.cookie('balance')=="")) {
		$('#advert_pop').dialog('open');
		$('#advert_pop_text').html("Your call will connect after this message.");
		//$('#advert_pop').html($('#adspot_right').html());
		var delay = function() { close_advert_pop(to_prefix,to_phone); };
		setTimeout(delay,12000);
	} else {
		complete_call(to_prefix,to_phone);
	}
}

function complete_call(to_prefix, to_phone){

	show_msgbox("Connecting...");
	ptBase.make_call(to_prefix,to_phone,function(data){

		if ((!data.result) || (data.code != '0')) {
			close_box();
			if ((data.code =='210') || (data.code=='211')) {
				$('#upgrade_notice').dialog('open');
			} else {
				show_error(data.msg);
			}
		} else {
			var last_dialed = to_prefix + to_phone;
			$.cookie('last_dialed', "" + last_dialed, {
				expires: 1,
				path: '/',
				secure: false
			}); 
			setTimeout("close_box()", 4000);
			get_fb_connect_status();	
		}
	}); 
	
}


function show_recent_calls(){

	ptBase.get_recent_calls(function(data){
		if (!data.result) {
			show_error("you dont have any recent calls... (yet!)");
		} else {
			var new_time, country_to, country_from, number_or_contact, phone_1, phone_2, phone_3;
			var len     = data.result.length;
			var add_len = addressbook.result.length;
					
			var html = '<div style="width:250px; height:200px">';
			html += '<div  style="padding-bottom:20px;"> Poke any number to dial</div>';
			
			for (var i = 0; i < len; i++) {

				new_time     = jQuery.timeago(data.result[i].timestamp);
				country_to   = '';
				country_from = '';
				
				if (data.result[i].country_to) {
					country_to = data.result[i].country_to.toLowerCase();
				}
				if (data.result[i].country_from) {
					country_from = data.result[i].country_from.toLowerCase();
				}
				
				number_or_contact = data.result[i].to;
				
				
				if (add_len>0) {
					for (var c = 0; c < add_len; c++) {
						phone_1 = String(addressbook.result[c].code)+String(addressbook.result[c].value);
						phone_2 = String(addressbook.result[c].code_1)+String(addressbook.result[c].value_1);
						phone_3 = String(addressbook.result[c].code_2)+String(addressbook.result[c].value_2);												
						
						if ((number_or_contact == phone_1) || (number_or_contact == phone_2) || (number_or_contact == phone_3)) {
							number_or_contact = addressbook.result[c].contact_name;
						}
					}		
				}
				
				html 	+= '<div style="padding-left:40px;">';
                //html    +=  '<span style="padding-right:6px;"><a onclick="recent_call('+data.result[i].to+');" href="#" style="color:#3b5998;" title="'+country_from+' to '+country_to+'">+'+number_or_contact+ '</a></span>';
                html    +=  '<span style="padding-right:6px;"><a onclick="$(\'#to_phone\').editphone(\'setPhone\',\''+data.result[i].to+'\');$(\'#recent_calls\').dialog(\'close\');return false;" href="#" style="color:#3b5998;" title="'+country_from+' to '+country_to+'">+'+number_or_contact+ '</a></span>';
				html 	+= 	'<span class="small_text" style="color:#333333;">'+new_time+'</span>';
				html 	+= '</div>';
			}
			
			html += '</div>';

			$('#recent_calls').html(html);
			$('#recent_calls').dialog('open');
			
		}
	});	
}



function show_cid(){
	$('#cid').dialog('open');
	$('#current_cid').html('loading...');

	ptBase.get_cid(function(data){			
		if (data[0].caller_id=="0"){
			var	cid = "hidden";
		} else if (data[0].caller_id=="1") {
			var cid = "shown";
		} else if (data[0].caller_id=="2") {
			var cid = " [random digits] ";
		}
		$('#current_cid').html("Your caller id is: <b>"+cid+"</b>");
	});
}

function save_cid(){
	var cid = $('#call_cid').val();
	$('#cid').dialog('close');
	
	ptBase.set_cid(cid,function(data){	
		if (!data.result){
			show_error(data.result.msg);
			return;
		} else {
			show_msgbox('New caller id settings have been applied');
		}
	});
}



function save_my_number(){
	var prefix = current_number.prefix;
	var phone  = current_number.number;
	if ((prefix=="") || (phone == "")) {
		$("#nb").dialog('close');
		show_error("Your prefix/number cannot be empty");
		return false;
	}
	if(!ptBase.test_number(prefix+phone)){
		$("#nb").dialog('close');
		show_error("Incorrect prefix/number.");
		return false;
	}
	ptBase.set_number(prefix,phone,function(data){
		if (data.result==true) {
			
			$.cookie('phone1', ""+prefix+phone, { expires: 0, path: '/', secure: false });
		}
	});	
	$('#my_number').html(prefix+phone);
	$("#my_number_input").dialog('close');
	return true;
}

function show_ex_box_to(){
	$("#ex").dialog('option', 'title', 'Add the number extention');
	$("#ex").dialog('option', 'buttons', {
		"Cancel": function(){
			$(this).dialog("close");
		}, 
		"Save": function(){
			add_ex_to_number();
			$(this).dialog("close");
		}
	});
	$('#ex #ex_number').val("");
	$("#ex").dialog('open');
}

function show_ex_box_from(){
	$("#ex").dialog('option', 'title', 'Add the number extention');
	$("#ex").dialog('option', 'buttons', {
		"Cancel": function(){
			$(this).dialog("close");
		}, 
		"Save": function(){
			add_ex_from_number();
			$(this).dialog("close");
		}
	});
	$('#ex #ex_number').val("");
	$("#ex").dialog('open');
}

function add_ex_to_number(){
	var ex = $('#ex_number').val();
	if($('#to_phone').val() == ""){
		show_error("Insert destinaton number first.");
		return;
	}
	if(ex == ""){
		show_error("Please insert extention number.");
		return;
	}
	if(!ptBase.test_number(ex)){
		show_error("Incorrect extention number.");
		return;
	}
	var num = $('#to_phone').val();
	$('#to_phone').val(num+"#"+ex);
	return;
}

function add_ex_from_number(){
	var number = $('#my_number').html();
	var prefix = get_prefix(number);
	var my_number = number.substring(prefix.length);
	
	if($('#ex_number').val() == ""){
		show_error("Please insert extention number.");
		return;
	}
	current_number = {'prefix':prefix, 'number':my_number + "#" + $('#ex_number').val()};
	var res = save_my_number();
	if(!res){
		return;
	}
	$('#my_number').html(current_number.prefix+current_number.number);
	return;
}


function set_title(last_dialed){

	//var last_dialed = (last_dialed);
	len 	  		 = addressbook.result.length;
	var found 		 = false;
	var country_flag = "";
	var country_name = "";
	
	/* get the country name */
	ptBase.check_timerates(last_dialed,function(data){
		if (!data.result) {
			//do something
		} else {
			country_name = data.result.countryname.toLowerCase();
			country_flag = data.result.countryname.toLowerCase();
			country_flag = country_flag.substring(0,4);

			//hard coded fixes to some countries!!
			
			if (data.result.countryname.substring(0,5)=="AUSTR"){ //
				country_flag = "austr";
			}
			if (data.result.countryname.substring(0,10)=="CONGO DEMO"){ //
				country_flag = "dcon";
			}
			if (data.result.countryname.substring(0,8)=="DOMINICA"){ //
				country_flag = "dominica";
			}
			if (data.result.countryname.substring(0,6)=="GREECE"){ //
				country_flag = "greece";
			}				
			if (data.result.countryname.substring(0,6)=="MALAWI"){ //
				country_flag = "malawi";
			}
			if (data.result.countryname.substring(0,6)=="MAURITANIA"){ //
				country_flag = "Mauritania";
			}				
			if (data.result.countryname.substring(0,20)=="NETHERLANDS ANTILLES"){ //
				country_flag = "nant";
			}	
			if (data.result.countryname.substring(0,5)=="NEW C"){ //
				country_flag = "newc";
			}				
			if (data.result.countryname.substring(0,5)=="NEW Z"){ //
				country_flag = "newz";
			}			
			if (data.result.countryname.substring(0,7)=="NIGERIA"){ //
				country_flag = "nigeria";
			}					
			if (data.result.countryname.substring(0,11)=="NORTH KOREA"){ //
				country_flag = "nkorea";
			}	
			if (data.result.countryname.substring(0,8)=="SLOVANIA"){ //
				country_flag = "slovania";
			}	
			if (data.result.countryname.substring(0,12)=="SOUTH AFRICA"){ //
				country_flag = "safrica";
			}					
			if (data.result.countryname.substring(0,12)=="SOUTH AFRICA"){ //
				country_flag = "safrica";
			}	
			if (data.result.countryname.substring(0,11)=="SOUTH KOREA"){ //
				country_flag = "skorea";
			}
			if (data.result.countryname.substring(0,11)=="UNITED STAT"){ //
				country_flag = "Usa";
			}									
			if (data.result.countryname.substring(0,11)=="UNITED KING"){ //
				country_flag = "Uk";
			}	
						
			country_flag = country_flag.substr(0, 1).toUpperCase() + country_flag.substr(1);
			country_flag = base +'images/flags2/'+country_flag+'.png';
			$('#feed_flag').val(country_flag);	
		}
	});
	
	var icon = '<img src="'+base+'images/phone.png" style="vertical-align:middle;" />';
	var html ="";

//	html 	+=  '<div style="height:26px;width:540px;">';
	html    += '<div class="fleft" style="width:350px;height:20px;padding-left:6px;">';
	html    += icon+'Calling ';

	for (var i = 0; i < len; i++) {
		var phone1 = addressbook.result[i].code+addressbook.result[i].value;
		var phone2 = addressbook.result[i].code_1+addressbook.result[i].value_1;
		var phone3 = addressbook.result[i].code_2+addressbook.result[i].value_2;
		if ((last_dialed == phone1) || (last_dialed==phone2) || (last_dialed==phone3)){
			html +=	addressbook.result[i].contact_name;
			var tmp_feed = addressbook.result[i].contact_name+' in '+country_name;
			$('#feed_txt').val(tmp_feed);	
			var found = true;
			break;
		}
	}
	
	if (!found){
		 html += last_dialed;
		 html += '&nbsp;&nbsp;<a href="javascript: void(0);" onclick="add_to_contacts();" style="font-size:10px;" title="Add this number to your contacts list">add to contacts?</a>';
		$('#feed_txt').val(country_name);	
	//	setTimeout("show_add_contact()",2000);	
	}
	
	html += '</div>';
	html += '<div class="fright" style="height:20px;width:150px;text-align:right;font-size:10px;padding-right:4px;"><img id="destination_flag" src="'+country_flag+'" style="vertical-align:middle;padding:0px 2px 0px 4px;" /><span id="destination_name">'+country_name+'</span></div>';
	$('#title').html(html);
	//$('#service_header').fadeOut("slow",function(){
	$('#title').slideDown("slow");
	$('#fb_share').slideDown("slow");
	//});		
}


function fb_publish(){
	fb_publish_feed($('#feed_txt').val());
}

var fb_publish_feed = function(country_name) { 
	if (country_name != "") {
		var feed_data   = {"country":country_name};
		var feed_flag   = $('#feed_flag').val();
		var tmp_country_name = ' called '+country_name;
		var attachment  = {'name':'Just called '+country_name,'href':'http://www.poketalk.com/','media':[{'type':'image','src':feed_flag,'href':'http://www.poketalk.com/'}]}; 
		//var actionLinks = [{ "text": "Make a call", "href": "http://www.poketalk.com"}];
		
		FB.Connect.streamPublish('', attachment,null,null,'What did you speak about?');
	//	FB.Connect.showFeedDialog(34413654952, feed_data, null, null, null, FB.RequireConnect.doNotRequire);
	}
}

function tweet_this(){
	var tmp_url = 'http://twitter.com/home?status=';
	tmp_url += "Just called "+$('#feed_txt').val()+' via PokeTALK';
	newwindow=window.open(tmp_url,'name');
	if (window.focus) {newwindow.focus()}
	return false;
}

//function show_add_contact(){
//	$('#add_to_contacts').slideDown("slow");
//}

