// JavaScript Document
var urlAdminServer =  'http://stskurier.pl/server/admin.php';
var urlUsersServer =  'http://stskurier.pl/server/users.php';
var serverPackegesUrl =  'http://stskurier.pl/server/packeges.php';

	var flashvars = {};
	var params = {wmode: 'Transparent'};
	var attributes = {};

  swfobject.embedSWF("../images/baner.swf", "baner", "990", "132", "9.0.0", "expressInstall.swf", flashvars, params, attributes);

  $('body').click(function() {
    $('#info_box').hide();
  });
  $('#main_col > dl > dt, #col_lista_zam > dl > dt').toggle(
      function () {
        $(this).css({backgroundImage:"url(../images/controls/ar_down.png)"});
        $(this).next('dd').hide();
      },
      function () {
        $(this).css({backgroundImage:"url(../images/controls/ar_up.png)"});
        $(this).next('dd').show();
      }
  );
	
  $('#loginForm').submit(function() {
    logIn ();
    return false;
  });
  $('#login_button').click(function() {
    logIn ();
    return false;
  });
  $('#go_cancel').click(function() {
    showMenu(checkUserState()?'logged':'start');
    $('#userInfo, #login_table').hide();
    clearForm();
    return false;
  });
  $('#go_login').click(function() {
    $('#login_table').toggle();
    $('#userInfo').hide();
    return false;
  });
  $('#go_logout').click(function() {
    clearSessionUser();
    showMenu('start');
    $('#lista_user').empty();
    return false;
  });


  $("#loading_box").ajaxStart(function(){
    $(this).show('slow');
  });
  $("#loading_box").ajaxStop(function(){
      $(this).hide('slow');
  });
  $("#loading_box").ajaxError(function(e, xhr, settings, exception){
      showMessage('Błąd komunikacji z serwerem!<br>ajax error! "' + xhr.responseText + '"');
  });


  function showMessage(tekst) {
    $('#info_box').html(tekst).show();
  }

  function showMenu(schema) {
    var fields = {zamow_kuriera: {start:        [$('#go_login, #url_register, #go_evalCosts, #go_sendOrder').parent()],
                                   logged:      [$('#go_logout, #go_evalCosts, #go_sendOrder, #go_clearSender, #go_clearRecipient, #url_editUsers, #url_editOrders').parent(), $('#loggedManualInfo')],
                                   unlogged:    [$('#go_login, #url_register, #go_evalCosts, #go_sendOrder').parent()],
																	 prices:      [$('#go_logout, #go_evalCosts, #go_sendOrder').parent()]
                                  },
									zamow_kuriera_test: {start:        [$('#go_login, #url_register, #go_evalCosts, #go_sendOrder').parent()],
                                   logged:      [$('#go_logout, #go_evalCosts, #go_sendOrder, #go_clearSender, #go_clearRecipient, #url_editUsers, #url_editOrders').parent(), $('#loggedManualInfo')],
                                   unlogged:    [$('#go_login, #url_register, #go_evalCosts, #go_sendOrder').parent()],
																	 prices:      [$('#go_logout, #go_evalCosts, #go_sendOrder').parent()]
                                  },
                  uzytkownik:    {start:      [$('#go_login, #go_register').parent()],
                                   logged:     [$('#go_logout, #go_editOwner, #go_newUser').parent()],
                                   unlogged:   [$('#go_login, #go_register').parent()],
                                   newUser:    [$('#go_insertUser, #go_cancel').parent()],
                                   register:   [$('#go_insertOwner, #go_cancel').parent(), $('#userPasses').parent(), $('#userPasses').parent().prev()],
                                   editOwner:  [$('#go_updateOwner, #go_cancel').parent()],
                                   editUser:   [$('#go_updateUser, #go_cancel').parent()]
                                   },
                  uzytkownik_test:{start:      [$('#go_login, #go_register').parent()],
                                   logged:     [$('#go_logout, #go_editOwner, #go_newUser').parent()],
                                   unlogged:   [$('#go_login, #go_register').parent()],
                                   newUser:    [$('#go_insertUser, #go_cancel').parent()],
                                   register:   [$('#go_insertOwner, #go_cancel').parent(), $('#userPasses').parent(), $('#userPasses').parent().prev()],
                                   editOwner:  [$('#go_updateOwner, #go_cancel').parent()],
                                   editUser:   [$('#go_updateUser, #go_cancel').parent()]
                                   },
                  cenniki:        {start:     [$('#go_login').parent()],
                                   unlogged:  [$('#go_login').parent()],
                  	               logged:    [$('#go_logout, #getUsers, #getDefaultPrices').parent()]
                                   },
                  zamowienia:     {start:     [$('#go_login').parent()],
                                   unlogged:  [$('#go_login').parent()],
                                   logged:    [$('#go_logout').parent()]
                                  },
                  zdarzenia:     {start:     [$('#go_login').parent()],
                                  newEvent:  [$('#insertEvent, #go_cancel').parent()],
                                  editEvent: [$('#updateEvent, #go_cancel').parent()],
                                  unlogged:  [$('#go_login').parent()],
                                  logged:    [$('#go_logout, #newEvent').parent()]
                                 }
                  }
    $('#userPasses').parent().hide();
    $('#userPasses').parent().prev().hide();
    $('#menu_users li, #menu_admin li').hide();
    $.each(fields[parseUri(location).fileBodyName][schema], function(i, val) {
      val.show();
    });
  }

  function getUsersList() {
    $('#lista_user').empty();
    if (!$('#login_table').data('owner') || $('#login_table').data('owner').priviliges == 'PRICES' ) return false;
    if (parseUri(location).fileBodyName == 'zamow_kuriera' || parseUri(location).fileBodyName == 'zamow_kuriera_test')
      $('#lista_user').append('<li><a href="?user=' + $('#login_table').data('owner').Id + '"><strong>MOJE DANE</strong></a></li>');
    	$.getJSON(urlUsersServer + '?action=getUsersList&owner_id=' + $('#login_table').data('owner').Id, 
			$("#adminOptions").serialize(),
			function(json){
      if (json.lista) {
        owner_id = json.owner;
        $.each(json.lista, function(index, value) {
          $('#lista_user').append('<li>' + value + '</li>');
        })
        $('#lista_user').show();
      }
    });
  }

  function getUserData(userId) {
//    hideCenterPanels();
    $.getJSON(urlUsersServer + '?action=getUserData&prep=1&&user=' + userId, function(json){
      clearUser();
      $('#userInfo').data({userID: json.Id});
      $.each(json, function(index, value) {
        $('#' + index + ' input').val(value);
      })
    });
  }

  function getSessionUser(fToDoIn, fToDoOut) {
    $.getJSON(urlUsersServer + '?action=getSessionUser', function(json){
      if (json) {
        $('#login_table').data(json);
        if ($('#login_table').data('owner').Id) {
          $('#login_table').hide();
          showMessage('Zalogowany jako: '  + $('#login_table').data('owner').short_name + ' (' + $('#login_table').data('owner').Id + ')');
          $('#userPasses').parent().hide();
          $('#userPasses').parent().prev().hide();
					if (json.owner.priviliges == 'PRICES') {
          	showMenu('prices');
					} else {
  //        getUsersList();
						showMenu('logged');
					}
          eval(fToDoIn);
          return;
        }
      }
      showMessage('Nieazalogowany...');
      showMenu('start');
      eval(fToDoOut);
    });
  }

  function clearSessionUser() {
    clearForm();
    $('#login_table').removeData('owner').hide();
    $.getJSON(urlUsersServer + '?action=unsetSession', function(json){
    });
  }

  function logIn(fToDoIn) {
    $.getJSON(urlUsersServer + '?action=user_login&login=' + $('#login').val() + '&pass=' + $('#password').val(), function(json){
      if (json.Id) {
        showMessage('poprawnie zalogowany');
        owner_id = json.Id;
        $('#login_table').data({owner: json.sesja.user});
        if (fToDoIn===undefined)
          getUsersList();
        else
          eval(fToDoIn);
        $('#login_table').hide();
				if (json.priviliges == 'PRICES') {
					showMenu('prices');
				} else {
					showMenu('logged');
				}
      } else {
        showMessage('błąd logowania, sprawdź hasło i użytkownika');
        showMenu('unlogged');
      }
    });
  }

  function parseUri(sourceUri){
    function gety (n, v) {
      this.name = n;
      this.value = v;
    }
    var uriPartNames = ["source","protocol","authority","domain","port","path","directoryPath","fileName","query","anchor"];
    var uriParts = new RegExp("^(?:([^:/?#.]+):)?(?://)?(([^:/?#]*)(?::(\\d*))?)?((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[\\?#]|$)))*/?)?([^?#/]*))?(?:\\?([^#]*))?(?:#(.*))?").exec(sourceUri);
    var uri = {};

    for(var i = 0; i < 10; i++){
        uri[uriPartNames[i]] = (uriParts[i] ? uriParts[i] : "");
    }

    if(uri.directoryPath.length > 0){
        uri.directoryPath = uri.directoryPath.replace(/\/?$/, "/");
    }

    if(uri.fileName.length > 0){
       fn = uri.fileName.split('.');
       uri.fileBodyName = fn[0];
       uri.fileBodyExt = fn[1];
    }

    var tablica = new (function t(){});
    var queries = uri.query.split('&');
    $(queries).each(function() {
        var st = this.split("=");
        tmp =  new gety(st[0], st[1]);
        tablica[tmp.name] = tmp.value;
    });
    uri['queries'] = tablica;

    return uri;
  }

function clearUser() {
  $('#main_col div table td input').val('');
  $('#userInfo').data({'userID':0});
}

function clearForm() {
  $('#userInfo input').val('');
}

function serializeForm (form) {
  var wartosci = {};
  $(form + ' input').each(function() {
		if ($(this).is('[type="checkbox"]')) 
			wartosci[$(this).parent().get(0).id] = $(this).is(':checked')?1:0;
		else 
    	wartosci[$(this).parent().get(0).id] = $(this).val();
  });
  return wartosci;
}


function checkContainerData(container) {
  var noErrors = true;
  $.each($(container + ' dd'), function() {
    error = checkField(this.id, this.id);
    noErrors = noErrors && error;
    if (error) {
      $('#' + this.id).prev().removeClass('alert');
    } else {
      $('#' + this.id).prev().addClass('alert');
      showMessage('Błędy w danych formularza');
    }
  });
  return noErrors;
}

function checkField(field, fieldtype) {
  if (fields[fieldtype][1][0])
    if (fields[fieldtype][1][1]=='s') return $('#' + field + ' select').get(0).selectedIndex != 0;
  val = wartosc(field);
  if (typeof(fields[fieldtype][1][0])=='object') {  //jeżeli pole jest tablicą sprawdzamy, czy zaznaczono pole nadrzÄ™dne
    if (wartosc(fields[fieldtype][1][0][0])) {      //sprawdzamy, czy zaznaczono pole nadrzędne
      if (!checkValue(fields[fieldtype][1][1], val)) return false;
      if (fields[fieldtype][1][0][1]) {
        wyrazenie = "wartosc('" + field + "') " + fields[fieldtype][1][0][1] + " " + fields[fieldtype][1][0][2];
        return eval(wyrazenie);
      }
      return true;
    } else {
      return true;
    }
  }
  required = fields[fieldtype][1][0];
  if (fields[fieldtype][1].length==1 && !required) return true; //jeżeli pole nie jest wymagane i nie ma wymogów typu
  if (!required && val=='') return true; //jeżeli pole nie jest wymagane  i jest puste
  return checkValue(fields[fieldtype][1][1], val);
}

function wartosc(nazwa_pola) {
  if ($('#' + nazwa_pola + ' input').is(':checkbox')) {
    if ($('#' + nazwa_pola + ' input').is(':checked'))
      return $('#' + nazwa_pola + ' input').val();
    else
      return 0;
  } else {
    return $('#' + nazwa_pola + ' input, #' + nazwa_pola + ' select').val();
  }
}

function checkValue(typ, val) {
//    console.log('typ: ', typ);
//    console.log('val: ', val);
  if (typ=='nip') return checkNIP(val);
  switch (typ) {
    case 'k': //kod pocztowy
      filter = /^[0-9]{2}-?[0-9]{3}$/;
      break;
    case 'e': //adres email
      filter = /^([a-z0-9]{1})([^\s\t\.@]*)((\.[^\s\t\.@]+)*)@([a-z0-9]{1})((([a-z0-9-]*[-]{2})|([a-z0-9])*|([a-z0-9-]*[-]{1}[a-z0-9]+))*)((\.[a-z0-9](([a-z0-9-]*[-]{2})|([a-z0-9]*)|([a-z0-9-]*[-]{1}[a-z0-9]+))+)*)\.([a-z0-9]{2,6})$/i;
      break;
    case 'n': //min dwie litery
      filter = /^([a-z- ęóąśłżźćńĘÓĄŚŁŻŹŃĆ]{2,35})$/i;
      break;
    case 't': //nr telefonu
      filter = /^\+?[0-9- ]{5,20}$/;
      break;
    case 'm': //min dwa znaki
      filter = /^.{2,200}$/;
      break;
    case 'i': //tylko cyfry
      filter = /^[0-9]{1,6}$/;
      break;
    case 'f': //zmiennoprzecinkowa
      filter = /^([0-9]{1,8})((\.[0-9]{0,2})?)$/;
      break;
    case 'd': //data
      filter = /^[0-9]{4}-?[0-9]{2}-?[0-9]{2}$/;
    default:
      return false;
  }
  return (val.match(filter)?true:false);
}

function checkNIP (nip) {
  nip = nip.replace(/[ -]/g,'');
  filter = /^[0-9]{10}$/;
  if (nip.match(filter)) {
    c = nip.split('');
    m = ((c[0]*6)+(c[1]*5)+(c[2]*7)+(c[3]*2)+(c[4]*3)+(c[5]*4)+(c[6]*5)+(c[7]*6)+(c[8]*7))%11;
    return (m==c[9]);
  }
  return false;
}

function checkUserState() {
 return ($('#login_table').data('owner')?true:false)

}

