// przechowuje obiekt XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();
//var path = 'http://www.foxfoto.eu/sklep/ajax/ajax_response.php?';
//var imagePath = 'http://www.foxfoto.eu/sklep/shared/default/img/';
var path = sShopAddr + 'ajax/ajax_response.php?';
var imagePath = sShopAddr + 'shared/default/img/';
// tworzy obiekt XMLHttpRequest
function createXmlHttpRequestObject() 
{
  //przechowa odwołanie do obiektu XMLHttpRequest
  var xmlHttp;
  // powinno działać dla wszystkich przeglądarek z wyjątkiem IE6 i starszych
  try
  {
    // próbuje stworzyć obiekt XMLHttpRequest
    xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    // zakładając, że IE6 lub starsza
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                    "MSXML2.XMLHTTP.5.0",
                                    "MSXML2.XMLHTTP.4.0",
                                    "MSXML2.XMLHTTP.3.0",
                                    "MSXML2.XMLHTTP",
                                    "Microsoft.XMLHTTP");
    // sprawdza każdy prog id aż któryś zadziała
    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
    {
      try 
      { 
        // próbuje stworzyć obiekt XMLHttpRequest
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      } 
      catch (e) {}
    }
  }
  // zwraca stworzony obiekt albo wyświetla komunikat o błędzie
  if (!xmlHttp)
    alert("Błąd podczas tworzenia obiektu XMLHttpRequest.");
  else 
    return xmlHttp;
}

 
// czyta plik na serwerze
function process()
{
  // kontynuuje, jeśli xmlHttp nie jest pusty
  if (xmlHttp)
  {
    // próbuje połączyć się z serwerem
    try
    {
      // łańcuch parametrów
		var params = new String() ;
		if(arguments[0] == 'order') {
		  params  = "order="  + arguments[0] + "&" ;
          params += "country="+ arguments[1] + "&" ;
		  params += "type1="  + arguments[2] + "&" ;
		  params += "type2="  + arguments[3] + "&" ;
		  params += "type3="  + arguments[4] + "&" ;
		  params += "weight=" + arguments[5] + "&" ;
		  params += "lang=" + arguments[6] ;
		}
		
		if(arguments[0] == 'newsletter') {
		    var sEmail = document.getElementById('email').value;
            params = "newsletter=" + sEmail + "&" ;
            params += "lang=" + arguments[1] ; 
        }
			
      // rozpoczyna asynchroniczne żądanie wysłane do serwera
      xmlHttp.open("GET", path + params, true);
      xmlHttp.onreadystatechange = handleRequestStateChange;
      xmlHttp.send(null);
    }
    // w razie niepowodzenia wyświetla komunikat o błędzie
    catch (e)
    {
      alert("Nie mogę nawiązać połączenia z serwerem:\n" + e.toString());
    }
  }
}

// funkcja wywoływana przy zmianie statusu żądania HTTP
function handleRequestStateChange() 
{
  var loaderDiv = document.getElementById('loader') ;
  var buttonSubmit = document.getElementById('buttonSubmit') ;
  
  var plusCost	= document.getElementById("plusCost");
  var deliveryCostShow = document.getElementById("deliveryCostShow");
  var deliveryCostCurrency = document.getElementById("deliveryCostCurrency");
  var equalCost = document.getElementById("equalCost");
  var summaryCostShow = document.getElementById("summaryCostShow");
  var summaryCostCurrency = document.getElementById("summaryCostCurrency");
	
  if (xmlHttp.readyState != 4)
  {
    if(buttonSubmit != undefined) buttonSubmit.style.display = 'none' ;
	 
	 if(plusCost != undefined) plusCost.style.visibility = 'hidden';
	 if(deliveryCostShow != undefined) deliveryCostShow.style.visibility = 'hidden';
	 if(deliveryCostCurrency != undefined) deliveryCostCurrency.style.visibility = 'hidden';
	 if(equalCost != undefined) equalCost.style.visibility = 'hidden';
	 if(summaryCostShow != undefined) summaryCostShow.style.visibility = 'hidden';
	 if(summaryCostCurrency != undefined) summaryCostCurrency.style.visibility = 'hidden';
	 
	 if(loaderDiv != undefined) loaderDiv.innerHTML = '<img src="' + imagePath + 'ajax-loader.gif" alt="" />' ;
  }	
  // kiedy readyState ma wartość 4, jesteśmy gotowi do odebrania odpowiedzi z serwera
  else
  {
    if(buttonSubmit != undefined) buttonSubmit.style.display = 'block';
	 
	 if(plusCost != undefined) plusCost.style.visibility = 'visible';
	 if(deliveryCostShow != undefined) deliveryCostShow.style.visibility = 'visible';
	 if(deliveryCostCurrency != undefined) deliveryCostCurrency.style.visibility = 'visible';
	 if(equalCost != undefined) equalCost.style.visibility = 'visible';
	 if(summaryCostShow != undefined) summaryCostShow.style.visibility = 'visible';
	 if(summaryCostCurrency != undefined) summaryCostCurrency.style.visibility = 'visible';
	 
    if(loaderDiv != undefined) loaderDiv.innerHTML = '' ;
	 	
    // kontynuuje tylko, gdy status HTTP ma wartość "OK"
    if (xmlHttp.status == 200) 
    {
      try
      {
        // przetwarza wiadomość z serwera
        handleServerResponse();
      }
      catch(e)
      {
        // komunikat o błędzie
        alert("Błąd odczytu odpowiedzi: " + e.toString());
      }
    } 
    else
    {
      // wyświetla wiadomość o statusie
      alert("Pojawił się problem przy pobieraniu danych:\n" + xmlHttp.statusText);
    }
  }
}

// obsługuje odpowiedź otrzymaną z serwera
function handleServerResponse()
{
  // pobiera odpowiedź serwera podaną jako obiekt DOM XML
  var xmlResponse = xmlHttp.responseXML;
  // przechwycenie potencjalnych błędów przez IE i Operę
  if (!xmlResponse || !xmlResponse.documentElement)
    throw("Invalid XML structure:\n" + xmlHttp.responseText);
 
  // przechwycenie potencjalnych błędów przez Firefox
  var rootNodeName = xmlResponse.documentElement.nodeName;
  if (rootNodeName == "parsererror") 
    throw("Niepoprawna struktura XML:\n" + xmlHttp.responseText);
  // pobiera element nadrzędny (element document)
  xmlRoot = xmlResponse.documentElement;
  // sprawdzanie, czy otrzymaliśmy taki dokument XML, jakiego się spodziewaliśmy
  if (rootNodeName != "response" || !xmlRoot.firstChild)
    throw("Niepoprawna struktura XML:\n" + xmlHttp.responseText);
  
  var iResponseNumber	= new Number(0) ;
  var aResponseName = new Array() ;
  var sResponseName = '' ;
  var aResponseText = new Array() ;
  var sResponseText = '' ;
  var sResponseNameText	= '' ;
  var cntArray	= new Number(0) ;
  var newIndex	= new Number(0) ;
	
  for(i=0; i<xmlRoot.childNodes.length; i++) {
    xmlRootChild = xmlRoot.childNodes.item(i);
	 if(xmlRootChild.nodeName == 'number') //  <number>
	   iResponseNumber = xmlRootChild.firstChild.data ;
    if(xmlRootChild.nodeName == 'name') {//  <name>
	   cntArray = aResponseName.length ;
		newIndex = cntArray + 1 ;
	   aResponseName[newIndex] = xmlRootChild.firstChild.data ;
	 }
	 if(xmlRootChild.nodeName == 'content') {//  <content>
	   cntArray = aResponseText.length ;
		newIndex = cntArray + 1 ;
	   aResponseText[newIndex] = xmlRootChild.firstChild.data ;
	 }
  }
  /*
  for(var j=0 in aResponseText )
        sResponseNameText += '<br> <b>' + aResponseName[j] + '</b> <br>' + aResponseText[j] ;
        
        alert(sResponseNameText)
*/
  	 
  // wyświetla wiadomość dla użytkownika
  var myDiv = document.getElementById("response");
	
  // ukryty Input z oplata przesylki
  var costDiv = document.getElementById("deliveryCost");
  var costOrder = document.getElementById("orderCost");
  
  // ukryty Input z komunikatem newsletter
  var newsletterDiv = document.getElementById("newsletterResponse");
  
  if(costDiv != undefined) {
  
      // widoczne Spanz oplata przesylki
      var plusCost	= document.getElementById("plusCost");
      var deliveryCostShow = document.getElementById("deliveryCostShow");
      var deliveryCostCurrency = document.getElementById("deliveryCostCurrency");
      var equalCost = document.getElementById("equalCost");
      var summaryCostShow = document.getElementById("summaryCostShow");
      var summaryCostCurrency = document.getElementById("summaryCostCurrency");
      
    //  myDiv.className = 'responseNewsletterAdd' ;
    //  myDiv.className += ' ' + responseType ;
      for(var j=0 in aResponseName )
        sResponseNameText += '<br> <b>' + aResponseName[j] + '</b> <br>' + aResponseText[j] ;
    	 
      //myDiv.innerHTML = iResponseNumber + sResponseNameText ;
    	
      costDiv.value = iResponseNumber ;
      if(deliveryCostShow != undefined) deliveryCostShow.innerHTML = iResponseNumber;
    //  alert('iResponseNumber:' + parseFloat(iResponseNumber) + '  costOrder.value:' + parseFloat(costOrder.value))
      var iResponseNumberSum = parseFloat(iResponseNumber) + parseFloat(costOrder.value);
      if(summaryCostShow != undefined) summaryCostShow.innerHTML = iResponseNumberSum.toFixed(2);
    	
      if(plusCost != undefined) plusCost.style.visibility = 'visible';
      if(deliveryCostShow != undefined) deliveryCostShow.style.visibility = 'visible';
      if(deliveryCostCurrency != undefined) deliveryCostCurrency.style.visibility = 'visible';
      if(equalCost != undefined) equalCost.style.visibility = 'visible';
      if(summaryCostShow != undefined) summaryCostShow.style.visibility = 'visible';
      if(summaryCostCurrency != undefined) summaryCostCurrency.style.visibility = 'visible';
  }
  
    if(newsletterDiv != undefined) {
      
    for(var j=0 in aResponseText )
        sResponseNameText += aResponseText[j] ;
        
     newsletterDiv.style.visibility = 'visible';
     newsletterDiv.innerHTML = sResponseNameText;
  }
	
  document.getElementById('buttonSubmit').style.display = 'block' ;
	
	
//  alert(responseNumber + '<br> <b>' + responseName + '</b> <br>' + responseText)	
  
  // pomyslnie dodany adres, mozna oczyscic pole formularza
//  if(responseType == 'info') 
//    document.getElementById("newsletterEmail").value = '' ;
}

// - - - - - - - - -

function showRadio()
{
   aKey = arguments[0] ;
   if(arguments.length == 1) var aType = a[aKey] ;
	if(arguments.length == 2) var aType = a[aKey][arguments[1]] ;
	if(arguments.length == 3) var aType = a[aKey][arguments[1]][arguments[2]] ;
	
   var oBody = document.body;
	var oDivBase = document.getElementById('PaymentDelivery');

	document.getElementById('buttonSubmit').style.display = 'none' ;
	document.getElementById("plusCost").style.visibility = 'hidden';
	document.getElementById("deliveryCostShow").style.visibility = 'hidden';
	document.getElementById("deliveryCostCurrency").style.visibility = 'hidden';
	document.getElementById("equalCost").style.visibility = 'hidden';
	document.getElementById("summaryCostShow").style.visibility = 'hidden';
	document.getElementById("summaryCostCurrency").style.visibility = 'hidden';
	document.getElementById("response").innerHTML = '';
	document.getElementById('loader').innerHTML = '';
	
	if(aKey=='type1') sNextType = 'type2' ;
	if(aKey=='type2') sNextType = 'type3' ;
//	sNextType = 'type2' ;
	var sOrderHiddenRadio = new String();
	for(var k in aType)
	  if(arguments[1] == undefined) sOrderHiddenRadio +=  "hiddenRadio('"+sNextType+"','"+aType[k]['value']+"'); " ;
	    else                        sOrderHiddenRadio +=  "hiddenRadio('"+sNextType+"','"+arguments[1]+"','"+aType[k]['value']+"'); " ;
	
	var oDivGroup = document.createElement('div');
	
	// tytul bloku
	var oH4 = document.createElement('h4');
	switch(aKey) {
	  case 'type1' : var sTxt = document.getElementById('sTitleBlockDelivery').value; break;
	  case 'type2' : var sTxt = document.getElementById('sTitleBlockPayment').value; break;
	  case 'type3' : var sTxt = document.getElementById('sTitleBlockDeliveryParticular').value; break;
	}
	var oH4Txt = document.createTextNode(sTxt);
	oH4.appendChild(oH4Txt);
	 
 	oDivGroup.appendChild(oH4);
	  
	for(var k in aType) {
	
	  if(aType[k]['value'] != undefined) {
	
	    var oDiv = document.createElement('div');

		 var sUserAgent = navigator.userAgent;
		 var bIsIE = sUserAgent.indexOf("compatible") > -1 && sUserAgent.indexOf("MSIE") > -1 ;
		 var sInputIE = '<input name="' + aKey + '" onclick="' + sOrderHiddenRadio + 'if(' + aType[k]['end'] + ') {getOrderPrice();} else '+ sOrderShowRadio + ' ;" />';
		 
       var oInput = document.createElement(bIsIE ? sInputIE : 'input'); // fix bug IE
	    oInput.setAttribute('type', 'radio');
       oInput.setAttribute('name', aKey);
	    oInput.setAttribute('value', aType[k]['value']);
	    oInput.setAttribute('id','id' + aKey + k);
	    var sOrderShowRadio = new String();
	    if(arguments[1] == undefined) sOrderShowRadio	= "showRadio('"+sNextType+"','"+aType[k]['value']+"')";
	      else                        sOrderShowRadio = "showRadio('"+sNextType+"','"+arguments[1]+"','"+aType[k]['value']+"')";
	    //process
	    sSendType1 = new String() ;
/*
     for (i=0; i<document.forms[0].type1.length; i++)
       if(document.forms[0].type1[i].checked)
         sSendType1 = document.forms[0].type1[i].value ;
*/
	    //sSendType1 = document.forms['order'].elements['type1'].data ;
	    oInput.setAttribute('onclick', sOrderHiddenRadio + "if(" + aType[k]['end'] + ") {getOrderPrice();} else "+sOrderShowRadio	+";");
	 
	    var sLabelIE = '<label for="id' + aKey + k + '"></label>';
	    var oLabel = document.createElement(bIsIE ? sLabelIE : 'label');  // fix bug IE
	    oLabel.setAttribute('for','id'+aKey+k);
 	    oLabel.setAttribute('id','idLabel'+aKey+k);
	 
       var oTxt = document.createTextNode(aType[k]['txt']);
		 
       oLabel.appendChild(oTxt);

	    oDiv.appendChild(oInput);
	    oDiv.appendChild(oLabel);
		 oDivGroup.appendChild(oDiv);
       //oDivBase.appendChild(oDiv);
	  }
   }
//	  var oHr = document.createElement('hr');	
//	  oDivBase.appendChild(oHr);

   oDivGroup.className = 'form-block';
   oDivBase.appendChild(oDivGroup);
}

function getOrderPrice(getOrderPrice)
{
  var iLangValue = document.forms['orderForm'].elements['iLangId'].value ;
  var iAreaValue = document.forms['orderForm'].elements['iCountryId'].value ;
  var iWeightValue = document.forms['orderForm'].elements['iProductsWeight'].value	;
	
  var elementRadio1 = document.forms['orderForm'].elements['type1'] ;
  var elementRadio2 = document.forms['orderForm'].elements['type2'] ;
  var elementRadio3 = document.forms['orderForm'].elements['type3'] ;
  
  sElementRadio1Value = new String();
  if(elementRadio1 == undefined) sElementRadio1Value = '' ;
    else sElementRadio1Value = getRadioValue(elementRadio1) ;
  
  sElementRadio2Value = new String();
  if(elementRadio2 == undefined)	sElementRadio2Value = '' ;
    else sElementRadio2Value = getRadioValue(elementRadio2) ;
	
  sElementRadio3Value = new String();	 
  if(elementRadio3 == undefined) sElementRadio3Value = '' ;
    else sElementRadio3Value = getRadioValue(elementRadio3) ;
  
  //document.getElementById('response').innerHTML = 'Lang ID: '+iLangValue + '<br/>' + 'Weight: '+iWeightValue + '<br/>' + 'elementRadio1: '+sElementRadio1Value + '<br/>' + 'elementRadio2: '+sElementRadio2Value + '<br/>' + 'elementRadio3: '+sElementRadio3Value ;
  //ajax
  process('order', iAreaValue, sElementRadio1Value, sElementRadio2Value, sElementRadio3Value, iWeightValue, iLangValue);
}

function getRadioValue(elementRadio)
{
  for (i=0; i<elementRadio.length; i++)
    if(elementRadio[i].checked)
      return elementRadio[i].value ;
}

function hiddenRadio()
{
   aKeyDel = arguments[0] ;
	if(arguments.length == 2) {
	  aType = a[aKeyDel][arguments[1]];
	  hiddenElement(aType, aKeyDel);
	  aKeyDel = 'type3'
	  hiddenElement(aType, aKeyDel);
	}
	if(arguments.length == 3) {
	  aType = a[aKeyDel][arguments[1]][arguments[2]];
	  hiddenElement(aType, aKeyDel);	
	}
}

function hiddenElement(aType, aKeyDel)
{
	for(var k=0 in aType) {
	  var oInput = document.getElementById('id'+aKeyDel+k);
     if(oInput != undefined) {
       //oInput.parentNode.removeChild(oInput);
		 var oDiv = oInput.parentNode;
		 var oDivGroup = oDiv.parentNode;
       var aH4 = oDivGroup.getElementsByTagName('h4');
		 var oH4 = aH4[0];
		 
		 oDivGroup.parentNode.removeChild(oDivGroup);
		 oH4.parentNode.removeChild(oH4);
	  }
	  /*
	  var oLabel = document.getElementById('idLabel'+aKeyDel+k);
     if(oLabel != undefined)
       oLabel.parentNode.removeChild(oLabel);
	  */
   }
}