
function init() {

	
  YAHOO.util.Event.addListener("monkeyhelp-container", "click", function(e){
	 YAHOO.util.Dom.setStyle("monkeyhelp-container", "display", "none");
	 var msg_text = YAHOO.util.Dom.get("monkeyhelp-messagebox-text");
	 msg_text.innerHTML = "";
	});
	
	prettyPrint();
	
	if(posts){
	 posts.rating.mark_over.src = "/images/icons/icon-rating.png";
	 posts.rating.mark_out.src  = "/images/icons/icon-rating-open.png";
	 posts.rating.mark_delete_over.src = "/images/icons/icon-rating-delete-open.png";
	 posts.rating.mark_delete_out.src  = "/images/icons/icon-rating-delete.png";
	}

}
var monkey = {
  showMessage: function(msg){
      var msg_text = YAHOO.util.Dom.get("monkeyhelp-messagebox-text");
      if(msg_text.innerHTML){
        msg_text.innerHTML = msg_text.innerHTML + '<br/>' + msg;
      } else {
        msg_text.innerHTML = msg;
      }
      YAHOO.util.Dom.setStyle("monkeyhelp-container", "display", "block");
  }
}

var favoriteAjaxObject = {
	handleSuccess:function(o){
		this.processResult(o);
	},
	handleFailure:function(o){
		// Failure handler
	},
	processResult:function(o){
    var response;
    try {
      response = YAHOO.lang.JSON.parse(o.responseText);
    } catch (e) {
      alert("Invalid product data");
  	}
  	if(response.result == "saved"){
//  	  alert('saved');
// Показываем обезбянку
      monkey.showMessage('Сохранено в избранном!');
  	}
  	if(response.result == "deleted"){
//  	  alert('deleted');
// Показываем обезбянку
        monkey.showMessage('Удалено из избранного!');
  	}
  	if(response.result == "error"){
//  	  alert('error');
// Показываем обезбянку
      monkey.showMessage(response.result);
  	}
	},
	startRequest:function(url,state) {
	  return YAHOO.util.Connect.asyncRequest('GET', url, posts.favorite.callback, "?state="+state);
	}

}

var ratingAjaxObject = {
	handleSuccess:function(o){
		this.processResult(o);
	},
	handleFailure:function(o){
		// Failure handler
	},
	processResult:function(o){
    var response;
    try {
      response = YAHOO.lang.JSON.parse(o.responseText);
    } catch (e) {
      alert("Invalid product data");
  	}
  	if(response.result == "saved"){
      monkey.showMessage('Ваша оценка сохранена!');
  	}
  	if(response.result == "deleted"){
      monkey.showMessage('Ваша оценка удалена!');
  	}
  	if(response.result == "rated"){
      monkey.showMessage('Вы уже голосовали за этот пост!');
  	}
  	if(response.result == "error" || !response.result){
//  	  alert([response.result,o.responseText]);
      monkey.showMessage('Ошибка, попробуйте перезагрузить страницу!');
  	}
	},
	startRequest:function(url) {
	  return YAHOO.util.Connect.asyncRequest('GET', url, posts.rating.callback, null);
	}

};

var posts = {
  favorite: {
      states: {
        class_no: "favorite-no",
        class_yes: "favorite-yes"
      },
      callback: {
        success:favoriteAjaxObject.handleSuccess,
        failure:favoriteAjaxObject.handleFailure,
        scope: favoriteAjaxObject
      }
  },
  rating: {
      mark_over:new Image,
      mark_out:new Image,
      mark_delete_over:new Image,
      mark_delete_out:new Image,
      callback: {
        success:ratingAjaxObject.handleSuccess,
        failure:ratingAjaxObject.handleFailure,
        scope: ratingAjaxObject
      }
  },
  objects: [],
  setFavorite : function(id,url){
    if(this.objects[id]){
      //alert([id,this.objects[id].state]);
      if(this.objects[id].state){
        YAHOO.util.Dom.replaceClass("favorite"+id, this.favorite.states.class_yes, this.favorite.states.class_no);
        this.objects[id].state = 0;
        favoriteAjaxObject.startRequest(url,0);
      } else {
        YAHOO.util.Dom.replaceClass("favorite"+id, this.favorite.states.class_no, this.favorite.states.class_yes);
        this.objects[id].state = 1;
        favoriteAjaxObject.startRequest(url,1);
      }
    }
  },
  rateOver: function (mark,id){
    var i = mark;
    for(j=1;j<=5;j++){ 
      if (j<=i){ 
        document.getElementById("rating"+j+"_"+id).src=posts.rating.mark_over.src;
      } else { 
        document.getElementById("rating"+j+"_"+id).src=posts.rating.mark_out.src;
      }
    }
  },
  rateOut: function (id){
    for(j=1;j<=5;j++){
      if(j<=posts.objects[id].rating){
        document.getElementById("rating"+j+"_"+id).src=posts.rating.mark_over.src;
      } else {
        document.getElementById("rating"+j+"_"+id).src=posts.rating.mark_out.src;
      }
    }
  },
  rateDeleteOver: function (id){
    document.getElementById("rating_delete_"+id).src=posts.rating.mark_delete_over.src;
  },
  rateDeleteOut: function (id){
    document.getElementById("rating_delete_"+id).src=posts.rating.mark_delete_out.src;
  },
  rateDo: function (mark,id,url){
    posts.objects[id].rating = mark;
    ratingAjaxObject.startRequest(url);
  },
  rateDeleteDo: function (id,url){
    posts.objects[id].rating = 0;
    this.rateOut(id);
    
    ratingAjaxObject.startRequest(url);
  }
};

