var oForm;
var arInputs;
var arSelects;
var oSendButton;
var oLinkBook;
var oResultDiv
var sLogin;
var oIframeDiv;
var oCountries;
var oPrefix

function activateFaxGatewayStep1(sLoginParam) {
	sLogin = sLoginParam;
	oCountries = document.getElementById("listaKrajow");
	oPrefix = document.getElementById("prefixKraju");
//	addEventHandler(oCountries, "change", selectCountryPrefix);

	oForm = document.getElementById("formularzFaks");
	arInputs = oForm.getElementsByTagName("input");
	arSelects = oForm.getElementsByTagName("select");
	oSendButton = document.getElementById("buttonDalej");
	oLinkBook = document.getElementById("linkPokazKsiazke");
	oResultDiv = document.getElementById("blokWyslijFaksTresc");
	oIframeDiv = document.getElementById("iframeUpload");
	oIframeDiv.style.display = "block";
	
	if(sLogin) {
		enableFormStep1();
		updateCreditBalance();
		disableCountriesSelect();
	}
	else
		disableFormStep1();
}

function disableCountriesSelect() {
	for(var i=0; i< oCountries.options.length; i++) {
		if(oCountries.options[i].value == "+48") {
			oCountries.options[i].selected = true;
		}
		oPrefix.value = "+48";
	}
	oCountries.disabled = "disabled";	
}



function activateFaxGatewayStep2(sLoginParam) {
	sLogin = sLoginParam;
	oSendButton = document.getElementById("buttonWyslij");
	oForm = document.getElementById("formularzFaks");

	if(sLogin) 
		enableButton(true, oSendButton, sendFaxStep2);
	else
		enableButton(false, oSendButton, sendFaxStep2);

//	var oCountries = document.getElementById("listaKrajow");
//	addEventHandler(oCountries, "change", selectCountryPrefix);

}


function enableFormStep1() {
	var oIframe = document.getElementById("iframeUpload0");
	var oFile = oIframe.contentWindow.document.getElementById("plik");
	if(oFile)
		oFile.disabled = null;
	else
		addEventHandler(oIframe, "load", enableFileInput);

	for(var i=0; i<arInputs.length; i++) {
		arInputs[i].disabled = null;
	}
	
	for(var i=0; i<arSelects.length; i++) {
		arSelects[i].disabled = null;
	}
	
	enableButton(true, oSendButton, sendFaxStep1);

	enableLink(oLinkBook, loadPhoneBook);
	activatePhoneBook();
}

function disableFileInput(oEvent) {
	var oIframe = document.getElementById("iframeUpload0");
	var oFile = oIframe.contentWindow.document.getElementById("plik");
	oFile.disabled = "disabled";
}

function enableFileInput(oEvent) {
	var oIframe = document.getElementById("iframeUpload0");
	var oFile = oIframe.contentWindow.document.getElementById("plik");
	oFile.disabled = null;
}

function disableFormStep1() {
	var oIframe = document.getElementById("iframeUpload0");
	addEventHandler(oIframe, "load", disableFileInput);
	
	for(var i=0; i<arInputs.length; i++) {
		arInputs[i].disabled = "disabled";
	}
	for(var i=0; i<arSelects.length; i++) {
		arSelects[i].disabled = "disabled";
	}	

	enableButton(false, oSendButton, sendFaxStep1);
	disableLink(oLinkBook, showBlock);
}


function enableSubmitEvent(oEvent) {
	if(oInput.value.length > 0) {
		enableButton(true, sendFaxStep1);
	}
}



/* send fax */

function getRequestString() {
	var oFile = document.getElementById('idPliku');
	var oRecipient = document.getElementById('odbiorca');
	var oPrefix = document.getElementById('prefixKraju');
	if(!oRecipient || oRecipient.value == "") {
		alert("Określ odbiorcę faksu.");
		return null;
	}
	if(!oFile || oFile.value == "") {
		alert("Wskaż dokument PDF zawierający treść faksu.");
		return null;
	}

	var sRecipient = oRecipient.value.replace(/^0/, "");
	if(oPrefix)
		return "fileId=" + encodeURIComponent(oFile.value) + "&"+ "recipient=" + encodeURIComponent(oPrefix.value + '|' + sRecipient);
	else
		return "fileId=" + encodeURIComponent(oFile.value) + "&"+ "recipient=" + encodeURIComponent(sRecipient);	
}

function sendFaxStep1()
{
	var sRequest = getRequestString();
	if(!sRequest)
		return;
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
	{
		enableButton(false, oSendButton, sendFaxStep1);
		showProgress(true, "blokWyslijFaksPostep", "blokWyslijFaksTresc");
		xmlHttp.open("POST", "engine/sendFax.php", true);  
		xmlHttp.onreadystatechange = getSendFaxStep1Results;
		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHttp.send(sRequest);
	}
	else
	    setTimeout('sendFaxStep1()', 1000);
}

// wykonywana automatycznie po otrzymaniu odpowiedzi z serwera
function getSendFaxStep1Results() 
{
	// kontynuuje jedynie jesli transakcja zostala zakonczona
	if (xmlHttp.readyState == 4) 
	{
  		// status 200 oznacza pomyslne ukonczenie transakcji
		if (xmlHttp.status == 200) 
		{	
			// wyodrebnia wiadomosc wyslana z serwera
			sResponse = xmlHttp.responseText;
			oResultDiv.innerHTML = sResponse;
			if(oResultDiv.firstChild.id == "step1")
				activateFaxGatewayStep1(sLogin);
			else
				activateFaxGatewayStep2(sLogin);
			showProgress(false, "blokWyslijFaksPostep", "blokWyslijFaksTresc");
		} 
		// dla statusu protokolu HTTP innego niz 200 zglasza blad
		else 
		{
			alert("Wystąpił błąd podczas uzyskiwania dostępu do serwera: " + xmlHttp.statusText);
		}
	}
}


function sendFaxStep2()
{
	var sRequest = getRequestString();
	if(!sRequest)
		return;	
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
	{
		enableButton(false, oSendButton, sendFaxStep2);
		showProgress(true, "blokWyslijFaksPostep", "blokWyslijFaksTresc");
		xmlHttp.open("POST", "engine/sendFax.php", true);  
		xmlHttp.onreadystatechange = getSendFaxStep2Results;
		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHttp.send("send=1&" + sRequest);
	}
	else
	    setTimeout('sendFaxStep2()', 1000);
}


function getSendFaxStep2Results() 
{
	// kontynuuje jedynie jesli transakcja zostala zakonczona
	if (xmlHttp.readyState == 4) 
	{
  		// status 200 oznacza pomyslne ukonczenie transakcji
		if (xmlHttp.status == 200) 
		{	
			// wyodrebnia wiadomosc wyslana z serwera
			sResponse = xmlHttp.responseText;
			oResultDiv.innerHTML = sResponse;
			if(oResultDiv.firstChild.id == "topup")
				activatePacksList();
			else
				activateFaxGatewayStep1(sLogin);
//			enableButton(false, oSendButton, sendFaxStep2);
//			enableButton(true, oSendButton, sendFaxStep1);
			showProgress(false, "blokWyslijFaksPostep", "blokWyslijFaksTresc");
		} 
		// dla statusu protokolu HTTP innego niz 200 zglasza blad
		else 
		{
			alert("Wystąpił błąd podczas uzyskiwania dostępu do serwera: " + xmlHttp.statusText);
		}
	}
}
