var Abuse = Class.create({
	initialize: function(element){
		this.root = element;
		
		this.overlay = $('overlayer');
		this.abuseForm = $('abuse-form');
		this.id = Element.select(this.abuseForm, 'input[name=id]').first();
		
		Event.observe(this.root, 'click', this.showForm.bindAsEventListener(this));
	},

    showForm: function(event){
        Event.stop(event);
        this.viewport();
		
        var numbers = document.viewport.getScrollOffsets();
		heightWind = document.viewport.getHeight();
      	heightPopup = this.abuseForm.getHeight();

      	if(heightWind > heightPopup){
      		halfHeigtWind = heightWind/2;
			halfHeightPopup =  heightPopup/2;
			correctHeight = halfHeigtWind - halfHeightPopup;

      	}else{
      		correctHeight  = 10;
      	}

		 if ((numbers[1]) > 0)
	      {
	        Element.setStyle(this.abuseForm, {
	          top: (numbers[1] + parseInt(correctHeight)) + 'px'
	        });
	      }
	      else
	      {
	        Element.setStyle(this.abuseForm, {
	          top: (parseInt(correctHeight)) + 'px'
	        });
	      }

        Element.setStyle(this.overlay, {
            height: this.pageY + 'px'
        });

        this.id.value = event.element().name;
        Element.show(this.overlay);
        Element.show(this.abuseForm);
    },
    viewport: function(){
        this.pageX = (document.documentElement && document.documentElement.scrollWidth) ? document.documentElement.scrollWidth : (document.body.scrollWidth > document.body.offsetWidth) ? document.body.scrollWidth : document.body.offsetWidth;
        this.pageY = (document.documentElement && document.documentElement.scrollHeight) ? document.documentElement.scrollHeight : (document.body.scrollHeight > document.body.offsetHeight) ? document.body.scrollHeight : document.body.offsetHeight;
    }
});

document.observe("dom:loaded", function(event){
	if($$('a.abuse')[0]){
		$$('a.abuse').each(function(a){
			new Abuse(a);
		});

		Event.observe($('userAbuse') , 'submit' , function(event) {
			Event.stop(event);
			
			if($('abuseComment').value=='') {
				alert('Aby zgłosić naruszenie, musisz wpisać treść');
				return false;
			}
			
			new Ajax.Request('/abuses/new', {
				parameters: $('userAbuse').serialize(),
				onSuccess: function(transport){
					if(transport.responseText == 'true') {
						var form = $('userAbuse');
						var divs = Element.select(form , 'div');
						var ps   = Element.select(form , 'p.buttons');
						Element.hide(divs[0]);
						Element.show(divs[1]);
						Element.hide(ps[0]);
						Element.show(ps[1]);
						
						Event.observe($('psCloseButton2'), 'click', function(){
							Element.show(divs[0]);
							Element.hide(divs[1]);
							Element.show(ps[0]);
							Element.hide(ps[1]);
							Element.hide($('overlayer'));
							Element.hide($('abuse-form'));
							$('abuseComment').value='';
						});
	
					} else {
						alert('Błąd podczas wysyłania zgłoszenia');
					}
			
				}
				
			});
		});
		
		Event.observe($('psCloseButton') , 'click' , function(event) {
			Event.stop(event);
			
			Element.hide($('overlayer'));
			Element.hide($('abuse-form'));
			$('abuseComment').value='';
		});
		
		Event.observe($('overlayer'), 'click', function(event){
			Event.stop(event);
			
			Element.hide($('overlayer'));
			Element.hide($('abuse-form'));
			$('abuseComment').value='';
		})
	}
});
