/**
 * @author patrick
 */

/*
 * Send Email share box
 */
var sendMail = function() {
	$("recommend").get("send").options.method = "post";
	$("recommend").get("send").addEvents({
		"success": function() { $("recommend-feedback").innerHTML = $("recommend").get("send").response.text; },
		"failure": function() { $("recommend-feedback").innerHTML = "An error occured. Please try again later."; }
	});
	//$("emailform").send($("emailform").get("send").options.url.replace(/emailFrom/, $("emailform").emailFrom.value).replace(/emailTo/, $("emailform").emailTo.value));
	$("recommend").send( );
};




/*
 * Pager
 */
var Pager = new Class({
	Implements: [Options],

	options: {
		links:  "a.article-pager-page",
		pages:  ".article-page", // Seiten �ber Klasse ansteuern
		page:   "article-page-" // Seiten �ber ID ansteuern
	},

	initialize: function(options) {
		// initialisieren
		this.setOptions(options);

    this.addPagerEvents();
	},

  addPagerEvents: function() { // Events festlegen
     $$(this.options.links).each(function(el) {
		 	 el.addEvent("click", this.show.bind(this));
		 }.bind(this));
  },

	show: function(event) {
		// alle links css-m��ig deaktivieren
		$$(this.options.links).each(function(el) {
			el.removeClass("selected");
		});

		// alle seiten ausblenden
		$$(this.options.pages).each(function(el) {
			el.setStyle("display", "none").fade("hide");
		});

		// neue seite einblenden
		if (event.target.id.replace(/^\D+/, '')) {
      $(this.options.page + event.target.id.replace(/^\D+/, '')).setStyle("display", "block").fade("in");
			event.target.addClass("selected");
    }
    else { // alle seiten anzeigen
      $$(this.options.pages).each(function(el) {
				el.setStyle("display", "block");
				el.fade("in");
			});
    }
	}
});

window.addEvent("domready", function() {
	var pager = new Pager();
});



/*
 * Covers
 */
var Covers = new Class({
	Implements: [Options],

	options: {
		target:           ".reviews .albumcovers img",
		highlightColor:   "black",
		covers:           null,
		elements: {
			artist_title:  "artist-title",
			rating:        "rating"
		}
	},

  elements: {
		artist_title:    null,
		rating:          null
	},

	oldBorderColor:    null,

	initialize: function(covers) {
		// initialisieren
		this.options.covers        = covers;
    this.elements.artist_title = $(this.options.elements.artist_title);
		this.elements.rating       = $(this.options.elements.rating);

    // Output zur�cksetzen
		this.elements.rating.setStyle("visibility", "hidden");
		this.elements.artist_title.innerHTML = "";

    this.addHoverEvents();
	},

  addHoverEvents: function() { // Events festlegen
    $$(this.options.target).addEvents({
      "mouseover": this.hoverStart.bind(this),
      "mouseout":  this.hoverEnd.bind(this)
    });
  },

	hoverStart: function(event) { // mouseover-Event
		var index = event.target.className.replace(/\D+/g, '').toInt() - 1;

		if ($defined(this.options.covers[index])) {
			// Rahmen highlighten
			this.oldBorderColor = event.target.getStyle("border-color");
			event.target.setStyle("border-color", this.options.highlightColor);

			// Rating setzen
			this.elements.rating.setStyle("visibility", "visible");
			Number(this.options.covers[index].rating).times(function(i) {
				this.elements.rating.getChildren()[i].setProperty("src", this.elements.rating.getChildren()[i].getProperty("src").replace(/off(?=\.)/, 'on'));
			}.bind(this));

			// title/artist setzen
      		this.elements.artist_title.innerHTML = this.options.covers[index].title + "<br />" + this.options.covers[index].artist;
		}
	},

	hoverEnd: function(event) { // mouseout-Event
		var index = event.target.className.replace(/\D+/g, '').toInt() - 1;

    if ($defined(this.options.covers[index])) {
			// Rahmen zur�cksetzen
			event.target.setStyle("border-color", this.oldBorderColor);

			// Rating entfernen
			this.elements.rating.getChildren().each(function(el){
				el.setProperty("src", el.getProperty("src").replace(/on(?=\.)/, 'off'));
			});
			this.elements.rating.setStyle("visibility", "hidden");

      // title/artist entfernen
      this.elements.artist_title.innerHTML = "";
		}
	}
});
