/*!
 * Script Core for edi interface
 * Version: 1.6.20090826
 * Copyright (c) 2009 Grzegorz Zagrobelny
 * Revision: 20090826
 * Revision-From: 20081214
 */

var url = location.pathname;
var loaded = new Array();
var edtUserID = null;
var chartData = '';
var capsNotifier = false;

var WorkingPointer = {
    pointerID: 'working-pointer',
    enable: function() {
        document.getElementById(this.pointerID).style.display = 'block';
    },
    disable: function() {
        document.getElementById(this.pointerID).style.display = 'none';
    }
}

$(document).ready(function() {

        taskbar.init();

        $(window).unload(function() {
           
           $.post(url, {
                'action': 'acmKillSession',
                'doc': 'acm'
           },
            function(output) {
                var resources = eval('('+output+')');
                if (resources) {
                    if (!resources.result) {
                    alert('Próba zabicia sesji nie udana.');
                }
                }
            });

        });
    
        (evalScript = function(e){
            var h = evalScript.node,
            s = document.createElement("script");
            s.type = "text/javascript";
            s.text = e;
            h.appendChild(s);
            h.removeChild(s);
        }).node = document.getElementsByTagName("head")[0] || document.getElementsByTagName("*")[0];


	var editab = parseInt(readCookie('editab')) || 0;    

	$.tablesorter.addParser({
        id: 'JustNumbers',
        is: function(s) {
            return false;
        },
        format: function(s) {
            s = '' + s; //Make sure it's a string
            s = s.replace(new RegExp(/\D/g), "");
            s = s.replace(" ", "");
            s = s.replace(",", "");
            s = $.tablesorter.formatInt(s);
            //console.log("" + s);
            return s;
        },
        type: 'numeric'
    });   

    $('#smsCheckRequest').click(function() {
       smsCheckRequest(this);
    });

    $('#loader').click(function() {
        $(this).hide();
    });

    var helpers = document.getElementById('helpers_enable');
    if (helpers == null) {
        $.tooltip.unblock();
        $.fn.jGrowl.prototype.unblock();
    } else
        if (helpers.checked) {
            $.tooltip.unblock();
            $.fn.jGrowl.prototype.unblock();
        } else {
            $.tooltip.block();
            $.fn.jGrowl.prototype.block();
        }

    $('#helpers_enable').click(function() {
       //var ballon = $(this).attr('checked');
       if (this.checked) {
           $.tooltip.unblock();
           $.fn.jGrowl.prototype.unblock();
           acmUserHelpers(true);
       } else {
           $.tooltip.block();
           $.fn.jGrowl.prototype.block();
           acmUserHelpers(false);
       }
    });


        $('input[name="acmRole"]').click(function() {
                if ($(this).val() == 'adm') {
                    $('#acmPermList input').attr('disabled','disabled').attr('checked', 'checked');
                    $('#iMgr').show().next('a').show();
                    $('#acmAgentIDRow').hide();
		} else {
                    $('#acmPermList input').attr('disabled','').attr('checked', '');
                    $('#iMgr').hide().next('a').hide();
                if ($(this).val() == 'agt') {
                    $('#acmAgentIDRow').show();
                } else {
                    $('#acmAgentIDRow').hide();
                }
            }
        });

	$('a.checkbox').click(function() {		
		var id = $(this).prev('input').attr('id');
		var name = $(this).prev('input').attr('name');
		var obj = document.getElementById(id);
		if (name=='acmRole') {
			if ($(this).prev('input').val() == 'adm') {
				$('#acmPermList input').attr('disabled','disabled').attr('checked', 'checked');
				$('#iMgr').show().next('a').show();
                                $('#acmAgentIDRow').hide();
			} else {
				$('#acmPermList input').attr('disabled','').attr('checked', '');
				$('#iMgr').hide().next('a').hide();
                if ($(this).prev('input').val() == 'agt') {
                    $('#acmAgentIDRow').show();
                } else {
                    $('#acmAgentIDRow').hide();
                }
			}
			if (obj.checked) {			
				$(this).prev('input').attr('checked','');
			} else {
				$(this).prev('input').attr('checked','checked');
			}
		} else 
		if (obj.checked) {			
			$(this).prev('input').attr('checked','');
		} else {
			$(this).prev('input').attr('checked','checked');
		}
	});
	$('a.hh').mouseover(function() {
		highlightObject(this);		
	});
 
    $('#cList').sortable({revert: true, update: function(event, ui) {
                            uiSavePreferences();
                        }});
    $('#zList').sortable({revert: true, update: function(event, ui) {
                            uiSavePreferences();
                        }});

    $('a.innerAnchor').each(function() {
        $(this).children('sup').find('span[class="close-tab-button"]').click(function(event) {
            event.stopPropagation();
            closeBookmark(this);
        });
    });

    $('#interface').tabs({
                    selected: editab,
                    fxShow: { opacity: 'show' },
                    fxSpeed: 'fast',
                    onClick: function(sender) {
                        var tab_id = $(sender).attr('tab');
                        setCookie('editab', tab_id, 365);
                        
                        switch(tab_id) {
                            case '0':
                                $.jGrowl('Przełączyłeś się na zakładki tematyczne dotyczące Zamelu', {header: 'Wskazówka - Zamel', life: 5000});                                
                            break;
                            case '1':
                                $.jGrowl('Przełączyłeś się na zakładki tematyczne dotyczące Cetu', {header: 'Wskazówka - Cet', life: 5000});                               
                            break;
                            case '4':
                                $.jGrowl('Przełączyłeś się na zakładkę zarządzania kontami użytkowników.<br/><br/> Jeżeli tego dokonałeś musisz mieć uprawnienia administratora lub supervisora.\n\
 Moduł ten pozwala ci tworzyć kolejne konta o roli administrator lub użytkownik. Każdy konto musi być przypisane do oddziału firmy - to powoduje, że widzi jedynie dane ze swojego oddziału.<br/><br/>\n\
Rola administratora różni się od użytkownika tym, że może on tworzyć, edytować, usówać oraz blokować konta innych. <br/><br/>', {header: 'Wskazówka - Zarządzanie kontami', life: 15000});
                            break;
                            case '3':
                                $.jGrowl('Przełączyłeś się na zakładkę ustawień personalnych.<br/><br/> Za pomoca tego modułu, masz możliwość zmiany takich danych jak login czy hasło. W celu zmiany kliknij na odnośnik <i><b>Zmień</b></i> przy interesującej cię danej.', {header: 'Wskazówka - Ustawienia personalne', life: 5000});
                            break;
                            case '5':
                                $.jGrowl('Przełączyłeś się na zakładkę regulaminu użytkowania.<br/><br/> O wszelkich jego zmianach będziesz zawiadomiony.', {header: 'Wskazówka - Regulamin', life: 5000});
                            break;
                            case '2':
                                $.jGrowl('Zawsze się wyloguj, jeśli kończysz pracę z aplikacją. Unikniesz w ten sposób kłopotów związanych z nieuprawnionym dostępem osób trzecich do danych.', {header: 'Porada bezpieczeństwa', life: 10000});
                            break;
                        }


                        if ($(sender).attr('id') == 'btnLogout') {
                            $('#confirmLogout').dialog({
                                dialogClass: 'confirm',
                                modal: true,
                                resizable: false,
                                buttons: {
                                    "Anuluj": function() {
                                                $(this).dialog("close");
                                    },
                                    "Wyloguj": function() {
                                                $(this).dialog("close");
                                                logout();
                                    }
                               }
                            });
                            $('#confirmLogout').dialog('open');
                            return false;
                        }
                    },
                    onHide: function() {
                    },
                    onShow: function() {
                    }
                }); 

     $('#loginForm').tooltip();
     $('#btnZamel').tooltip();
     $('#btnCet').tooltip();
     $('#btnLogout').tooltip();
     $('#btnConditions').tooltip();
     $('#btnCreator').tooltip();
     $('#btnSettings').tooltip();
     $('#btnLoginManager').tooltip();
     $('#last_parse').tooltip();
     $('#user_login').tooltip();
     $('a.innerAnchor').tooltip();

    $('a.innerAnchor').click(function() {
        innerAnchorInit(this);
    });

    $('a.innerAnchor').each(function() {
        //var type = $(this).attr('type');
        //$(this).parent('li').draggable({  connectToSortable: '#'+type+'List', helper: 'clone' });
        //var ulList = $(this).parent('li').parent('ul');
        //$(this).parent('li').draggable({ axis: 'x', containment: ulList, cursor: 'e-resize' });

        $(this).children('sup').find('span[class="close-tab-button"]').click(function(event) {
            event.stopPropagation();
            closeBookmark(this);
        });
    });

    $('a.newTab').click(function() {
        var type = $(this).attr('type');
        var dialogID = '#'+type+'NewTab';
        if (!$(dialogID).dialog('isOpen')) {
           $(dialogID).dialog('open');
        }
        $(dialogID).effect('highlight');
        $(dialogID).dialog('moveToTop');
    });

    $('#zNewTab').dialog({
        autoOpen: false,
        buttons: { "Utwórz": function() {
                   var doc = $("#zNewTab input[name='newTabType']:checked").val();                   
                   var tabName = $("#zNewTab input[name='newTabName']").val();
                    cloneBookmark(doc, 'z', tabName);
                 },
                   "Zamknij": function() {
                    $(this).dialog('close');
                 }
                 }, width: 300,
                    open: function(event, ui) {
                          $.jGrowl('Zak\u0142adki mo\u017cesz tworzy\u0107, usówa\u0107 oraz przemieszcza\u0107 według uznania.',{header:'Wskazówka - Klonowanie zak\u0142adek'});
                    }
    });
    $('#cNewTab').dialog({
        autoOpen: false,
        buttons: { "Utwórz": function() {
                    var doc = $("#cNewTab input[name='newTabType']:checked").val();
                    var tabName = $("#cNewTab input[name='newTabName']").val();
                    cloneBookmark(doc, 'c', tabName);
                 },
                   "Zamknij": function() {
                    $(this).dialog('close');
                 }
                 }, width: 300,
                    open: function(event, ui) {
                          $.jGrowl('Zak\u0142adki mo\u017cesz tworzy\u0107, usówa\u0107 oraz przemieszcza\u0107 według uznania.',{header:'Wskazówka - Klonowanie zak\u0142adek'});
                    }
    });
 });

function loadTerms(sender)
{
    var href = $(sender).attr('url');
    $('#termsWindow .terms').load(href, {}, function(response) {
        $(this).html(response);
        $('#termsWindow').show('fast');
    });
}

function closeTermsWindow()
{
    $('#termsWindow').hide('fast');
}

function termsCheck()
{
    var termsChk = document.getElementById('termsAccept');
    if (termsChk.checked) {
        return true;
    } else {
        alert('Musisz zaakceptować regulamin, aby się zalogować.');
        return false;
    }
}

function acmSessionTicker()
{   WorkingPointer.enable();
    $.post(url, {
           'action': 'acmSessionForward',
           'doc': 'acm'
        }, function() {
            WorkingPointer.disable();
        });
}

function uiSavePreferences()
{
    var tabsPreferences = uiScanTabs();

    $.post(url, {
           'action': 'acmUserPreferencesSave',
           'doc': 'acm',
           'jPref': tabsPreferences
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
          if (!resources.result) {
            alert('Nie mog\u0119 zapisa\u0107 twoich preferencji. Zg\u0142o\u015b problem administratorowi.');
          }
	 }
    });
}

function uiScanTabs()
{
    var tabs = {};
    var selected = false;
    $('a.innerAnchor').each(function() {
        if ($(this).attr('divID') != 'none') {
            if ($(this).hasClass('selected')) {
                selected = true;
            } else {
                selected = false;
            }
            if (tabs[$(this).attr('type')] == undefined) tabs[$(this).attr('type')] = new Array();           
            var value = strip_tags(($(this).html()));   // strip html tags
            value = str_replace('\u000a', '', value);   // remove \n
            value = $.trim(value);                      // remove spaces
            tabs[$(this).attr('type')].push(Array($(this).attr('divID'),selected,value));
        }
    });
    var json = JSON.stringify(tabs, function (key, value) {
        if (typeof value === 'number' && !isFinite(value)) {
            return String(value);
        }
        return value;
    });
    return json;
}

function uiTabRename(sender)
{
    var obj = {};
    obj['doc'] = $(sender).attr('doc');
    obj['divID'] = $(sender).attr('divID');
    obj['class'] = $(sender).attr('class');
    obj['type'] = $(sender).attr('type');
    obj['id'] = $(sender).attr('id');
    obj['title'] = $(sender).attr('title');
    
    var json = JSON.stringify(obj, function (key, value) {
        if (typeof value === 'number' && !isFinite(value)) {
            return String(value);
        }        
        return value;
    });

    var tabname = strip_tags(($(sender).html()));   // strip html tags
    tabname = str_replace('\u000a', '', tabname);   // remove \n
    tabname = $.trim(tabname);                      // remove spaces
    
    var input = document.createElement('input');
    input.setAttribute('obj', escape(json));
    input.setAttribute('type', 'text');
    input.setAttribute('onblur', 'uiTabDoRename(this)');
    input.setAttribute('onkeypress', 'if (event.keyCode == 13) uiTabDoRename(this)');
    input.setAttribute('class', 'tab-rename');
    input.setAttribute('value', tabname);
    $(sender).parent('li').html(input);
    input.focus();
    return false;
}

function uiTabDoRename(sender)
{
    var obj = eval('('+unescape($(sender).attr('obj'))+')');
    var tabname = strip_tags(sender.value);
    var a = document.createElement('a');

    for (key in obj) {
        a.setAttribute(key, obj[key]);
    }
    a.textContent = tabname+'\n';
    a.setAttribute('ondblclick', 'uiTabRename(this)');
    a.setAttribute('onclick', 'innerAnchorInit(this)');
    a.setAttribute('href', '#');

    var sup = document.createElement('sup');
    var span = document.createElement('span');
    span.setAttribute('class', 'close-tab-button');
    var img = document.createElement('img');
    img.setAttribute('src', '../application/gfx/btnCloseTab.png');

    span.appendChild(img);
    sup.appendChild(span);
    a.appendChild(sup);

    var ulID = $(sender).parent('li').parent('ul').attr('id');

    $(sender).parent('li').html(a);
    uiSavePreferences();    
    
    $('#'+ulID).sortable({revert: true, update: function(event, ui) {
                                                    uiSavePreferences();
                                                  }});
}

function uiCoherenceUpdate()
{
    $(".coherence-field").each(function() {
        var withID = $(this).attr("with");
        var value = $(this).val();
        $("#"+withID).val(value);
    });
}

function findParentNodeByTag(parentTag, childObj) {
    var testObj = childObj.parentNode;
    var count = 1;
    while(testObj.tagName != parentTag) {
        testObj = testObj.parentNode;
        count++;
    }
    return testObj;
}

function activateInput(sender) {
    if (sender.checked) {
        $(sender).next('input[type="text"]').attr('disabled', '');
    } else {
        $(sender).next('input[type="text"]').attr('disabled', 'disabled');
    }
}

function activateTextInputs(sender, layerID)
{
    if (sender.checked && sender.value == '_par') {
        $('#'+layerID + ' input[type="text"]').attr('disabled', '');
    } else {
        $('#'+layerID + ' input[type="text"]').attr('disabled', 'disabled');
    }
}

function activatePassInputs(sender, layerID)
{
    if (sender.checked && sender.value == '_pas') {
        $('#'+layerID + ' input[type="password"]').attr('disabled', '');
    } else {
        $('#'+layerID + ' input[type="password"]').attr('disabled', 'disabled');
    }
}

function validatorInt(sender) {
    var value = parseInt(sender.value);
    if (!isNaN(value)) {
        sender.value = value;
    } else {
        alert('Wprowad\u017a liczbę całkowitą.');
        $(sender).val(0);
    }
}

function isNumeric(string)
{
    var numericExpression = /^[0-9]+$/;
    var reg = new RegExp(numericExpression);
    if (reg.test(string)) {
        return true;
    } else {
        return false;
    }
}

function validatorPosInt(sender)
{
    var value = sender.value;
    if (isNumeric(value)) {
        sender.value = value;
    } else {
        alert('Wprowad\u017a liczbę całkowitą bez znaku.');
        $(sender).val(0);
    }
}

function ladderFilterAdd(sender, divID)
{
    var input = document.createElement('input');
    input.setAttribute('type', 'text');
    input.setAttribute('class', 'ui-state-default input-visual');

    var buttonAdd = document.createElement('button');
    buttonAdd.setAttribute('onclick', 'ladderFilterAdd(this, \''+ divID +'\')');
    buttonAdd.innerHTML = '+';

    var buttonRemove = document.createElement('button');
    buttonRemove.setAttribute('onclick', 'ladderFilterRemove(this)');
    buttonRemove.innerHTML = '-';

    var span = document.createElement('span');
    span.appendChild(input);
    span.appendChild(buttonAdd);
    span.appendChild(buttonRemove);

    document.getElementById(divID+'ladder-filter').appendChild(span);
}

function ladderFilterRemove(sender)
{
    var toRemove = sender.parentNode;
    sender.parentNode.parentNode.removeChild(toRemove);
}

function ladderFilterClean(sender)
{
    $(sender).prev('button').prev('input').val('');
}

function ladderFilterCollect(divID)
{
    var i = 0;
    var values = Array();

    $('#'+divID+'ladder-filter input').each(function() {
        if ($(this).val() != '' && $(this).val() != '+') {
            values[i] = $(this).val();
            i++;
        }
    });

    var sFilterString = values.join('+');

    if (sFilterString != undefined && sFilterString != '') {
        return sFilterString;
    } else {
        return '';
    }
}

function closeBookmark(sender) {
    var confirmed = confirm('Napewno usun\u0105ć zakładkę?');
            if (confirmed) {
                var divID = $(sender).parent('sup').parent('a').attr('divID');
                var type = $(sender).parent('sup').parent('a').attr('type');
                var ulID = $(sender).parent('sup').parent('a').parent('li').parent('ul').attr('id');
                $(sender).parent('sup').parent('a').parent('li').remove();
                var innerMenu = document.getElementById(type+'InnerMenu');
                var childDiv = document.getElementById(divID);
                innerMenu.removeChild(childDiv);
                delete loaded[loaded.indexOf(divID+'Anchor')];
                // zapis ustawień
                uiSavePreferences();
                $('#'+ulID).sortable({revert: true, update: function(event, ui) {
                                                    uiSavePreferences();
                                     }});
            }
}

function cloneBookmark(what, type, tabName) {
    tabName = strip_tags(tabName);
    if (what != undefined) {
        if (tabName != '' && tabName != undefined) {
            var bookmarkNumber = $('#'+type+'NewtabAnchor').parent('li').parent('ul').children().length - 1;
            var listElem = document.createElement('li');
            var aElem = document.createElement('a');
            $(aElem).addClass('innerAnchor')
                    .addClass('doc-'+what.toLowerCase())
                    .attr('id', type+what+bookmarkNumber+'Anchor')
                    .attr('type', type)
                    .attr('divID', type+what+bookmarkNumber)
                    .attr('doc', what)
                    .attr('href', '#')
                    .attr('ondblclick', 'uiTabRename(this)')
                    .html(tabName)
                    .click(function() {
                        innerAnchorInit(this);
                    });
            
            var supElem = document.createElement('sup');
            var spanElem = document.createElement('span');
            var imgElem = document.createElement('img');

            $(spanElem).addClass('close-tab-button');
            $(imgElem).attr('src', '../application/gfx/btnCloseTab.png');
            spanElem.appendChild(imgElem);
            $(spanElem).click(function(event) {
                event.stopPropagation();
                closeBookmark(this);
            });
            supElem.appendChild(spanElem);
            aElem.appendChild(supElem);
            listElem.appendChild(aElem);
            //var ulList = $('a.innerAnchor').parent('li').parent('ul');
            //$(listElem).draggable({ axis: 'x', containment: ulList, cursor: 'e-resize' });
            $('#'+type+'NewtabAnchor').parent('li').before(listElem);

            var contentDiv = $(document.createElement('div')).addClass('innerContent')
                                                             .attr('id', type+what+bookmarkNumber);
            var navi = $(document.createElement('div')).addClass('navi');
            var content = $(document.createElement('div')).addClass('content');
            contentDiv.append(navi);
            contentDiv.append(content);
            $('#'+type+'NewtabAnchor').parent('li').parent('ul').parent('div').append(contentDiv);
            // zapis ustawień
            uiSavePreferences();
        } else {
            alert('Wpisz nazw\u0119 dla nowo tworzonej zakładki');
        }
    } else {
        alert('Wybierz rodzaj zak\u0142adki którą chcesz sklonować.');
    }
}

function innerAnchorInit(sender) {
    if (!$(sender).hasClass('selected') && !$(sender).hasClass('newTab')) {

           var type = $(sender).attr('type');
           var currentTab = $(sender).attr('id');
           var docType = $(sender).attr('doc');
           var currentName = $(sender).html();
           currentName = $.trim(currentName.substr(0, currentName.lastIndexOf('<sup>')));
           
           var toHide = $('#'+type+'InnerMenuTemp').val();
           var toShow = $(sender).attr('divID');
           if (toHide != '' && toHide != undefined) $('#'+toHide).hide();

           //$('#'+toShow).addClass('load-indicator');
           $('#'+toShow+' #content').hide('fast');
           $('#'+toShow+' #navi').hide('fast');
           $('#'+toShow+' #navi').css('border','none');
           $('#'+toShow).show();
           $('#'+type+'InnerMenuTemp').val(toShow);

           var prevTab = $('#'+type+'InnerMenuTemp').attr('prevTab');
           $('#'+prevTab).removeClass('selected');
           //$('#'+prevTab).addClass('normal');

           //$(sender).removeClass('normal');
           $(sender).addClass('selected');
           $('#'+type+'InnerMenuTemp').attr('prevTab',currentTab);

           // pobranie wszystkich danych (kiedy klikamy na subzakladke)
           // jesli taka zakladka nie zostala jeszcze pobrana
            if (!in_array(loaded, currentTab)) {
                getRecordsList(docType, toShow, type, currentName);
                loaded[loaded.length+1] = currentTab;
            } else {
                $('#'+toShow+' #content').show('fast');
                $('#'+toShow+' #navi').show('fast');
                $('#'+toShow+' #navi').css('border','1px solid #999');
                $('#'+toShow+' #navi').css('border-bottom','2px solid #999');
                $('#'+toShow+' #navi').css('border-right','2px solid #999');
                $('#'+toShow).removeClass('load-indicator');
            }
        }
}

function smsCheckRequest(sender) {
    document.getElementById('smsStatus').innerHTML = '';
    $(sender).html('<img src="../application/gfx/load.gif" alt="Sprawdzam status SMS..." />');
    $(sender).attr('title', 'Sprawdzam status SMS...');
    $.post(url, {'action': 'smsCheckRequest'},
                 function(output) {
                 var resources = eval('('+output+')');
                 if (resources) {
                    if (resources.result) {
                       document.getElementById('smsStatus').innerHTML = resources.status;
                    } else {
                      alert(resources.status);
                    }
                 }
                 $(sender).html('<img src="../application/gfx/sms.png" alt="Sprawdź status SMS" />');
                 $(sender).attr('title', 'Sprawdź status SMS');
    });
    return false;
}

function uiButtons() {
    $(function(){
        $(".fg-button:not(.ui-state-disabled)").unbind('mousedown');
        $(".fg-button:not(.ui-state-disabled)").unbind('mouseup');
        
		//all hover and click logic for buttons
		$(".fg-button:not(.ui-state-disabled)")
		.hover(
			function(){
				$(this).addClass("ui-state-hover");
			},
			function(){
				$(this).removeClass("ui-state-hover");
			}
		)
		.mousedown(function(){
				$(this).parents('.fg-buttonset-single:first').find(".fg-button.ui-state-active").removeClass("ui-state-active");
				if( $(this).is('.ui-state-active.fg-button-toggleable, .fg-buttonset-multi .ui-state-active') ){ $(this).removeClass("ui-state-active"); }
				else { $(this).addClass("ui-state-active"); }
		})
		.mouseup(function(){
			if(! $(this).is('.fg-button-toggleable, .fg-buttonset-single .fg-button,  .fg-buttonset-multi .fg-button') ){
				$(this).removeClass("ui-state-active");
			}
		});
	});
}

function uiInputs() {
    $(function() {
        $(".fg-input:not(.ui-state-disabled)").unbind('mousedown');
        $(".fg-input:not(.ui-state-disabled)").unbind('mouseup');

		//all hover and click logic for buttons
		$(".fg-input:not(.ui-state-disabled)")
		.hover(
			function(){
				$(this).addClass("ui-state-hover");
			},
			function(){
				$(this).removeClass("ui-state-hover");
			}
		)
		.mousedown(function(){
				$(this).parents('.fg-buttonset-single:first').find(".fg-button.ui-state-active").removeClass("ui-state-active");
				if( $(this).is('.ui-state-active.fg-button-toggleable, .fg-buttonset-multi .ui-state-active') ){ $(this).removeClass("ui-state-active"); }
				else { $(this).addClass("ui-state-active"); }
		})
		.mouseup(function(){
			if(! $(this).is('.fg-button-toggleable, .fg-buttonset-single .fg-button,  .fg-buttonset-multi .fg-button') ){
				$(this).removeClass("ui-state-active");
			}
		});
	});
}

function uiClearInput() {
    $(function() {
        $('.Html_imgClearBtn').click(function() {
            var prev = $(this).prev('input').attr('id');
            if (prev != undefined) {
                document.getElementById(prev).value = '';
            } else {
                var prev = $(this).prev('img').prev('input').attr('id');
                if (prev != undefined) {
                    document.getElementById(prev).value = '';
                }
            }
        });
    });
}

function nosubmit() {
    return !(window.event && window.event.keyCode == 13);
}

function reloadSite() {
	location.search = "?" + Math.random();
	location.reload();
}

function logout()
{    
    location.replace(location.protocol+'//'+location.hostname+location.pathname+'?logout');	
}

function uiBlock(id, text) {
    $('#'+id).block({
       message: '<h3 class="loader-text">'+text+'</h1>'
    });
}

function uiUnblock(id) {
    $('#'+id).unblock();
}

function setDefaultBookmark(innerAnchor) {
    var innerAnchorHandle = document.getElementById(innerAnchor);
    innerAnchorInit(innerAnchorHandle);
}

function setCallUnload()
{
    $.post(url, {
                'action': 'acmCallUnload',
                'doc': 'acm'
           });
}

function getRecordsList(what, divID, type, tabName) {
      
    $.ajax({
                method: "GET", url: url, data: { 'action': 'getRecordsList', 'doc': what, 'type':type, 'divID': divID, 'tabName': tabName},
                beforeSend:	function() {                    
                    uiBlock('interface', '\u0141aduj\u0119 dane...Prosz\u0119 czeka\u0107.');
                },
                complete: function() {                    
                    uiUnblock('interface');
                    //$('#'+divID).removeClass('load-indicator');
                },
                success: function(output) {
                    if (output) {
                        var resources = eval('('+output+')');
                        if (resources.result) {

                            document.getElementById(divID).innerHTML = '<div id="navi">'+resources.navi['html']+resources.preview['html']+'</div>'+
                                                                       '<div id="content">'+resources.content['html']+'</div>';

                           evalScript(resources.script.exec);

                            taskbar.titles[resources.navi['dialogID']] = $('#'+resources.navi['dialogID']).attr('title');
                            taskbar.icons[resources.navi['dialogID']] = 'parameters_small.png';
                            taskbar.dialogs[resources.navi['dialogID']] = $('#'+resources.navi['dialogID']).dialog(
                                {autoOpen: false,
                                 buttons: { "Aktualizuj": function() {                                            
                                       /*
                                       if (what == 'Reckoning') update(collectData(resources.navi['dialogID']), resources.navi['action'], what, divID, type);
                                       if (what == 'Invoice') update(collectData(resources.navi['dialogID']), resources.navi['action'], what, divID, type);             
                                       if (what == 'Order') update(collectData(resources.navi['dialogID']), resources.navi['action'], what, divID, type);
                                       if (what == 'Sales') update(collectData(resources.navi['dialogID']), resources.navi['action'], what, divID, type);
                                       if (what == 'Pricelist') update(collectData(resources.navi['dialogID']), resources.navi['action'], what, divID, type);
                                       if (what == 'Agents') update(collectData(resources.navi['dialogID']), resources.navi['action'], what, divID, type);
                                       */
                                      update(collectData(resources.navi['dialogID']), resources.navi['action'], what, divID, type);
                                            },
                                            "Zamknij i aktualizuj": function() {
                                                update(collectData(resources.navi['dialogID']), resources.navi['action'], what, divID, type, resources.navi['dialogID']);
                                                
                                            },
                                            "Zapisz parametry": function() {
                                                var dialogID = resources.qss['dialog2ID'];
                                                if (!$('#'+dialogID).dialog('isOpen')) {
                                                     $('#'+dialogID).dialog('open');
                                                }
                                                $('#'+dialogID).effect('highlight');
                                                $('#'+dialogID).dialog('moveToTop');
                                            }
                                          },
                                 width: 520,
                                 open: function(event, ui) {
                                       $.jGrowl('Po wybraniu parametrów wg których chcesz przeglądać faktury, naciśnij przycisk <i><b>Aktualizuj</b></i> w celu wczytania danych.<br>\n\
<br/>Możesz także zapisać ustalone parametry w celu ich późniejszego wykorzystania - kliknij na <i><b>Zapisz parametry</b></i>',{header: 'Wskazówka - Parametry przeglądania'});
                                 }
                                });

                             $('#'+resources.navi['dialogID']).bind('dialogclose', function(event, ui) {
                                uiCloseForm(this, divID, what);
                             });

                             if (resources.qss != undefined) {

                                taskbar.titles[resources.qss['dialog2ID']] = $('#'+resources.qss['dialog2ID']).attr('title');
                                taskbar.icons[resources.qss['dialog2ID']] = 'querystate2_small.png';
                                taskbar.dialogs[resources.qss['dialog2ID']] = $('#'+resources.qss['dialog2ID']).dialog(
                                {autoOpen: false,
                                  buttons: {"Zamknij": function() { $(this).dialog('close'); } }, width: 350,
                                 open: function(event, ui) {
                                       $.jGrowl('Wpisz nazwę dla swojej grupy parametrów i naciśnij <i><b>Zapisz</b></i>',{header:'Wskazówka - Grupy parametrów'});
                                 }
                                 });

                                taskbar.titles[resources.qss['dialogID']] = $('#'+resources.qss['dialogID']).attr('title');
                                taskbar.icons[resources.qss['dialogID']] = 'querystate_small.png';
                                taskbar.dialogs[resources.qss['dialogID']] = $('#'+resources.qss['dialogID']).dialog(
                                {autoOpen: false,
                                 buttons: { "Aktualizuj": function() {

                                       if (what == 'Reckoning') update(collectData(resources.navi['dialogID']), resources.navi['action'], what, divID, type);
                                       if (what == 'Invoice') update(collectData(resources.navi['dialogID']), resources.navi['action'], what, divID, type);
                                       if (what == 'Order') update(collectData(resources.navi['dialogID']), resources.navi['action'], what, divID, type);
                                       if (what == 'Sales') update(collectData(resources.navi['dialogID']), resources.navi['action'], what, divID, type);
                                       if (what == 'Pricelist') update(collectData(resources.navi['dialogID']), resources.navi['action'], what, divID, type);
                                       if (what == 'Agents') update(collectData(resources.navi['dialogID']), resources.navi['action'], what, divID, type);

                                   },
                                            "Zamknij": function() { $(this).dialog('close'); }
                                          },
                                 width: 500,
                                 open: function(event, ui) {
                                       $.jGrowl('Jeżeli zapisywałeś już parametry, możesz teraz wybrać zapisaną grupę parametrów. <br/><br/>Po wybraniu jej z listy rozwijanej naciśnij <i><b>Wczytaj</b></i>. Jeśli jakaś grupa jest już nieaktualna wybierz ją i naciśnij <i><b>Usuń</b></i>. <br/><br/> Po wczytaniu parametrów okno parametrów automatycznie sie zaktualizuje. <br/><br/> Możesz teraz skorzystać z przycisku <i><b>Aktualizuj</b></i> w celu przefiltrowania wyników.',{header:'Wskazówka - Grupy parametrów'});
                                 }
                                });
                             }

                             if (resources.exportXLS != undefined) {

                                taskbar.titles[resources.exportXLS.dialogID] = $('#'+resources.exportXLS.dialogID).attr('title');
                                taskbar.icons[resources.exportXLS.dialogID] = 'xls.png';
                                taskbar.dialogs[resources.exportXLS.dialogID] = $('#'+resources.exportXLS.dialogID).dialog(
                                {autoOpen: false,
                                 buttons: { "Eksportuj": function() {
                                        var info = resources.exportXLS.fieldsID.info;
                                        exportXLS(collectInputData(resources.exportXLS.dialogID, 'json'), what, type, info, divID);
                                   },
                                            "Zamknij": function() { $(this).dialog('close'); }
                                          },
                                 width: 520,
                                 open: function(event, ui) {
                                       $.jGrowl('Wpisz ile stron tabeli chcesz wyeksportować lub pozostaw pole puste, jeśli wszystkie i naciśnij przycisk <i><b>Eksportuj</b></i>',{header:'Wskazówka - Eksport do pliku XLS'});
                                 }
                                });
                             }

                             if (resources.exportPDF != undefined) {
                                taskbar.titles[resources.exportPDF.dialogID] = $('#'+resources.exportPDF.dialogID).attr('title');
                                taskbar.icons[resources.exportPDF.dialogID] = 'pdf.png';
                                taskbar.dialogs[resources.exportPDF.dialogID] = $('#'+resources.exportPDF.dialogID).dialog(
                                {autoOpen: false,
                                 buttons: { "Eksportuj": function() {                                        
                                        var info = resources.exportPDF.fieldsID.info;                                        
                                        exportPDF(collectInputData(resources.exportPDF.dialogID, 'json'),what, type, info, divID);
                                   },
                                            "Zamknij": function() { $(this).dialog('close'); }
                                          },
                                 width: 520,
                                 open: function(event, ui) {
                                       $.jGrowl('Wpisz ile stron tabeli chcesz wyeksportować lub pozostaw pole puste, jeśli wszystkie i naciśnij przycisk <i><b>Eksportuj</b></i>',{header:'Wskazówka - Eksport do pliku PDF'});
                                 }
                                });
                             }

                             if (resources.charts != undefined) {

                                taskbar.titles[resources.charts.dialogID] = $('#'+resources.charts.dialogID).attr('title');
                                taskbar.icons[resources.charts.dialogID] = 'charts_small.png';
                                taskbar.dialogs[resources.charts.dialogID] = $('#'+resources.charts.dialogID).dialog(
                                {autoOpen: false,
                                 buttons: { 
                                            "Zamknij": function() { $(this).dialog('close'); },
                                            "Eksportuj do pliku": function() { save_image(divID); }
                                          },
                                 width: 695,
                                 open: function(event, ui) {
                                       $.jGrowl('Generowanie wykresów zawsze odbywa się w oparciu o parametry z okna parametry przeglądania.<br/><br/> Gdy generujesz wykres ze wszystkich grup towarowych, jest to rozkład procentowy. Gdy generujesz wykres z konkretnej grupy towarowej musisz najpierw zadać zakres czasowy, w którym grupa będzie analizowana. <br/><br/>Po nadaniu parametrów, wybraniu grupy oraz okresleniu typu wykresu za pomocą ikon naciśnij <i><b>Wygeneruj wykres</b></i>',{header: 'Wskazówka - Wykresy', life: 15000});
                                 }
                                });

                                $('.chartType').tooltip();
                             }

                             if (resources.colView != undefined) {

                                taskbar.titles[resources.colView.dialogID] = $('#'+resources.colView.dialogID).attr('title');
                                taskbar.icons[resources.colView.dialogID] = 'column_small.png';
                                taskbar.dialogs[resources.colView.dialogID] = $('#'+resources.colView.dialogID).dialog(
                                {autoOpen: false,
                                 buttons: {
                                            "Zamknij": function() { $(this).dialog('close'); }
                                          },
                                 width: 500,
                                 open: function(event, ui) {
                                       $.jGrowl('Klikając na parafki włączasz lub wyłączasz kolumny z widoku tabeli. <br/><br/> Jeśli niektóre kolumny nie są ci potrzebne możesz je w ten sposób wyłączyć.',{header:'Wskazówka - Widok tabeli'});
                                 }
                                });
                                $('#'+resources.colView['dialogID']+' .col-switch').click(function() {
                                    uiColswitch(this, divID);
                                });
                             }

                             if (resources.cascribe != undefined) {
                                taskbar.titles[resources.cascribe['dialogID']] = $('#'+resources.cascribe['dialogID']).attr('title');
                                taskbar.icons[resources.cascribe['dialogID']] = 'modify_small.png';
                                taskbar.dialogs[resources.cascribe['dialogID']] = $('#'+resources.cascribe['dialogID']).dialog(
                                {autoOpen: false,
                                 buttons: {
                                            "Zamknij": function() { $(this).dialog('close'); },
                                            "Przypisz": function() {
                                                cascribeProducts(resources.cascribe.tableID, resources.cascribe.selectID, divID, what, type, resources.cascribe.dialogID,collectData(resources.cascribe.params));
                                            }
                                          },
                                 width: 820,
                                 open: function(event, ui) {
                                       $.jGrowl('Wybierz grupę towarową, po czym zaznacz parafkami jakie towary do niej przynależą. Gdy zakończysz zaznaczać, kliknij na przycisk <i><b>Przypisz...</b></i> aby przypisać nierozpoznane towary do danej grupy.',{header:'Wskazówka - Przypisywanie towarów'});
                                 }
                                });
                             }
                           

                                $('#'+divID+' #navi a').click(function() {
                                    var dialogID = $(this).attr('dialogID');

                                    if (!$('#'+dialogID).dialog('isOpen')) {
                                      $('#'+dialogID).dialog('open');
                                    }
                                    $('#'+dialogID).effect('highlight');
                                    $('#'+dialogID).dialog('moveToTop');
                                });
                             

                            if (resources.preview != undefined) {
                                $('#'+resources.preview.dialogID).css('overflow-y', 'auto');

                                taskbar.titles[resources.preview.dialogID] = $('#'+resources.preview.dialogID).attr('title');
                                taskbar.icons[resources.preview.dialogID] = 'invoice24.png';
                                taskbar.dialogs[resources.preview.dialogID] = $('#'+resources.preview.dialogID).dialog({
                                        autoOpen: false,
                                        resizable: true,
                                        buttons: { 'OK': function() {
                                                            $(this).dialog('close');                                                            
                                                         },
                                                   'Drukuj': function() {
                                                       if (resources.preview.layerID != undefined) {
                                                            uiPrintLayer(resources.preview.dialogID, resources.preview.layerID);
                                                       } else {
                                                           alert('Brak możliwości druku.');
                                                       }
                                                   }
                                                 },
                                        width: 460,
                                 open: function(event, ui) {
                                       $.jGrowl('Podgląd jest elektroniczną reprezentacją danych w dokumentach.<br/><br/> Jest to pomocne narzędzie, jeśli chcesz wyświetlić szczegóły interesującej cię pozycji.',{header:'Wskazówka - podgląd dokumentu'});
                                 }
                                });
                            }

                            if (resources.salesAdjustment != undefined) {

                                taskbar.titles[resources.salesAdjustment.dialogID] = $('#'+resources.salesAdjustment.dialogID).attr('title');
                                taskbar.icons[resources.salesAdjustment.dialogID] = 'adjustment_small.png';
                                taskbar.dialogs[resources.salesAdjustment.dialogID] = $('#'+resources.salesAdjustment.dialogID).dialog({
                                        autoOpen: false,
                                        resizable: true,
                                        buttons: { "Zamknij": function() {
                                                        $(this).dialog('close');
                                                    },
                                                   "Zapisz": function() {
                                                       //adjustmentUpload(resources.salesAdjustment.dialogID, divID, what, type);
                                                       salesDataUpload(resources.salesAdjustment.dialogID,
                                                                       divID,
                                                                       what,
                                                                       type,
                                                                       resources.salesAdjustment.action);
                                                   }
                                                 },
                                        width: 460,
                                 open: function(event, ui) {
                                       $.jGrowl('Korekta obrotów dla przedst.',{header:'Wskazówka - korekta obrotów przedstawicieli'});
                                 }
                                });
                            }

                            if (resources.salesTargets != undefined) {

                                taskbar.titles[resources.salesTargets.dialogID] = $('#'+resources.salesTargets.dialogID).attr('title');
                                taskbar.icons[resources.salesTargets.dialogID] = 'sales_targets_small.png';
                                taskbar.dialogs[resources.salesTargets.dialogID] = $('#'+resources.salesTargets.dialogID).dialog({
                                        autoOpen: false,
                                        resizable: true,
                                        buttons: { "Zamknij": function() {
                                                        $(this).dialog('close');
                                                    },
                                                   "Zapisz": function() {
                                                       salesDataUpload(resources.salesTargets.dialogID,
                                                                       divID,
                                                                       what,
                                                                       type,
                                                                       resources.salesTargets.action);
                                                   }
                                                 },
                                        width: 460,
                                 open: function(event, ui) {
                                       $.jGrowl('Sprzedaż docelowa dla przedst.',{header:'Wskazówka - sprzedaż docelowa przedstawicieli'});
                                 }
                                });
                            }

                            

                                 // styling buttons (ui framework support)
                                 uiButtons();
                                 uiInputs();
                                 uiClearInput();

                                 $('#'+divID+' #navi').show('fast');
                                 $('#'+divID+' #content').show('fast');
                                 $('#'+divID+' #navi').css('border','1px solid #999');
                                 $('#'+divID+' #navi').css('border-bottom','2px solid #999');
                                 $('#'+divID+' #navi').css('border-right','2px solid #999');

                                 // buttons tooltip +type+
                                 $('#'+divID+'-button-param-'+what.toLowerCase()).tooltip();
                                 $('#'+divID+'-button-state-'+what.toLowerCase()).tooltip();
                                 $('#'+divID+'-button-xls-'+what.toLowerCase()).tooltip();
                                 $('#'+divID+'-button-pdf-'+what.toLowerCase()).tooltip();
                                 $('#'+divID+'-button-chart-'+what.toLowerCase()).tooltip();
                                 $('#'+divID+'-button-table-'+what.toLowerCase()).tooltip();
                                 $('#'+divID+'-button-tabclose-'+what.toLowerCase()).tooltip();
                                 $('#'+divID+'-button-starter-'+what.toLowerCase()).tooltip();
                                 $('#'+divID+'-button-cascribe-'+what.toLowerCase()).tooltip();
                                 $('#'+divID+'-button-adjustment-'+what.toLowerCase()).tooltip();
                                 $('#'+divID+'-button-salestargets-'+what.toLowerCase()).tooltip();
                                 
                                 // document count, datepicker and clear button tooltip
                                 $('.documentCount').tooltip();
                                 $('.ui-datepicker-trigger').tooltip();
                                 $('.Html_imgClearBtn').tooltip();

                        } else {
                            alert('Bl\u0105d pobierania danych. Brak odpowiedzi serwera. Nastąpi przeładowanie aplikacji.');
                            reloadSite();
                        }

                        $('#'+divID).removeClass('load-indicator');
                    } else {
                        $('#'+divID).removeClass('load-indicator');                        
                    }
                }
    });
}

function capLock(e, value) {
    if(e.keyCode >= 48 && e.keyCode <= 57) return;
    if(e.keyCode < 65 || e.keyCode > 90 ) return;

    var _last = value.substring(value.length - 1, value.length);
    if(_last.charCodeAt(0) >= 48 && _last.charCodeAt(0) <= 57) return;
    if(_last == _last.toUpperCase() && e.shiftKey == false) {
        if (!capsNotifier) {
            $.jGrowl('Masz w\u0142\u0105czony <i><b>CapsLock</b></i>.',{header: 'Wskazówka - Uwaga CapsLock', life: 3000, close: function(e,m,o) {capsNotifier = false;}});
            capsNotifier = true;
        }
    }
}

function salesDataUpload(layerID, divID, what, type, action) {
    uiBlock(layerID, 'Przetwarzanie danych');
    var jData = escape(collectData(layerID));
    $.post(url, {   'action': action,
                            'doc': what,
                            'type': type,
                            'jdata': jData,
                            'divID': divID
                            },
                            function(output) {
                             var resources = eval('('+output+')');
                             if (resources) {
                                if (resources.result) {
                                    uiUnblock(layerID);
                                    alert(resources.content);
                                    //update(collectData(resources.paramID), resources.updateAction, what, divID, type);
                                } else {
                                    uiUnblock(layerID);
                                    alert(resources.message);
                                }
                             }
     });
}

function cascribeProducts(layerID, cgroup, divID, what, type, dialogID, jsondata) {
    uiBlock(dialogID, 'Przetwarzanie danych');
    var jData = escape(collectInputData(layerID, 'json'));
    var commodity = $('#'+cgroup).selectedValues();
    $.post(url, {   'action': 'cascribeProducts',
                            'doc': what,
                            'type': type,
                            'jdata': jData,
                            'cgroup': commodity,
                            'divID': divID,
                            'jsondata': escape(jsondata)
                            },
                            function(output) {
                             var resources = eval('('+output+')');
                             if (resources) {
                                if (resources.result) {
                                    document.getElementById(layerID).innerHTML = resources.content.html;
                                    update(collectData(resources.paramID), resources.updateAction, what, divID, type);
                                } else {
                                    alert(resources.message);
                                }
                             }
                             uiUnblock(dialogID);
     });
}

function backStarter(divID, type, tableID, what, sender) {
    WorkingPointer.enable();
    var starterContent = unescape(document.getElementById(divID+'TempContainer').innerHTML);
    var reset = $(sender).attr('reset');
    var onBackCode = unescape($(sender).attr('onBack'));
    $('#'+reset).val('null');
    if (starterContent != '' || starterContent == undefined) {
        var divs = document.getElementById(divID).getElementsByTagName('div');
        var index = 0;
        for(i = 0; i <= divs.length; i++) {
            if (divs[i] != undefined && divs[i].id == 'content') {
                index = i;
            }
        }        
        if (divs[index].id == 'content') {
             divs[index].innerHTML = starterContent;             
            if (tableID != null) {
                $('#'+divID+' #content #'+tableID+' th').unbind("click");
                $('#'+divID+' #content #'+tableID+' th').click(function() {
                    if ($(this).hasClass("header")) {
                    var sortby = $(this).attr("sid");
                    var page= $('#'+divID+' div#'+type+'Pager input#cpage').val();
                    var records = parseInt($('#'+divID+' div#'+type+'Pager form').find('select').selectedValues());
                    var dialogID = $(sender).attr('dialogID');
                    sortStarterGo(this, what, type, page, divID, sortby, records, dialogID);
                    }
                });
            }
        }
        if (onBackCode != undefined) eval(onBackCode);
    }
    WorkingPointer.disable();
    return false;
}



function uiCloseForm(sender, divID, what)
{
    WorkingPointer.enable();
    //$(sender).dialog('close');
    var senderID = $(sender).attr('id');    
    var serialized = $('#'+divID+'ExportContainer').html();
    var objects = eval('('+unescape(Base64.decode(serialized))+')');
    $.post(url, {   'action': 'eval-service',
                    'doc': what,
                    'divID': divID,
                    'serialized': serialized
                },
            function(output) {
             eval(output);

             for (key in objects) {
                var type = $('#'+key).attr('type');
		switch (type) {
			case 'text':
                        case 'hidden':
			case 'password':
                            $('#'+key).val(objects[key]);
                            break;
			case 'checkbox':
                        case 'radio':
				if (objects[key]) {
					$('#'+key).attr('checked','checked');
				} else {
					$('#'+key).attr('checked','');
				}
                            break;
		}                
             }
             WorkingPointer.disable();
    });    
}

/**
 * Serializuje dane dotyczące kolumn tabeli danych
 * do kontenera (konieczne do eksportu danych)
 */
function uiColSerialize(sender) {
    var dialogID = $(sender).attr('dialogID');
    var layerID = $(sender).parent('td').parent('tr').parent('tbody').parent('table').parent('div').attr('id');
    $('#'+$(sender).attr('divID')+'ColumnContainer').html(Base64.encode(collectInputData(dialogID + ' #' + layerID, 'json')));
}

/**
 * Włącza/wyłącza daną kolumnę tabeli danych
 */
function uiColswitch(sender, divID) {
    var tableID = $(sender).attr('tableID');
    var colClass = $(sender).attr('colClass');

    if (sender.checked) {
        $('#'+divID+' #'+tableID+' .'+colClass).show();
    } else {
        $('#'+divID+' #'+tableID+' .'+colClass).hide();
    }
}

/**
 * Aktualizuje kolumny tabeli danych na podstawie dialogu
 * wyboru kolumn i serializujemy dane do eksportu.
 */
function uiColupdate(divID, tableID, dialogID, layerID)
{
    $('#'+dialogID+' #'+layerID+' input[type="checkbox"]').each(function() {
        var colClass = this.getAttribute('colClass');
        if (this.checked) {
            $('#'+divID+' #'+tableID+' .'+colClass).show();
        } else {
            $('#'+divID+' #'+tableID+' .'+colClass).hide();
        }
    });
    $('#'+divID+'ColumnContainer').html(Base64.encode(collectInputData(dialogID + ' #' + layerID, 'json')));
}

function uiPrintLayer(dialogID, layerID)
{
    var now = new Date();
    var month = now.getMonth();
    var day = now.getDay();
    if (month < 10) { month = '0' + month; }
    if (day < 10) { day = '0' + day; }

    var sNow = 'Wydrukowano: ' + now.getFullYear() + '-' + month + '-' + day + '  ' + now.getHours() + ':' + now.getMinutes() + '.' + now.getSeconds();
    var content = $('#' + dialogID).html();
    var printWindow = window.open('', 'Dokument - duplikat on-line', 'width=860,height=600,scrollbars=1,location=0');

    printWindow.document.open();
    printWindow.document.write('<html><head><link rel="stylesheet" type="text/css" href="../application/css/doctpls.css" media="print,screen" /></head><body><p class="tplInvoiceStd">'+sNow+'</p><img src="../application/gfx/counterpart_online.gif" class="counterpart_bg" />'+content+'</body></html>');
    printWindow.document.getElementById(layerID).className = 'no-bg';
    $(printWindow.document).find('p').addClass('no-bg');
    $(printWindow.document).find('td').addClass('no-bg');
    printWindow.document.close();

    setTimeout(function(){
        printWindow.print();
        printWindow.close();
    },1000);
}

function updateFieldAndParam(sender, value) {
    WorkingPointer.enable();
    var dialogID = sender.getAttribute('dialogID');
    var action = sender.getAttribute('action');
    var what = sender.getAttribute('what');
    var divID = sender.getAttribute('divID');
    var type = sender.getAttribute('tabindex');
    //var field = sender.getAttribute('field');
    var jsMap = eval('('+unescape(sender.getAttribute('jsMap'))+')');   // mapa pól

    var divs = document.getElementById(divID).getElementsByTagName('div');
    for(i = 0; i <= divs.length; i++) {
        if (divs[i] != undefined && divs[i].id == 'content') {
            $('#'+divID+'TempContainer').html(escape(divs[i].innerHTML));
            divs[i].innerHTML = '';
        }
    }    
      
    if (!$('#'+dialogID).dialog('isOpen')) {
      $('#'+dialogID).dialog('open');
    }
    $('#'+dialogID).effect('highlight');
    $('#'+dialogID).dialog('moveToTop');
    //$('#'+dialogID+' #'+field).selectOptions(value);
    // mapowanie pól
    for (mapFrom in jsMap) {        
        if (mapFrom == 'value') {
            $('#'+jsMap[mapFrom]).val(value);
        } else {
            $('#'+jsMap[mapFrom]).val($('#'+mapFrom).val());
        }
    }
    uiSorSerialize(divID, 1, 50, null, null);
    WorkingPointer.disable();
    update(collectData(dialogID), action, what, divID, type);
}

function pagerExtend(sender,divID) {
    
    var pagedisplay = parseInt($(sender).parent('form').find('input').val());
    var records = parseInt($(sender).selectedValues());
    var sortby = $(sender).parent('form').find('input[id="sortby"]').val();
    var sortType = $(sender).parent('form').find('input[id="sorttype"]').val();

    if (!isNaN(pagedisplay) && pagedisplay != undefined && pagedisplay != 0 && pagedisplay != null) {
        var dialogID = sender.getAttribute("dialogID");
        var action = 'updateListByParameters';
        var what = sender.getAttribute("what");
        var type = sender.getAttribute('tindex');
        var jData = collectData(dialogID);

        if (jData != '' && jData != undefined) {
            uiBlock(divID, 'Wczytuj\u0119 stronę...Proszę czekać.');
            uiSorSerialize(divID, pagedisplay, records, sortby, sortType);
            $.post(url, {   'action': action,
                            'doc': what,
                            'type': type,
                            'jdata': escape(jData),
                            'page': pagedisplay,
                            'divID': divID,
                            'records': records,
                            'sortby': sortby,
                            'sorttype': sortType
                            },
                            function(output) {
                             var resources = eval('('+output+')');
                             if (resources) {
                                var divs = document.getElementById(divID).getElementsByTagName('div');
                                for(i = 0; i <= divs.length; i++) {
                                    if (divs[i] != undefined && divs[i].id == 'content') {
                                        divs[i].innerHTML = resources.content.html;
                                    }
                                }
                                eval(resources.script.exec);
                             }
                             uiUnblock(divID);
            });
        }
    } else {
        alert('Wpisz poprawn\u0105 wartość w pole strony (od 1 do '+pagemax+')');
    }
}

function pagerStarterExtend(sender,divID) {

    var pagedisplay = parseInt($(sender).parent('form').find('input').val());
    var records = parseInt($(sender).selectedValues());
    var sortby = $(sender).parent('form').find('input[id="sortby"]').val();
    var sortType = $(sender).parent('form').find('input[id="sorttype"]').val();

    if (!isNaN(pagedisplay) && pagedisplay != undefined && pagedisplay != 0 && pagedisplay != null) {
        var action = 'updateStarterListByParameters';
        var what = sender.getAttribute("what");
        var type = sender.getAttribute('tindex');
        var dialogID = sender.getAttribute('dialogID');
        var jdata = collectData(dialogID);

            uiBlock(divID, 'Wczytuj\u0119 stronę...Proszę czekać.');
            uiSorSerialize(divID, pagedisplay, records, sortby, sortType);
            $.post(url, {   'action': action,
                            'doc': what,
                            'type': type,
                            'page': pagedisplay,
                            'divID': divID,
                            'records': records,
                            'sortby': sortby,
                            'sorttype': sortType,
                            'jdata': jdata
                            },
                            function(output) {
                             var resources = eval('('+output+')');
                             if (resources) {
                                var divs = document.getElementById(divID).getElementsByTagName('div');
                                for(i = 0; i <= divs.length; i++) {
                                    if (divs[i] != undefined && divs[i].id == 'content') {
                                        divs[i].innerHTML = resources.content.html;
                                    }
                                }
                                eval(resources.script.exec);
                             }
                             uiUnblock(divID);
            });

    } else {
        alert('Wpisz poprawn\u0105 wartość w pole strony (od 1 do '+pagemax+')');
    }
}

function uiSorSerialize(divID, page, records, sortby, sorttype)
{
    if (page == undefined || page == '') page = 1;
    var objects = {'page':page, 'records':records, 'sortby':sortby, 'sorttype':sorttype};

    var json = JSON.stringify(objects, function (key, value) {
        if (typeof value === 'number' && !isFinite(value)) {
            return String(value);
        }
        return value;
    });
    $('#'+divID+'SorterContainer').html(Base64.encode(json));
}

function sortGo(sender, dialogID, what, type, page, divID, sortby, records) {

    if ($(sender).hasClass('headerSortUp')) {
        var sortType = 'desc';
    } else {
        var sortType = 'asc';
    }

    var jData = collectData(dialogID);
    var action = 'updateListByParameters';

    if (jData != '' && jData != undefined) {

        uiBlock(divID, 'Sortuj\u0119...Proszę czekać.');
        uiSorSerialize(divID, page, records, sortby, sortType);
        $.post(url, {   'action': action,
                        'doc': what,
                        'type': type,
                        'jdata': escape(jData),
                        'page': page,
                        'divID': divID,
                        'records': records,
                        'sortby': sortby,
                        'sorttype': sortType
                        },
                        function(output) {
                         var resources = eval('('+output+')');
                         if (resources) {
                            var divs = document.getElementById(divID).getElementsByTagName('div');
                            for(i = 0; i <= divs.length; i++) {
                                if (divs[i] != undefined && divs[i].id == 'content') {
                                    divs[i].innerHTML = resources.content.html;
                                }
                            }
                            eval(resources.script.exec);
                         }
                         uiUnblock(divID);
        });
    }
}

function sortStarterGo(sender, what, type, page, divID, sortby, records, dialogID) {

    if ($(sender).hasClass('headerSortUp')) {
        var sortType = 'desc';
    } else {
        var sortType = 'asc';
    }

    var action = 'updateStarterListByParameters';
    var jdata = escape(collectData(dialogID));

        uiBlock(divID, 'Sortuj\u0119...Proszę czekać.');
        uiSorSerialize(divID, page, records, sortby, sortType);
        $.post(url, {   'action': action,
                        'doc': what,
                        'type': type,
                        'page': page,
                        'divID': divID,
                        'records': records,
                        'sortby': sortby,
                        'sorttype': sortType,
                        'jdata': jdata
                        },
                        function(output) {
                         var resources = eval('('+output+')');
                         if (resources) {
                            var divs = document.getElementById(divID).getElementsByTagName('div');
                            for(i = 0; i <= divs.length; i++) {
                                if (divs[i] != undefined && divs[i].id == 'content') {
                                    document.getElementById(divID+'TempContainer').innerHTML = escape(divs[i].innerHTML);
                                    divs[i].innerHTML = resources.content.html;
                                }
                            }                            
                            eval(resources.script.exec);
                         }
                         uiUnblock(divID);
        });
}

function pagerGo(sender, navitype, divID) {
    
    var pagedisplay = parseInt($(sender).parent('form').find('input').val());
    var pagemax = parseInt($(sender).parent('form').find('span').html());
    var records = parseInt($(sender).parent('form').find('select').selectedValues());
    var sortby = $(sender).parent('form').find('input[id="sortby"]').val();
    var sorttype = $(sender).parent('form').find('input[id="sorttype"]').val();

    if (pagemax != 1) {

    if (!isNaN(pagedisplay) && pagedisplay != undefined && pagedisplay != 0 && pagedisplay != null) {
        
        var dialogID = sender.getAttribute("dialogID");        
        var action = 'updateListByParameters';       
        var what = sender.getAttribute("what");        
        var type = sender.getAttribute('tindex');       
        var jData = collectData(dialogID);        
        var page = 0;

            switch (navitype) {
                case 'first':
                    page = 1;
                    break;
                case 'prev':
                    if (pagedisplay-1 < 1) {
                        page = pagemax;
                    } else {
                        page = pagedisplay-1;
                    }
                    break;
                case 'next':                    
                    if (pagedisplay+1 > pagemax) {
                        page = 1;
                    } else {
                        page = pagedisplay+1;
                    }
                    break;
                case 'last':
                    page = pagemax;
                    break;
                default:
                    page = 1;
                    break;
            }

             if (jData != '' && jData != undefined) {

        uiBlock(divID, 'Wczytuj\u0119 stronę...Proszę czekać.');
        uiSorSerialize(divID, page, records, sortby, sorttype);
        $.post(url, {   'action': action,
                        'doc': what,
                        'type': type,
                        'jdata': escape(jData),
                        'page': page,
                        'divID': divID,
                        'records': records,
                        'sortby': sortby,
                        'sorttype': sorttype
                        },
                        function(output) {
                         var resources = eval('('+output+')');
                         if (resources) {
                            var divs = document.getElementById(divID).getElementsByTagName('div');
                            for(i = 0; i <= divs.length; i++) {
                                if (divs[i] != undefined && divs[i].id == 'content') {
                                    divs[i].innerHTML = resources.content.html;
                                }
                            }                            
                            eval(resources.script.exec);
                         }
                         uiUnblock(divID);
        });
    }

    } else {        
        alert('Wpisz poprawn\u0105 wartość w pole strony (od 1 do '+pagemax+')');
    }
}
    return false;
}

function pagerStarterGo(sender, navitype, divID) {

    var pagedisplay = parseInt($(sender).parent('form').find('input').val());
    var pagemax = parseInt($(sender).parent('form').find('span').html());
    var records = parseInt($(sender).parent('form').find('select').selectedValues());
    var sortby = $(sender).parent('form').find('input[id="sortby"]').val();
    var sorttype = $(sender).parent('form').find('input[id="sorttype"]').val();

    if (pagemax != 1) {

    if (!isNaN(pagedisplay) && pagedisplay != undefined && pagedisplay != 0 && pagedisplay != null) {

        var action = 'updateStarterListByParameters';
        var what = sender.getAttribute("what");
        var type = sender.getAttribute('tindex');
        var dialogID = sender.getAttribute('dialogID');
        var jdata = collectData(dialogID);
        var page = 0;

            switch (navitype) {
                case 'first':
                    page = 1;
                    break;
                case 'prev':
                    if (pagedisplay-1 < 1) {
                        page = pagemax;
                    } else {
                        page = pagedisplay-1;
                    }
                    break;
                case 'next':
                    if (pagedisplay+1 > pagemax) {
                        page = 1;
                    } else {
                        page = pagedisplay+1;
                    }
                    break;
                case 'last':
                    page = pagemax;
                    break;
                default:
                    page = 1;
                    break;
            }


        uiBlock(divID, 'Wczytuj\u0119 stronę...Proszę czekać.');

        uiSorSerialize(divID, page, records, sortby, sorttype);
        $.post(url, {   'action': action,
                        'doc': what,
                        'type': type,
                        'page': page,
                        'divID': divID,
                        'records': records,
                        'sortby': sortby,
                        'sorttype': sorttype,
                        'jdata': jdata
                        },
                        function(output) {
                         var resources = eval('('+output+')');
                         if (resources) {
                            var divs = document.getElementById(divID).getElementsByTagName('div');                            
                            for(i = 0; i <= divs.length; i++) {
                                if (divs[i] != undefined && divs[i].id == 'content') {
                                    document.getElementById(divID+'TempContainer').innerHTML = escape(divs[i].innerHTML);
                                    divs[i].innerHTML = resources.content.html;
                                }
                            }
                            eval(resources.script.exec);
                         }
                         uiUnblock(divID);
        });

    } else {
        alert('Wpisz poprawn\u0105 wartość w pole strony (od 1 do '+pagemax+')');
    }
}
}

/*
function exportXLS(jsonText, what, type, amount, info, divID) {
    if (jsonText != '' && jsonText != undefined) {
        $('#loader').show('fast');
        $.post(url, {   'action': 'exportXLS',
                        'doc': what,
                        'type': type,
                        'jdata': escape(jsonText),
                        'amount': amount,
                        'divID': divID
                        },
                        function(output) {
                         
                         var resources = eval('('+output+')');
                         if (resources) {                                                     
                            if (resources.result) {
                                location.href = resources.link;
                                document.getElementById(info).innerHTML = resources.message;
                            } else {
                                alert(resources.content);
                            }
                         }                         
                         $('#loader').hide('fast');
        });
    }
}
*/

function exportXLS(jpara, what, type, info, divID) {

    var jdata = $('#'+divID+'ExportContainer').html();
    var jcols = $('#'+divID+'ColumnContainer').html();
    var jsort = $('#'+divID+'SorterContainer').html();

        $('#loader').show('fast');
        $.post(url, {   'action': 'exportXLS',
                        'doc': what,
                        'type': type,
                        'jpara': escape(jpara),
                        'jdata': escape(jdata),
                        'jcols': escape(jcols),
                        'jsort': escape(jsort),
                        'divID': divID
                        },
                        function(output) {

                         var resources = eval('('+output+')');
                         if (resources) {
                            if (resources.result) {
                                location.href = resources.link;
                                document.getElementById(info).innerHTML = resources.message;
                            } else {
                                alert(resources.content);
                            }
                         }
                         $('#loader').hide('fast');
        });
}

function exportPDF(jpara, what, type, info, divID) {
    
    var jdata = $('#'+divID+'ExportContainer').html();
    var jcols = $('#'+divID+'ColumnContainer').html();
    var jsort = $('#'+divID+'SorterContainer').html();

        $('#loader').show('fast');
        $.post(url, {   'action': 'exportPDF',
                        'doc': what,
                        'type': type,
                        'jpara': escape(jpara),
                        'jdata': escape(jdata),
                        'jcols': escape(jcols),
                        'jsort': escape(jsort),
                        'divID': divID
                        },
                        function(output) {

                         var resources = eval('('+output+')');
                         if (resources) {
                            if (resources.result) {
                                //window.open(resources.link, 'Pobierz PDF', 'width=200,height=100,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,copyhistory=no,resizable=no');
                                location.href = resources.link;
                                document.getElementById(info).innerHTML = resources.message;
                            } else {
                                alert(resources.content);
                            }
                         }
                         $('#loader').hide('fast');
        });   
}

OFC = {};

OFC.jquery = {
    name: "jQuery",
    version: function(src) { return $('#'+ src)[0].get_version() },
    rasterize: function (src, dst) { $('#'+ dst).replaceWith(OFC.jquery.image(src)) },
    image: function(src) { return "<img src='data:image/png;base64," + $('#'+src)[0].get_img_binary() + "' />"},
    popup: function(src) {
        var img_win = window.open('', 'Wykresy: Eksport do pliku PNG')
        with(img_win.document) {
            write('<html><head><title>Wykresy: Eksport do pliku PNG<\/title><\/head><body>' + OFC.jquery.image(src) + '<\/body><\/html>') }
		// stop the 'loading...' message
		img_win.document.close();
     }
}

// Using an object as namespaces is JS Best Practice. I like the Control.XXX style.
//if (!Control) {var Control = {}}
//if (typeof(Control == "undefined")) {var Control = {}}
if (typeof(Control == "undefined")) {var Control = {OFC: OFC.jquery}}

// By default, right-clicking on OFC and choosing "save image locally" calls this function.
// You are free to change the code in OFC and call my wrapper (Control.OFC.your_favorite_save_method)
// function save_image() { alert(1); Control.OFC.popup('my_chart') }
function save_image(divID) {
    if (divID == undefined) {
        alert('Aby wyeksportować wykres do pliku, skorzystaj z przycisku Eksportuj do pliku na dole okna.');
    } else OFC.jquery.popup(divID+'Sale_chart_main')
}

//function moo() { alert(99); };

function ofc_ready()
{
    
}

function open_flash_chart_data()
{    
    return JSON.stringify(chartData);
}

function findSWF(movieName) {
  if (navigator.appName.indexOf("Microsoft")!= -1) {
    return window[movieName];
  } else {
    return document[movieName];
  }
}

function getChart(jsonText, what, type, divChartID, cht, selectGroup, divID) {
    if (jsonText != '' && jsonText != undefined) {
        var sgroup = null;
        if (selectGroup != undefined) {
            sgroup = selectGroup;
        }
        $('#loader').show('fast');
        $.post(url, {   'action': 'drawChart',
                        'doc': what,
                        'type': type,
                        'jdata': escape(jsonText),
                        'cht': cht,
                        'cGroup': sgroup,
                        'divID': divID
                        },
                        function(output) {

                         var resources = eval('('+output+')');
                         if (resources) {
                            if (resources.result) {
                                eval(resources.chart);
                                $.jGrowl('Je\u017celi chcesz zachowa\u0107 wygenerowany wykres naci\u015bnij <i><b>Eksportuj do pliku</b></i>.',{header: 'Wskazówka - Wykresy', life: 7000});
                            } else {
                                alert(resources.status);
                            }
                         }                         
                        
                         $('#loader').hide('fast');
                         $("#"+divID+"Sale_indicator2").hide();
        });
    }
}

function update(jsonText, action, what, divID, type, closeDialog) {

    if (jsonText != '' && jsonText != undefined) {        
        uiBlock(divID, 'Aktualizuj\u0119 dane...Prosz\u0119 czeka\u0107.');
        $.post(url, {   'action': action,
                        'doc': what,
                        'type': type,
                        'jdata': escape(jsonText),
                        'divID': divID
                        },
                        function(output) {
                         var resources = eval('('+output+')');
                         if (resources) {
                            var divs = document.getElementById(divID).getElementsByTagName('div');
                            for(i = 0; i <= divs.length; i++) {
                                if (divs[i] != undefined && divs[i].id == 'content') {
                                    divs[i].innerHTML = resources.content.html;
                                }
                            }
                            eval(resources.script.exec);
                            if (closeDialog != undefined) { $("#"+closeDialog).dialog('close'); }
                         }
                         uiSorSerialize(divID, 1, 50, null, null);
                         uiUnblock(divID);
        });
    }
}

function suggestUpdate(data, action, what, divID, type) {
    if (data != '' && data != undefined) {
        if (data == '*') {
            uiBlock(divID, 'Wczytuj\u0119 cennik. Prosz\u0119 czeka\u0107.');
        } else {
            $('#loader').show('fast');
        }
        $.post(url, {   'action': action,
                        'doc': what,
                        'type': type,
                        'data': data,
                        'divID': divID
                        },
                        function(output) {
                         var resources = eval('('+unescape(output)+')');
                         if (resources) {

                            var divs = document.getElementById(divID).getElementsByTagName('div');
                            for(i = 0; i <= divs.length; i++) {
                                if (divs[i] != undefined && divs[i].id == 'content') {
                                    divs[i].innerHTML = resources.content.html;
                                }
                            }
                            eval(resources.script.exec);
                         }
                         if (data == '*') {
                            uiUnblock(divID);
                         } else {
                            $('#loader').hide('fast');
                         }
        });
    }
}

function collectData(divID) {
    var obj = {};
	    $('#'+divID+' input').each(function() {
            var fieldType = $(this).attr('type');
            if (fieldType == 'text' || fieldType == 'hidden') {
                obj[$(this).attr('id')] = $(this).val();
            } else if (fieldType == 'checkbox') {
                obj[$(this).attr('id')] = $(this).attr('checked');
            } else if (fieldType == 'radio') {
                if (this.checked)
                    obj[$(this).attr('id')] = $(this).val();
            }
        });
        $('#'+divID+' select').each(function() {
            var sel = this;
            if (sel != null) { 
                if (sel.selectedIndex < 0) obj[$(this).attr('id')] = 'null'; else {
                    var opt = sel.options[sel.selectedIndex];
                    obj[$(this).attr('id')] = opt.value || opt.text;
                }
            }
        });
        $('#'+divID+' textarea').each(function() {
            obj[$(this).attr('id')] = $(this).val();
        });
        var jsonText = JSON.stringify(obj, function (key, value) {
            if (typeof value === 'number' && !isFinite(value)) {
                return String(value);
            }
        return value;
        });
    return jsonText;
}

function in_array(myArray, myValue) {
	var yesno = eval(myArray).join().indexOf(myValue)>=0;
	return yesno;
}

function docPreview(sender, event) {
	event.stopPropagation();
	var dialogID = $(sender).attr('dialogID');
    var previewDocType = $(sender).attr('docType');
    var previewSymbol = $(sender).attr('symbol');
    var previewTabType = $(sender).attr('type');
    var divID = $(sender).attr('divID');
	    
    var objDialog = {};
    if (previewDocType == 'null') {
        // dialog unavailable
        if (!$('#'+dialogID).dialog('isOpen')) {
            objDialog = document.getElementById(dialogID).innerHTML = '<p>Podgląd dokumentu: '+previewSymbol+' niedostępny. Przepraszamy.</p>';
            
            $('#'+dialogID).dialog('option', 'width', 460);            
            if (objDialog != null)
                $('#'+dialogID).dialog('open');
        
        } else {
            $('#'+dialogID).dialog('option', 'width', 460);            
            objDialog = document.getElementById(dialogID).innerHTML = '<p>Podgląd dokumentu: '+previewSymbol+' niedostępny. Przepraszamy.</p>';
        }
    } else {
         if (!$('#'+dialogID).dialog('isOpen')) {
           $('#loader').show('fast');
         } else {
           objDialog = document.getElementById(dialogID).innerHTML = '<img src="../application/gfx/load.gif" />&nbsp;&nbsp;Ładuje...Proszę czekać.';
         }
         
         $.post(url, {  'action': 'getDocPreview',
                        'doc': previewDocType,
                        'id': previewSymbol,
                        'type': previewTabType,
                        'divID': divID
                        },
                        function(output) {
                            var resources = eval('('+output+')');
                            if (resources) {                               
                                if (!$('#'+dialogID).dialog('isOpen')) {                                    
                                    objDialog = document.getElementById(dialogID).innerHTML = resources.preview['html'];
                                    $('#'+dialogID).dialog('option', 'width', 830);                                    
                                    if (objDialog != null) $('#'+dialogID).dialog('open');
                                } else {                                   
                                    objDialog = document.getElementById(dialogID).innerHTML = resources.preview['html'];
                                    $('#'+dialogID).dialog('option', 'width', 830);
                                }
                                if (resources.preview.script != undefined) {
                                    eval(resources.preview.script.exec);
                                    uiInputs();
                                    uiButtons();
                                }
                            }
                            $('#loader').hide('fast');
                            return false;
         });     
    }
    return false;
}
/**
 * FUNKCJA PRZESTARZAŁA, ROOT NIE WYKORZYSTUJE, TYLKO UNIONS I CLIENT (27.07.09)
 */
function docPreviewFilter(filterID, divFilterID, what, type, symbol, divID) {    
    var filter = $('#'+filterID).val();    
    $('#loader').show('fast');

    $.post(url, {  'action': 'getDocPreviewFiltered',
                        'doc': what,
                        'id': symbol,
                        'type': type,
                        'filter': filter,
                        'divID': divID
                        },
                        function(output) {
                            var resources = eval('('+unescape(output)+')');
                            if (resources) {
                                document.getElementById(divFilterID).innerHTML = resources.preview['html'];
                                if (resources.preview.script != undefined) eval(resources.preview.script.exec);
                            }
                            $('#loader').hide('fast');
                            return false;
         });    
}

function setCookie(cookieName,cookieValue,nDays) {
	var today = new Date();
 	var expire = new Date();
 	if (nDays==null || nDays==0) nDays=1;
 	expire.setTime(today.getTime() + 3600000*24*nDays);
 	document.cookie = cookieName+'='+escape(cookieValue)
                 	+ ';expires='+expire.toGMTString();
}

function readCookie(cookieName) {
	var theCookie=''+document.cookie;
 	var ind=theCookie.indexOf(cookieName);
 	if (ind==-1 || cookieName=='') return '';
 	var ind1=theCookie.indexOf(';',ind);
 	if (ind1==-1) ind1=theCookie.length;
 	return unescape(theCookie.substring(ind+cookieName.length+1,ind1));
}

function cookiesEnabled() {
    if (navigator.cookieEnabled == true) {
    	return true;
    	} else return false;
}

function getElementLeft(Elem) {	
		var elem;
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		xPos = elem.offsetLeft;
		tempEl = elem.offsetParent;
  		while (tempEl != null) {
  			xPos += tempEl.offsetLeft;
	  		tempEl = tempEl.offsetParent;
  		}
		return xPos;
}


function getElementTop(Elem) {
		if(document.getElementById) {	
			var elem = document.getElementById(Elem);
		} else if (document.all) {
			var elem = document.all[Elem];
		}
		yPos = elem.offsetTop;
		tempEl = elem.offsetParent;
		while (tempEl != null) {
  			yPos += tempEl.offsetTop;
	  		tempEl = tempEl.offsetParent;
  		}
		return yPos;
}

function getElementHeight(id) 
{
        if(document.getElementById) {
            var elem = document.getElementById(id);
        } else if (document.all){
            var elem = document.all[id];
        }
 
        var xPos = elem.offsetHeight;
        return xPos; 
}
 
function getElementWidth(id) 
{
        if(document.getElementById) {
            var elem = document.getElementById(id);
        } else if (document.all){
            var elem = document.all[id];
        }
 
        var yPos = elem.offsetWidth;   
        return yPos; 
}

function highlightObject(sender)
{	
	var objectID = $(sender).attr('hhobj');
	$('#'+objectID).effect('pulsate');
}

function subuserClearForm() {
	$("#addForm input[type='text']").each(function() {
			$(this).val('');
	});
	$("#addForm input[type='password']").each(function() {
			$(this).val('');
	});
	$('#addForm textarea').each(function() {
		$(this).val('');
	});
        $('#addForm #acmRoleRow').show();
        $('#addForm #acmAgentIDRow').hide();
        $("#addForm input[type='radio']").each(function() {
            $(this).attr('checked','');
	});
}

function subuserAddForm(sender) {
	
	subuserClearForm();
	$('#acmUserAdd').unbind('click', acmUserApply);
	$('#acmUserAdd').bind('click', acmUserAdd);
	$('#acmUserAdd').html('Dodaj użytkownika');

        $('#acmResetPassword').attr('checked','').parent('td').parent('tr').hide();
        $('#acmPassword').val('').attr('disabled', '').removeClass('disabled');
        $('#acmPasswordRepeat').val('').attr('disabled', '').removeClass('disabled');

        $('#addForm legend:first').html('Dodaj dane użytkownika');
		
	var displayStatus = $('#addForm').css('display');
	if (displayStatus != 'block') {
		$('#userList').css('border-bottom','1px solid #C2C2C2');
		$('#userList').animate({
			height: '35%'
		},200, 'linear', function() {
			$('#addForm').show('fast');
			var span = sender.lastChild;
			span.innerHTML = 'Anuluj dodawanie';
            $.jGrowl('Wypełniaj uważnie wszystkie pola podając poprawne dane. <br/><br/> Szczególnie istotne są uprawnienia dla konta. Zaznaczając parafki praw dostępu nadajesz prawo do przeglądania danej zakładki.<br/><br/> Zaznaczając rolę dla konta ładowane są domyślne ustawienia praw dostępu.<br/><br/> Jeżeli jesteś gotowy dodać konto naciśnij <i><b>Dodaj użytkownika</b></i>',{header:'Wskazówka - Zarządzanie kontami'});
		});		
	} else {
		$('#userList').css('border-bottom','none');
		$('#userList').animate({
			height: '94%'
		},200, 'linear', function() {
			$('#addForm').hide('fast');
			var span = sender.lastChild;
			span.innerHTML = 'Dodaj subkonto';
		});
	}
}

function collectInputData(layerID, mode, attr)
{
	var objects = {};
        if (attr == null) attr = false;
	
	$('#'+layerID+' input').each(function() {
		var type = $(this).attr('type');

                if (attr) {
                    var name = this.getAttribute(attr);
                } else {

                    if ($(this).attr('name') != '' && $(this).attr('name') != undefined)
                        var name = $(this).attr('name');
                    else
                        var name = $(this).attr('id');
                }
		if (name != '' && name != undefined)
		switch (type) {
			case 'text':
				objects[name] = this.value;
				break;
                        case 'hidden':
				objects[name] = this.value;
				break;
			case 'password':
				objects[name] = this.value;
				break;
			case 'checkbox':
				if (this.checked) {
					objects[name] = true;
				} else {
					objects[name] = false;
				}
				break;
			case 'radio':
				if (this.checked) { 
					objects[name] = this.value;
				}
				break;
		}
	});
	
	$('#'+layerID+' textarea').each(function() {
            if (attr) {
                var name = this.getAttribute(attr);
            } else {
		if ($(this).attr('name') != '' && $(this).attr('name') != undefined)
                    var name = $(this).attr('name');
                else
                    var name = $(this).attr('id');
            }
		if (name != '' && name != undefined) objects[name] = this.value;		
	});
	
	$('#'+layerID+' select').each(function() {
            if (attr) {
                var name = this.getAttribute(attr);
            } else {
		if ($(this).attr('name') != '' && $(this).attr('name') != undefined)
                    var name = $(this).attr('name');
                else
                    var name = $(this).attr('id');
            }
		if (name != '' && name != undefined) {
			var opts = this.options[this.selectedIndex];			
			objects[name] = opts.value || opts.text;		
		}
	});
	
	if (mode == 'json') {
		var json = JSON.stringify(objects, function (key, value) {
	        if (typeof value === 'number' && !isFinite(value)) {
	            return String(value);
	        }
	    return value;
	    });
		return json;
	} else {
		return objects;
	}
}

function acmUserAdd() {

    $('#lm-loader').fadeIn(500,function() {
	var jsonUser = collectInputData('acmNewUser', 'json');
	var jsonPerms = collectInputData('acmPermList', 'json');
		
	$.post(url, {   
		'action': 'acmUserAdd',
		'doc': 'acm',
                'jUser': escape(jsonUser),
                'jPerms': escape(jsonPerms)
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
         	  if (resources.result) {
				var content = unescape(resources.content);
		  		var cssClass = $('#tuserList tr:last').attr('class');
				$('#tuserList').append(content);
				if (cssClass == "even") {					
					$('#tuserList tr:last').addClass('odd');
				} else {
					$('#tuserList tr:last').addClass('even');
				}
				$('#tuserList tr:last').effect('pulsate');
				eval(resources.script.exec);
				$('#userList').css('border-bottom','none');
				$('#userList').animate({
					height: '94%'
				},200, 'linear', function() {
				$('#addForm').hide('fast');
				$('#subuserAddForm span').html('Dodaj konto');
				});
         	  } else {
         	  	alert(unescape(resources.content));
         	  }
		}
        $('#lm-loader').fadeOut(500);
  		});
    });
}

function acmUserEdit(sender, user_id) {

    $('#lm-loader').fadeIn(500,function() {
	var btnAddForm = document.getElementById('subuserAddForm');	
	var displayStatus = $('#addForm').css('display');
	if (displayStatus == 'block') {
		$('#userList').css('border-bottom','none');
		$('#userList').animate({
			height: '94%'
		},200, 'linear', function() {
			$('#addForm').hide('fast');
			var span = btnAddForm.lastChild;
			span.innerHTML = 'Dodaj subkonto';
			
		$.post(url, {   
		'action': 'acmUserEdit',
		'doc': 'acm',
        'userID': user_id
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
         	  if (resources.result) {
         	  	eval(resources.script.exec);
         	  	edtUserID = user_id;
         	  } else {
         	  	alert(unescape(resources.content));
         	  }
		}
        $('#lm-loader').fadeOut(500);
  		});			
			
		});		
	} else {
		
		$.post(url, {   
		'action': 'acmUserEdit',
		'doc': 'acm',
        'userID': user_id
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
         	  if (resources.result) {
         	  	eval(resources.script.exec);
         	  	edtUserID = user_id;
         	  } else {
         	  	alert(unescape(resources.content));
         	  }
		}
        $('#lm-loader').fadeOut(500);
  		});
		
	}
    });
}

function acmUserApply() {

    $('#lm-loader').fadeIn(500,function() {
	var jsonUser = collectInputData('acmNewUser', 'json');
	var jsonPerms = collectInputData('acmPermList', 'json');
	
	$.post(url, {   
		'action': 'acmUserApply',
		'doc': 'acm',
        'jUser': escape(jsonUser),
        'jPerms': escape(jsonPerms),
        'edtUserID': edtUserID
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
         	  if (resources.result) {
				var content = unescape(resources.content);
				$("#tuserList tr[rowid='row"+edtUserID+"']").html(content);
				$("#tuserList tr[rowid='row"+edtUserID+"']").effect('pulsate');
				eval(resources.script.exec);
				$('#userList').css('border-bottom','none');
				$('#userList').animate({
					height: '94%'
				},200, 'linear', function() {
				$('#addForm').hide('fast');
				$('#subuserAddForm span').html('Dodaj konto');
				});
         	  } else {
         	  	alert(unescape(resources.content));
         	  }
		}
        $('#lm-loader').fadeOut(500);
  		});
        });
}

function acmUserHelpers(status) {

    if (status) {
        var sval = 1;
        $.jGrowl('Ju\u017c się włączam...Witam. Miło, że chcesz zaczerpnąć moich wskazówek.',{header: 'Modu\u0142 podpowiedzi'});
    } else {
        var sval = 0;
        $.jGrowl('Ju\u017c się wyłączam...bye bye',{header: 'Modu\u0142 podpowiedzi'});
    }    
        $.post(url, {
		'action': 'acmUserHelpers',
		'doc': 'acm',
        'status': sval
        },
        function(output) {         
         if (output) {
         	  alert(output);
		 }        
  		});    
}

function acmUserLock(sender,user_id) {
	$('#lm-loader').fadeIn(500,function() {
        $.post(url, {
		'action': 'acmUserLock',
		'doc': 'acm',
        'userID': user_id
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
         	  if (resources.result) {
         	  	$(sender).parent('td').prev('td').html(resources.status);
         	  } else {
         	  	alert(unescape(resources.status));
         	  }
		}
        $('#lm-loader').fadeOut(500);
  		});
    });
}

function acmUserRemove(sender, user_id) {	
	
	var confirmed = confirm('Napewno usun\u0105\u0107 u\u017cytkownika ID: '+user_id+' ?');
	if (confirmed) {
    $('#lm-loader').fadeIn(500,function() {
	var btnAddForm = document.getElementById('subuserAddForm');	
	subuserAddForm(btnAddForm);	
	$.post(url, {   
		'action': 'acmUserRemove',
		'doc': 'acm',
        'userID': user_id
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
         	  if (resources.result) { 
         	  	$(sender).parent('td').parent('tr').remove();
         	  } else {
         	  	alert(unescape(resources.content));
         	  }
		}
        $('#lm-loader').fadeOut(500);
  		});
    });
	}
}

function acmChangeLoginForm() {
    $('#settings-info').hide();
    $('#settings-loginform').show();
    $.jGrowl('Nowy login będzie obowiązywał przy następnym logowaniu.',{header: 'Wskazówka - Ustawienia personalne'});
}

function acmChangePassForm() {
    $('#settings-info').hide();
    $('#settings-passform').show();
    $.jGrowl('Nowe hasło będzie obowiązywało przy następnym logowaniu.<br/><br/> Bezpieczne hasło powinno zawierać mieć długość minimum 8 znaków oraz zawierać litery, cyfry i znaki specjalne.',{header: 'Wskazówka - Ustawienia personalne'});
}

function acmChangePhoneForm() {
    $('#settings-info').hide();
    $('#settings-phoneform').show();
    $.jGrowl('<b><span style="color:red">Upewnij się 3 razy zanim wprowadzisz nowy numer telefonu, że jest on właściwy. W razie niemożności zalogowania się przez Ciebie supervisorze, jedynie administrator Zamel Cet może ci pomóc.</span></b>',{header: 'Wskazówka - Ustawienia personalne'});
}

function acmCancelSettings(sender) {
    var layerID = $(sender).attr('layerID');    
    $('#'+layerID).hide();
    $('#settings-info').show();   
}

function acmPassToggle(sender) {
    if (sender.checked) {
        $('#addForm #acmPassword').attr('disabled', '').removeClass('disabled');
        $('#addForm #acmPasswordRepeat').attr('disabled', '').removeClass('disabled');
    } else {
        $('#addForm #acmPassword').attr('disabled', 'disabled').addClass('disabled');
        $('#addForm #acmPasswordRepeat').attr('disabled', 'disabled').addClass('disabled');
    }
}

function acmChangeLogin() {
    var acmNewLogin = $('#acmNewLogin').val();
    var acmNewLoginRepeat = $('#acmNewLoginRepeat').val();

    if (acmNewLogin != '' && acmNewLogin == acmNewLoginRepeat) {
        $('#st-loader').fadeIn(500,function() {
        $.post(url, {
		'action': 'acmChangeLogin',
		'doc': 'acm',
        'newLogin': acmNewLogin,
        'newLoginRepeat': acmNewLoginRepeat
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
         	  if (resources.result) {
                eval(resources.script.exec);
                $.jGrowl('Twój nowy login to: <b>'+acmNewLogin+'</b>',{header: 'Wskazówka - Ustawienia personalne'});
         	  } else {
         	  	 $('#infoLogin').html(unescape(resources.content));
                 $('#infoLogin').show();
         	  }
		} else {
            $('#infoLogin').html('');
            $('#infoLogin').hide();
        }
        $('#st-loader').fadeOut(500);
  		});
        });
    } else {
        $('#infoLogin').html('Oba pola musz\u0105 by\u0107 wype\u0142nione tymi samymi warto\u015bciami.');
        $('#infoLogin').show();
    }
}

function acmChangePass() {
    var acmOldPass = $('#acmOldPass').val();
    var acmNewPass = $('#acmNewPass').val();
    var acmNewPassRepeat = $('#acmNewPassRepeat').val();

    if (acmOldPass != '' && acmNewPass != '' && acmNewPass == acmNewPassRepeat) {
        $('#st-loader').fadeIn(500,function() {
        $.post(url, {
		'action': 'acmChangePass',
		'doc': 'acm',
        'oldPass': acmOldPass,
        'newPass': acmNewPass,
        'newPassRepeat': acmNewPassRepeat
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
         	  if (resources.result) {
                eval(resources.script.exec);
                $.jGrowl('Nigdy nie zapisuj swojego has\u0142a na kartce papieru oraz innych \u0142atwo dost\u0119pnych miejscach przez osoby postronne',{header: 'Porada bezpiecze\u0144stwa'});
         	  } else {
         	  	 $('#infoPass').html(unescape(resources.content));
                 $('#infoPass').show();
         	  }
		} else {
            $('#infoPass').html('');
            $('#infoPass').hide();
        }
        $('#st-loader').fadeOut(500);
  		});
        });
    } else {
        $('#infoPass').html('Wszystkie pola musz\u0105 by\u0107 wype\u0142nione. Nowe has\u0142o musisz powtórzy\u0107 w celu weryfikacji.');
        $('#infoPass').show();
    }
}

function acmChangePhone() {
    var acmNewPhone = $('#acmNewPhone').val();
    if (acmNewPhone != '') {
        $('#st-loader').fadeIn(500,function() {
        $.post(url, {
		'action': 'acmChangePhone',
		'doc': 'acm',
        'newPhone': acmNewPhone
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
         	  if (resources.result) {
                eval(resources.script.exec);
         	  } else {
         	  	 $('#infoPhone').html(unescape(resources.content));
                 $('#infoPhone').show();
                 if (resources.script.exec != undefined &&
                     resources.script.exec != null)
                    eval(resources.script.exec);
                    $.jGrowl('Twój nowy numer telefonu to: <b>'+acmNewPhone+'</b>.<br/><br/> W razie gdy jest inny od zamierzonego dokonaj zmiany jeszcze raz teraz!',{header: 'Wskazówka - Ustawienia personalne'});
         	  }
		} else {
            $('#infoPhone').html('');
            $('#infoPhone').hide();
        }
        $('#st-loader').fadeOut(500);
  		});
        });
    } else {
        $('#infoPhone').html('Pole nowy numer telefonu musi zosta\u0107 wype\u0142nione.');
        $('#infoPhone').show();
    }
}

function qssSaveState(sender) {


    var dataLayer = $(sender).attr('dataLayer');
    var doc_id = $(sender).attr('document');
    var selectID = $(sender).attr('selectID');
    var querystate_name = $(sender).prev("input[type='text']").val();
    var jData = collectData(dataLayer);
    var divID = $(sender).attr('divID');
    
    var isExists = false;

        $('#'+selectID).each(function() {
            var sel = this;
            if (sel != null) {
                var opt = sel.options[sel.selectedIndex];
                var currValue = opt.text;
                if (currValue == querystate_name) {
                    isExists = true;
                    alert('Podana nazwa ju\u017c wyst\u0119puje na li\u015bcie. Wpisz inn\u0105, b\u0105d\u017a usu\u0144 bie\u017c\u0105c\u0105 i spróbuj ponownie.');
                }
            }
        });        

        if (isExists == false) {

        $('#loader').fadeIn(500,function() {
        $.post(url, {
            'action': 'qssSaveState',
            'doc': 'qss',
            'doc_id': doc_id,
            'jData': jData,
            'qsname': querystate_name,
            'divID': divID
            },
            function(output) {
             var resources = eval('('+output+')');
             if (resources) {
                  if (resources.result) {
                        eval(resources.script.exec);
                        $(sender).parent('fieldset').parent('div').dialog('close');
                        $.jGrowl('Zapisa\u0142e\u015b grupę parametrów na liście zdefiniowanej. W każdym momencie możesz wywoła\u0107 okno wczytywania parametrów poprzez ikonę <img src="../application/gfx/querystate.png" /> i z nich skorzystać, równie\u017c podczas przyszłych logowań.',{header:'Wskazówka - Parametry przegl\u0105dania'});
                  } else {
                        alert(resources.content);
                  }
            } else {
                alert('B\u0142\u0105d serwera. Przepraszamy.');
            }
            $('#loader').fadeOut(500);
            });
        });
        }
}

function qssRemoveState(sender) {
    var selectID = $(sender).attr('selectID');    
    var selectedValue = '';

    var sel = document.getElementById(selectID);
    if (sel != null) {
        var opt = sel.options[sel.selectedIndex];
        selectedValue = opt.value || opt.text;
    }
    if (selectedValue != 'null' && selectedValue != 'Wybierz') {
        var confirmed = confirm('Usun\u0105\u0107 wskazana grup\u0119 parametrów?');
        if (confirmed) {

        $('#loader').fadeIn(500,function() {
        $.post(url, {
            'action': 'qssRemoveState',
            'doc': 'qss',
            'qsID': selectedValue
            },
            function(output) {
             var resources = eval('('+output+')');
             if (resources) {
                  if (resources.result) {
                        sel.remove(sel.selectedIndex);
                        $.jGrowl('Usun\u0105\u0142e\u015b grup\u0119 parametrów zapisanych uprzednio na li\u015bcie zdefiniowanej.',{header:'Wskazówka - Grupy parametrów'});
                  } else {
                        alert(resources.content);
                  }
            } else {
                alert('B\u0142\u0105d serwera. Przepraszamy.');
            }
            $('#loader').fadeOut(500);
            });
        });
        }
    }
}

function qssLoadState(sender) { 

    var selectID = $(sender).attr('selectID');
    var dataLayer = $(sender).attr('dataLayer');
    var divID = $(sender).attr('divID');
    var selectedValue = '';

    var isUpdate = document.getElementById(divID+'Querystate_update');
    var action = 'updateListByParameters';
    var tabindex = $(sender).attr('tabindex');
    var what = $(sender).attr('what');

    var sel = document.getElementById(selectID);
    if (sel != null) {
        var opt = sel.options[sel.selectedIndex];
        selectedValue = opt.value || opt.text;
    }
    if (selectedValue != 'null' && selectedValue != 'Wybierz') {

    $('#loader').fadeIn(500,function() {
        
        $.post(url, {
            'action': 'qssLoadState',
            'doc': 'qss',
            'qsID': selectedValue
            },
            function(output) {
             var resources = eval('('+output+')');
             if (resources) {
                  if (resources.result) {
                      var fields = eval('('+resources.content.querystate_script+')');
                      for (fname in fields) {
                        /**
                         * Add divID to field id to find one
                         * (compatible with all tabs the same type)
                         */ //alert(divID + fname);
                         
                        var eType = document.getElementById(divID + fname).type; 
                        switch (eType) {
                            case 'text':
                                document.getElementById(divID + fname).value = fields[fname];
                                break;
                            case 'select-one':
                                //var sel = document.getElementById(divID + fname);
                                $('#'+divID+fname).selectOptions(fields[fname],true);
                                /*
                                for (x in sel.options) {
                                    if (sel.options[x].value != undefined) {
                                        if (sel.options[x].value == fields[fname]) {
                                            sel.options[x].selected = true;
                                            break;
                                        }
                                    }
                                }*/
                                break;
                             case 'checkbox':
                                document.getElementById(divID + fname).checked = fields[fname];
                                break;
                             case 'radio':
                                $('#'+ divID + fname + '[value="'+fields[fname]+'"]').attr('checked', true);
                                break;
                             default:
                                 alert(eType);
                                 break;
                        }
                      }
                      
                      if (!$('#'+dataLayer).dialog('isOpen')) {
                        $('#'+dataLayer).dialog('open');
                      }
                      $('#'+dataLayer).effect('highlight');
                      $('#'+dataLayer).dialog('moveToTop');

                      if (isUpdate.checked) {
                          update(collectData(dataLayer), action, what, divID, tabindex);
                      } else {
                        $.jGrowl('Wczyta\u0142e\u015b parametry przegl\u0105dania. Naci\u015bnij teraz <i><b>Aktualizuj</b></i> w celu przefiltrowania danych.',{header:'Wskazówka - Grupy parametrów'});
                      }
                  } else {
                        alert(resources.content);
                  }
            } else {
                alert('B\u0142\u0105d serwera. Przepraszamy.');
            }
            $('#loader').fadeOut(500);
            });
        });
    }
}

function interfacePulsate() {
    $('#interface').effect('pulsate');
}
function tabsnavPulsate() {
    $('.tabs-nav').effect('pulsate');
}
function innerMenuPulsate() {
    $('div.innerMenu').effect('pulsate');
}

function strip_tags(str, allowed_tags) {
    var key = '', allowed = false;
    var matches = [];
    var allowed_array = [];
    var allowed_tag = '';
    var i = 0;
    var k = '';
    var html = '';
    var replacer = function(search, replace, str) {
        return str.split(search).join(replace);
    };
    if (allowed_tags) {
        allowed_array = allowed_tags.match(/([a-zA-Z]+)/gi);
    }
    str += '';
    matches = str.match(/(<\/?[\S][^>]*>)/gi);
    for (key in matches) {
        if (isNaN(key)) {
            // IE7 Hack
            continue;
        }
        html = matches[key].toString();
        allowed = false;
        for (k in allowed_array) {
            allowed_tag = allowed_array[k];
            i = -1;
            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');}
            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');}
            if (i != 0) { i = html.toLowerCase().indexOf('</'+allowed_tag)   ;}
            if (i == 0) {
                allowed = true;
                break;
            }
        }
        if (!allowed) {
            str = replacer(html, "", str); // Custom replace. No regexing
        }
    }
    return str;
}

function str_replace(search, replace, subject, count) {
    var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
            f = [].concat(search),
            r = [].concat(replace),
            s = subject,
            ra = r instanceof Array, sa = s instanceof Array;
    s = [].concat(s);
    if (count) {
        this.window[count] = 0;
    }

    for (i=0, sl=s.length; i < sl; i++) {
        if (s[i] === '') {
            continue;
        }
        for (j=0, fl=f.length; j < fl; j++) {
            temp = s[i]+'';
            repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
            s[i] = (temp).split(f[j]).join(repl);
            if (count && s[i] !== temp) {
                this.window[count] += (temp.length-s[i].length)/f[j].length;}
        }
    }
    return sa ? s : s[0];
}

function acmFirstRunSave() {
        uiBlock('firstRunFieldset', 'Przetwarzanie danych');
        var jData = escape(collectInputData('firstRunData', 'json'));
        $.post(url, {   'action': 'acmFirstRunSave',
                        'doc': 'acm',
                        'jdata': jData
                    },
                    function(output) {
                        var resources = eval('('+output+')');
                        if (resources) {
                           if (resources.result) {
                              document.getElementById('loginMsg').innerHTML = resources.content;                              
                           } else {
                                alert(resources.message);
                           }
                        }
                        uiUnblock('firstRunFieldset');
        });
}

function toggleTimePartition(sender) {
    var divID = sender.getAttribute('divID');
    if (sender.checked) {
        switch (sender.value) {
            case 'on_months':
                document.getElementById(divID+'month_partition').style.display = 'block';
                document.getElementById(divID+'quarter_partition').style.display = 'none';
                break;
            case 'on_quarters':
                document.getElementById(divID+'month_partition').style.display = 'none';
                document.getElementById(divID+'quarter_partition').style.display = 'block';
                break;
        }
    }
}


function isset(variable)
{
    return( typeof(variable) != 'undefined' );
}

// creator
function cSystemToggle(sender) {
        var formID = sender.value;
        if (formID == 'client-form') {
            if (sender.checked) {
                $('#union-form').hide('slow');
                $('#client-form').show('slow');
            }
        } else {
            if (sender.checked) {
                $('#client-form').hide('slow');
                $('#union-form').show('slow');
            }
        }
    }

function cFormToggle(sender) {
    var formID = sender.value;
    $('#cFormToggler button').removeClass('bold');
    $(sender).addClass('bold');
    switch (formID) {
        case 'creator-form':
            $('#editor-form').hide('slow');
            $('#deleter-form').hide('slow');
            $('#creator-form').show('slow');
            break;
        case 'editor-form':
            $('#deleter-form').hide('slow');
            $('#creator-form').hide('slow');
            $('#editor-form').show('slow');
            break;
        case 'deleter-form':
            $('#creator-form').hide('slow');
            $('#editor-form').hide('slow');
            $('#deleter-form').show('slow');
            break;
    }    
}

function cLoadData(sender) {
    var accessPointKey = sender.value;
    $.post(url, {
		'action': 'acmLoadAccessPointData',
		'doc': 'acm',
                'apkey': accessPointKey
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
         	  if (resources.result) {
                        if (isset(resources.script)) {
                          eval(resources.script.exec);
                        }
         	  }
		}                
    });
}

function cCreateDb(layerID)
{
    var jData = collectInputData(layerID, 'json');
    
        uiBlock('cFieldset', 'Próba utworzenia bazy danych...');
        $.post(url, {
		'action': 'acmCreateDb',
		'doc': 'acm',
                'jdata': escape(jData)
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
         	  if (resources.result) {
			alert(unescape(resources.content));
         	  } else {
         	  	alert(unescape(resources.message));
         	  }
		}
                uiUnblock('cFieldset');
  		});
    
}

function cTestDbConnection(layerID,fieldset)
{
    uiBlock(fieldset, 'Testowanie połączenia...');
    var jData = collectInputData(layerID, 'json');

	$.post(url, {
		'action': 'acmTestDbConnection',
		'doc': 'acm',
                'jdata': escape(jData)
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
         	  if (resources.result) {
			alert(unescape(resources.content));
         	  } else {
                      if (isset(resources.script)) {
                          eval(resources.script.exec);
                      }
                      alert(unescape(resources.message));
         	  }
		}
                uiUnblock(fieldset);
  		});
}

function cCreateAccessPoint(layerID, mod)
{
    uiBlock('cFieldset', 'Tworzenie punktu...');
    var jData = collectInputData(layerID, 'json');

	$.post(url, {
		'action': 'acmCreateAccessPoint',
		'doc': 'acm',
                'jdata': escape(jData),
                'mod': mod
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
         	  if (resources.result) {
                      if (isset(resources.script)) {
                          eval(resources.script.exec);
                      }
			alert(unescape(resources.content));
         	  } else {
                      if (isset(resources.script)) {
                          eval(resources.script.exec);
                      }
                      alert(unescape(resources.message));
         	  }
		}
                uiUnblock('cFieldset');
  		});
}

function cDeleteAccessPoint(layerID)
{
    uiBlock('cDeleterFieldset', 'Usówanie punktu...');
    var jData = collectInputData(layerID, 'json');

	$.post(url, {
		'action': 'acmDeleteAccessPoint',
		'doc': 'acm',
                'jdata': escape(jData)
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
         	  if (resources.result) {
                      if (isset(resources.script)) {
                          eval(resources.script.exec);
                      }
                      alert(unescape(resources.content));
         	  } else {
                      if (isset(resources.script)) {
                          eval(resources.script.exec);
                      }
                      alert(unescape(resources.message));
         	  }
		}
                uiUnblock('cDeleterFieldset');
  		});
}

function cApplyAccessPoint(layerID)
{
    uiBlock('cEditorFieldset', 'Zmienianie danych punktu...');
    var jData = collectInputData(layerID, 'json');

	$.post(url, {
		'action': 'acmApplyAccessPoint',
		'doc': 'acm',
                'jdata': escape(jData)
        },
        function(output) {
         var resources = eval('('+output+')');
         if (resources) {
         	  if (resources.result) {
			alert(unescape(resources.content));
         	  } else {
                      alert(unescape(resources.message));
         	  }
		}
                uiUnblock('cEditorFieldset');
  		});
}

function toggleFindContractor(sender)
{
    var show = $(sender).attr('show');
    var divid = $(sender).attr('divID');    

    if (show == 'true') {
        // hide form
        $(sender).html('&#8595;');
        $(sender).attr('show', 'false');
        $('#'+divid+'findContractorForm').hide();

    } else {
        // show form
        $(sender).html('&#8593;');
        $(sender).attr('show', 'true');
        $('#'+divid+'findContractorForm').show();
        

    }
}
