/**
* Deklaracja zmiennych
*/
var xmlHttp;
var xmlPreviewHttp;
var lastEventsHttp;
var getDataHttp;

var actionParameters = new Array();
var actionParametersKeys = new Array();

var currentModule = "";
var currentAction = "";

var globalReturnModule = null;
var globalReturnAction = null;
var globalReturnTriggerModule = null;
var globalReturnTriggerAction = null;

function setMenuUnderline(object) {
  $('.menuLevel2').css('textDecoration', 'none');
  object.style.textDecoration = 'underline';  
}

function parseXmlValue(xml,tag) {
  var out = "";
  var startMark;
  var endMark;
  var startPosition;
  var endPosition;

  startMark = "<"+tag+">";
  endMark = "</"+tag+">";

  startPosition = xml.search(startMark);
  endPosition = xml.search(endMark);
  if (startPosition != -1 && endPosition != -1) {
    out = xml.substr(startPosition + startMark.length, endPosition - startPosition - startMark.length);
  }
  return out;
}

function reportPrint() {
  myWindow=window.open('print.php','','');
  myWindow.focus();
}

/**
 * Funkcja odswierzajaca zalaczniki
 */
function refreshAttachmentWindow() {
  
  xmlHttp = GetXmlHttpObject();

  if (xmlHttp == null) {
    alert ("Przeglądarka nie obsługuje standardu AJAX");
    return
  }

  var sendXML = "<?xml version='1.0' ?>\n";
  sendXML = sendXML + "<data>\n";
  sendXML = sendXML + "<module>attachmentsPreview</module>\n";
  sendXML = sendXML + "<action>browse</action>\n";
  sendXML = sendXML + "<id>"+document.getElementById('uid').value+"</id>\n";
 
  sendXML = sendXML + "</data>";

  var file = "ajax/execute.php";
  xmlHttp.onreadystatechange = refreshAttachmentWindowChanged;
  xmlHttp.open("POST",file,true);
  xmlHttp.send(sendXML);
}

function refreshAttachmentWindowChanged() {
  if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
    document.getElementById('attachmentsPanel').innerHTML = xmlHttp.responseText;
  }
}


/**
 * Ustawienie strony w rejestrze
 */
function setPage(module, limitSkip) {
  
  pushParameter('limitSkip', limitSkip);
  
  execute(module,'browse');
}

/**
 * WyÅwietlenie univPanel
 */
function showUnivPanel() {
  document.getElementById('univPanel').style.display = 'block';
}

/**
 * Ukrycie univPanel
 */
function hideUnivPanel() {
  document.getElementById('univPanel').style.display = 'none';
}


function getCompanyData(id) {
  if (id == 'null') {
    return;
  }

  getDataHttp = GetXmlHttpObject();

  if (getDataHttp == null) {
    alert ("Przeglądarka nie obsługuje standardu AJAX");
    return
  }

  var sendXML = "<?xml version='1.0' ?>\n";
  sendXML = sendXML + "<data>\n";
  sendXML = sendXML + "<module>companies</module>\n";
  sendXML = sendXML + "<action>getData</action>\n";
  sendXML = sendXML + "<id>"+id+"</id>\n";
  sendXML = sendXML + "</data>";

  var file = "ajax/execute.php";
  getDataHttp.onreadystatechange = getCompanyDataChanged;
  getDataHttp.open("POST",file,true);
  getDataHttp.send(sendXML);
}

function getCompanyDataChanged() {
  if (getDataHttp.readyState==4 || getDataHttp.readyState=="complete") {
  
    /*
     * Parsowanie danych
     */
     var ServiceAgreement = parseXmlValue(getDataHttp.responseText,'ServiceAgreement');
     var SAValidTo = parseXmlValue(getDataHttp.responseText,'SAValidTo');
     var AvaibleCalls = parseXmlValue(getDataHttp.responseText,'AvaibleCalls');
     var UsedCalls = parseXmlValue(getDataHttp.responseText,'UsedCalls');
   
     if (ServiceAgreement == 'yes') {
       document.getElementById('ServiceAgreement').innerHTML = 'Tak';
     }else {
       document.getElementById('ServiceAgreement').innerHTML = 'Nie';
     }
     
     var tCalls;
     tCalls = AvaibleCalls - UsedCalls;
     if (tCalls < 0) {
       document.getElementById('AvaibleCalls').innerHTML = "Limit przekroczony o " + (UsedCalls - AvaibleCalls) + " minut";
       tCalls = 0;
     }else {
       document.getElementById('AvaibleCalls').innerHTML = tCalls;       
     }
     
     var WarrantyDate = new Date();
     var CurrentDate = new Date();
       
     SAValidTo = SAValidTo * 1000;
     WarrantyDate.setTime(SAValidTo);
   
     var tString = WarrantyDate.getFullYear() + "-" + (WarrantyDate.getMonth()+1) + "-" + WarrantyDate.getDate();
   
     if (WarrantyDate.getTime() < CurrentDate.getTime()) {
       document.getElementById('WarrantyTerms').innerHTML = 'Wygasła ' + tString;
     }else {
       document.getElementById('WarrantyTerms').innerHTML = 'Ważna do ' + tString;
     }

    /*
     * Obsługa selektu Tryb naprawy
     */
     var tSelect = document.getElementById('RepairMode');
     /*
      * Oczyszczanie
      */
     tSelect.remove('warranty');
     tSelect.remove('sa');
     tSelect.remove('none');
     
     var y2=document.createElement('option');
     y2.text='Poza umową serwisową i gwarancją';
     y2.value='none';
     try {
       tSelect.add(y2,null); // standards compliant
     }catch(ex) {
       tSelect.add(y2); // IE only
     }
       
     if (ServiceAgreement == 'yes') {
       var y=document.createElement('option');
       y.text='Umowa serwisowa';
       y.value='sa';
       try {
       tSelect.add(y,null); // standards compliant
     }catch(ex) {
       tSelect.add(y); // IE only
     }
       tSelect.value = 'sa';
     }
     
     if (WarrantyDate.getTime() >= CurrentDate.getTime()) {
       var z=document.createElement('option');
       z.text='Gwarancja';
       z.value='warranty';
       try {
        tSelect.add(z,null); // standards compliant
        }catch(ex) {
        tSelect.add(z); // IE only
      }
       tSelect.value = 'warranty';
     }
   
  }
}

/**
 * Funkcja obsługi okna PREVEW
 * @param string module
 * @param string action
 * @param int id
 */
function preview(module,action,id) {

  if (id == 'null') {
    return;
  }

  xmlPreviewHttp = GetXmlHttpObject();

  if (xmlPreviewHttp == null) {
    alert ("Przeglądarka nie obsługuje standardu AJAX");
    return
  }

  var sendXML = "<?xml version='1.0' ?>\n";
  sendXML = sendXML + "<data>\n";
  sendXML = sendXML + "<module>"+module+"</module>\n";
  sendXML = sendXML + "<action>"+action+"</action>\n";
  sendXML = sendXML + "<id>"+id+"</id>\n";

  /*
  *Przepisz dodatkowe parametry do XML
  */
  var tCount;
  tCount = actionParameters.length;
  if (tCount > 0) {
    var tValue;
    var tKey;

    for (var tIndex=0;tIndex<tCount;tIndex++) {
      tKey = actionParametersKeys.pop();
      tValue = actionParameters.pop();
      
      sendXML = sendXML + "<"+tKey+">"+tValue+"</"+tKey+">\n";
      
    }
  
  }
  sendXML = sendXML + "</data>";

  var file = "ajax/execute.php";
  xmlPreviewHttp.onreadystatechange = previewChanged;
  xmlPreviewHttp.open("POST",file,true);
  xmlPreviewHttp.send(sendXML);
}

function previewChanged() {
  if (xmlPreviewHttp.readyState==4 || xmlPreviewHttp.readyState=="complete") {
  
    var tString;
  
    tString = '<div style="text-align: right">';
    tString = tString + '<img src="gfx/close.gif" class="link" onclick="hideUnivPanel();" />';
    tString = tString + '</div>';
    tString = tString + '<div>';
    tString = tString + xmlPreviewHttp.responseText;
    tString = tString + '</div>';
  
    document.getElementById('univPanel').innerHTML = tString;
    document.getElementById('univPanel').style.width = '700px';
    document.getElementById('univPanel').style.top = Math.round((document.body.clientHeight/2)-200)+'px';
    document.getElementById('univPanel').style.left = Math.round((document.body.clientWidth/2)-(700/2))+'px';
    
    showUnivPanel();
  }
}

/**
* Przygotowanie danych dla powiązania duplikatów
* @param int eventID
*/ 
function prepareDuplicateData(eventID) {

  var list = document.getElementsByName('assign');
  for (var i = 0; i < list.length; i++){
    if (list[i].checked) {
      pushParameter('add',list[i].value);
    }
  }

  execute('duplicates','assign',eventID);
  
}

function renderLastEvents() {

  if (document.getElementById('CompanyID').value == 'null') {
    document.getElementById('lastEventsPanel').style.display = "none";
    return true;
  }

  lastEventsHttp = GetXmlHttpObject();

  if (lastEventsHttp == null) {
    alert ("Przeglądarka nie obsługuje standardu AJAX");
    return
  }

  var sendXML = "";

  sendXML = sendXML + "<CompanyID>"+document.getElementById('CompanyID').value+"</CompanyID>";

  var file = "ajax/lastEvents.php";
  lastEventsHttp.onreadystatechange = renderLastEventsChanged;
  lastEventsHttp.open("POST",file,true);
  lastEventsHttp.send(sendXML);

}

function renderLastEventsChanged() {
  if (lastEventsHttp.readyState==4 || lastEventsHttp.readyState=="complete") {
    document.getElementById('lastEventsPanel').innerHTML = lastEventsHttp.responseText;
    document.getElementById('lastEventsPanel').style.display = "block";
  }
}

/**
 * Push parametru POST
 * @param id
 * @param value
 */
function pushParameter(id, value) {
  actionParameters.push(value);
  actionParametersKeys.push(id);
}

/**
 * Obsługa raportów
 * @param string class
 * @param string action
 */
function report(module, action) {
  
  var CompanyID = 0;
  
  if (document.getElementById('CompanyID')) {
    CompanyID = document.getElementById('CompanyID').value;
  }


  var startDate = document.getElementById('startDate').innerHTML;
  var endDate = document.getElementById('endDate').innerHTML;

  pushParameter('CompanyID', CompanyID);
  pushParameter('startDate', startDate);
  pushParameter('endDate', endDate);

  execute(module, action);
}

/**
* Przypisanie użytkownika do zgłoszenia
*/
function assignUserToEvent(id) {

  actionParameters.push(id);
  actionParametersKeys.push('EventID');

  actionParameters.push(document.getElementById('AssignedUserID').value);
  actionParametersKeys.push('AssignedUserID');

  execute('eventstatuses','assignUserToEvent',id);
}


function assignEventToMe(id) {

  actionParameters.push(id);
  actionParametersKeys.push('EventID');

  execute('eventstatuses','assignEventToMe',id);
}

function setEventDifficulty(id) {

  actionParameters.push(id);
  actionParametersKeys.push('EventID');

  actionParameters.push($('#Difficulty').val());
  actionParametersKeys.push('Difficulty');

  execute('events','setDifficulty',id);
}

function assignEventToQueue(id) {

  actionParameters.push(id);
  actionParametersKeys.push('EventID');

  execute('eventstatuses','assignEventToQueue',id);
}

/**
* Dodanie komentarza do zgłoszenia
*/
function prepareEventCommentData(module,action, id) {

  if (document.getElementById('CommentText').value == '') {
    alert('Pusty tekst komentarza');
    return false;
  }

  actionParameters.push(document.getElementById('CommentText').value);
  actionParametersKeys.push('Text');

  if (document.getElementById('VisibleToClient').checked) {
    actionParameters.push('yes');
  }else {
    actionParameters.push('no');
  }
  actionParametersKeys.push('VisibleToClient');
  
  actionParameters.push(id);
  actionParametersKeys.push('EventID');
  
  actionParameters.push(id);
  actionParametersKeys.push('id');
  
  actionParameters.push('null');
  actionParametersKeys.push('EventStatusID');

  execute(module,action, id);
}

/**
* Przygotowanie danych dla wystawienia statusu dla zgłoszenia
*/
function prepareEventStatusData(module, action, id) {

  if (document.getElementById('StatusSymbol').value == '') {
    return;
  }

  actionParameters.push(document.getElementById('StatusText').value);
  actionParametersKeys.push('Text');
  
  actionParameters.push(document.getElementById('StatusSymbol').value);
  actionParametersKeys.push('StatusSymbol');
  
  actionParameters.push(document.getElementById('StatusTime').value);
  actionParametersKeys.push('StatusTime');

  actionParameters.push(id);
  actionParametersKeys.push('EventID');
  
  actionParameters.push(id);
  actionParametersKeys.push('id');

  execute(module,action, id);
}

/**
* Przygotowanie danych dla prostego dodawanie błędów
*/
function prepareSimpleEventData(module,action, id) {

   if (document.getElementById('Title').value == '') {
    alert('Podaj tytuł zgłoszenia');
    return;
  }

  actionParameters.push(document.getElementById('uid').value);
  actionParametersKeys.push('uid');

  actionParameters.push(document.getElementById('Mode').value);
  actionParametersKeys.push('Mode');

  actionParameters.push(document.getElementById('Title').value);
  actionParametersKeys.push('Title');
  
  actionParameters.push(document.getElementById('Description').value);
  actionParametersKeys.push('Description');

  actionParameters.push(document.getElementById('EventCategoryID').value);
  actionParametersKeys.push('EventCategoryID');

  actionParameters.push(document.getElementById('DetectionDate').innerHTML);
  actionParametersKeys.push('DetectionDate');

  actionParameters.push(document.getElementById('TroubleUser').value);
  actionParametersKeys.push('TroubleUser');

  execute(module,action, id);
}

/**
*		Edycja
*/
function prepareEditEventData(module,action, id) {

  actionParameters.push(document.getElementById('Priority').value);
  actionParametersKeys.push('Priority');

  actionParameters.push(document.getElementById('Title').value);
  actionParametersKeys.push('Title');
  
  actionParameters.push(document.getElementById('Description').value);
  actionParametersKeys.push('Description');

  actionParameters.push(document.getElementById('RepairMode').value);
  actionParametersKeys.push('RepairMode');

  actionParameters.push(document.getElementById('Difficulty').value);
  actionParametersKeys.push('Difficulty');

  actionParameters.push(document.getElementById('EventCategoryID').value);
  actionParametersKeys.push('EventCategoryID');

  actionParameters.push(document.getElementById('DetectionDate').innerHTML);
  actionParametersKeys.push('DetectionDate');

  actionParameters.push(document.getElementById('TroubleUser').value);
  actionParametersKeys.push('TroubleUser');

  actionParameters.push(document.getElementById('Phone').value);
  actionParametersKeys.push('Phone');

  if (document.getElementById('VisibleToClient').checked) {
    actionParameters.push('yes');
  }else {
    actionParameters.push('no');
  }
  actionParametersKeys.push('VisibleToClient');    

  execute(module,action, id);
}

/**
* Przygotowanie danych do pełnego dodania błędu
*/
function prepareFullEventData(module,action, id) {

  if (document.getElementById('CompanyID') && document.getElementById('CompanyID').value == 'null') {
    alert('Wybierz firmę');
    return;
  }

  if (document.getElementById('Title').value == '') {
    alert('Podaj tytuł zgłoszenia');
    return;
  }

  actionParameters.push(document.getElementById('uid').value);
  actionParametersKeys.push('uid');

  actionParameters.push(document.getElementById('Mode').value);
  actionParametersKeys.push('Mode');
  
  actionParameters.push(document.getElementById('RepairMode').value);
  actionParametersKeys.push('RepairMode');

  actionParameters.push(document.getElementById('Title').value);
  actionParametersKeys.push('Title');
  
  actionParameters.push(document.getElementById('CompanyID').value);
  actionParametersKeys.push('CompanyID');
  
  actionParameters.push(document.getElementById('Description').value);
  actionParametersKeys.push('Description');

  actionParameters.push(document.getElementById('EventCategoryID').value);
  actionParametersKeys.push('EventCategoryID');

  actionParameters.push(document.getElementById('DetectionDate').innerHTML);
  actionParametersKeys.push('DetectionDate');

  actionParameters.push(document.getElementById('TroubleUser').value);
  actionParametersKeys.push('TroubleUser');

  actionParameters.push(document.getElementById('Difficulty').value);
  actionParametersKeys.push('Difficulty');

  actionParameters.push(document.getElementById('Phone').value);
  actionParametersKeys.push('Phone');

  if (document.getElementById('VisibleToClient').checked) {
    actionParameters.push('yes');
  }else {
    actionParameters.push('no');
  }
  actionParametersKeys.push('VisibleToClient');    

  actionParameters.push(document.getElementById('EventTypeSymbol').value);
  actionParametersKeys.push('EventTypeSymbol');
  
  /**
  * Dane rozmowy telefonicznej
  */
  if (document.getElementById('CallLength')) {
    actionParameters.push(document.getElementById('CallLength').value);
    actionParametersKeys.push('CallLength');
    
    actionParameters.push(document.getElementById('CallComment').value);
    actionParametersKeys.push('CallComment');
  }
  
  /**
  * Przypisanie użytkownika do zgłoszenia
  */ 
  if (document.getElementById('AssignedUserID')) {
    actionParameters.push(document.getElementById('AssignedUserID').value);
  }else {
    actionParameters.push('null');
  }
  actionParametersKeys.push('AssignedUserID');

  execute(module,action, id);
}

/**
* Przygotowanie danych dla obsługi grup użytkowników
*/
function prepareUsergroupData(module,action, id) {

  actionParameters.push(document.getElementById('Name').value);
  actionParametersKeys.push('Name');

  var tString = "";
  
  if (document.getElementById('Event[R]').checked) {
    tString = tString + 'R';
  }
  if (document.getElementById('Event[A]').checked) {
    tString = tString + 'A';
  }
  if (document.getElementById('Event[I]').checked) {
    tString = tString + 'I';
  }
  if (document.getElementById('Event[C]').checked) {
    tString = tString + 'C';
  }
  if (document.getElementById('Event[T]').checked) {
    tString = tString + 'T';
  }
  if (document.getElementById('Event[E]').checked) {
    tString = tString + 'E';
  }
  if (document.getElementById('Event[M]').checked) {
    tString = tString + 'M';
  }
  if (document.getElementById('Event[F]').checked) {
    tString = tString + 'F';
  }
  if (document.getElementById('Event[O]').checked) {
    tString = tString + 'O';
  }
  if (document.getElementById('Event[G]').checked) {
    tString = tString + 'G';
  }
  if (document.getElementById('Event[S]').checked) {
    tString = tString + 'S';
  }
  if (document.getElementById('Event[N]').checked) {
    tString = tString + 'N';
  }
  actionParameters.push(tString);
  actionParametersKeys.push('Event');
  
  tString = "";
  
  if (document.getElementById('Company[R]').checked) {
    tString = tString + 'R';
  }
  if (document.getElementById('Company[A]').checked) {
    tString = tString + 'A';
  }
  if (document.getElementById('Company[M]').checked) {
    tString = tString + 'M';
  }
  if (document.getElementById('Company[D]').checked) {
    tString = tString + 'D';
  }
  if (document.getElementById('Company[S]').checked) {
    tString = tString + 'S';
  }
  actionParameters.push(tString);
  actionParametersKeys.push('Company');
  
  tString = "";
  
  if (document.getElementById('Call[R]').checked) {
    tString = tString + 'R';
  }
  if (document.getElementById('Call[A]').checked) {
    tString = tString + 'A';
  }
  if (document.getElementById('Call[D]').checked) {
    tString = tString + 'D';
  }
  actionParameters.push(tString);
  actionParametersKeys.push('Call');
  
  tString = "";
  
  if (document.getElementById('User[R]').checked) {
    tString = tString + 'R';
  }
  if (document.getElementById('User[A]').checked) {
    tString = tString + 'A';
  }
  if (document.getElementById('User[M]').checked) {
    tString = tString + 'M';
  }
  if (document.getElementById('User[D]').checked) {
    tString = tString + 'D';
  }
  actionParameters.push(tString);
  actionParametersKeys.push('User');

  execute(module,action, id);
}

/*
* Przygotowanie danych użytkowników
*/
function prepareUserData(module,action, id) {
  
  if (document.getElementById('Name').value == '') {
    alert('Brak nazwy użytkownika');
    return;
  }
  
  if (document.getElementById('Login').value == '') {
    alert('Brak loginu użytkownika');
    return;
  }
  
  if (document.getElementById('PasswordA').value != document.getElementById('PasswordB').value) {
    alert('Różne hasła');
    return;
  }
  
  
  actionParameters.push(document.getElementById('Name').value);
  actionParametersKeys.push('Name');
  
  actionParameters.push(document.getElementById('Login').value);
  actionParametersKeys.push('Login');
  
  actionParameters.push(document.getElementById('Email').value);
  actionParametersKeys.push('Email');
  
  actionParameters.push(document.getElementById('Phone').value);
  actionParametersKeys.push('Phone');
  
  if (document.getElementById('CompanyID')) {
    actionParameters.push(document.getElementById('CompanyID').value);
    actionParametersKeys.push('CompanyID');
  }
  
  actionParameters.push(document.getElementById('UsergroupID').value);
  actionParametersKeys.push('UsergroupID');
  
  actionParameters.push(document.getElementById('PasswordA').value);
  actionParametersKeys.push('Password');
  
  execute(module,action, id);
}

/**
* Dodanie rozmowy
*/
function callAdd(companyID, eventID, eventStatusID) {
  
  actionParameters.push(companyID);
  actionParametersKeys.push('CompanyID');

  actionParameters.push(eventID);
  actionParametersKeys.push('EventID');

  actionParameters.push(eventStatusID);
  actionParametersKeys.push('EventStatusID');
  
  execute('calls','add');
  
}

/**
* Przygotowanie danych rozmów
*/
function prepareCallData(module,action, id) {

  actionParameters.push(document.getElementById('Mode').value);
  actionParametersKeys.push('Mode');

  actionParameters.push(document.getElementById('CompanyID').value);
  actionParametersKeys.push('CompanyID');

  actionParameters.push(document.getElementById('EventID').value);
  actionParametersKeys.push('EventID');

  actionParameters.push(document.getElementById('EventStatusID').value);
  actionParametersKeys.push('EventStatusID');

  actionParameters.push(document.getElementById('Comment').value);
  actionParametersKeys.push('Comment');
  
  actionParameters.push(document.getElementById('Phone').value);
  actionParametersKeys.push('Phone');

  actionParameters.push(document.getElementById('Name').value);
  actionParametersKeys.push('Name');

  actionParameters.push(document.getElementById('startDate').innerHTML + " " + document.getElementById('startHour').innerHTML);
  actionParametersKeys.push('StartTime');
  
  actionParameters.push(document.getElementById('endDate').innerHTML + " " + document.getElementById('endHour').innerHTML);
  actionParametersKeys.push('StopTime');

  execute('calls','addExe');
}

/*
* Przygotowanie danych firm
*/
function prepareCompanyData(module,action, id) {

   if (document.getElementById('Name').value == '') {
    alert('Podaj nazwÄ firmy');
    return;
  }

  actionParameters.push(document.getElementById('Name').value);
  actionParametersKeys.push('Name');
  
  actionParameters.push(document.getElementById('ServiceAgreement').checked?'yes':'no');
  actionParametersKeys.push('ServiceAgreement');
  
  actionParameters.push(document.getElementById('WarrantyStarts').innerHTML);
  actionParametersKeys.push('WarrantyStarts');

  actionParameters.push(document.getElementById('SAValidTo').innerHTML);
  actionParametersKeys.push('SAValidTo');
  
  actionParameters.push(document.getElementById('PhCount').value);
  actionParametersKeys.push('PhCount');

  actionParameters.push(document.getElementById('CallsSum').value);
  actionParametersKeys.push('CallsSum');
  
  actionParameters.push(document.getElementById('CallsPropagate').checked?'yes':'no');
  actionParametersKeys.push('CallsPropagate');

  var form = document.forms['company'];
  for (var i=0;i<form.elements.length;i++) {
    var elem = form.elements[i];
    if (elem.name && elem.name.match(/^t_/)) {
      var val = elem.value;
      if (elem.tagName=='SELECT') {
      } else {
        if (elem.type=='checkbox') {
          val = elem.checked?1:0;
        }
      }
      actionParameters.push(val);
      actionParametersKeys.push(elem.name);
    }
  }
  
  execute(module,action, id);
}

/*
* Przygotowanie danych kategorii metadanych
*/
function prepareMetadatatypeData(module,action, id) {

  actionParameters.push(document.getElementById('Name').value);
  actionParametersKeys.push('Name');
  actionParameters.push(document.getElementById('Type').value);
  actionParametersKeys.push('Type');
  actionParameters.push(document.getElementById('Values').value);
  actionParametersKeys.push('Values');
  if (document.getElementById('MetadataCategoryID')) {
	  actionParameters.push(document.getElementById('MetadataCategoryID').value);
	  actionParametersKeys.push('MetadataCategoryID');
  }
  
  execute(module,action, id);
}

/*
* Przygotowanie danych kategorii metadanych
*/
function prepareMetadatacategoryData(module,action, id) {

  actionParameters.push(document.getElementById('Name').value);
  actionParametersKeys.push('Name');
  
  execute(module,action, id);
}

/*
* Przygotowanie danych kategorii metadanych
*/
function prepareEventcategoryData(module,action, id) {

  actionParameters.push(document.getElementById('Priority').value);
  actionParametersKeys.push('Priority');

  actionParameters.push(document.getElementById('Name').value);
  actionParametersKeys.push('Name');
  
  if (document.getElementById('ParentID')) {
    actionParameters.push(document.getElementById('ParentID').innerHTML);
    actionParametersKeys.push('ParentID');
  }
  
  execute(module,action, id);
}

/**
* Obsługa głównego okna aplikacji
*/
function execute(module,action, id, limitSkip) {
  
  startProgressBar();
  
  /*
   * Ustaw trigger
   */
  if (currentModule == 'myView' && currentAction == 'browse') {
    if (module == 'events' && action == 'detail'){
      globalReturnTriggerModule = 'events';
      globalReturnTriggerAction = 'browse';
      globalReturnModule = 'myView';
      globalReturnAction = 'browse';
    }else {
      globalReturnTriggerModule = null;
      globalReturnTriggerAction = null;
      globalReturnModule = null;
      globalReturnAction = null;
    }
  }
  
  /*
   * Ustaw trigger
   */
  if (currentModule == 'events' && currentAction == 'browse') {
    if (module == 'events' && action == 'detail'){
      globalReturnTriggerModule = 'events';
      globalReturnTriggerAction = 'browse';
      globalReturnModule = 'events';
      globalReturnAction = 'browse';
    }else {
      globalReturnTriggerModule = null;
      globalReturnTriggerAction = null;
      globalReturnModule = null;
      globalReturnAction = null;
    }
  }
  
  /**
   * Reakcja na trigger
   */
  if (module == globalReturnTriggerModule && action == globalReturnTriggerAction) {
    module = globalReturnModule;
    action = globalReturnAction;
  }

  xmlHttp = GetXmlHttpObject();

  if (xmlHttp == null) {
    alert ("Przeglądarka nie obsługuje standardu AJAX");
    return
  }

  var sendXML = "<?xml version='1.0' ?>\n";
  sendXML = sendXML + "<data>\n";
  sendXML = sendXML + "<module>"+module+"</module>\n";
  sendXML = sendXML + "<action>"+action+"</action>\n";
  sendXML = sendXML + "<id>"+id+"</id>\n";

  /*
  *Przepisz dodatkowe parametry do XML
  */
  var tCount;
  tCount = actionParameters.length;
  if (tCount > 0) {
    var tValue;
    var tKey;
    
    for (var tIndex=0;tIndex<tCount;tIndex++) {
      tKey = actionParametersKeys.pop();
      tValue = actionParameters.pop();
      
      sendXML = sendXML + "<"+tKey+">"+tValue+"</"+tKey+">\n";
      
    }
  
  }
  
 // if (limitSkip != null) {
//	  alert(limitSkip);
//	  sendXML = sendXML + "<limitSkip>"+limitSkip+"</limitSkip>\n";
 // }
  
  /*
   * Sprawdz, czy wystąpuje formularz wyszukiwania
   */
  if (document.getElementById('searchText') && currentModule != "" && currentModule == module) {
    sendXML = sendXML + "<search>";
    sendXML = sendXML + "<value>" + document.getElementById('searchText').value + "</value>";
    sendXML = sendXML + "<in>" + document.getElementById('searchSelect').value + "</in>";
    sendXML = sendXML + "</search>";
  }
  
  /*
   * Selektor dat
   */
  if (document.getElementById('startDate') && currentModule != "" && currentModule == module) {
    sendXML = sendXML + "<startDate>" + document.getElementById('startDate').innerHTML + "</startDate>";
    sendXML = sendXML + "<endDate>" + document.getElementById('endDate').innerHTML + "</endDate>";
  }
  
  /*
   * Selektor firm
   */
  if (document.getElementById('SearchCompanyID') && currentModule != "" && currentModule == module) {
    sendXML = sendXML + "<SearchCompanyID>" + document.getElementById('SearchCompanyID').value + "</SearchCompanyID>";
  }
  
  /*
   * Selektor kategorii zgłoszeń
   */
  if (document.getElementById('SearchEventTypeID') && currentModule != "" && currentModule == module) {
    sendXML = sendXML + "<SearchEventTypeID>" + document.getElementById('SearchEventTypeID').value + "</SearchEventTypeID>";
  }
  
  /*
   * Selektor ostatniego statusu zgłoszenia
   */
  if (document.getElementById('SearchEventStatusSymbol') && currentModule != "" && currentModule == module) {
    sendXML = sendXML + "<SearchEventStatusSymbol>" + document.getElementById('SearchEventStatusSymbol').value + "</SearchEventStatusSymbol>";
  }
  
  /*
   * Selektor zamkniętych zgłoszeń
   */
  if (document.getElementById('SearchHideClosed') && currentModule != "" && currentModule == module) {
    sendXML = sendXML + "<SearchHideClosed>" + document.getElementById('SearchHideClosed').value + "</SearchHideClosed>";
  }

  /*
   * Selektor trudności zgłoszeń
   */
  if (document.getElementById('SearchDifficulty') && currentModule != "" && currentModule == module) {
    sendXML = sendXML + "<SearchDifficulty>" + document.getElementById('SearchDifficulty').value + "</SearchDifficulty>";
  }
  
  /*
   * Selektor sortowania
   */
  if (document.getElementById('SearchSortBy') && currentModule != "" && currentModule == module) {
    sendXML = sendXML + "<SearchSortBy>" + document.getElementById('SearchSortBy').value + "</SearchSortBy>";
    sendXML = sendXML + "<SearchSortDirection>" + document.getElementById('SearchSortDirection').value + "</SearchSortDirection>";
  }
  
  sendXML = sendXML + "</data>";

  var file = "ajax/execute.php";
  xmlHttp.onreadystatechange = executeChanged;
  xmlHttp.open("POST",file,true);
  xmlHttp.send(sendXML);
  currentModule = module;
  currentAction = action;
}

function executeChanged() {
  if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
    document.getElementById('mainPanel').innerHTML = xmlHttp.responseText;
    stopProgressBar();
  }
}

function clearFilter(module) {
  document.getElementById('searchText').value = '';
  $('#SearchCompanyID').val('null');
  $('#SearchEventTypeID').val('null');
  $('#SearchEventStatusSymbol').val('null');
  execute(module,'browse');
}

/**
* Zmiana widoczności menu
*/
function switchMenu(name) {

  $('.menuContainer').hide(200);
  $('#'+name).show(200);

}

/**
* Deklaracja obsługi AJAX
*/
function GetXmlHttpObject() {
  var objXMLHttp=null
  if (window.XMLHttpRequest)
  {
    objXMLHttp=new XMLHttpRequest()
  }
  else if (window.ActiveXObject)
  {
    objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
  }

  if (objXMLHttp == null) {
    alert("Browser does not support HTTP Request");
  }

  var objXMLHttp2 = {};
  objXMLHttp2.open = function (method, url, sync) {
    objXMLHttp2.url = url;
    objXMLHttp.open(method, url, sync);
  }
  objXMLHttp2.send = function (xml) {
    //progressWait(1);
    objXMLHttp.send(xml);
  }
  objXMLHttp.onreadystatechange = function () {
    if (objXMLHttp.readyState == 4) {
      //progressWait(-1);
    }
    if (objXMLHttp.readyState == 4) {
      if (objXMLHttp.responseText.match(/Maximum execution time of [0-9]* seconds exceeded/)) {
        alert('Przekroczono czas oczekiwania - '+objXMLHttp2.url);
      } else {    
        objXMLHttp2.readyState = objXMLHttp.readyState;
        objXMLHttp2.responseText = objXMLHttp.responseText;
        objXMLHttp2.responseXML = objXMLHttp.responseXML;
        objXMLHttp2.onreadystatechange();
      }
    }
  }

  return objXMLHttp2;
}

/**
* Funkcja maskująca pola tekstowe
*/
function mask(str,textbox,maxlen,digit_only) {
  var change;
  var original;

  change=0;
  original=str;
  
  //Sprawdzenie, czy tylko liczby
  if (digit_only == 1)
  {
    var valid=",.0123456789";
    var temp;
    var new_str;
    new_str="";
    

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      if (valid.indexOf(temp) != "-1")
      {
        //jesli jest liczba
        new_str=new_str+temp;
      }
    }
    str=new_str;
  }

  //Sprawdzenie, czy tylko liczby
  if (digit_only == 2)
  {
    var valid="0123456789";
    var temp;
    var new_str;
    new_str="";
    

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      if (valid.indexOf(temp) != "-1")
      {
        //jesli jest liczba
        new_str=new_str+temp;
      }
    }
    str=new_str;
  }
  
  //Sprawdzenie, czy tylko liczby
  if (digit_only == 3)
  {
    var valid="-0123456789";
    var temp;
    var new_str;
    new_str="";
    

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      if (valid.indexOf(temp) != "-1")
      {
        //jesli jest liczba
        new_str=new_str+temp;
      }
    }
    str=new_str;
  }
  
  //Sprawdzenie, czy tylko liczby
  if (digit_only == 4)
  {
    var valid="0123456789abcdefghijklmnopqrstuwvxyzABCDEFGHIJKLMNOPQRSTUWXVYZ_";
    var temp;
    var new_str;
    new_str="";
    
    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      if (valid.indexOf(temp) != "-1")
      {
        //jesli jest liczba
        new_str=new_str+temp;
      }
    }
    str=new_str;
  }
  
  //Sprawdzenie, czy tylko liczby
  if (digit_only == 5)
  {
    var valid="0123456789";
    var temp;
    var new_str;
    new_str="";
    

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      if (valid.indexOf(temp) != "-1")
      {
        //jesli jest liczba
        new_str=new_str+temp;
      }
    }
    str=new_str;
  }
  
  //Sprawdzenie, czy tylko znaki symboli na mobila
  if (digit_only == 6)
  {
    var valid="/abcdefghijklmnopqrstuwvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-_*.,;@|#$%&()[]{}";
    var temp;
    var new_str;
    new_str="";
    

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      if (valid.indexOf(temp) != "-1")
      {
        //jesli jest liczba
        new_str=new_str+temp;
      }
    }
    str=new_str;
  }
  
  //Sprawdzenie, czy tylko znaki symboli na mobila
  if (digit_only == 7)
  {
    var valid="ĄąĘęĆćÓóŁłŻżŹźŃńŚś \'\"/abcdefghijklmnopqrstuwvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-_*.,:;@|#$%&()[]{}?!=\n";
    var temp;
    var new_str;
    new_str="";
    

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      if (valid.indexOf(temp) != "-1")
      {
        //jesli jest liczba
        new_str=new_str+temp;
      }
    }
    str=new_str;
  }
  
  if (digit_only == 8)
  {
    var valid="ĄąĘęĆćÓóŁłŻżŹźŃńŚś \'\"abcdefghijklmnopqrstuwvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-_*.,;@|#$%&()[]{}=?!/";
    var temp;
    var new_str;
    new_str="";
    

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      if (valid.indexOf(temp) != "-1")
      {
        //jesli jest liczba
        new_str=new_str+temp;
      }
    }
    str=new_str;
  }
  
  //Sprawdzenie, czy tylko liczby
  if (digit_only == 9)
  {
    var valid=".0123456789";
    var temp;
    var new_str;
    var is_dot;
    
    is_dot = 0;
    
    new_str="";
    

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      //zamien , na .
      if (temp == ",")
      {
        temp = ".";
      }
     
      //sprawdz, czy jest juz drugi .
      if (temp == ".")
      {
        is_dot = is_dot +1;
      
        if (is_dot>1)
        {
          temp = "";
        }
      }
      
      if (valid.indexOf(temp) != "-1")
      {
        new_str=new_str+temp;
      }
    }
    str=new_str;
    if (str.length == 0)
    {
      str="0";
    }
  }
  
  if (digit_only == 10)
  {
    var valid="-.0123456789";
    var temp;
    var new_str;
    var is_dot;
    
    is_dot = 0;
    
    new_str="";
    

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      //zamien , na .
      if (temp == ",")
      {
        temp = ".";
      }
     
      //sprawdz, czy jest juz drugi .
      if (temp == ".")
      {
        is_dot = is_dot +1;
      
        if (is_dot>1)
        {
          temp = "";
        }
      }
      
      if (valid.indexOf(temp) != "-1")
      {
        new_str=new_str+temp;
      }
    }
    str=new_str;
    if (str.length == 0)
    {
      str="0";
    }
  }
  
  if (digit_only == "digit_dot")
  {
    var valid=".0123456789";
    var temp;
    var new_str;
    var is_dot;
    
    is_dot = 0;
    new_str="";

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      //zamien , na .
      if (temp == ",")
      {
        temp = ".";
      }
     
      //sprawdz, czy jest juz drugi .
      if (temp == ".")
      {
        is_dot = is_dot +1;
      
        if (is_dot>1)
        {
          temp = "";
        }
      }
      
      if (valid.indexOf(temp) != "-1")
      {
        new_str=new_str+temp;
      }
    }
    str=new_str;
    if (str.length == 0)
    {
      str="0";
    }
  }
  
  if (digit_only == "digit")
  {
    var valid="0123456789";
    var temp;
    var new_str;
    var is_dot;
    
    is_dot = 0;
    new_str="";

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      //zamien , na .
      if (temp == ",")
      {
        temp = ".";
      }
     
      //sprawdz, czy jest juz drugi .
      if (temp == ".")
      {
        is_dot = is_dot +1;
      
        if (is_dot>1)
        {
          temp = "";
        }
      }
      
      if (valid.indexOf(temp) != "-1")
      {
        new_str=new_str+temp;
      }
    }
    str=new_str;
    if (str.length == 0)
    {
      str="0";
    }
  }
  
  if (digit_only == "digit_dot_null")
  {
    var valid=".0123456789";
    var temp;
    var new_str;
    var is_dot;
    
    is_dot = 0;
    new_str="";

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      //zamien , na .
      if (temp == ",")
      {
        temp = ".";
      }
     
      //sprawdz, czy jest juz drugi .
      if (temp == ".")
      {
        is_dot = is_dot +1;
      
        if (is_dot>1)
        {
          temp = "";
        }
      }
      
      if (valid.indexOf(temp) != "-1")
      {
        new_str=new_str+temp;
      }
    }
    str=new_str;
    
  }
  
  if (digit_only == "digit_null")
  {
    var valid="0123456789";
    var temp;
    var new_str;
    var is_dot;
    
    is_dot = 0;
    new_str="";

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      
      if (valid.indexOf(temp) != "-1")
      {
        new_str=new_str+temp;
      }
    }
    str=new_str;
    
  }
  
  if (digit_only == "digit_dot_null_minus")
  {
    var valid=".-0123456789";
    var temp;
    var new_str;
    var is_dot;
    
    is_dot = 0;
    is_minus = 0;
    
    new_str="";

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      //zamien , na .
      if (temp == ",")
      {
        temp = ".";
      }
     
      //sprawdz, czy jest juz drugi .
      if (temp == ".")
      {
        is_dot = is_dot +1;
      
        if (is_dot>1)
        {
          temp = "";
        }
      }
      
      if (temp == "-")
      {
        is_minus = is_minus +1;
      
        if (is_minus>1 || i>0)
        {
          temp = "";
        }
      }
      
      if (valid.indexOf(temp) != "-1")
      {
        new_str=new_str+temp;
      }
    }
    str=new_str;
    
  }
  
  if (digit_only == "digit_null_minus")
  {
    var valid="-0123456789";
    var temp;
    var new_str;
    var is_dot;
    
    is_dot = 0;
    is_minus = 0;
    
    new_str="";

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      
      if (temp == "-")
      {
        is_minus = is_minus +1;
      
        if (is_minus>1 || i>0)
        {
          temp = "";
        }
      }
      
      if (valid.indexOf(temp) != "-1")
      {
        new_str=new_str+temp;
      }
    }
    str=new_str;
    
  }
  
  if (digit_only == "current_time") {
    var valid="0123456789";
    var temp;
    var new_str;
    var new_str2;
    var is_dot;
    
    is_dot = 0;
    new_str="";
    new_str2="";
    
    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      
      if (valid.indexOf(temp) != "-1")
      {
        new_str=new_str+temp;
      } 
      
      if (i == 1) new_str=new_str+":";
      if (i == 4) new_str=new_str+":";
    }
    
    str=new_str;
    
  }
  
  //Sprawdzenie, czy tylko liczby
  if (digit_only == "product_count") {
    var valid="0123456789";
    var temp;
    var new_str;
    var is_dot;
    
    is_dot = 0;
    
    new_str="";
    

    for (var i = 0; i < str.length; i++)
    {
      temp = "" + str.substring(i,i+1);
      //zamien , na .
      if (temp == ",")
      {
        temp = ".";
      }
     
      //sprawdz, czy jest juz drugi .
      if (temp == ".")
      {
        is_dot = is_dot +1;
      
        if (is_dot>1)
        {
          temp = "";
        }
      }
      
      if (valid.indexOf(temp) != "-1")
      {
        new_str=new_str+temp;
      }
    }
    str=new_str;
    
    if (str == "0") str="1";
    if (str.length == 0)
    {
      str="1";
    }
  }
  
  //obciecie do maksymalnej dlugosci
  if (str.length > maxlen)
  {
    str=str.substring(0,maxlen);
  }
  
  if (original!=str) change=1;
  
  if (change==1)
  {
    textbox.value = str;
  }
  
}

var timeoutCasted = false;

function stopProgressBar() {

  if ($('#barContainer').css('display') != 'none') {
    progressWait(-1);
  }
  
  $.modal.close();
}

function startProgressBar() {
  if (typeof(t) == 'undefined') {
    var t=setTimeout("stopProgressBar()",5000);
  }
  $('#barContainer').modal({});
  progressWait(1);
}

function progressWait(level, msg) {
  var r = progressWait.incLevel(level, msg);
  var currentLevel = r[0];
  var msg = r[1];
  
  var bc = progressWait.getBox();

  if (currentLevel>0) {
    bc.style.display = 'block';
    if (bc.parentNode && (bc.parentNode.className=='barContainerContainer')) {
      bc.parentNode.style.display = 'block';
    }

    if ($(bc).hasClass('center')) {
      var pc = bc.parentNode;
      
      var size = getWindowSize();
      bc.style.top =  Math.round((size[1] / 2) - 30) + 'px';
      bc.style.left =  Math.round((size[0] / 2)) - 150 + 'px';
      
    }
  } else { 
    bc.style.display = 'none';
    if (bc.parentNode && (bc.parentNode.className=='barContainerContainer')) {
      bc.parentNode.style.display = 'none';
    }
  }
  if (msg!='') {
    $('#barText', bc).text(msg);
  }
}

progressWait.prevImageState = -1;
progressWait.checkImages = function () {
  var imagesloaded = 1;
        
  var images = document.images;
  for (var i = 0;i<images.length;i++) {
    if(images[i].complete == false) {
      imagesloaded = 0;
      break;
    }
  }
  
  if (progressWait.prevImageState == -1) progressWait.prevImageState = imagesloaded;
  
  console.log(imagesloaded);
  
  if (progressWait.prevImageState != imagesloaded) {
    if (imagesloaded==1) {
      progressWait(-1); 
    } else {
      progressWait(1, 'Ładowanie obrazków');
    }
    progressWait.prevImageState = imagesloaded;
  }  
  
}

progressWait.progressLevel = 0;
progressWait.incLevel = function (level, msg) {
  if (window.parent && (window.parent!=window) && window.parent.progressWait) {
    return window.parent.progressWait.incLevel(level, msg);
  } else {
    progressWait.progressLevel+=level;
    if (level>0) {
      if (!msg || (msg==''))
        msg = 'Proszę czekać...';
      progressWait.msgs.push(msg);     
    } else
    if (level<0) {
      progressWait.msgs.pop();
    }    
    msg = 'Proszę czekać...';
    if (progressWait.msgs.length>0) {
      msg = progressWait.msgs[progressWait.msgs.length-1];
    }
    return [progressWait.progressLevel, msg];
  }
}
progressWait.getBox = function () {
  var box = null;
  box = document.getElementById('barContainer');
  if (!box) {
    if (window.parent && (window.parent!=window) && window.parent.progressWait) {
      box = window.parent.progressWait.getBox();
    } else {
      box = progressWait.createBox();
    }
  }
  return box;
}

progressWait.createBox = function() {
  var ret = document.createElement('div');
  var bt = document.createElement('span');
  bt.id = 'barText';
  ret.id = 'barContainer';
  var img = document.createElement('img');
  img.src = 'gfx/wait.gif';
  ret.appendChild(bt);
  ret.appendChild(img);
  var elem = document.getElementById('pasek_progress');
  if (elem) {
    elem.appendChild(ret);
  }
  
  return ret;
}
progressWait.msgs=[];

function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}


function getWindowSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return [ myWidth, myHeight ];
}
