//Cookies
var def_font_size = 'def_font_size';
var add_block_cond = 'add_block_cond';
var add_r_news = 'add_r_news';
var add_r_forum = 'add_r_forum';
var add_r_video = 'add_r_video';
var add_r_fav = 'articles_fav';
var options = { path: '/', expires: 365 };

//Arrows
var arrow_on = new Image();
var arrow_off = new Image();
arrow_on.src = '/images2/arrow_4.gif';
arrow_off.src = '/images2/arrow_5.gif';


var socials = {
    socials: new Array(
        { id: 1, name: 'Написать ВКонтакте', shortcode: 'vk'},
        { id: 2, name: 'Написать в Facebook', shortcode: 'fb'},
        { id: 3, name: 'Написать в Twitter', shortcode: 'tw'},
        { id: 4, name: 'Написать в Google+', shortcode: 'gp'},
        { id: 5, name: 'Написать в Одноклассниках', shortcode: 'od'}
    ),

    getSocialById: function(id){
        id = parseInt(id);

        if(id > 0 && id <= this.socials.length+1){
            for(var i=0, l=this.socials.length; i<l; i++){
                if(id == this.socials[i].id){
                    return this.socials[i];
                };
            };
        }
    },

    showSocials: function(obj){
        $('.social_selector').remove();

        var content = new String();

        for(var i = 0, l = this.socials.length; i < l; i++){
            content += '<a soc_id="' + this.socials[i].id + '" href="javascript:void(0)" title="' + this.socials[i].name + '" class="social_icon_16x16 si16_' + this.socials[i].shortcode + '"></a>';
        };

        var soc_HTML =
                '<div class="social_selector">' +
                    '<div class="ss_top"></div>' +
                    '<div class="ss_content">' +
                        '<div class="ss_inner">' +
                            content +
                            '<div class="cl"></div>' +
                        '</div>' +
                    '</div>' +
                '</div>';

        $('body').prepend(soc_HTML);

        $('.social_selector .social_icon_16x16').one('click', function(){
            $('.social_selector').remove();

            obj.one('click', function(){
                socials.showSocials($(this));
            });

            socials.go(obj, $(this).attr('soc_id'));
        });

        obj.one('click', function(){
            $('.social_selector').remove();
            obj.one('click', function(){
                socials.showSocials($(this));
            });
        });

        $('.social_selector').css({
            top: obj.offset().top,
            left: obj.offset().left,
            marginLeft: -$('.social_selector').width()/2+obj.width()/2,
            marginTop: -$('.social_selector').height()-2
        });

        $('.social_selector').bind('mouseleave', function(){
            $(this).remove();
            obj.one('click', function(){
                socials.showSocials($(this));
            });
        });
    },

    getUrl: function(data){
        var result = new String();

        var url = encodeURIComponent(data.url);
        var text = encodeURIComponent(data.text);

        switch(data.id){
            //FB
            case 1 : {
                result = 'http://vkontakte.ru/share.php?url=' + url;
            }; break;

            //VK
            case 2 : {
                result = 'http://www.facebook.com/sharer/sharer.php?src=sp&u=' + url;
            }; break;

            //Twitter
            case 3 : {
                result = 'http://twitter.com/intent/tweet?text=' + text + '&url=' + url;
            }; break;

            //Google +
            case 4 : {
                result = 'http://www.google.com/buzz/post?url=' + url + '&message=' + text;
            }; break;

            //Odnoklassniki
            case 5 : {
                result = 'http://odnoklassniki.ru/dk?st.cmd=addShare&st.noresize=on&st.s=2&st._surl=' + url;
            }; break;
        };

        return result;
    },

    go: function(obj, id){
        var item = this.getSocialById(id);

        obj.next().attr('soc_id', item.id).find('img').attr('title', item.name).attr('class', 'social_icon_16x16 si16_' + item.shortcode)

        $.cookie('social_default', id, options);

        var url = this.getUrl({
            id      : item.id,
            text    : obj.attr('title_text'),
            url     : obj.attr('url')
        });

        window.open(url, item.name, "width=600,height=300,status=yes,toolbar=yes,menubar=yes");
    },

    add: function(obj){

        var id = 1;

        if(parseInt($.cookie('social_default')) > 0){
            id = parseInt($.cookie('social_default'));
        };

        var item = this.getSocialById(id);

        obj.one('click', function(){
            socials.showSocials($(this));
        });

        var html =  '<a soc_id="' + id + '" href="javascript:void(0)" class="social_icon_ph">' +
                        '<img title="' + item.name + '" class="social_icon_16x16 si16_' + item.shortcode + '" src="/pic/tr.gif" />' +
                    '</a>';

        obj.after(html);


        obj.next().unbind().bind('click', function(){
            socials.go(obj, $(this).attr('soc_id'));
        });
    },

    init: function(){
        $('.socials_call:not(.socials_activated)').each(function(){
            $(this).attr('url', window.location).attr('title_text', $('html head title').text());
            $(this).addClass('socials_activated');
            socials.add($(this));
        });
    }
};


function explode( delimiter, string ) {   // Split a string by string
   // 
   // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
   // +   improved by: kenneth
   // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)

   var emptyArray = { 0: '' };

   if ( arguments.length != 2
      || typeof arguments[0] == 'undefined'
      || typeof arguments[1] == 'undefined' )
   {
      return null;
   }

   if ( delimiter === ''
      || delimiter === false
      || delimiter === null )
   {
      return false;
   }

   if ( typeof delimiter == 'function'
      || typeof delimiter == 'object'
      || typeof string == 'function'
      || typeof string == 'object' )
   {
      return emptyArray;
   }

   if ( delimiter === true ) {
      delimiter = '1';
   }

   return string.toString().split ( delimiter.toString() );
}


$(document).ready(function(){
   $('.spoiler-head2').click(function(){
      if($(this).next('.spoiler-body2').is(':visible')){
         $(this).next('.spoiler-body2').hide();
         $.cookie($(this).attr('id'), 'closed', options);
         $(this).find('img.arrow_image').attr('src', '/images2/arrow_4.gif');
      }else{
         $(this).next('.spoiler-body2').show();
         $.cookie($(this).attr('id'), 'opened', options);
         $(this).find('img.arrow_image').attr('src', '/images2/arrow_5.gif');
      }
   });

   ParseArticlesCookie();
   CreateFavTab();
});

function CookiesOpenCloseBlocks(){
		// сохраняет в куках состояние блоков форума, новостей и ixbttv при изменении их состояния
		$('div.r_add_block div.spoiler-head').click(function(){
			if($(this).next('.spoiler-body').is(':visible')){
				$(this).next('.spoiler-body').hide();
				$.cookie($(this).parent().attr('id'), 'closed', options);
				$(this).find('img.arrow_pic').attr('src', '/images2/arrow_4.gif');
				$(this).find('img.arrow_image').attr('src', '/images2/arrow_4.gif');
			}else{
				$(this).next('.spoiler-body').show();
				$.cookie($(this).parent().attr('id'), 'opened', options);
// 				alert($(this).parent().attr('id'));
				$(this).find('img.arrow_pic').attr('src', '/images2/arrow_5.gif');
				$(this).find('img.arrow_image').attr('src', '/images2/arrow_5.gif');
			}
		});
	
		//Обработка заранее установленных состояний
		$('div.r_add_block').each(function(){
			if($.cookie($(this).attr('id')) == 'closed'){
				$(this).find('div.spoiler-head').click();
			}
		});
}

function ApplyRTableStyles(){
   $("table.table_conf tr:even").css("background", "white");
   $("table.table_conf tr:odd").css("background", "#ececf3");
   $("table.table_conf td").css("padding", "5px 10px");
   $("table.table_conf td").css("font-size", "11px");
   $("table.table_conf td").css("color", "#393939");
}

   
$(".addition_news_table").ready(function () {
   $(".addition_news_table tr:even").css("background", "white");
   $(".addition_news_table tr:odd").css("background", "#ececf3");
   $(".addition_news_table td").css("padding", "5px 10px");
   $(".addition_news_table td").css("font-size", "11px");
   $(".addition_news_table td").css("color", "#393939");
});   


//Font-size
$(document).ready(function(){
   var cfs = $.cookie('def_font_size');
   $('body,td,th').css('font-size', cfs+'px');
});   

function fontSize(param){
   var fs = $('body,td,th').css('font-size');
   var fsVal = fs.substr(0, fs.length-2)*1;
   
   if(param == 'reduce'){
      if(fsVal > 9){
         $('body,td,th').css('font-size', fsVal-=1);
         $.cookie(def_font_size, fsVal, options);
      }else{
         alert('Шрифт уменьшен до минимума!')
      };
   };
   
   if(param == 'enlarge'){
      if(fsVal < 20){
         $('body,td,th').css('font-size', fsVal+=1);
         $.cookie(def_font_size, fsVal, options);
      }else{
         alert('Шрифт увеличен до максимума!')
      };
   };
};

//Favorite
function getBrowserInfo() {
   var t,v = undefined;
   if (window.opera) t = 'Opera';
   
   else if (document.all) {
      t = 'IE';
      var nv = navigator.appVersion;
      var s = nv.indexOf('MSIE')+5;
      v = nv.substring(s,s+1);
   }else if (navigator.appName) t = 'Netscape';
   return {type:t,version:v};
}
   
function bookmark(a){
   var url = window.document.location;
   var title = window.document.title;
   var b = getBrowserInfo();
   
   if (b.type == 'IE' && 7 > b.version && b.version >= 4) window.external.AddFavorite(url,title);
   else if (b.type == 'Opera') {
      a.href = url;
      a.rel = "sidebar";
      a.title = url+','+title;
      return true;
   }else if (b.type == "Netscape") window.sidebar.addPanel(title,url,"");
   else window.external.AddFavorite (window.document.location, window.document.title);
   return false;
};


//Mailto
function mailto(){   
   var b = window.document.location;
   var t = $('.content h1:first').text();
      
   $.ajax({
      type: "GET",
      url: '/news/postcoding.php?url='+b+'&string='+t,
      success: function(data) {
         window.location.href = 'mailto:?body=' + data + '&subject=' + t;
      }
   });
};


//Favorites

var options = { path: '/', expires: 365 };

iseparator = "-&&-";
oseparator = "-||-";
favorites_cookie = new Array();

function SaveArticlesCookie(c_arr){
   var cookie = '';
   for(var i=0; i<c_arr.length; i++){
      if(i == 0){
         cookie += c_arr[i].lnk + iseparator + c_arr[i].title;
      }else{
         cookie += oseparator + c_arr[i].lnk + iseparator + c_arr[i].title;
      }
   }
   $.cookie('ixbt_articles_favorites', cookie, options);
};

function ParseArticlesCookie(){
   if($.cookie('ixbt_articles_favorites')){
      $('.favorites_block').show();
      var tmp_cook = $.cookie('ixbt_articles_favorites').split(oseparator);
      for(var i=0; i<tmp_cook.length; i++){
         var tmp = tmp_cook[i].split(iseparator);
         favorites_cookie.push({lnk: tmp.shift(), title: tmp.shift()});
      }
   }else{
      $('.favorites_block').hide();
   }
};

function addFav(id, title){
   if(favorites_cookie.length < 10){
      if(title.indexOf('iXBT:') == 0){
         title = title.substr(5, title.length);
      }
      if(title.length > 30){
         title = title.substr(0, 28)+'...';
      }
      chk = true;
      for(var i=0; i<favorites_cookie.length; i++){
         if(favorites_cookie[i].lnk == id){
            chk = false;
         }
      };

      if(chk == true){
         favorites_cookie.push({lnk: id, title: title});
      };

      $('#fav_tab').empty();
      SaveArticlesCookie(favorites_cookie);
      CreateFavTab();

      if($('#fav_tab').html() != ''){
         $('.favorites_block').show();
      };
   }else{
      alert("У вас максимальное количество объектов в «избанных статьях»!");
   };
};

function CreateFavTab(){
   
   if(favorites_cookie.length > 0){
      $('#fav_tab').append('<tr id="ft_head"><td height="25" colspan="2"><span id="total_favs"><span>'+favorites_cookie.length+'</span>/10</span><span id="clean_favs"><a href="javascript:void(0)" onclick="cleanFav()">Очистить</a></span></td></tr>');
   };
   
   favorites_cookie.reverse();
   
   for(var i=0; i<favorites_cookie.length; i++){
      var item = favorites_cookie[i];
      $('#fav_tab').append('<tr id="fav_item_'+i+'"><td height="20"><a href="'+item.lnk+'">'+item.title+'</a></td><td width="20"><a href="javascript:void(0)" onclick="delFav(' + "'" + item.lnk + "'" + ')"><img src="/pic/news/icons/minus.gif" width="16" height="16" alt="Удалить" title="Удалить из «Моих закладок»" /></a></td></tr>');
   };

   if($.cookie('articles_fav') == 'closed'){
      $('div#articles_fav').next('.spoiler-body').hide();
      $.cookie('articles_fav', 'closed', options);
      $('div#articles_fav').find('img.arrow_image').attr('src', '/images2/arrow_4.gif');
   }


};

function delFav(id){
   var x = [];
   
   for(var i=0; i<favorites_cookie.length; i++){
      if(favorites_cookie[i].lnk != id){
         x.push(favorites_cookie[i]);
      }
   }
   
   $('#fav_tab').empty();
   favorites_cookie = x;
   SaveArticlesCookie(favorites_cookie);
   CreateFavTab();
   
   if($('#fav_tab').html() == ''){
      $('.favorites_block').hide();
   }
};

function cleanFav(){
   if(confirm("Удалить все статьи из &laquo;Моих закладок&raquo;?")){
      var ar = favorites_cookie;
      
      for(var i=0; i < ar.length; i++){
         delFav(ar[i].lnk);
      };
   };
};

//Font selector
function setFont(num){
   var ft = "Arial, Helvetica, sans-serif";
   
   if(num == '1'){
      ft = "Arial, Helvetica, sans-serif";
   }
   
   if(num == '2'){
      ft = "Georgia, 'Times New Roman', Times, serif";
   }
   
   if(num == '3'){
      ft = "Tahoma, Geneva, sans-serif";
   }
   
   if(num == '4'){
      ft = "'Times New Roman', Times, serif";
   }
   
   if(num == '5'){
      ft = "Verdana, Geneva, sans-serif";
   }
   
   $('body, td, th').css('font-family', ft);
};

$(function(){
   $('.n_type_inner a').click(function(){
      setFont($(this).attr('rel'));
      $.cookie('font_type', $(this).attr('rel'), options);
      $('.n_type_inner a').removeClass('n_type_selected');
      $(this).addClass('n_type_selected');
      fontChange();
   });
   
   if($.cookie('font_type')){
      setFont($.cookie('font_type'));
      $('.n_type_inner a[rel|='+$.cookie('font_type')+']').addClass('n_type_selected');
   }else{
      $('.n_type_inner a[rel|=5]').addClass('n_type_selected');
   };
})


function fontChange(){
   if($('.n_type_selector').css('display') == 'none'){
      $('.n_type_selector').show();
   }else{
      $('.n_type_selector').hide();
   };
};

function resizePlayer(width, height, name){
   var ml = -width/2;

   height = parseInt(height);
   width = parseInt(width);

   $("#"+name+'_container').css({
       width: width,
       height: height,
       marginLeft: ml
   });

   $("#embed_"+name).attr("width", width).attr("height", height);

   $("#spacer_"+name).css({
        height: height
   });
};

function returnPlayer(width, height, name){
   var ml = -width/2;

    height = parseInt(height);
   width = parseInt(width);

   $("#"+name+'_container').css({
       width: width,
       height: height,
       marginLeft: ml
   });

   $("#embed_"+name).attr("width", width).attr("height", height);

   $("#spacer_"+name).css({
        height: height
   });
};

/**
 * @param cover         {string}    Путь к файлу обложки
 * @param path          {string}    Путь к файлу ролика
 * @param name          {string}    Уникальное имя экземпляра плеера
 * @param width         {number}    Ширина
 * @param height        {number}    Высота
 * @param loop          {string}    Повторение
 * @param html5         {boolean}   Режим HTML-5
 * @param hideMinibar   {string}    Скрыть полоску
 */

function showPlayer(cover, path, name, width, height, loop, html5, hideMinibar){
    width = parseInt(width);
    height = parseInt(height);

    if(hideMinibar > 0){
        hideMinibar = '1';
    }else{
        hideMinibar = '0';
    };

    if(loop > 0){
        loop = '1';
    }else{
        loop = '0';
    };

    if(html5 === true){
        html5 = true;
    }else if(html5 === 'true'){
        html5 = true;
    }else if(html5 === 'false'){
        html5 = false;
    }else{
        html5 = false;
    };

    var pw = 670;
    var ml = -(width/2);

    $("#"+name).css({
        position: 'relative'
    });

    var userAgent = navigator.userAgent.toString().toLowerCase();

    if(($.browser.webkit || $.browser.safari) && html5){
        $("#"+name).html('<div id="'+name+'_container"><video poster="'+cover+'" controls="controls" width="'+pw+'"><source src="'+path+'" type=\'video/mp4; codecs="avc1.4D401E, mp4a.40.2"\' /></video></div>');
        $("#"+name).find('#spacer_'+name).remove();
        $("#"+name).append('<div id="spacer_'+name+'"></div>');

    }else{
        $("#"+name).html('<div id="'+name+'_container"><div id="noflash_'+name+'" style="color: #C00">Необходимо установить последнюю версию <a href="http://get.adobe.com/ru/flashplayer/" target="_blank">flash-плеера</a></div></div>');

        $("#"+name).find('#spacer_'+name).remove();
        $("#"+name).append('<div id="spacer_'+name+'"></div>');

        var hh = height/2-15;

        $("#noflash_"+name).css({
            paddingTop: hh,
            paddingLeft: 10,
            paddingRright: 10,
            textAlign: "center"
        });

       $("#"+name+'_container').css({
           position: 'absolute',
           zIndex: 1001,
           width: parseInt(width),
           height: parseInt(height),
           marginLeft: ml,
           left: '50%',
           background: '#ccc'
       });

       var so1 = new SWFObject("/vplayer.v2.2.swf", "embed_"+name, width, height, "9", "#ffffff");
       so1.addParam("allowfullscreen","true");
       so1.addParam("wmode","transparent");
       so1.addVariable("cover", cover);
       so1.addVariable("name", name);
       so1.addVariable("path", path);
       so1.addVariable("loop", loop);
       so1.addVariable("hideMinibar", hideMinibar);
       so1.addVariable("cache_disabled", "1");
       so1.addVariable("f_disable", "1");
       so1.write(name+'_container');

       $("#spacer_"+name).css({
           height: parseInt(height)
       });
   };
}

function drawPlayer(id, width, height){
   var width = 670;
   var height = 420;
    
   var name = 'player_'+id;
   var pw = 670;
   var ml = -width/2;

   $("#"+name).css({
       position: 'relative'
   });

    var userAgent = navigator.userAgent.toString().toLowerCase();

    $.ajax({
        url: '/admin/widget.tv.php?action=get_video_xml&id='+id,
        type: 'GET',
        dataType: 'xml',
        success: function(data){

            var movie = $(data).find('item').attr('movie');

            $("#"+name).html('<div id="'+name+'_container"><video controls="controls" width="670"><source src="'+movie+'" type="video/mp4" /></video></div>');
            $("#"+name).find('#spacer_'+name).remove();
            $("#"+name).append('<div id="spacer_'+name+'"></div>');

            var hh = height/2-15;

            $("#"+name+'_container').css({
               position: 'absolute',
               zIndex: 101,
               width: parseInt(width),
               height: parseInt(height),
               marginLeft: ml,
               left: '50%',
               background: '#ccc'
            });

            var so1 = new SWFObject("http://www.filmdepo.ru/swf/player_filmdepo.swf", "embed_"+name, width, height, "9", "#ffffff");
            so1.addParam("allowfullscreen","true");
            so1.addParam("wmode","transparent");
            so1.addParam("allowscriptaccess","always");
            so1.addVariable("showEmbed", "1");
            so1.addVariable("name", name);
            so1.addVariable("id", id);
            so1.addVariable("user_id", "45");
            so1.addVariable("keepAspect", "0");
            so1.addVariable("autoload", "0");
            so1.write(name+'_container');

            $("#spacer_"+name).css({
               height: parseInt(height)
            });
        }
    })
}

function goTweet(){
   var h1 = encodeURIComponent($('.content h1:first').text());
   var loc = "/news/twconv_articles.php?string=" + h1 + "&url=" + document.location;
   window.open(loc, '_blank');
}


//Flying frame
function getPos(){
   function sctop(){
      return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
   };
   
   function getClientHeight(){
     return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;
   };
   
   var h = ($('#copy_to_blog').height())/2;
   var res = (sctop()+getClientHeight()/2)-h;
   return res;
};

function openToBlog(linkh){

   linkh = "http://www.ixbt.com" + linkh;
   
   $('#show_toblog_code').click();
   
   $('#copy_to_blog').show();
   $('#copy_to_blog').animate({top: getPos()+'px'}, 500, function(){
      $('#to_blog_txt').focus();
   });
   
   var start_obj = $('.content');
   
   var to_blog_name = $('.content h1:first').html();
   to_blog_name = to_blog_name.replace(/<[^>]*>/g, ' ');
   
   var date = $('.aab_date').text();
   var author = '';
   $('.aab_auth a').each(function(){
   	author += $(this).text()+", ";
   });
   author = author.substr(0, author.length-2);
   
   var to_blog_header = '<div style="font-size: 11px; margin: 0 0 4px 0; letter-spacing: 0; color: #999;">'+date+', '+author+'</div><h1 style="font-size: 14px; font-weight: bold; line-height: 20px; text-align: left; margin: 0 0 4px 0; letter-spacing: 0;"><a style="color: #584F8C" href="'+linkh+'">'+to_blog_name+'</a></h1>';
   
   var to_blog_text = '<div style="line-height: 17px; font-size: 12px;">'+start_obj.find('p:first').text()+'</div><div style="clear: both;"><p><a style="color: #584F8C" href="'+linkh+'">Читать далее на iXBT.com</a></p></div>';
   
   var img_obj = start_obj.find('img.toblog_thumb');
   var img = img_obj.attr('src');
   
   var imgw = 200;
   
   if(img_obj.width() < 200){
      imgw = img_obj.width();
   }else{
      imgw = 200;
   };

	if(!img){
		imgw = 130;
		img = 'http://www.ixbt.com/pic/tobloglogo.png';
	};
   
   var to_blog_img = '<a href="'+linkh+'"><img style="float: left; margin: 0 15px 5px 0; border: 1px solid #ECECF3;" alt="iXBT" title="'+to_blog_name+'" src="'+img+'" width="'+imgw+'" border="0"></a>';
   
   var to_blog_result = to_blog_img + to_blog_header + to_blog_text;
   
   to_blog_result = '<!-- iXBT articles code START --><div style="clear: both;"></div><div style="font-size: 12px; font-family: Verdana, Geneva, sans-serif; background: #F9F9FB; padding: 10px 10px; margin: 15px 0; border: 1px solid #C7C3E5; color: #000;">'+to_blog_result+'</div><div style="clear: both;"></div><!-- iXBT articles code END -->';
   
   $('#to_blog_txt').text(to_blog_result);
    $('#to_blog_txt').select();
   $('#copy_to_blog_preview').html(to_blog_result);
};

$(function(){
   $('#show_toblog_code').click(function(){
      $('#copy_to_blog_copy').show();
      $('#copy_to_blog_preview').hide();
      $('.to_blog_selector li').removeClass('to_blog_selector_active');
      $(this).parent().addClass('to_blog_selector_active');
      $('#to_blog_txt').focus();
      $('#to_blog_txt').select();
   });
   
   $('#show_toblog_preview').click(function(){
      $('#copy_to_blog_copy').hide();
      $('#copy_to_blog_preview').show();
      $('.to_blog_selector li').removeClass('to_blog_selector_active');
      $(this).parent().addClass('to_blog_selector_active');
   });
});

function closeToBlog(){
   $('#copy_to_blog').animate({top: '-800px'}, 500);
   $('#copy_to_blog').hide();
};

window.onscroll = function() {
   if($('#copy_to_blog').css('display') == 'block'){
      $('#copy_to_blog').animate({top: getPos()+'px'}, 0);
   };
};

//Tooltips
var tooltips = {
    tips: null,
    url: null,
    interval: null,

    getTipsData: function(){
        $.ajax({
            url: tooltips.url,
            type: "GET",
            cache: true,
            dataType: 'json',
            success: function(data){
                tooltips.tips = data;
            }
        });
    },

    getTipData: function(id){
        for(var i = 0, length = tooltips.tips.items.length; i < length; i++){
            if(tooltips.tips.items[i].id == id){
                return tooltips.tips.items[i];
            };
        };
    },

    getTipHTML: function(tip){
        var html = new String();

        html += '<div id="tooltip_'+ tip.id +'" class="tooltip_box">' +
                    '<div class="tooltip_title">' +
                        tip.title +
                    '</div>' +
                    '<div class="tooltip_content">' +
                        tip.content +
                    '</div>' +
                '</div>';

        return html;
    },

    setTipPosition: function(id, obj){
        var t = $('#tooltip_'+id);
        var left = obj.offset().left-t.width()/2+4;
        var arr_left = obj.offset().left;

        if(left <= 0){
            left = 0;
        }

        t.css({
            top: obj.offset().top - t.height() - 9,
            left: left
        });

        var t_pos = t.offset().top - $(document).scrollTop();

        if(t_pos < 0){
            t.css({
                top: obj.offset().top + obj.height() + 9
            });
            t.prepend('<span class="tooltip_top_arrow"></span>');

            if(left <= 0){
                $('.tooltip_top_arrow').css({
                    backgroundPosition: arr_left+"px top"
                });
            }else{
                $('.tooltip_top_arrow').css({
                    backgroundPosition: "center top"
                });
            }
         
        }else{
            t.append('<span class="tooltip_bottom_arrow"></span>');

            if(left <= 0){
                $('.tooltip_bottom_arrow').css({
                    backgroundPosition: arr_left+"px bottom"
                });
            }else{
                $('.tooltip_bottom_arrow').css({
                    backgroundPosition: "center bottom"
                });
            }
        };


    },

    removeTip: function(obj){
        obj.remove();
    },

    isInt: function(x) {
        var y=parseInt(x);
        if (isNaN(y)) return false;
        return x==y && x.toString()==y.toString();
    },

    searchTag: function(tag){
			for(var i = 0, length = tooltips.tips.items.length; i < length; i++){
				for(var i2 = 0, length2 = tooltips.tips.items[i].tags.length; i2 < length2; i2++){
					if(tooltips.tips.items[i].tags[i2].toLowerCase() == tag.toLowerCase()){
						return tooltips.tips.items[i].id;
					}
				};
			};
		},

    getTipIdByRelName: function(rel){
        if(tooltips.isInt(rel)){
            return rel;
        }else{
            return tooltips.searchTag(rel);
        };
    },

    showTip: function(obj){
        $('.tooltip_box').remove();

        var id = tooltips.getTipIdByRelName(obj.attr('rel'));
        if(id){
            var tip = tooltips.getTipData(id);
            if(!$('#tooltip_'+id).length){
                $('body').prepend(tooltips.getTipHTML(tip));

                tooltips.setTipPosition(id, obj);

                var t = $('#tooltip_'+id);

                t.bind('mouseleave', function(){
                        t.remove();
                        tooltips.setEvents(obj);
                });

                t.bind('mouseenter', function(){
                        clearTimeout(tooltips.interval);
                });

                obj.bind('mouseleave', function(){
                        tooltips.interval = setTimeout(function(){tooltips.removeTip(t)}, 300);
                });
            };
        }
    },

    setEvents: function(obj){
        obj.bind('mouseover', function(){
            tooltips.showTip($(this));
        });
    },

    init: function(url){
        tooltips.url = url;
        tooltips.getTipsData();
        tooltips.setEvents($('.tooltip'));
    }
};

$(function(){
    tooltips.init('http://www.ixbt.com/_include/js/json/cpu-pedia.js');
    socials.init();
});
