/**
  hoverCard - jQuery плагин для карточек пользователей в irk.fm
  версия от 28.09.2009

  Использование: 

  1) Подключаем скрипт. Оригинал скрипта находится в jquery.hoverCard.js, но он также входит в состав
  jquery.plugins.js, поэтому его и подключаем:

  <script src="jquery/jquery.plugins.min.js" type="text/javascript"></script>

  2) На самой странице, в HTML, есть юзерпик и ссылка на профиль пользователя -

  <div id="user1" class="usershort">
    <a href="/einstein"><img src="images/einstein.png" width="64" height="64" hspace="2" vspace="2" 
       border="0" alt="В юности я обнаружил, что большой палец ноги рано или поздно проделывает дырку в носке."/></a>
    <br />Альберт <a href="/einstein" class="link">[einstein]</a>
  </div>

  где user1 - уникальный id, содержание произвольное.

  3) В секции скриптов для каждого такого id пишем строку с вызовом hoverCard:

  $(document).ready(function() {
     $('#user1').hoverCard({name:'Альберт Эйнштейн', rating:'ЗНАТОК', text:'От чего-то мне сегодня хорошо'});
     $('#user2').hoverCard({name:'Василий Пупкин', rating:'ТЕОРЕТЕГ'});
     $('#user3').hoverCard({name:'Дима Сидоров'});
  });

  Параметры:

    name = полное имя (обязательный параметр)
    text = строчка из миниблога. можно передать как text:'отчего', а можно вшить в alt юзерпика (см. выше)
    login = если не задан, берется из URL'а, на который показывает юзерпик
    rating = рейтинг

*/

    (function($) {
		
	$.fn.videoCard = function(args) {
		if ( this.find('a').length == 0 ) { return null}
    	var cfg = $.extend({}, {
		text: this.find('img').attr('alt') || 'Новичок',
		login: this.find('a').attr('href').replace(/\//g, ""),
		rating: '',
		name: '',
		ajaxURL: '',
		id: '#'+$(this).attr('id'),
		imgSrc: this.find('img').attr('src')
    	}, args);
	    return this.each(function() {

		if ( $('#normalVideoCard').length == 0 ) {
			initVideoCards();
		}
	    if (cfg.id == '#') {cfg.id = '#card'+Math.round(Math.random()*99999)}	
	  	var hoverInConfig = {
		   interval: 250,
		   sensitivity: 16,
		   over: showVideoCard,
		   timeout: 280,
		   out: nothing
	  	};
	    $(this).hoverIntent(hoverInConfig);
	    
        function matchPosition(targetID, movingID) {
   	      var coordinates = $(targetID+' .videotape-thumb').offset();
 	      var moving = $(movingID);
	      moving.css("position","absolute");
	      moving.css("left",coordinates.left-12);
	      moving.css("top",coordinates.top-13);
	    }

        function matchPositionLeftSided(targetID, movingID) {
   	      var coordinates = $(targetID+' .videotape-thumb').offset();
	      var moving = $(movingID);
  	      var mWidth = moving.width();
	      moving.css("position","absolute");
		  moving.css("left",coordinates.left+9-mWidth+160);
	      moving.css("top",coordinates.top-13);
	    }

	    function showVideoCard() { 
	      if ($(cfg.id).offset().left < pageWidth() - 240 - 10) { 
	        var cardID = '#normalVideoCard';
   	        matchPosition(cfg.id, cardID); 
	      }
	      else { 
	        var cardID = '#reverseVideoCard';
   	        matchPositionLeftSided(cfg.id, cardID); 
	      }
	      var card = $(cardID);
		  
		  if (cfg.ajaxURL) {
			$.ajax({
			  url: cfg.ajaxURL, 
			  type: "POST",
			  data: {vid: cfg.vid},
			  dataType: "json",
			  timeout: 8000,
			  success: function(response){
				if (response == 'error') {
				  alert('Ошибка');
				} else
				{
				   card.find('.video-card-title').html(response.title);
				   card.find('.video-card-tth').html(response.tth);
				   card.find('.video-card-files').html(response.files);
				   card.find('.video-card-options').html(response.options);
				   card.find('.video-card-descr').html(response.descr);
				   card.find('.video-card-tags').html(response.tags);
				   card.find('.video-card-img').attr('src', response.img);
				   card.find('.alink').attr('href', response.link); // ??
	  
				   card.hover(nothing, hideCard);
				   card.fadeIn(200);
				}
			  },
			  error: function(XMLHttpRequest, textStatus, errorThrown) {
				 alert('Error '+XMLHttpRequest.status + ' ' + XMLHttpRequest.statusText);
			  }
			});
		  } else {
             card.find('.video-card-title').html(cfg.title);
             card.find('.video-card-tth').html(cfg.tth);
             card.find('.video-card-files').html(cfg.files);
             card.find('.video-card-options').html(cfg.options);
             card.find('.video-card-descr').html(cfg.descr);
             card.find('.video-card-tags').html(cfg.tags);
             card.find('.video-card-img').attr('src', cfg.img);
             card.find('.alink').attr('href', $(this).find('a').attr('href'));

			 card.hover(nothing, hideCard);
	      	 card.fadeIn(200);
		  }
	    }
		
		function initVideoCards() {
	  $("body").append('<div id="normalVideoCard" class="video-card"><table cellpadding="0" cellspacing="0"><tr><th valign=top><div><a class="alink" href="/einstein"><img class="video-card-img" src="/img/template/empty.gif" width="160" border="0"></a></div></th><td valign=top><a class="video-card-title alink" href="#"></a><div class="video-card-tags"></div><div class="video-card-options"></div><div class="video-card-tth"></div><div class="video-card-files"></div><hr style="margin: 6px 0; border-bottom:1px solid #FFC266;"><div class="video-card-descr"></div></td></tr></table></div>');
		}

	    function hideCard(){ $(this).fadeOut(80); }

	    function nothing() { }
	    
	    function pageWidth() {
	    	return window.innerWidth != null? 
	    			window.innerWidth : 
	    			document.documentElement && document.documentElement.clientWidth ? 
	    					document.documentElement.clientWidth : document.body != null ? 
	    							document.body.clientWidth : null;
	    } 
	 });
	 };
    })(jQuery);
	
