function tp_resetFrame() {
	document.getElementById('tp_callButton').disabled = false;
}

function tp_translateState(state) {
	if (state.indexOf('error') == 0) {
		var res = '&#1086;&#1096;&#1080;&#1073;&#1082;&#1072; &#1089;&#1086;&#1077;&#1076;&#1080;&#1085;&#1077;&#1085;&#1080;&#1103;';
		var fields = state.split('_');
		if (fields.length > 1)
			res += ': ' + fields[1];
		return res;
	}
	switch (state) {
	case 'error':
		return '&#1054;&#1096;&#1080;&#1073;&#1082;&#1072;';
	case 'access_deny':
		return '&#1042;&#1099;&#1079;&#1086;&#1074; &#1079;&#1072;&#1087;&#1088;&#1077;&#1097;&#1077;&#1085;';
	case 'new':
		return '&#1085;&#1086;&#1074;&#1099;&#1081; &#1074;&#1099;&#1079;&#1086;&#1074;';
	case 'target_hangup':
	case 'callto_hangup':
	case 'target_cancel': 
	case 'callto_cancel': 
	    return '&#1088;&#1072;&#1079;&#1075;&#1086;&#1074;&#1086;&#1088; &#1079;&#1072;&#1074;&#1077;&#1088;&#1096;&#1077;&#1085;';
	case 'target_noanswer': 
	case 'callto_noanswer':
		return '&#1085;&#1077;&#1090; &#1086;&#1090;&#1074;&#1077;&#1090;&#1072;';
	case 'connected':
		return '&#1080;&#1076;&#1077;&#1090; &#1088;&#1072;&#1079;&#1075;&#1086;&#1074;&#1086;&#1088;';
	case 'target_calling':
	case 'callto_calling':
	   return '&#1076;&#1086;&#1079;&#1074;&#1086;&#1085;';
	}
};

var tp_rePhone = /[0-9\-\(\)\ +]{5,}/;

function tp_getTarget() {
	var phone = document.getElementById('tp_phone').value;
	if (!tp_rePhone.test(phone))
		return null;
	phone = phone.replace(/\(/g,'').replace(/\)/g,'').replace(/-/g,'').replace(/ /g, '').replace(/\+/g, '');
	if (phone.length < 5)
		return null;
	return phone;
}

function loadIntoIframe(url) {
	var tmpFrame = document.createElement('iframe');
	tmpFrame.setAttribute('id', 'tp_callbackFrame');
	tmpFrame.style.display = 'none';
	tmpFrame.style.height = 0;
	tmpFrame.style.width = 0;
	var iframe = document.body.appendChild(tmpFrame);
	
	var doc = iframe.contentWindow || iframe.contentDocument;
	try {
		if (doc.document)
			doc = doc.document
	} catch (e) {}
	doc.location.replace(url);
}

function tp_createCallback() {
	var target = tp_getTarget();
	if (!target)
		return;
	document.getElementById('tp_callButton').disabled = true;
	var url = 'http://talkpad.ru/callbacks/test?target=' + target
		+ '&service_id=' + document.getElementById('tp_serviceId').value + '&rnd=' + Math.random();
	loadIntoIframe(url);
	return false;
}

function tp_onKeyPressed(e) {
	var code;
	if (window.event)
		code = e.keyCode;
	else
		code = e.which;
	if (code == 13) // enter
		tp_createCallback();
}

function tp_processState(st) {
	var showCallButton = true;
	var str = tp_translateState(st);
	switch(st) {
		case 'target_hangup':
		case 'callto_hangup':
		case 'target_noanswer':
		case 'callto_noanswer':
		case 'target_cancel':
		case 'callto_cancel':
		case 'access_deny':
		case 'error':
			showCallButton = true;
			break;
		case 'new':
		case 'connected':
		case 'target_calling':
		case 'callto_calling':
			showCallButton = false;
			
	}
	document.getElementById('tp_callButton').disabled = !showCallButton;
	if (!showCallButton)
		str = str + "...";
	document.getElementById('tp_statusInfo').innerHTML = str;
	if (showCallButton) {
		var iframe = document.getElementById('tp_callbackFrame');
		iframe.parentNode.removeChild(iframe);
	}
}

if (window.addEventListener) {
	window.addEventListener("message", function(evt) {
		tp_processState(evt.data);
	}, false);
	window.addEventListener("load", tp_resetFrame, false);
} else {
	window.attachEvent('onmessage', function(evt) {
		tp_processState(evt.data);
	});
	window.attachEvent('onload', tp_resetFrame);
}



