// javaScript

// przechowuje odwołanie do obiektu XMLHttpRequest
if(xmlHttp == undefined)
	var xmlHttp = createXmlHttpRequestObject(); 

// zwraca obiekt XMLHttpRequest
function createXmlHttpRequestObject() 
{
  // przechowa odwołanie do obiektu XMLHttpRequest
  var xmlHttp;
  // jeśli uruchomiony jest Internet Explorer
  if(window.ActiveXObject)
  {
    try
    {
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e) 
    {
      // w przypadku, gdy przeglÄdarkÄ jest IE6 lub starsz
      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 identyfikator programu, aĹź jeden zadziaĹa
    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
    {
      try 
      { 
        // prĂłbuje utworzyÄ obiekt XMLHttpRequest
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      } 
      catch (e) {}
    }
    }
  }
  // jeĹli uruchomiona jest Mozilla lub inne przeglądarki
  else
  {
    try 
    {
      xmlHttp = new XMLHttpRequest();
    }
    catch (e) 
    {
      xmlHttp = false;
    }
  }
  // zwraca utworzony obiekt lub wyświetla komunikat o błędzie
  if (!xmlHttp)
    alert("Błšd podczas tworzenia obiektu XMLHttpRequest.");
  else 
    return xmlHttp;
}

function zapisCR(crvcheck,crvstatus_id,user)
{
	// ajaxowe wywolanie skrytpu do zapisu w bazie zmian w obiektach wskazanych parametrami
	// crvcheck - identyfikuje checkboxy wskazujšce dla ktorych pozycji zapisac status
	// crvstatus_id - identyfikator selecta z wybranym statusem
	var statussel = document.getElementById(crvstatus_id);
	var status = statussel.options[statussel.selectedIndex].value;

	var par = 'statusCR='+status+'&user='+user;
	var lista = '';
	
	if(crvcheck.substr(0,3) == 'crv'){
		var checkTab = $('.'+crvcheck);
		//alert('wybrany chkbox: '+checkTab[1].name+', '+checkTab[1].checked);
		var ile = checkTab.length;
		var i;
		for(i = 0; i < ile; i++){
			if(checkTab[i].checked == true){
				lista += checkTab[i].name+',';
			}
		}
	} else {
		var vss_id = crvcheck.substr(2);
		lista = 'ed'+vss_id+',';

	}
  
	if(lista.length > 0){
		lista = lista.substring(0,(lista.length-1));
		par += '&'+'chklist='+lista;

		if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0){
			//alert('cr_zapis.php?'+par);
			xmlHttp.open("GET", 'cr_zapis.php?'+par, true);
			// definiuje metodę obsługi odpowiedzi serwera
			xmlHttp.onreadystatechange = zapisCRResponse;
			// wysyła Ĺżądanie do serwera
			xmlHttp.send(null);
		} else {
			// jeśli połączenie jest zajęte, ponawia próbę po 1 sekundzie
			alert('obiekt zajęty.state='+xmlHttp.readyState+' Spróbuję za 3 sek');
			setTimeout('zapisCR('+crvcheck+','+crvstatus_id+')', 3000);
		}
	}

}
 
function zapisCRResponse()
{
  if (xmlHttp.readyState == 4) 
  {
    // status 200 oznacza pomyślne ukończenie transakcji
    if (xmlHttp.status == 200) 
    {
      var txtResponse = spec_chars_unesc(xmlHttp.responseText);
	 //alert('response='+txtResponse);
	  // w tekscie zwróconym z serwera jest lista checkboxów którym nalezy wyswietlic aktualny status 
	  var chkboxTab = txtResponse.split('*');
	  var i;
	  var len = chkboxTab.length;
	  for(i = 2; i < len; i++){
		  $('#'+chkboxTab[i]).text(chkboxTab[1]);
	  }
	  if(chkboxTab[0] != undefined){
		var CRselect = document.getElementById('statusCR_id');
		if(CRselect != undefined){
			var ilem = CRselect.options.length;
			var i;
			for(i=0; i < ilem;i++){  
				if(CRselect.options[i].value == chkboxTab[0]){
					CRselect.selectedIndex = i;
				}
			}
		} else {
			$('#statusCRspan').text(chkboxTab[0]);

		}
	  }

    }   
    // dla statusu protokołu HTTP innego niż 200 zgłasza błąd
    else 
    {
      alert("Wystąpił błąd dostępu do serwera: " + xmlHttp.statusText);
    }
  } 
}  

function addTableRow(listapol,editab_id,ltr)
{
	var polaTab = listapol.split(',');
	var lpol = polaTab.length;

// vssobject_id,comment,reviewer_action,final_date,reviewer_login

	var tab = document.getElementById(editab_id);
	var lwierszy = tab.rows.length;

	var dw = tab.insertRow(lwierszy);

	var opcje_daty = '<option value="w bieżšcej aktualizacji">w bieżšcej aktualizacji</option>'+
						'<option value="w najbliższej aktualizacji">w najbliższej aktualizacji</option>'+
						'<option value="zalecenie na przyszłoć">zalecenie na przyszłoć</option>'+
						'<option value="nie dotyczy">nie dotyczy</option>';
	var j;
	for(j = 0; j < lpol; j++){
		var td = dw.insertCell(j);
		if(j == 0)
			td.innerHTML = '';
		else {
			switch(polaTab[j]){
				case 'comment':
					td.innerHTML = '<textarea id="id_comment" name="'+polaTab[j]+'" rows=6 cols=50></textarea>';
					break; 
				case 'reviewer_action':
					td.innerHTML = '<textarea id="id_reviewer_action" name="'+polaTab[j]+'" rows=6 cols=50></textarea>';
					break; 
				case 'final_date':
					td.innerHTML = '<select id="id_final_date" name="'+polaTab[j]+'">'+opcje_daty+'</select>';
					break;
				default:
					break;
			}
		} 
	} 

	$('#'+'zapisz').css('display','inline');
	$('#'+'nowa').css('display','none');
	//alert($('#'+editab_id).attr('id'));
	//alert('dodajemy pola: '+listapol);

}

function zapisz_nowa(userid,vss_id)
{
	var comment = $('#'+'id_comment').val();
	comment = spec_chars_esc(comment.replace(/\'/g,"''"));
	var akcja   = $('#'+'id_reviewer_action').val();
	akcja = spec_chars_esc(akcja.replace(/\'/g,"''"));
	var fin_date= $('#'+'id_final_date').val();

	if(comment > '' || akcja > '' ){   // jesli jest co do zapisania
		if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0){
			//alert('cr_zapis.php?'+par);
			par = 'user='+userid+'&vss_id='+vss_id+'&comment='+comment+'&reviewer_action='+akcja+'&fin_dat='+fin_date;
			//alert(par);
			//xmlHttp.open("POST", 'cr_zapis.php', true);
			xmlHttp.open("GET", 'cr_zapis.php?'+par, true);
			// definiuje metodę obsługi odpowiedzi serwera
			xmlHttp.onreadystatechange = zapisCRnewResponse;
			// wysyła Ĺżądanie do serwera
			//xmlHttp.send(par);
			xmlHttp.send(null);
		} else {
			// jeśli połączenie jest zajęte, ponawia próbę po 1 sekundzie
			alert('serwer zajęty. status='+xmlHttp.readyState+' Spróbuj za chwilę');
			//setTimeout('zapisCR('+crvcheck+','+crvstatus_id+')', 3000);
		}

	} else {
		window.location.reload();
		return;
	}
}

function zapisCRnewResponse()
{
  if (xmlHttp.readyState == 4) 
  {
    // status 200 oznacza pomyślne ukończenie transakcji
    if (xmlHttp.status == 200) 
    {
      var txtResponse = spec_chars_unesc(xmlHttp.responseText);
	  //alert('response='+txtResponse);
	  // w tekscie zwróconym z serwera jest lista checkboxów którym nalezy wyswietlic aktualny status 
	  if(txtResponse.substring(0,6) == 'sukces'){
		//alert('sukces');
		window.location.reload();
		return;
	  } else {
		alert(txtResponse);
	  }
    } 
    // dla statusu protokołu HTTP innego niż 200 zgłasza błąd
    else 
    {
      alert("Wystąpił błąd dostępu do serwera: " + xmlHttp.statusText);
    }
  }
	
}
 
function zmien(crstatusid,nowaid,divid)
{
	var crstatus = document.getElementById(crstatusid);
	var crstatusval = crstatus.options[crstatus.selectedIndex].value;
	if(crstatusval == 'ZAKONCZONE' || crstatusval == 'NIE_PODLEGA'){
		$('#'+nowaid).css('display','none');
		$('.'+divid).css('display','none');
	} else {
		$('#'+nowaid).css('display','inline');
		$('.'+divid).css('display','inline');
	}

}

function delvsspos(vssobjectpos)
{
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0){
		//alert('cr_zapis.php?'+par);
		par = 'vsspos_id='+vssobjectpos;
		//alert(par);
		//xmlHttp.open("POST", 'cr_zapis.php', true);
		//alert('crpos_del.php?'+par);
		xmlHttp.open("GET", 'crpos_del.php?'+par, true);
		// definiuje metodę obsługi odpowiedzi serwera
		xmlHttp.onreadystatechange = crposDelResponse;
		// wysyła Ĺżądanie do serwera
		//xmlHttp.send(par);
		xmlHttp.send(null);
	} else {
		// jeśli połączenie jest zajęte, ponawia próbę po 1 sekundzie
		alert('serwer zajęty. status='+xmlHttp.readyState+' Spróbuj za chwilę');
		//setTimeout('zapisCR('+crvcheck+','+crvstatus_id+')', 3000);
	}

}
 
function crposDelResponse()
{
  if (xmlHttp.readyState == 4) 
  {
    // status 200 oznacza pomyślne ukończenie transakcji
    if (xmlHttp.status == 200) 
    {
      var txtResponse = spec_chars_unesc(xmlHttp.responseText);
	  //alert('response='+txtResponse);
	  // w tekscie zwróconym z serwera jest lista checkboxów którym nalezy wyswietlic aktualny status 
	  if(txtResponse.substring(0,6) == 'sukces'){
		//alert('sukces');
		window.location.reload();
		return;
	  } else {
		alert(txtResponse);
	  }
    } 
    // dla statusu protokołu HTTP innego niż 200 zgłasza błąd
    else 
    {
      alert("Wystąpił błąd dostępu do serwera: " + xmlHttp.statusText);
    }
  }

}

function zapiszKontakt(modul_id)
{
	var modSel = document.getElementById(modul_id);
	var pLiniaKontaktWart = modSel.options[modSel.selectedIndex].value;
 
	//alert("1.l.kont.="+pLiniaKontaktWart);
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0){
		//alert('cr_zapis.php?'+par);
		xmlHttp.open("GET", 'frstline_zapis.php?modul_id='+modul_id+'&plk='+pLiniaKontaktWart, true);
		// definiuje metodę obsługi odpowiedzi serwera
		xmlHttp.onreadystatechange = frstl_Response;
		// wysyła Ĺżądanie do serwera
		xmlHttp.send(null);
	} else {
		// jeśli połączenie jest zajęte, ponawia próbę po 1 sekundzie
		alert('obiekt zajęty.state='+xmlHttp.readyState+' Spróbuję za 3 sek');
		setTimeout('zapiszKontaktCR('+modul_id+')', 3000);
	}

}

function frstl_Response()
{
  if (xmlHttp.readyState == 4) 
  {
    // status 200 oznacza pomyślne ukończenie transakcji
    if (xmlHttp.status == 200) 
    {
      var txtResponse = xmlHttp.responseText;
    } 
    // dla statusu protokołu HTTP innego niż 200 zgłasza błąd
    else 
    {
      alert("Wystąpił błąd dostępu do serwera: " + xmlHttp.statusText);
    }
  }
}
