
var callinprogress = 0;

var myDomain = document.URL.substring(7,document.URL.indexOf("/",7)); 


function setPlidForState() {
	var postcode = document.getElementById("pcode").value;
	var statePrefix = postcode.charAt(0);
	var statePlid = "";
	switch (statePrefix) {
		case "0": //NSW, ACT, NT
			statePlid = "YV5w4w";
			break;
		case "1": //NSW, ACT, NT
			statePlid = "YV5w4w";
			break;
		case "2": //NSW, ACT, NT
			statePlid = "YV5w4w";
			break;
		case "3": //VIC, TAS
			statePlid = "72jFvT";
			break;
		case "4": // QLD
			statePlid = "EGNU5hZ";
			break;
		case "5": //SA
			statePlid = "PZxXMSK";
			break;
		case "6": //WA
			statePlid = "GJqAY9N";
			break;
		case "7": //VIC, TAS
			statePlid = "72jFvT";
			break;
		case "8": //NSW, ACT, NT
			statePlid = "YV5w4w";
			break;
		case "9": //NSW, ACT, NT
			statePlid = "YV5w4w";
			break;
		default:
			statePlid = "YV5w4w";
			break;
	}
	document.getElementById('plid').value = statePlid;
}

function do_dsdial()
{    

	setPlidForState();


	var zero_re =/^0/;
	var plus_re = /^\+/;
	var let_re = /\w/;
	var phone = document.getElementById("phone").value;
	var plid = document.getElementById("plid").value;
	var myMsg = document.getElementById("hover_info");
    var $myMsg = jQuery("#hover_info");
	var myPhone = document.getElementById("phone");
	var PCode = document.getElementById("pcode").value;

	
	if (callinprogress == 1){
		myMsg.innerHTML = '<span>Call in progress...</span>';
		return;
	}
	phone = phone.replace(let_re,"");


	if (phone == ''){
		myPhone.value = 'Enter your number';
		return;
	}
	
	
	var theTelephone = document.getElementById("phone").value;
	if ((theTelephone.length >= 1) && (theTelephone.substring(0,1) != 0)) {
		myMsg.innerHTML = '<span>Please enter your area code before your telephone number</span>';
		return;
	}
	


	// Ok, we should do something with the country codes
	phone = phone.replace(zero_re,"");
	phone = phone.replace(/\s/g,""); 
	var Ephone = phone;
	Ephone = Ephone.replace(plus_re,"%2B");


	var myProto = document.location.protocol;

	var myUrl = myProto+'//'+myDomain+'/ptt/pt-dialer.cgi'
	var Query = 'PLID='+plid+'&wantxml=yes&cmd=call&aparty='+Ephone+'&pcode='+PCode;
	myMsg.style.display='block'; 
	$myMsg.html('<div class="ctc-status"><img src="/images/clicktocall/connecting.gif">');
	resetCookie("phone", Ephone);


	ajax(myUrl,Query,parse_results);

}

function parse_results(xmlDoc)
{
	var myMsg = document.getElementById("hover_info");
    var $myMsg = jQuery("#hover_info");
	
	try {
	var rc = xmlDoc.getElementsByTagName('rc').item(0).firstChild.data;
	}
	catch(err){
		myMsg.style.display='block'; 
		myMsg.innerHTML = '<span>Our consultants have gone home for the day. Try us again between 9am-5pm Mon-Fri.</span>'; <!--temporary problem speaking with the server -->
		return;
	}
	if (rc != 1){
		var errmsg = xmlDoc.getElementsByTagName('errmsg').item(0).firstChild.data;
		if (errmsg == 'no credit'){
			myMsg.style.display='block'; 
			myMsg.innerHTML = '<span>'+xmlDoc.getElementsByTagName('reason').item(0).firstChild.data+'</span>';
		}
		else if (errmsg == 'maximum free calls reached'){
			myMsg.style.display='block'; 
			myMsg.innerHTML = '<span>You have used all your free calls.<br>Please join to continue using Pep-Talk</span>';
		}
		else if (errmsg == 'aparty number invalid') {
			myMsg.style.display='block'; 
			myMsg.innerHTML = '<span>The number you have entered is invalid. Please enter your full number including area code.</span>';
		}
		else if (errmsg == 'out of hours') {
			myMsg.style.display='block'; 
			myMsg.innerHTML = '<span>Our consultants have gone home for the day. Try us again between 9am-5pm Mon-Fri.</span>';
		}
		else {
			myMsg.innerHTML = '<span>'+errmsg+'</span>';
		}
		callinprogress=0;
	}
	else {
		var status = '';
		try {
		status = xmlDoc.getElementsByTagName('status').item(0).firstChild.data;
		}
		catch(err) {
			/* Call has probably termintated, hence no status for the ptid */
			callinprogress=0;
		}
		var ptid = xmlDoc.getElementsByTagName('ptid').item(0).firstChild.data;
		if (status == 'dialling'){
			myMsg.style.display='block';
            $myMsg.html('<div class="ctc-status"><img src="/images/clicktocall/connecting.gif"></div>'); 
			callinprogress=1;
		}
		else if (status == 'call'){
			myMsg.style.display='block'; 
            $myMsg.html('<div class="ctc-status"><img src="/images/clicktocall/connected.gif"></div>');
			callinprogress=0;
		}
		else if (status == 'ready'){
			myMsg.style.display='block';
            $myMsg.html('<div class="ctc-status"><img src="/images/clicktocall/ringing.gif"></div>'); 
			callinprogress=1;
		}
		else if (status == 'failed'){
			var Reason = xmlDoc.getElementsByTagName('reason').item(0).firstChild.data;
			callinprogress=0;
			if (Reason == 'busy'){
				myMsg.style.display='block'; 
				myMsg.innerHTML = '<span>Unfortunately we were unable to contact you.  Please re-enter your details</span>';
			}
			else if (Reason == 'busy-b'){
				myMsg.style.display='block'; 
				myMsg.innerHTML = '<span>Unfortunately all our consultants are busy.  Please try again shortly</span>';
			}
			else if (Reason == 'noanswer'){
				myMsg.style.display='block'; 
				myMsg.innerHTML = '<span>Unfortunately we were unable to contact you.  Please re-enter your details</span>';
			}
			else if (Reason == 'noanswer-b'){
				myMsg.style.display='block'; 
				myMsg.innerHTML = '<span>Unfortunately all our consultants are busy.  Please try again shortly</span>';
			}
			else if (Reason == 'hangup'){
				myMsg.style.display='block'; 
				myMsg.innerHTML = '<span> Unfortunately we have been disconnected.  Please re-enter your details</span>';
			}
		}
		
		if ((status != 'call')&&(status != 'failed')&&(status !='')){
			var myProto = document.location.protocol;
			var myUrl = myProto+'//'+myDomain+'/ptt/pt-popoverlib.cgi';
			var Query = 'cmd=getstatus&ptid='+ptid;
			ajax(myUrl,Query,parse_results);
		}
	}
}

function ajax(url, vars, callbackFunction)
{
        
	var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");
	
//	alert(url+'?'+vars);

	request.open("POST", url, true);
	if (request.overrideMimeType){
		request.overrideMimeType('text/xml');
	}
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 

	request.onreadystatechange = function(){

		if (request.readyState == 4 && request.status == 200) {
			var xmlDoc = request.responseXML;
			if (xmlDoc){
//				alert(request.responseText);
				callbackFunction(xmlDoc);
			}
		}
	}
	request.send(vars);
}

function URLencode (myString)
{
	var result = '';
	var x = 0;
	myString = myString.toString();
	var re = /(^[a-zA-Z0-9_.]*)/;
	while (x < myString.length){
		var match = re.exec(myString.substr(x));
		if (match != null && match.length > 1 && match[1] != '') {
			result += match[1];
			x += match[1].length;
		} else {
			if (myString[x] == ' '){
				result += '+';
			}
			else {
				var char = myString.charCodeAt(x);
				var val = char.toString(16);
				result += '%' + ( val.length < 2 ? '0' : '' ) + val.toUpperCase();
			}
			x++;
		}
	}
	return result;
}
function do_rollover()
{    
	document.getElementById('hover_info').style.display='block';
//	document.getElementById('butimg').src='http://pep-talk.com.au/images/gui/icon_btn_call_on.png';
 //       document.getElementById('butdiv').style.backgroundImage='url(http://pep-talk.com.au/images/gui/icon_btn_text_on.png)';
}
function do_rollback()
{
	document.getElementById('hover_info').style.display='block';
//	document.getElementById('butimg').src='http://pep-talk.com.au/images/gui/icon_btn_call.png';
 //       document.getElementById('butdiv').style.backgroundImage='url(http://pep-talk.com.au/images/gui/icon_btn_text.png)';
}

function resetCookie(cookieName, cookieValue) {
	if (readCookie(cookieName)) {
		eraseCookie(cookieName);
		setCookie(cookieName, cookieValue);
	}
}
 
function setCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
	    var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
	    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
    setCookie(name,"",-1);
}

function getKeyCode(x) {
	var charfield;
	if (x==1) {
		charfield=document.getElementById("phone");
	} else if (x==2) {
		charfield=document.getElementById("pcode");
	}
	charfield.onkeydown=function(e)	{
		var e=window.event || e
		if (e.keyCode==13) {
			do_dsdial();
		}
	}
}

