/*
Class: inTabs
	Nawigacja na zakładkach. Kliknięcie w zakładkę aktywuje ją, oraz ładuje
	odpowiednią zawartość poprzez ajax.
	
Schemat układu html dla zakładek ajax:
	<div id="{id}">
		<ul>
			<li class="aktywny">Zakładka 1</li>
			<li>Zakładka 2</li>
			...
		</ul>
		<div id="{id}_content">
			<div id="{id}_content0"></div>
			<div id="{id}_content1"></div>
			...
		</div>
	</div>

Schemat układu html dla zakładek standardowych:
	<div id="{id}">
		<ul>
			<li class="aktywny">Zakładka 1</li>
			<li>Zakładka 2</li>
			...
		</ul>
		<div id="{id}_content0"></div>
		<div id="{id}_content1"></div>
		...
	</div>
*/
var inTabs = new Class({
  
	Implements: [Options],
  
  options: {
    link         : '',
    linki        : [],
    aktywny      : 0,
    aktywnyClass : 'active',
    uzyjAjax     : true,
		evalScripts  : false
	},

  initialize : function(id, options) {
    this.setOptions(options);
    this.linki   = this.options.linki;
		this.aktywny = this.options.aktywny;
		this.aktywnyClass = this.options.aktywnyClass;
    this.tresci  = new Array();
    
    this.id = id;
    this.tabs = $(this.id).getElements('li');
    
    //utwórz kontener dla treści każdej zakładki
		var i = 0;
		$each(this.tabs, function(n){      
			if ( ! $defined( $(this.id+'_content'+i) ) ) {
				var d = new Element('div', {'id':this.id+'_content'+i,'display':'none'});
				d.inject( $(this.id+'_content') );
			}
			n.i = i;
			i++;
		}.bind(this));
		
    if ( this.options.uzyjAjax ) {
      this.initAjaxTabs();
    }
    else {
      this.initStandardTabs();
    }
  },
  
  initStandardTabs: function() {
    $each(this.tabs, function(n){
      /* Schowaj nieaktywne */
      if ( n.i != this.aktywny ) {
        $(this.id+'_content'+n.i).setStyle('display', 'none');
      }
      n.onclick = function()
      {
        this.tabs[this.aktywny].removeClass(this.aktywnyClass);
        $(this.id+'_content'+this.aktywny).setStyle('display', 'none');
        n.addClass(this.aktywnyClass);
        this.aktywny = n.i;
        $(this.id+'_content'+this.aktywny).setStyle('display', '');
      }.bind(this);
    }.bind(this));
  },
  
  initAjaxTabs: function() {
    /*if ( this.aktywny != -1 ) {
			this.tresci[this.aktywny] = $(this.id+'_content'+this.aktywny).get('html');
		}*/
    
    $each(this.tabs, function(n){
			n.onclick = function()
      {
        //deaktywuj stary
				this.tabs[this.aktywny].removeClass(this.aktywnyClass);
        $(this.id+'_content'+this.aktywny).setStyle('display', 'none');
        
				//aktywuj nowy
				n.addClass(this.aktywnyClass);
        this.aktywny = n.i;
				
        if ( $(this.id+'_content'+this.aktywny).get('text') != '' )
        {
          $(this.id+'_content'+this.aktywny).setStyle('display', '');
        }
        else
        {
          var url = (this.linki.length>0) ? this.linki[this.aktywny] : this.options.link.replace(/\{tabid\}/, this.aktywny);
          var get = new Ajax(url, {
              method: 'get',
              update: $(this.id+'_content'+this.aktywny),
              useWaiter: true,
              waiterOptions: {},
							waiterTarget: $(this.id+'_content'),
							evalScripts: this.options.evalScripts,
              onComplete: function(obj) {
                $(this.id+'_content'+this.aktywny).setStyle('display', '');
              }.bind(this)
            }).request();
        }
				
      }.bind(this);
    }.bind(this));
		
		/* automatycznie aktywuj odp. zakładkę */
		if ( this.aktywny == -1 ) {
			this.aktywny = 0;
		}
		this.tabs[this.aktywny].onclick();
  }
});


/*
Class: inMultiBox

Opis:
	Rozszerzenie klasy MultiBox o ikonkę powiększenia w rogu obrazka.
	Wykorzystana funkcja z wersji 2.0, która nie ma z kolei trybu 'slideshow'.
*/
var inMultiBox = new Class({
  Extends: MultiBox,
	options: {
		addOverlayIcon: true
	},
	initialize: function(className, options) {
		this.className = className;
		this.setCompat();
		this.parent(className, options);
		if ( this.options.addOverlayIcon == true ) {
			this.addOverlayIcon(this.content);
		}
	},
	addOverlayIcon: function(element)
	{
		element.each(function(el,i) {
			var img = el.getElement('img');
			if ( img && el.getProperty('hasOverlayIcon') != 1 ) {
				el.setStyle('position','static');
				var overlayIcon = new Element('div').inject(el,'inside');
				overlayIcon.addClass('OverlayIcon');
				overlayIcon.setStyles({'left':img.getPosition()['x'], 'top':img.getPosition()['y']});
				//IE6 causes too many issues due to lack of PNG support
				if ( ! Browser.Engine.trident4 ) {
					overlayIcon.setStyle('opacity',0);
					overlayIcon.set('tween',{duration:3000,transition:Fx.Transitions.Expo.easeIn}).tween('opacity',1);
				};
				el.setProperty('hasOverlayIcon', '1');
			};
		});
	},
	removeOverlayIcons: function()
	{
		$$('.OverlayIcon').destroy();
	},
	clearEvents: function()
	{
		this.content.each(function(el,i){
				el.removeEvents('click');
		}, this);
	},
	setCompat: function()
	{
		if ( ! $('p_content_right') ) { return; };
		
		var imgs = $('p_content_right').getElements('img');
		$each(imgs, function(n) {
			if ( n.getProperty('onclick') ) {
				var src = n.getProperty('onclick').toString();
				if ( src.indexOf('pics') != -1 ) {
  				src = src.substring(src.indexOf('pics'));
  				src = src.substring(0, src.indexOf('\')'));
  				var a = new Element('a', {'href':src, 'class':this.className});
  				a.title = n.title||n.alt;
					a.inject(n, 'before');
  				n.inject(a, 'top');
  				n.onclick = null;
				}
			}
      //n.setProperty('title', n.getProperty('alt'));
		}.bind(this));
		
		var links = $('p_content_right').getElements('a');
		$each(links, function(n) {
			if ( n.getProperty('onclick') ) {
				var src = n.getProperty('onclick').toString();
				var img = n.getChildren('img');
				if ( src.indexOf('showPhoto') != -1 ) {
					src = src.substring(src.indexOf('pics'));
					src = src.substring(0, src.indexOf('\')'));
					n.href  = src;
					n.onclick = null;
					n.addClass(this.className);
					if ( img && img[0].title ) {
						n.title = img[0].title||img[0].alt;
					}
				}
			}
		}.bind(this));
	}
});
