Element.Properties.disabled = {
 
    get: function(){
        return this.disabled;
    },
 
    set: function(value){
        this.disabled = !!value;
        this.setAttribute('disabled', !!value);
    }
 
};


var SiteEngine = new Class ({
	initialize : function(basehref){
		
		this.basehref = basehref;
		this.prepareLoginForms();
		this.prepareKontaktForms();
		this.prepareNosnikForms();
		this.prepareBanners();
		this.prepareSearchStatic();
		
		this.prepareButtons();
		this.prepareGrSubmit();
		this.prepareOtherForms();
		this.prepareItemsRemember();
		this.prepareFiltering();
		this.prepareMessages();
		this.prepareDatePickers();
		this.prepareEdit2();
		this.prepareSearchWide();
		this.prepareRadius();
		//this.prepareIEfix();
	},
	

	prepareMessages:function() {
		
		if($defined($('message_item'))) {
		
			
			new Message({
			iconPath: this.basehref + 'images/',
			centered: true,
			icon: 'okMedium.png',
			//isUrgent:true,
			title: 'Informacja',
			message: $('message_item').get('text')
			}).tell();
			
		
		}
		
	},
	
	prepareBanners:function() {
		if($defined($('banner_container'))) {
		new SlideItMoo({itemsVisible:2, // the number of thumbnails that are visible
							currentElement: 0, // the current element. starts from 0. If you want to start the display with a specific thumbnail, change this
							thumbsContainer: 'thumbs2',
							elementScrolled: 'thumb_container',
							overallContainer: 'banner_container'
		});
		}
	
	
	if($defined($('galeria_container'))) {
		new SlideItMoo({itemsVisible:2, // the number of thumbnails that are visible
							currentElement: 0, // the current element. starts from 0. If you want to start the display with a specific thumbnail, change this
							thumbsContainer: 'galeria',
							elementScrolled: 'thumb_galeria',
							overallContainer: 'galeria_container'
		});
		}
	},
	
	prepareOtherForms:function() {
		if($defined($('campaign_create'))) {
			cfe.spacer = basehref + "gfx/spacer.gif";
	
	        var myCfe = new cfe.replace();
	
	        // no fieldset enhancement
	        myCfe.unregisterModule("fieldset");
			myCfe.unregisterModule("image");
			myCfe.unregisterModule("textarea");
			
			myCfe.setModuleOptions("select",{
            scrolling: true,
            scollSteps: 2,
			size: 10
	        });
	
			 myCfe.init({
	            //theme: "basic", currently not supported
	            scope: $('campaign_create')
			});
		}
		
		if($defined($('campaign_edit'))) {
			cfe.spacer = basehref + "gfx/spacer.gif";
	
	        var myCfe = new cfe.replace();
	
	        // no fieldset enhancement
	        myCfe.unregisterModule("fieldset");
			myCfe.unregisterModule("image");
			myCfe.unregisterModule("textarea");
			
			myCfe.setModuleOptions("select",{
            scrolling: true,
            scollSteps: 2,
			size: 10
	        });
	
			 myCfe.init({
	            scope: $('campaign_edit')
			});
		}
		
		
		if($defined($('date_form'))) {
			cfe.spacer = basehref + "gfx/spacer.gif";
	
	        var myCfe = new cfe.replace();
	
	        // no fieldset enhancement
	        myCfe.unregisterModule("fieldset");
			myCfe.unregisterModule("image");
			myCfe.unregisterModule("textarea");
			myCfe.unregisterModule("select");
			
			myCfe.setModuleOptions("select",{
            scrolling: false
	        });
	
			 myCfe.init({
	            scope: $('date_form')
			});
		}
		if($defined($('year_form'))) { /* NMK51 */
            cfe.spacer = basehref + "gfx/spacer.gif";
            var myCfe = new cfe.replace();
	        myCfe.unregisterModule("fieldset");
			myCfe.unregisterModule("image");
			myCfe.unregisterModule("textarea");
			myCfe.unregisterModule("select");
			myCfe.setModuleOptions("select",{scrolling: false});
            myCfe.init({scope: $('year_form')});
		} /* NMK51 */
		if($defined($('coordinates_form'))) { /* NMK10 */
            cfe.spacer = basehref + "gfx/spacer.gif";
            var myCfe = new cfe.replace();
	        myCfe.unregisterModule("fieldset");
			myCfe.unregisterModule("image");
			myCfe.unregisterModule("textarea");
			myCfe.unregisterModule("select");
			myCfe.setModuleOptions("select",{scrolling: false});
            myCfe.init({scope: $('coordinates_form')});
		} /* NMK10 */
		if($defined($('cards_form'))) { /* NMK7 */
            cfe.spacer = basehref + "gfx/spacer.gif";
            var myCfe = new cfe.replace();
	        myCfe.unregisterModule("fieldset");
			myCfe.unregisterModule("image");
			myCfe.unregisterModule("textarea");
			myCfe.unregisterModule("select");
			myCfe.setModuleOptions("select",{scrolling: false});
            myCfe.init({scope: $('cards_form')});
		} /* NMK18 */
		if($defined($('gluing_form'))) { /* NMK7 */
            cfe.spacer = basehref + "gfx/spacer.gif";
            var myCfe = new cfe.replace();
	        myCfe.unregisterModule("fieldset");
			myCfe.unregisterModule("image");
			myCfe.unregisterModule("textarea");
			myCfe.unregisterModule("select");
			myCfe.setModuleOptions("select",{scrolling: false});
            myCfe.init({scope: $('gluing_form')});
		} /* NMK18 */
		
	},
	
	prepareButtons:function() {
		
		var slf = this;
		
		
		if($defined($('search')) && $defined($('search').getParent('form')) && !$defined($('form_edit2'))) {
			
		var monthTips = new Tips($('search').getElements('div.month'), 
				{text:function(element)
					{
					  if(element.hasClass('free'))
						 return 'Kliknij, aby <strong>zaznaczyć</strong> chęć użycia nośnika w tym miesiącu.';
						 else if(element.hasClass('saved'))
							return 'Nośnik <strong>zajęty, niedostępny</strong> w tym miesiącu.';
						 else if(element.hasClass('selected'))
							return 'Kliknij aby <strong>zwolnić</strong> nośnik w tym miesiącu.';
						 else if(element.hasClass('conflicted'))
							return 'Kliknij, aby <strong>zlikwidować</strong> konflikt.<br/>Nośnik jest już niedostępny w tym miesiącu.';

					},
					showDelay: 300,
					hideDelay: 50,
					className: 'tip-wrap month-tip'
				});	
		
		$('search').store('modified',false);
		
			$('search').getElements('div.month').each(function(item,index){
					
					var checkbox = item.getElement('input[type=checkbox]');
					
					checkbox.setStyle('display','none');
					
					item.addEvent('click',function(){
					
					var month_price = this.getParent('tr').getAttribute('rel');
					var current_price = $('szacowana_cena').get('text');
					var updated_price = current_price;
					
                    if(item.hasClass('nonactive')) { } else /* NMK1 disable Nonactive Bookings */
					if(checkbox.get('disabled') == true) {
						/* NMK6 (not user friendly) alert('Ten nośnik jest niedostępny'); */	
					} else {
						if(checkbox.checked == true && !item.hasClass('conflicted')) {
							item.removeClass('selected').addClass('free');
							checkbox.checked = false;
							updated_price = parseInt(current_price) - parseInt(month_price);
						} else if(checkbox.checked == true && item.hasClass('conflicted')) {
							item.removeClass('conflicted').addClass('saved');
							checkbox.checked = false;
							checkbox.set('disabled').set(true);
							updated_price = parseInt(current_price) - parseInt(month_price);
						} else {
							item.removeClass('free').addClass('selected');	
							checkbox.checked = true;
							updated_price = parseInt(current_price) + parseInt(month_price);
						}
						
						$('szacowana_cena').empty().set('text', updated_price); 
						
						$('search').store('modified',true);
						if($defined($('remember_billboard_state_text')))
						$('remember_billboard_state_text').empty().set('html','<span style="color:red!important">Zapamiętaj wybór nośników</span>');
						if($defined($('remember_billboard_state'))) $('remember_billboard_state').set('style','display:inline');
					
					}
					
					monthTips.hide(item);			
					item.eliminate('tip:text');
					item.eliminate('tip:title');
					monthTips.detach(item);

					monthTips.attach(item);
					
					});					
				});
			
		
		}
		
		$$('.remove_link').addEvent('click',function(event){
			event.stop();
			event.preventDefault();
			var confirmation= confirm("Czy jesteś pewien, że chcesz usunąć ten element?");

			if(confirmation == true) {
				window.location = this.href;
			}
			});
		
		
		$$('.remove_link_big').addEvent('click',function(event){
			event.stop();
			event.preventDefault();
			
			if(this.rel!='') {
			 info = this.rel;	
			} else {
				info = "Czy jesteś pewien, że chcesz usunąć tę kampanię?";
			}
			
			
			var confirmation= confirm(info);

			if(confirmation == true) {
				window.location = this.href;
			}
			});
		
		
		
		if($defined($('pic_form'))) {

			cfe.spacer = basehref + "gfx/spacer.gif";
	
	        var myCfe = new cfe.replace();
	
	        // no fieldset enhancement
	        myCfe.unregisterModule("fieldset");
			myCfe.unregisterModule("image");
			myCfe.unregisterModule("textarea");
			myCfe.unregisterModule("select");
	
			 myCfe.init({
	            //theme: "basic", currently not supported
	            scope: $('pic_form')
			});			
		}
		
		
		
		
		
	},
	
	prepareEdit2:function() {
		
		
		if($defined($('search')) && $defined($('form_edit2'))) {
			
		var monthTips = new Tips($('search').getElements('div.month'), 
				{text:function(element)
					{
					  if(element.hasClass('free'))
						 return 'Kliknij, aby <strong>przywrócić</strong> chęć użycia nośnika w tym miesiącu.';
						 else if(element.hasClass('nonactive'))
							return '<strong>Nośnik nie pochodzi z tej kampanii.</strong>';
						 else if(element.hasClass('kampania'))
							return 'Kliknij aby <strong>zwolnić</strong> nośnik w tej kampanii.';

					},
					showDelay: 300,
					hideDelay: 50,
					className: 'tip-wrap month-tip'
				});	
		
		$('search').store('modified',false);
		
			$('search').getElements('div.month').each(function(item,index){
					
					var checkbox = item.getElement('input[type=checkbox]');
					
					if($defined(checkbox))
					checkbox.setStyle('display','none');
					
					item.addEvent('click',function(){
					
					var month_price = this.getParent('tr').getAttribute('rel');
					var current_price = $('szacowana_cena').get('text');
					var updated_price = current_price;
					
					if($defined(checkbox))
					if(checkbox.get('disabled') == true) {
						alert('Ten nośnik jest niedostępny');	
					} else {
						if(checkbox.checked == false && item.hasClass('kampania')) {
							item.removeClass('kampania').addClass('free');
							checkbox.checked = true;
							updated_price = parseInt(current_price) - parseInt(month_price);
						} else if(checkbox.checked == true && item.hasClass('free')) {
							updated_price = parseInt(current_price) + parseInt(month_price);
							item.removeClass('free').addClass('kampania');
							checkbox.checked = false;
						}
						
						$('szacowana_cena').empty().set('text', updated_price); 
						
						$('search').store('modified',true);
	
					}
					
					monthTips.hide(item);			
					item.eliminate('tip:text');
					item.eliminate('tip:title');
					monthTips.detach(item);

					monthTips.attach(item);
					
					});					
				});
			
		
		}
		
	},
	
	
	prepareDatePickers:function() {
		
		if($defined($('pic_form'))) {
		MooTools.lang.setLanguage("pl-PL");
		new DatePicker('date', {
			pickerClass: 'datepicker_vista',		   
			positionOffset: { x: 0, y: 5 },
			format: '%d-%m-%Y'
		});
		}
		
	},

	prepareSearchStatic:function() {
		if($defined($('nosnikiForm'))) {
			
		$('nosnikiForm').getElement('form').getElements('span').removeEvents('click').addEvent('click',function(event){
				event.stopPropagation();															
			alert('Tylko zalogowany użytkownik ma możliwość przeglądania nośników')}
			);
		$('nosnikiForm').getElement('form').getElements('label').removeEvents('click').addEvent('click',function(event){
				event.stopPropagation();															
			alert('Tylko zalogowany użytkownik ma możliwość przeglądania nośników')}
			);

		}
	},
	
	prepareGrSubmit:function() {
		if($defined($('save_changes'))) {
			$('save_changes').addEvent('click',function(event){
														
			event.preventDefault();
			$('save_changes').getParent('form').submit();
			
			
			});
		}
        if($defined($('save_changes_2'))) { /* NMK63 */
            $('save_changes_2').addEvent('click',function(event){
                event.preventDefault();
                $formNode = $('save_changes_2').getParent('form')
                $formAction = $formNode.getAttribute('action');
                $formAction2 = $formNode.getAttribute('action2');
                $formNode.setAttribute('action', $formAction2);
                $formNode.submit();
                $formNode.setAttribute('action', $formAction);
            });
        } /* NMK63 */
	},
	
	prepareFiltering:function() {
		
		if($defined($('filtrowanie_select_holder'))) {

		$('filtrowanie').addEvent('change',function(){
			
			window.location = this.value;
																  
		});	


		cfe.spacer = basehref + "gfx/spacer.gif";
	
	        var myCfe = new cfe.replace();
	
	        // no fieldset enhancement
	        myCfe.unregisterModule("fieldset");
			myCfe.unregisterModule("image");
			myCfe.unregisterModule("textarea");
			
			myCfe.setModuleOptions("select",{
            scrolling: false
	        });
	
			 myCfe.init({
	            //theme: "basic", currently not supported
	            scope: $('filtrowanie_select_holder')
			});	
			 
 
			
		}
	},
	
	prepareItemsRemember:function() {
		if($defined($('remember_billboard_state')) && $defined($('rememberable')) && $defined($('save_campaign'))) {
		
			$('remember_billboard_state').addEvent('click',function(event){
				event.preventDefault();
				$('rememberable').fireEvent('submit');
			
			});
		
		
			$('rememberable').addEvent('submit',function(event){
				
				//event.stop();
				if($('search').retrieve('modified') == true) {
			
				this.set('send', {
						 onRequest:function() {
							//alert('wysylam requesta');	
							$('remember_billboard_state_text').empty().set('html','Proszę czekać...');
							
						},
						 onSuccess:function(responseText) {
							 
							var Jresponse = JSON.decode(responseText);

							
							if(Jresponse.status == 'true') {
								$('search').store('modified',false);
								$('szacowana_cena').empty().set('html',Jresponse.cost);
								$('remember_billboard_state_text').empty().set('html','Wybór zapamiętany');
								if($defined($('save_campaign'))) $('save_campaign').set('style','display:inline');
								//alert('Zmiany zostały zapisane!');	

							} else {
								alert('Zapis zmian nie udał się!');
							}
							}});
			//Send the form.
			this.send();	
			}
				
			});
			
			$('save_campaign').addEvent('click', function(event) {
				
				
				if($('search').retrieve('modified') == true) {
					if(confirm('Nie zapisałeś ostatnich zmian, chcesz kontynuować?')) {
						return true;
					} else {
						event.preventDefault();	
					}
				};
			});
			
            window.onbeforeunload = function() { /* NMK51 */
				if($('search').retrieve('modified') == true) {
					return('Nie zapisałeś ostatnich zmian, chcesz kontynuować?');
				};
            }; /* NMK11 */
            
		}
	},

	prepareSearchWide:function(){
		
		if($defined($('top_wide_search'))){
			cfe.spacer = basehref + "gfx/spacer.gif";
	
	        var myCfe4 = new cfe.replace();
	
	        myCfe4.unregisterModule("fieldset");
			myCfe4.unregisterModule("image");
			myCfe4.unregisterModule("textarea");
			
			myCfe4.setModuleOptions("select",{
            scrolling: true,
            scollSteps: 1,
			size: 10
	        });
	
			 myCfe4.init({
	            scope: $('top_wide_search')
			});
			 
			 var city = $('miasto');
			
			city.addEvent('change', function() {
											  
				var current_city_id = this.value;							  
											  
				var streets_sl = $('ulica'); 
				
				streets_sl.empty();
								
				new Element('option', {text: 'rozwiń listę', value: 0}).inject(streets_sl);

				var street_number = 0;

				cities_streets[''+current_city_id+''].each(function(item,index){
						if(item[0] > 0) {
							new Element('option', {text: item[1], value: item[0]}).inject(streets_sl);
						}
					});
				
				if(street_number<1 && Browser.Engine.trident) {
					new Element('option', {text: 'brak ulic', value: '0'}).inject(streets_sl);
				}
				
				var changed_select =  $('street_row').getElement('.jsSelector');
					changed_select.destroy();

					var org_label = $('street_row').getElement('label');
					var org_select = $('street_row').getElement('select');
					org_label.set('class','').removeEvents().set('for','ulica');
					org_select.set('style','').removeEvents();
	
					cfe.spacer = basehref + "gfx/spacer.gif";

					var myCfe1 = new cfe.replace();
	
					 myCfe1.unregisterModule("fieldset");
					 myCfe1.unregisterModule("image");
					 myCfe1.unregisterModule("input");		
					 
					myCfe1.setModuleOptions("select",{
					scrolling: true,
					scollSteps: 2,
					size: 10
					}); 
					
					myCfe1.init({
						scope: $('street_row')
					});
					
				var regions_sl = $('region'); 
				
				regions_sl.empty();
								
				new Element('option', {text: 'rozwiń listę', value: 0}).inject(regions_sl);
				
				var region_number = 0;

				cities_districts[''+current_city_id+''].each(function(item,index){
						if(item[0] > 0) {
							new Element('option', {text: item[1], value: item[0]}).inject(regions_sl);
							region_number++;
						}
					});
				
				if(region_number<1 && Browser.Engine.trident) {
					new Element('option', {text: 'brak dzielnic', value: '0'}).inject(regions_sl);
				}
				
				var changed_select1 =  $('district_row').getElement('.jsSelector');
					changed_select1.destroy();

					var org_label1 = $('district_row').getElement('label');
					var org_select1 = $('district_row').getElement('select');
					org_label1.set('class','').removeEvents().set('for','region');
					org_select1.set('style','').removeEvents();
	
					cfe.spacer = basehref + "gfx/spacer.gif";

					var myCfe1 = new cfe.replace();
	
					 myCfe1.unregisterModule("fieldset");
					 myCfe1.unregisterModule("image");
					 myCfe1.unregisterModule("input");		
					 
					myCfe1.setModuleOptions("select",{
					scrolling: true,
					scollSteps: 2,
					size: 10
					}); 
					
					myCfe1.init({
						scope: $('district_row')
					});
			
			});
			
			var state = $('wojewodztwa');
			
			state.addEvent('change', function() {
											  
				var current_state_id = this.value;							  
											  
				var cities_sl = $('miasto'); 
				
				cities_sl.empty();
				
				
				
				new Element('option', {text: 'rozwiń listę', value: 0}).inject(cities_sl);
				
				var cities_number = 0;

				states_cities[''+current_state_id+''].each(function(item,index){
						if(item[0] > 0) {
							cities_number++;
							new Element('option', {text: item[1], value: item[0]}).inject(cities_sl);
						}
					});
				
				if(cities_number<1 && Browser.Engine.trident) {
					new Element('option', {text: 'brak miast', value: '0'}).inject(cities_sl);
				}
				
				var changed_select =  $('miasto_row').getElement('.jsSelector');
					changed_select.destroy();

					var org_label = $('miasto_row').getElement('label');
					var org_select = $('miasto_row').getElement('select');
					org_label.set('class','').removeEvents().set('for','miasto');
					org_select.set('style','').removeEvents('keydown').removeEvents('keypress').removeEvents('keyup');
	
					cfe.spacer = basehref + "gfx/spacer.gif";

					var myCfe1 = new cfe.replace();
	
					 myCfe1.unregisterModule("fieldset");
					 myCfe1.unregisterModule("image");
					 myCfe1.unregisterModule("input");		
					 
					myCfe1.setModuleOptions("select",{
					scrolling: true,
					scollSteps: 2,
					size: 10
					}); 
					
					myCfe1.init({
						scope: $('miasto_row')
					});
			
					city.fireEvent('change');
			});
		}
		
	},
	
	prepareLoginForms:function() {
		if($defined($('loginBox'))) {
			cfe.spacer = basehref + "gfx/spacer.gif";
	
	        var myCfe = new cfe.replace();
	
	        // no fieldset enhancement
	        myCfe.unregisterModule("fieldset");
			myCfe.unregisterModule("image");
			myCfe.unregisterModule("select");
			myCfe.unregisterModule("textarea");
	
			
			 myCfe.init({
	            //theme: "basic", currently not supported
	            scope: $('loginBox')
	        });
		}
	},

	prepareKontaktForms:function() {
		if($defined($('kontaktForm'))) {
			cfe.spacer = basehref + "gfx/spacer.gif";
	
	        var myCfe = new cfe.replace();
	
	        // no fieldset enhancement
	        myCfe.unregisterModule("fieldset");
			myCfe.unregisterModule("image");
	
			 myCfe.init({
	            //theme: "basic", currently not supported
	            scope: $('kontaktForm')
			});
		}
	},
	

	prepareNosnikForms:function() {
		if($defined($('nosnikiForm'))) {
			cfe.spacer = basehref + "gfx/spacer.gif";
	
	        var myCfe = new cfe.replace();
	
	        // no fieldset enhancement
	        myCfe.unregisterModule("fieldset");
			myCfe.unregisterModule("image");
			myCfe.unregisterModule("textarea");
			
			myCfe.setModuleOptions("select",{
            scrolling: false,
            scollSteps: 5
	        });
	
			 myCfe.init({
	            //theme: "basic", currently not supported
	            scope: $('nosnikiForm')
			});
		}
	},
	
	prepareRadius:function() {
		if($defined($('radiusForm'))) {
			cfe.spacer = basehref + "gfx/spacer.gif";
	
	        var myCfe = new cfe.replace();
	
	        // no fieldset enhancement
	        myCfe.unregisterModule("fieldset");
			myCfe.unregisterModule("image");
			myCfe.unregisterModule("textarea");
			
			myCfe.setModuleOptions("select",{
            scrolling: false,
            scollSteps: 5
	        });
	
			 myCfe.init({
	            //theme: "basic", currently not supported
	            scope: $('radiusForm')
			});
		}
	},
	
	prepareMenu:function() {
			var myMenu = new MenuMatic();
	},
	
	prepareIEfix:function() {
		
		var slf=this;
		
		if(Browser.Engine.trident && Browser.Engine.version <= 4) {
		createIE6UpdateBanner({img_folder:this.basehref + 'images/'});	
		}
	}
	
});

window.addEvent('domready',function(){
	thesite	= new SiteEngine(basehref);
});

