

window.addEvent('domready', function(){
    
    /* Zarzadzanie polem wyszukiwarki pojazdow w topce strony */
    if ($('search_field')) {
        $('search_field').addEvents({
            'focus': function() {
                manageSearchField(this);
            },
            'blur': function() {
                manageSearchField(this);
            }
        });
    }
    
    //rozszerzenie Elementu, w celu sprawdzenia czy element ma zdefiniowane zdarzenie
    Element.implement({
        hasEvent: function(eventType,fn) {
            //get the element's events
            var myEvents = this.retrieve('events');
            //can we shoot this down?
            return myEvents && myEvents[eventType] && (fn == undefined || myEvents[eventType].keys.contains(fn));
        }
    });
        
    var toolTips = new Tips($$('.tips'), {className: 'custom_tip'});
    
    $$('.switch_tabs').each(function(el) {
        manageTabs(null, el, true);
    });
    
    
//	changeLinkFunction();

    //kontruowanie selecta
    if ($('contract_id') && $('fleet_id') && $('vehicleForm')) {
        if ($('fleet_customer_id')) {
            loadFleetCustomerSelect();
        }
        loadContractSelect();
    }
    
    if ($('searchTyreForm')) {
        if ($('contract_id')) {
            //konstruowanie selecta dla producenta opon
            loadTyreBrandSelect($('contract_id'));
        }
        else {
            //konstruowanie selecta dla bieznika
            loadTyrePatternSelect($('tyre_brand_code'));
        }
    }
    
    $$('.tyrebrandloader').each(function(element) {
        loadTyrePatternSelect(element, element.get('rel'), true);
    });

    if ($('add_user_form') && $('user_group_id')) {
        loadProfileSelect();
    }

    //inicjacja checkboxa zaznaczajacego wszystkie checkboxy w kolumnie (w formularzu)
    $$('.checkAll').each(function(item){
        item.addEvent('click', function() {
            toggleCheckboxes(item.getAttribute('rel'), item.checked);
            
            if (item.getAttribute('rel') == 'print-checkbox') {
                togglePrintButton('deposit-print-btn', 'print-checkbox')
            }
        });
    })
    
    if($('alertBox')) {
    	alertListener();
    }

    document.getElements('.input-no-enter').each(function(el) {
        el.getElements('input[type=text], input[type=checkbox]').each(function(element) {
            element.addEvent('keydown', function(event) {
                if (event.key == 'enter') return false; //zablokowanie wyslania formularza enterem
            });
        });
    });

    //[XXX] zaznacza checkboxy przy dodawaniu depozytow, jesli ktores pole w formularzu zostanie zmienione
    if ($('depositForm')) {
        $('depositForm').getElements('input[type=text]').each(function(el) {
            el.addEvent('keydown', function() {
                var name=el.getProperty('id').split('-');
                var checkbox = $(name[0]+'-'+name[1]+'-'+'tyre_id');
                if (!checkbox.getProperty('checked')) {
                    checkbox.setProperty('checked', true);
                }
            });
        });
        $('depositForm').getElements('select').each(function(el) {
            el.addEvent('change', function() {
                var name=el.getProperty('id').split('-');
                var checkbox = $(name[0]+'-'+name[1]+'-'+'tyre_id');
                if (!checkbox.getProperty('checked')) {
                    checkbox.setProperty('checked', true);
                }
            });
        });
    }
    
    $$('.print-checkbox').each(function(item){
        item.addEvent('click', function() {
            togglePrintButton(item.getAttribute('rel'), 'print-checkbox');
        })
    })
    
    $$('form').addEvent('submit', function(){
        this.getElements('input, select, checkbox').each(function(e) {
            if (e.disabled == true) {
                e.disabled = false;
            }
        });
    });
    
    $$('.window').addEvent('click', function(event) {
        event.preventDefault();
        window.open(this.href, "reportWindow", "location=0,toolbar=0,menubar=0,resizable=1,scrollbars=1,width=1000,height=550");
    });
    
    $$('.attpos-editable').each(function(item) {
        if ($('editlinkpos'+item.get('rel'))) {
            item.addEvent('mouseover', function(e) {
                new Event(e).stop();
                    $('editlinkpos'+item.get('rel')).removeClass('dispnone');
            });
            item.addEvent('mouseout', function(e) {
                new Event(e).stop();
                $('editlinkpos'+item.get('rel')).addClass('dispnone');
            });
        }
    });
    
    $$('a.ajaxsubmit').each(function(element) {
        element.addEvent('click', function(e) {
            new Event(e).stop();
            new Request.JSON({
                method: 'post',
                url: element.href,
                data: {
                    'order_service_position_id': element.rel,
                    'attendance_id': $('position_name'+element.rel).value
                },
                onRequest: function(){
                    $('wait_box').addClass('spinner_big');
                },
                onSuccess: function(responseText) {
                    if (responseText.success == 1) {
                        if (responseText.data.affectedRows == 0) {
                            $('displaypos'+element.get('rel')).removeClass('dispnone');
                            $('editpos'+element.get('rel')).addClass('dispnone');
                            $('wait_box').removeClass('spinner_big');
                        }
                        else {
                            window.location.reload();
                        }
                    }
                    else if (responseText.message) {
                        $('displaypos'+element.get('rel')).removeClass('dispnone');
                        $('editpos'+element.get('rel')).addClass('dispnone');

                        alert(responseText.message);
                    }
                }
            }).send();
        });
    });

    
    //inicjacja zadania AJAXowego dla formularzy oznaczonych klasa ajaxForm
    $$('a.ajax').each(function(element) {
        element.addEvent('click', function(e) {
            new Event(e).stop();
            if (element.get('id') == 'driver_data_edit') {
                $('driver_data').addClass('dispnone');
                $('driver_data_form').removeClass('dispnone');
            }
            else {
                $('display'+element.get('rel')).addClass('dispnone');
                $('edit'+element.get('rel')).removeClass('dispnone');
            }
        });
    });
    
    $$('.ajaxForm').each(function(form) {
        form.addEvent('submit', function(e) {
            new Event(e).stop();
            
            new Request.JSON({
                method: 'post',
                url: form.get('action'),
                data: this,
                onRequest: function(){
                    $('log_res').empty().addClass('spinner');
                },
                onComplete: function() {
                    $('log_res').removeClass('spinner');
                },
                onSuccess: function(responseText){
                    if (responseText.success == 1) {
                        $('driver_data').removeClass('dispnone');
                        $('driver_data_form').addClass('dispnone');

                        $('driver_data').empty().set('html', responseText.data);

                        //dodanie zdarzenia na click
                        $('driver_data_edit').addEvent('click', function(e) {
                            new Event(e).stop();
                            $('driver_data').addClass('dispnone');
                            $('driver_data_form').removeClass('dispnone');
                        });
                    }
                    else if (responseText.message) {
                        alert(responseText.message);
                    }
                }
            }).send();
        })
    });
    
    $$('.initial-focus').each(function(item) {
        item.focus();
    })
    
    setSystemlogType = function(obj) {
        $$('.loggroup').each(function(item) {
            if (item.get('id') == 'loggroup_' + obj.value) {
                item.removeClass('dispnone');
            }
            else {
                if (!item.hasClass('dispnone')) {
                    item.addClass('dispnone');
                }
            }
        });
    }
});

chooseRadioBtn = function (id) {
    if ($(id)) {
        $(id).checked = true;
    }
}

togglePrintButton = function(buttonId, inputClassName) {
    var btnVisible = false;
    $$('.' + inputClassName).each(function(i) {
        if (i.checked) {
            btnVisible = true;
            return btnVisible;
        }
    });
    
    if (btnVisible == true) {
        $(buttonId).getParent().getParent().removeClass('hidden-element');
        $(buttonId).href = '#';
        $(buttonId).addEvent('click', function(el) {
            new Event(el).stop();
            $('deposit-print-form').submit();
            return false;
        });
    }
    else {
        $(buttonId).getParent().getParent().addClass('hidden-element');
    }
}

manageSearchField = function(field) {
    if (field.get('value') == field.get('rel')) {
        field.set('value', '');
        field.removeClass('search-default');
    }
    else if (field.get('value') == ''){
        field.set('value', field.get('rel'));
        field.addClass('search-default');
    }
}

checkIfOuterService = function(el) {
    var selectedService = el.options[el.selectedIndex].getProperty('value');
    if (selectedService == 0) {
        if ($('service_recipient_address_wrapper').hasClass('hidden-element')) {
            $('service_recipient_address_wrapper').removeClass('hidden-element');
        }
    } else {
        if (!$('service_recipient_address_wrapper').hasClass('hidden-element')) {
            $('service_recipient_address_wrapper').addClass('hidden-element');
        }
    }
}

changeSelectVisibility = function(targetId, obj, selectId) {
    var selectedIndex = obj.options[obj.selectedIndex].value;
    
    if (selectedIndex == selectId) {
        $(targetId).addClass('disp-none')
    }
    else {
        $(targetId).removeClass('disp-none')
    }
}

alertListener = function() {
	var alertBox = $('alertBox');
	var input = alertBox.getChildren('div');
	new Request.JSON({
	    url: '/alert',
	    initialDelay: 1,
	    delay: 20000,
	    limit: 1000,
		onComplete: function(obj) {
			if(!obj) {
				this.stopTimer();
				return;
			};
			if(obj.alertNumber) {
				this.options.delay = 120000;
                var alert = new SWFObject("/images/layout/alert.swf", "flash", "27", "27", "8", "transparent");
                alert.addParam("wmode", "transparent");
                alert.addParam("scale", "noscale");
                alert.addParam("quality", "high");
//                alert.addParam("FlashVars", "site="+obj.site);
                alert.write("alertBoxDiv");
                
                $('alertBoxDiv').title = obj.alertNumber;
			}
			else {
				this.options.delay = 20000;
			}
		}
	}).startTimer();
}

openSite = function() {
    window.location = '/alert';
}

unDisableCheckboxes = function(className) {
    $$('.'+className).each(function(item){
        if (item.disabled) {
            item.disabled = false;
        }
    });
}

loadContractSelect = function() {
    new Request.JSON({
        method: 'post',
        url: '/contract/index/fleet/'+$('fleet_id').getProperty('value'),
        onComplete: function(contract) {
            if (!Browser.ie6 && !Browser.ie7) {
                $('contract_id').removeClass('spinner');
            }
    		$('contract_id').set('html', '');
            if (contract != '' && $('fleet_id').getProperty('value') != '') {
                for (var i in contract) {
                    if (contract[i] != null) {
                        var newoption = new Element('option', {'value':i, 'text':contract[i]});
                        if (i == $('contract_idx').getAttribute('value')) {
                            newoption.selected = true;
                        }
                        newoption.inject($('contract_id'));
                    }
                }
            }
        },
        onRequest: function() {
            $('contract_id').set('html', '');
            if (!Browser.ie6 && !Browser.ie7) {
                $('contract_id').addClass('spinner');
            }
        }
    }).send();
}

loadFleetCustomerSelect = function(empty_option) {
    if (empty_option == undefined || empty_option == '') empty_option = false;
    
    new Request.JSON({
        method: 'post',
        url: '/fleet-customer/index/fleet/'+$('fleet_id').getProperty('value'),
        onComplete: function(fleetCustomer) {
            if (!Browser.ie6 && !Browser.ie7) {
                $('fleet_customer_id').removeClass('spinner');
            }
    		$('fleet_customer_id').set('html', '');
            if (fleetCustomer != '' && $('fleet_id').getProperty('value') != '') {
                if (empty_option == true) {
                    var newoption = new Element('option', {'value':'', 'text':''});
                    newoption.inject($('fleet_customer_id'));
                }
                for (var i in fleetCustomer) {
                    if (fleetCustomer[i] != null) {
                        var newoption = new Element('option', {'value':i, 'text':fleetCustomer[i]});
                        if (i == $('fleet_customer_idx').getAttribute('value')) {
                            newoption.selected = true;
                        }
                        newoption.inject($('fleet_customer_id'));
                    }
                }
            }
        },
        onRequest: function() {
            $('fleet_customer_id').set('html', '');
            if (!Browser.ie6 && !Browser.ie7) {
                $('fleet_customer_id').addClass('spinner');
            }
        }
    }).send();
}

loadTyreBrandSelect = function(el, brandCode, onLoad) {
    if (onLoad && el.get('value') == '') return;
    if (brandCode == '' || brandCode == 'undefined' || brandCode == null) {
        brandCode = 'tyre_brand_code';
    }
    if (!$(brandCode)) return;
    //najpierw event dla pola tyre_brand_code w celu zapisania aktualnego producenta opon do pola ukrytego
    if (!$(brandCode)) return;
    $(brandCode).addEvent('change', function() {
        $(brandCode + '_idx').set('value', this.get('value'));
    });
    
    if ($(brandCode).get('rel'))
        var vehicleUrl = '/field/tyre_brand_code/vehicleid/'+$(brandCode).get('rel');
    else
        vehicleUrl = '/field/tyre_brand_code';
    
    new Request.JSON({
        method: 'post',
        url: '/tyre/search' + vehicleUrl,
        data: {
            'contract_id': el.get('value')
        },
        onComplete: function(brand) {
            if (!Browser.ie6 && !Browser.ie7) {
                $(brandCode).removeClass('spinner');
            }
    		$(brandCode).set('html', '');
            
            if (brand != '') {
                for (var i in brand) {
                    if (brand[i] != null) {
                        var newoption = new Element('option', {'value':i, 'text':brand[i]});
                        if (i == $(brandCode + '_idx').get('value')) {
                            newoption.selected = true;
                        }
                        newoption.inject($(brandCode));
                    }
                }

                //IE7 fix
                if (Browser.ie6 || Browser.ie7) {
                    $(brandCode).setStyle('width', '');
                    $(brandCode).setStyle('width', '100%');
                }
                loadTyrePatternSelect($(brandCode));
            }
        },
        onRequest: function() {
            $(brandCode).set('html', '');
            
            //IE7 fix
            if (Browser.ie6 || Browser.ie7) {
                $(brandCode).setStyle('width', '');
                $(brandCode).setStyle('width', '100%');
            }
            if (!Browser.ie6 && !Browser.ie7) {
                $(brandCode).addClass('spinner');
            }
        }
    }).send();
}

loadTyrePatternSelect = function(el, patternID, onLoad) {
    if (onLoad && el.get('value') == '') return;
    if (patternID == '' || patternID == 'undefined' || patternID == null) {
        patternID = 'tyre_pattern';
    }
    if (!$(patternID)) return;
    //najpierw event dla pola tyre_pattern w celu zapisania aktualnego bieznika do pola ukrytego
    if (!$(patternID)) return;
    $(patternID).addEvent('change', function() {
        $(patternID + '_idx').set('value', this.get('value'));
    });
    
    if ($(patternID).get('rel'))
        var vehicleUrl = '/field/tyre_pattern/vehicleid/'+$(patternID).get('rel');
    else
        vehicleUrl = '/field/tyre_pattern';
    
    new Request.JSON({
        method: 'post',
        url: '/tyre/search' + vehicleUrl,
        data: {
            'tyre_brand_code': el.get('value')
        },
        onComplete: function(pattern) {
            if (!Browser.ie6 && !Browser.ie7) {
                $(patternID).removeClass('spinner');
            }
    		$(patternID).set('html', '');
            
            if (pattern != '') {
                for (var i in pattern) {
                    if (pattern[i] != null) {
                        var newoption = new Element('option', {'value':i, 'text':pattern[i]});
                        if (i == $(patternID + '_idx').get('value')) {
                            newoption.selected = true;
                        }
                        newoption.inject($(patternID));
                    }
                }

                //IE7 fix
                if (Browser.ie6 || Browser.ie7) {
                    $(patternID).setStyle('width', '');
                    $(patternID).setStyle('width', '100%');
                }
            }
        },
        onRequest: function() {
            $(patternID).set('html', '');
            
            //IE7 fix
            if (Browser.ie6 || Browser.ie7) {
                $(patternID).setStyle('width', '');
                $(patternID).setStyle('width', '100%');
            }
            if (!Browser.ie6 && !Browser.ie7) {
                $(patternID).addClass('spinner');
            }
        }
    }).send();
}

loadProfileSelect = function() {
    new Request.JSON({
        method: 'post',
        url: '/profile/index/group/'+$('user_group_id').getProperty('value'),
        onComplete: function(profile) {
            if (!Browser.ie6 && !Browser.ie7) {
                $$('.dinamic_select').removeClass('spinner');
            }
            $$('.dinamic_select').set('html', '');
    //    	$$('.dinamic_select').setStyles({display: 'none'});
            $('fieldset-serviceInput').addClass('hidden-element');
            $('fieldset-fleetInput').addClass('hidden-element');
    		switch ($('user_group_id').getProperty('value')){
    			case '1':
    				loadServices();
    				break;
    			case '21':
    				loadFleetSelect();
    				break;
    		}
    		$('user_profile_id').set('html', '');

            if (profile != '' && $('user_group_id').getProperty('value') != '') {
                for (var i in profile) {
                    var label = profile[i];
                    var selected;
                    if (Cookie.read('selectedProfileId') != undefined)
                        selected = (i == Cookie.read('selectedProfileId'))?true:false;
                    else
                        selected = (i == $('user_profile_idx').getProperty('value'))?true:false;
                    if (label != null) {
                        var newoption = new Element('option', {'value':i, 'text':label, 'selected':selected});

                        newoption.inject($('user_profile_id'));
                    }
                }
            }
        },
        onRequest: function() {
            $$('.dinamic_select').set('html', '');
            if (!Browser.ie6 && !Browser.ie7) {
                $$('.dinamic_select').addClass('spinner');
            }
        }
    }).send();

    
    return;
}

loadServices = function() {
	if($('user_group_id').getProperty('value') != '1'){
		return;
	}
	$('service_id').set('html', '');
//	$('service_id').setStyles({display: 'block'});
    $('fieldset-serviceInput').removeClass('hidden-element');
	 new Request.JSON({
		 method: 'post',
		 url: '/service',
		 onComplete: function(list){
            if (!Browser.ie6 && !Browser.ie7) {
                $('service_id').removeClass('spinner');
            }
		 	if (list != '' && $('user_group_id').getProperty('value') == '1') {
		 		for (var i in list) {
                    var label = list[i];
                    var selected;
                    if (Cookie.read('selectedServiceId') != undefined)
                        selected = (i == Cookie.read('selectedServiceId'))?true:false;
                    else
                        selected = (i == $('service_idx').getProperty('value'))?true:false;
		 			if (label != null) {
		 				var newoption = new Element('option', {'value':i, 'text':label, 'selected':selected});
		 				newoption.inject($('service_id'));
		 			}
		 		}
		 	}
	 	},
        onRequest: function() {
            $('service_id').set('html', '');
            if (!Browser.ie6 && !Browser.ie7) {
                $('service_id').addClass('spinner');
            }
        }
	 }).send();
	 return;
}

loadFleetSelect = function(){
    $('fieldset-fleetInput').removeClass('hidden-element');
	 new Request.JSON({
		 method: 'post',
		 url: '/fleet',
		 onComplete: function(list){
		 	if (list != '' && $('user_group_id').getProperty('value') == '21') {
		 		for (var i in list) {
                    var label = list[i];
                    var selected;
                    if (Cookie.read('selectedFleetId') != undefined)
                        selected = (i == Cookie.read('selectedFleetId'))?true:false;
                    else
                        selected = (i == $('fleet_idx').getProperty('value'))?true:false;
		 			if (label != null) {
		 				var newoption = new Element('option', {'value':i, 'text':label, 'selected':selected});
		 				newoption.inject($('fleet_id'));
		 			}
		 		}
		 	}
	 	}
	 }).send();
	 return;
}

/**
 * Zarzadza widocznoscia czescia formularza odpowiedzialna za wyswietlenie pol dot. typu przechowalni w edycji kontraktu
 * @param el|object Obiekt ktorym zmieniane sa widocznosci pol
 */
toggleContractStore = function(el) {
    if (el.options[el.selectedIndex].value == 'storeSeason') {
        //przechowalnia sezonowa
        $('daily_store_for_fleet').setProperty('disabled', true);
        $('daily_store_for_service').setProperty('disabled', true);
     
        $('daily_store_for_fleet').setProperty('value', '');
        $('daily_store_for_service').setProperty('value', '');
    }
    else if (el.options[el.selectedIndex].value == 'storeDay') {
        //przechowalnia dobowa
        $('daily_store_for_fleet').setProperty('disabled', false);
        $('daily_store_for_service').setProperty('disabled', false);
    }
}

/**
 * Zaznacza i odznacza wszystkie checkboxy na stronie o podanej klasie
 * @param className|string Nazwa klasy
 * @param flag|string Zaznaczone lub odznaczone
 */
toggleCheckboxes = function(className, flag) {
    $$('.'+className).each(function(item){
        if (!item.disabled) {
            item.checked = flag;
        }

        //pokazuje lub ukrywa caly wiersz, jezeli dotyczy
        if (item.getAttribute('rel')) {
            var f = item.getAttribute('rel').split('::');
            if (f[0] == 'toggleAttendanceRow') {
                toggleAttendanceRow(f[1]);
            } else if (f[0] == 'toggleTyreBrandRow') {
                toggleTyreBrandRow(f[1]);
            }
        }
    })
}

/**
 * Pokazuje lub ukrywa jeden element o podanym id
 * @param elementId|int Nazwa identyfikatora
 * @param toggler|obj Element przelaczajacy - do sprawdzenia stanu przelacznika
 */
toggleElement = function(elementId, toggler) {
    if (toggler.checked) {
        $(elementId).disabled = true;
        $(elementId).value = '';
    } else {
        $(elementId).disabled = false;
    }
}

/**
 * Blokuje lub odblokowuje jeden element o podanym ID np za pomoca odpowiedniej opcji selecta
 * @param elementId|int Nazwa identyfikatora
 * @param toggler|obj Element przelaczajacy (select) - do sprawdzenia stanu przelacznika
 * @param val|int Wartosc, ktora definiuje czy element ma byc zablokowany czy nie
 */
disableElementBySelect = function(elementId, toggler, val) {
    if (toggler.options[toggler.selectedIndex].value == val) {
        $(elementId).disabled = true;
        $(elementId).value = '';
    } else {
        $(elementId).disabled = false;
    }
}

toggleTyreBrandRow = function(tyre_brand_id) {
    if (!$('tyre_brand_code-'+tyre_brand_id).checked) {
        $('tyre_authorization_in_season-'+tyre_brand_id).checked = false;
        $('tyre_authorization_in_season-'+tyre_brand_id).disabled = true;

        $('tyre_authorization_out_of_season-'+tyre_brand_id).checked = false;
        $('tyre_authorization_out_of_season-'+tyre_brand_id).disabled = true;
        
        $('tyre_segment_id-'+tyre_brand_id).disabled = true;
    } else {
        $('tyre_authorization_in_season-'+tyre_brand_id).disabled = false;
        $('tyre_authorization_out_of_season-'+tyre_brand_id).disabled = false;
        $('tyre_segment_id-'+tyre_brand_id).disabled = false;
    }
}

/**
 * Pokazuje lub ukrywa caly wiersz uslug w kontrakcie
 * @param contract_id|int ID kontraktu
 */
toggleAttendanceRow = function(contract_id) {
    if (!$('attendance_id-'+contract_id).checked) {
        $('attendance_fleet_code-'+contract_id).value = '';
        $('attendance_fleet_code-'+contract_id).disabled = true;

        $('attendance_authorization_in_season-'+contract_id).checked = false;
        $('attendance_authorization_in_season-'+contract_id).disabled = true;

        $('attendance_authorization_out_of_season-'+contract_id).checked = false;
        $('attendance_authorization_out_of_season-'+contract_id).disabled = true;

        $('attendance_net_price_for_fleet-'+contract_id).value = '';
        $('attendance_net_price_for_fleet-'+contract_id).disabled = true;

        $('attendance_net_price_for_service-'+contract_id).value = '';
        $('attendance_net_price_for_service-'+contract_id).disabled = true;
    } else {
        $('attendance_fleet_code-'+contract_id).disabled = false;
        $('attendance_authorization_in_season-'+contract_id).disabled = false;

        $('attendance_authorization_out_of_season-'+contract_id).disabled = false;

        $('attendance_net_price_for_fleet-'+contract_id).disabled = false;
        $('attendance_net_price_for_service-'+contract_id).disabled = false;
    }
}

/**
 * Pokazduje lub ukrywa element definiujacy czy pole formularza jest wymagane czy nie
 * Jezeli element (span) nie istnieje, to jest tworzony
 * @param element|obj Obiekt, w ktorym powinien znajdowac sie element span
 * @param val|int Flaga okreslajaca, czy pole formularza ma byc wymagane czy nie
 */
setRequiredSpan = function(element, val) {
    if (val == 1) displayStyle = 'inline';
    else displayStyle = 'none';
    
    if (element.getFirst('span.required')) {
        element.getFirst('span.required').setStyle('display', displayStyle);
    }
    else {
        if (val == 1) {
            var span = new Element('span', {'class': 'required', 'html': '*'});
            span.inject(element);
        }
    }
}

/**
 * Pokazuje lub ukrywa fragmenty formularza rabatow dla opon w zaleznosci ktora opcja typu rabatu zostanie wybrana
 * @param el|object Obiekt, ktorym zostaja zmieniane opcje
 */
toggleDiscountType = function(el) {
    var fixLabel = false;
    if (el.options[el.selectedIndex].value == 3) {
        //cena FIX
        fixLabel = true;
        $('fieldset-isFixForm').removeClass('hidden-element');
        if (!$('fieldset-isAdditionalForm').hasClass('hidden-element')) {
            $('fieldset-isAdditionalForm').addClass('hidden-element');
        }
        if (!$('fieldset-isNotFixForm').hasClass('hidden-element')) {
            $('fieldset-isNotFixForm').addClass('hidden-element');
        }
        
        //przywrocenie gwiazdki dla etykiety sezonu
        setRequiredSpan($('isAdditionalForm-tyre_season_key').getPrevious(), 1);
        //przywrocenie gwiazdek dla etykiet zakresu dat
        setRequiredSpan($('discount_tyre_date_from').getPrevious(), 1);
        setRequiredSpan($('discount_tyre_date_to').getPrevious(), 1);
    } else if (el.options[el.selectedIndex].value == 2) {
        //rabat dodatkowy
        $('fieldset-isAdditionalForm').removeClass('hidden-element');
        $('fieldset-isNotFixForm').removeClass('hidden-element');
        if (!$('fieldset-isFixForm').hasClass('hidden-element')) {
            $('fieldset-isFixForm').addClass('hidden-element');
        }
        
        //usuniecie gwiazdki dla etykiety sezonu
        setRequiredSpan($('isAdditionalForm-tyre_season_key').getPrevious(), 0);
        //przywrocenie gwiazdek dla etykiet zakresu dat
        setRequiredSpan($('discount_tyre_date_from').getPrevious(), 1);
        setRequiredSpan($('discount_tyre_date_to').getPrevious(), 1);
    } else {
        //rabat bazowy
        if (!$('fieldset-isAdditionalForm').hasClass('hidden-element')) {
            $('fieldset-isAdditionalForm').addClass('hidden-element');
        }
        if (!$('fieldset-isFixForm').hasClass('hidden-element')) {
            $('fieldset-isFixForm').addClass('hidden-element');
        }
        $('fieldset-isNotFixForm').removeClass('hidden-element');
        
        //przywrocenie gwiazdki dla etykiety sezonu
        setRequiredSpan($('isAdditionalForm-tyre_season_key').getPrevious(), 1);
        //usuniecie gwiazdek dla etykiet zakresu dat
        setRequiredSpan($('discount_tyre_date_from').getPrevious(), 0);
        setRequiredSpan($('discount_tyre_date_to').getPrevious(), 0);
    }
    toggleDiscountTypeSetLabel(fixLabel);
}
toggleDiscountTypeSetLabel = function(fixLabel) {
    $$('#fieldset-contract_tyre_discount_more label').each(function(el) {
        input = $(el.get('for'));
        if((input.get('class')=='nofix' && fixLabel) || (input.get('class')=='fix' && !fixLabel)) {
            rel = input.get('rel');
            input.set('rel', el.get('html'));
            el.set('html', rel);
            if(fixLabel) input.set('class', 'fix');
            else input.set('class', 'nofix');
        }
    });
}

//zarzadza zakladkami
manageTabs = function(id, element, addEvents) {
    tabs_class = element.get('rel');
    
    if (!id) {
        id = prepareTabs(tabs_class, element);
    }
    element.getElements(".tabs").each(function(item){
        if (item.id == tabs_class+'_'+id) {
            Cookie.write('tabs_'+tabs_class, id);
            item.removeClass('dispnone');
        }
        else item.addClass('dispnone');
    });
    element.getElements(".link_tabs a").each(function(item){
        if (addEvents) {
            item.addEvent('click', function(el) {
                new Event(el).stop();
                manageTabs(this.id.replace('link_tabs_',''), element, false);
            });
        }
        if (item.id == 'link_tabs_'+id) {
            item.addClass('active');
        }
        else item.removeClass('active');
    });
}

prepareTabs = function(tabs_class, element) {
	var cookie = Cookie.read('tabs_'+tabs_class);
    //jezeli nie istnieje ciasteczko lub nie istnieje zakladka zdefiniowana w ciasteczku to ustaw pierwsza zakladke
	if(!cookie || (cookie && !$('link_tabs_'+cookie))) {
        element.getElements(".tabs").each(function(item, index){
            if (index == 0) {
                Cookie.write('tabs_'+tabs_class, item.id.replace(tabs_class+'_',''));
            }
        });
    }
    if (!element.hasClass('nocookie')) {    //jezeli zakladki beda oznaczone klasa nocookie to nie wczytujemy ciasteczka i nie ustawiamy zakladek wg wartosci z ciasteczka
        cookie = Cookie.read('tabs_'+tabs_class);
        if ($('link_tabs_'+cookie)) {
            $(tabs_class+'_'+cookie).removeClass('dispnone');
            $('link_tabs_'+cookie).addClass('active');
        }
    }
    else {
        Cookie.dispose(cookie);
        
        //ustawienie pierwszej zakladi jako aktywna
        element.getElements(".tabs").each(function(item, index){
            if (index == 0) {
                Cookie.write('tabs_'+tabs_class, item.id.replace(tabs_class+'_',''));
            }
        });
        cookie = Cookie.read('tabs_'+tabs_class);
    }
    return cookie;
}

function answer(msg){
	var answer=window.confirm(msg);
	if (answer){
		return true;
	}
	else{
		return false;
	}
}

//usuniecie ciasteczek z zapamietanymi wczesniej zaznaczonymi selectami
if (Cookie.read('submitEditUser') != '1') {
    Cookie.dispose('selectedProfileId', {path:'/users'});
    Cookie.dispose('selectedServiceId', {path:'/users'});
    Cookie.dispose('selectedFleetId', {path:'/users'});

} else {
    Cookie.dispose('submitEditUser', {path:'/users'});
}

submitUserForm = function() {
    Cookie.write('submitEditUser', '1', {path:'/users'});
}

/**
 * Kopiuje pole formularza opony z jednego wiersza do drugiego
 * 
 * Uzywane w formularzu edycji opon w depozycie
 * 
 * @param tyreIdFrom ID opony zrodlowej, 'null' w przypadku gdy ma byc skopiowana ostatnia zaznaczona opona oznaczona klasa '.checkTyre'
 * @param tyreIdTo ID opony docelowej
 */
copyTyre = function(tyreIdFrom, tyreIdTo)
{
    if (tyreIdFrom == undefined || tyreIdFrom == null || tyreIdFrom == 'null') {
        //wskazanie elementu, ktory ma byc skopiowany
        $$('.checkTyre').each(function(element) {
            if (element.get('checked')) {
                tyreIdFrom = element.get('id');
            }
        });
    }
    tyreIdFrom = tyreIdFrom.replace('-tyre_id', '');
    if (!tyreIdFrom) return;
    
    if ($(tyreIdTo + '-tyre_pattern_idx') && $(tyreIdFrom + '-tyre_brand').get('value') != $(tyreIdTo + '-tyre_brand').get('value')) {
        var doLoadPattern = true;
    }
    
    if ($(tyreIdTo + '-tyre_brand') && !$(tyreIdTo + '-tyre_brand').get('disabled')) {
        if ($(tyreIdTo + '-tyre_brand').get('type') == 'text') {
            var selectedIndex = $(tyreIdFrom + '-tyre_brand').selectedIndex;
            if (selectedIndex) {
                $(tyreIdTo + '-tyre_brand').set('value', $(tyreIdFrom + '-tyre_brand').options[selectedIndex].label);
            }
            else {
                $(tyreIdTo + '-tyre_brand').set('value', $(tyreIdFrom + '-tyre_brand').get('value'));
            }
        }
        else {
            $(tyreIdTo + '-tyre_brand').set('value', $(tyreIdFrom + '-tyre_brand').get('value'));
        }
    }
    
    if ($(tyreIdTo + '-tyre_pattern_idx')) {
        $(tyreIdTo + '-tyre_pattern_idx').set('value', $(tyreIdFrom + '-tyre_pattern_idx').get('value'));
        if (doLoadPattern)
            loadTyrePatternSelect($(tyreIdFrom + '-tyre_brand'), tyreIdTo + '-tyre_pattern');
    }
    
    if (!$(tyreIdTo + '-tyre_pattern').get('disabled'))
        $(tyreIdTo + '-tyre_pattern').set('value', $(tyreIdFrom + '-tyre_pattern').get('value'));
    if (!$(tyreIdTo + '-tyre_size').get('disabled'))
        $(tyreIdTo + '-tyre_size').set('value', $(tyreIdFrom + '-tyre_size').get('value'));
    if (!$(tyreIdTo + '-tyre_aspect_ratio').get('disabled'))
        $(tyreIdTo + '-tyre_aspect_ratio').set('value', $(tyreIdFrom + '-tyre_aspect_ratio').get('value'));
    if (!$(tyreIdTo + '-tyre_diameter').get('disabled'))
        $(tyreIdTo + '-tyre_diameter').set('value', $(tyreIdFrom + '-tyre_diameter').get('value'));
    if (!$(tyreIdTo + '-li').get('disabled'))
        $(tyreIdTo + '-li').set('value', $(tyreIdFrom + '-li').get('value'));
    if (!$(tyreIdTo + '-si').get('disabled'))
        $(tyreIdTo + '-si').set('value', $(tyreIdFrom + '-si').get('value'));
    if (!$(tyreIdTo + '-tyre_season_key').get('disabled'))
        $(tyreIdTo + '-tyre_season_key').set('value', $(tyreIdFrom + '-tyre_season_key').get('value'));
    if ($(tyreIdTo + '-tyre_purpose_key') && !$(tyreIdTo + '-tyre_purpose_key').get('disabled'))
        $(tyreIdTo + '-tyre_purpose_key').set('value', $(tyreIdFrom + '-tyre_purpose_key').get('value'));
    if ($(tyreIdTo + '-dot') && !$(tyreIdTo + '-dot').get('disabled'))
        $(tyreIdTo + '-dot').set('value', $(tyreIdFrom + '-dot').get('value'));
    if ($(tyreIdTo + '-comment') && !$(tyreIdTo + '-comment').get('disabled'))
        $(tyreIdTo + '-comment').set('value', $(tyreIdFrom + '-comment').get('value'));
    if ($(tyreIdTo + '-rim') && !$(tyreIdTo + '-rim').get('disabled'))
        $(tyreIdTo + '-rim').set('value', $(tyreIdFrom + '-rim').get('value'));
    if ($(tyreIdTo + '-rim_description') && !$(tyreIdTo + '-rim_description').get('disabled'))
        $(tyreIdTo + '-rim_description').set('value', $(tyreIdFrom + '-rim_description').get('value'));
    if (!$(tyreIdTo + '-tread_depth').get('disabled'))
        $(tyreIdTo + '-tread_depth').set('value', $(tyreIdFrom + '-tread_depth').get('value'));
    if (!$(tyreIdTo + '-deposit_number').get('disabled'))
        $(tyreIdTo + '-deposit_number').set('value', $(tyreIdFrom + '-deposit_number').get('value'));
    
    if ($(tyreIdTo + '-tyre_id')) {
        if ($(tyreIdFrom + '-tyre_id').get('checked')) {
            $(tyreIdTo + '-tyre_id').set('checked', true);
        }
        else {
            $(tyreIdTo + '-tyre_id').set('checked', false);
        }
    }
//    $(tyreIdTo + '-tyre_id').set('checked', $(tyreIdFrom + '-tyre_id').get('checked'));
}

/**
 * Kopiuje numer autoryzacji z jednego wiersza do drugiego
 * 
 * @param authIdFrom ID numeru autoryzacji zrodlowej
 * @param authIdTo ID numeru autoryzacji docelowego
 */
copyAuthNr = function(authIdFrom, authIdTo)
{
    if (!$(authIdTo).get('disabled'))
        $(authIdTo).set('value', $(authIdFrom).get('value'));
}

/**
 * Kopiuje pole formularza opony z jednego wiersza do drugiego (tylko dla opon w depozycie przy przekladce opon)
 * 
 * Uzywane w formularzu edycji opon w depozycie
 * 
 * @param tyreIdFrom ID opony zrodlowej, 'null' w przypadku gdy ma byc skopiowana ostatnia zaznaczona opona oznaczona klasa '.checkTyre'
 * @param tyreIdTo ID opony docelowej
 * @param extra ID Extra element to skopiowania
 */
copyDepositTyre = function(tyreIdFrom, tyreIdTo, extra)
{
    if (tyreIdFrom == undefined || tyreIdFrom == null || tyreIdFrom == 'null') {
        //wskazanie elementu, ktory ma byc skopiowany
        $$('.checkTyre').each(function(element) {
            if (element.get('checked')) {
                tyreIdFrom = element.get('id');
            }
        });
    }
    tyreIdFrom = tyreIdFrom.replace('-tyre_id', '');
    if (!tyreIdFrom) return;
    
    var idBefore = tyreIdFrom.replace('vehicle_tyre_vehicle-', '');
    var idNext = tyreIdTo.replace('vehicle_tyre_vehicle-', '');
    if ($(idNext) && !$(idNext).get('disabled')) {
        if ($(idBefore).get('checked')) {
            $(idNext).set('checked', true);
        }
        else {
            $(idNext).set('checked', false);
        }
    }
    
    if ($(tyreIdTo + '-comment') && !$(tyreIdTo + '-comment').get('disabled'))
        $(tyreIdTo + '-comment').set('value', $(tyreIdFrom + '-comment').get('value'));
    if ($(tyreIdTo + '-rim') && !$(tyreIdTo + '-rim').get('disabled'))
        $(tyreIdTo + '-rim').set('value', $(tyreIdFrom + '-rim').get('value'));
    if ($(tyreIdTo + '-rim_description') && !$(tyreIdTo + '-rim_description').get('disabled'))
        $(tyreIdTo + '-rim_description').set('value', $(tyreIdFrom + '-rim_description').get('value'));
    if (!$(tyreIdTo + '-tread_depth').get('disabled'))
        $(tyreIdTo + '-tread_depth').set('value', $(tyreIdFrom + '-tread_depth').get('value'));
    if (!$(tyreIdTo + '-deposit_number').get('disabled'))
        $(tyreIdTo + '-deposit_number').set('value', $(tyreIdFrom + '-deposit_number').get('value'));
}

/**
 * Kopiuje parametry
 * @param attribs Tablica atrybutow opony
 */
copyTyreToSearchForm = function(attribs) {
    if ($('searchTyreForm')) {
        $('tyre_season_key').set('value', attribs.tyre_season_key);
        $('tyre_brand_code').set('value', attribs.tyre_brand_code);
        $('tyre_pattern_idx').set('value', attribs.tyre_pattern_idx);
        $('tyre_size').set('value', attribs.tyre_size);
        $('tyre_aspect_ratio').set('value', attribs.tyre_aspect_ratio);
        $('tyre_diameter').set('value', attribs.tyre_diameter.toInt());

        loadTyrePatternSelect($('tyre_brand_code'));
    }
}
