//Tabs

tab_count = 0;



function make_tab_group_of_tab(tab) {
  
  if (tab.tagName.toLowerCase() != 'h5') {
    return;
  }
  var tab_group_start = tab;
  var element = tab;
  var tab_group_navigation = new Element('ul');
  var current_tab = tab;
  var current_tab_content = null;
  var current_tab_container = null;
  var tab_container;
  var li = null;
  var a = null;
  var is_first_tab = true;
  
  while (!element.getParent().hasClass('mainslot')) {
    element = element.getParent();
  }
  
  if (element.belongs_to_tab_group != null) {
    return;
  }
  
  
  tab_group_navigation.addClass('tab-navigation');
  
  while (true) {
    element.belongs_to_tab_group = tab_group_start;
    
    if (!is_tab_end(element)) {
      current_tab_content.push(element);
    }
    
    if (is_tab_end(element) || indicates_tab_group_end(element.getNext())) {
      if (current_tab_content != null) {
        current_tab_content.each(function(tab_content) {
          tab_content.injectInside(current_tab_container);
        });
        if (!is_first_tab) {
          current_tab_container.style.display = 'none';
        }
        current_tab_container.injectAfter(current_tab);
        is_first_tab = false;
        // console.log(current_tab_container.innerHTML);
      }
      current_tab = element;
      // current_tab.style.display = 'none';
      current_tab_content = new Array();
      current_tab_container = new Element('div');
      current_tab_container.addClass('tab-container');
      current_tab_container.id = 'tab-' + (++tab_count);
      // console.log(current_tab_container.id);
      
      if (current_tab.getElementsBySelector('h5.tab').length > 0) {
        var li = new Element('li');
        var a = new Element('a');
		var tmp = current_tab.getFirst().innerHTML + "";
        a.injectInside(li);
		a.set('html', tmp);
        a.href = '#tab-' + tab_count;
        if (is_first_tab) {
          li.addClass('active');
        }
        li.injectInside(tab_group_navigation);
      }
    }
    
    element = element.getNext();
    if (indicates_tab_group_end(element)) {
      break;
    }
  }
  
  tab_group_navigation.injectBefore(tab_group_start);
}

function indicates_tab_group_end(element) {
  if (typeof(element) == 'undefined' || element == null) {
    // console.log('group end? undef or null!');
    return true;
  } else if (element.getElementsBySelector('.tab-end').length > 0) {
    // console.log('group end? tab end');
    return true;
  }
  // console.log('group end? no');
  return false;
}

function is_tab_end(element) {
  if (element.getElementsBySelector('h5.tab').length > 0) {
    return true;
  } else if (element.getElementsBySelector('.tab-end').length > 0) {
    return true;
  }
  return false;
}

function tab_click() {
  // console.log(this);
  var li = this.getParent();
  
  if (!this.get('href')) {
	return false;
}

  li.getParent().getElementsBySelector('a').each(function(element) {
	if (!element.hash) { return }
    $(element.hash.replace('#', '')).style.display = 'none';
    element.getParent().removeClass('active');
  });
  $(this.hash.replace('#', '')).style.display = 'block';
  this.getParent().addClass('active');
  return false;
}

function apply_tabs() {
  $$('.tab').each(make_tab_group_of_tab);
  $$('h5.tab').setStyle('display', 'none');
  $$('ul.tab-navigation a').each(function(element) {
    element.onclick = tab_click;
  });
}

window.addEvent('domready', apply_tabs);



// Gallery

var ImageGallery = new Class({
	_image_elements: null,
	_options: null,
	_overlay: null,
	_background: null,
	_image: null,
	_initialized: false,
	_hidden: false,
	_spinner: null,
	
	initialize: function(class_name, options) {
		this._options = Object.extend({
			pre_source_url: '',
			post_source_url: '',
			overlay_class: 'gallery-overlay',
			image_bg_class: 'gallery-background',
			image_class: 'gallery-image',
			top_offset: 30,
			spinner_url: null,
			spinner_width: 0,
			spinner_height: 0,
			preload: false
		}, options || {});
		
		this._all_images = $A($$('img.' + class_name));
		this._image_elements = new Array();
		this._all_images.each(function(img) {
		  if (!img.hasClass('g_inline')) this._image_elements.push(img);
		  else img.onclick = this.inline_click.bindWithEvent(this);
		}, this);
		
		if (this._options.preload)
			this.preload();
		this.setup();
	},
	
	inline_click: function(e) {
	  var e = new Event(e);
	  var src = this._options.pre_source_url + e.target.id + this._options.post_source_url;
	  var img = $('content-left').getElementsByTagName('img')[0];
	  
	  img.src = src;
	},
	
	preload: function() {
		this._image_elements.each(function(image) {
			var url = this._options.pre_source_url + image.id + this._options.post_source_url;
			
			var preloaded_image = new Image(20, 20);
			preloaded_image.src = url;
		}, this);
		
		if (this._options.spinner_url) {
			this._spinner = new Image(this._options.spinner_width, this._options.spinner_height);
			this._spinner.url = this._options.spinner_url;
		}
	},
	
	setup: function() {
		this._image_elements.each(function(image) {
			image.onclick = this.show.bindWithEvent(this);
		}, this);
	},
	
	setup_elements: function() {
		this._overlay = new Element('div');
		this._overlay.addClass(this._options.overlay_class);
		this._overlay.onclick = this.hide.bindWithEvent(this);
		this._overlay.setStyles({
			position: 'absolute',
			width: '100%',
			display: 'none',
			top: '0',
			left: '0',
			'z-index': '9000'
		});
		
		this._overlay.injectBefore($E('body').getFirst());
		
		this._background = new Element('div');
		this._background.addClass(this._options.image_bg_class);
		this._background.onclick = this.hide.bindWithEvent(this);
		this._background.injectInside(this._overlay);
		
		this._spinner = new Element('img');
		this._spinner.src = this._options.spinner_url;
		this._spinner.setStyles({
			display: 'none'
		});
		this._spinner.injectInside(this._background);
		
		this._image = new Element('img');
		this._image.injectInside(this._background);
						
		this._initialized = true;
	},
	
	show: function(e) {
		var e = new Event(e);
		var image = e.target;
		
		
		var url = this._options.pre_source_url + image.id + this._options.post_source_url;
							
		if (!this._initialized) {
			// Create the gallery elements
			this.setup_elements();
		}
		
		this._overlay.setStyles({
			display: 'block',
			height: window.getScrollHeight() + 'px'
		});
		
		this._hidden = false;
		
		this._spinner.setStyles({
			display: 'block'
		});
		this.resize_and_center_background(this._options.spinner_width, this._options.spinner_height);
							
		this._image.src = url;
		/*this._image.setStyles({
			//visibility: 'hidden'
		  'position': 'relative',
		  'left':'-3000px'
		});*/
		this._image.onload = this.image_loaded.bindWithEvent(this);
	},
	
	resize_and_center_background: function(width, height) {
		var center_win = window.getHeight() / 2;
		var center_div = height / 2;
		var offset = center_win - center_div + window.getScrollTop();
		
		this._background.setStyles({
			'margin-top': offset + 'px',
			width: width + 'px',
			height: height + 'px',
			display: 'block'
		});
	},
	
	image_loaded: function(e) {
		

		if (!this._hidden) {						
      window.status = e + '; '+Math.random();
			this.resize_and_center_background(this._image.width, this._image.height);
			
			this._spinner.setStyles({
				display: 'none'
			});
			/*this._image.setStyles({
				//visibility: 'visible',
				'position':'static',
				'left':'0px'
			});*/
		}
	},
	
	hide: function() {
		this._overlay.setStyles({
			display: 'none',
			height: '0'
		});
		this._background.setStyles({
			display: 'none'
		});
		this._image.src = "/img/gallery/spinner.gif";
		//this._image.setStyles({'height':'0px', 'width':'0px'})
		//this.resize_and_center_background(0,0);
		this._hidden = false;
	}
});

window.addEvent('domready', function() {
	new ImageGallery('gallery', {
		pre_source_url: '/source.php?id=',
		post_source_url: '',
		spinner_url: '/img/gallery/spinner.gif',
		spinner_width: 55,
		spinner_height: 55
	});
});

//Tip-a-friend
function tip_a_friend(article_id) { 
     window.open('http://www.villapauli.com/tip_a_friend.php?article_id=' + article_id,'wwf_tip','width=300,height=300,toolbars=0,scrollbars=0,resizable=0'); 
}

function tip_a_friend_en(article_id) { 
     window.open('http://www.villapauli.com/en/tip_a_friend.php?article_id=' + article_id,'wwf_tip','width=300,height=300,toolbars=0,scrollbars=0,resizable=0'); 
}