/*
This file and all the code within are sole property of Srdjan Stanarevic and can not be used, distributed or copied in any form or capacity without prior written consent of the author.
contact: owner AT swtor-spy DOT com
*/
var default_tooltip_width=250;
function hide_tooltip(target_tooltip_div)
{
if(typeof target_tooltip_div == 'undefined')
{
my_tooltip = jQuery('#tooltip');
}
else
{
my_tooltip = target_tooltip_div;
}
my_tooltip.css({left:"-9999px"});
my_tooltip.hide();
}
function show_tooltip(event, target_tooltip_div)
{
if(typeof target_tooltip_div==='undefined')
{
my_tooltip = jQuery('#tooltip');
}
else
{
my_tooltip = target_tooltip_div;
}
border_top = jQuery(window).scrollTop();
border_right = jQuery(window).width();
window_height = jQuery(window).height();
var left_pos;
var top_pos;
offset = 10;
if(border_right - (offset *2) >= my_tooltip.width() + event.pageX){
left_pos = event.pageX+(offset*5);
} else{
left_pos = border_right-my_tooltip.width()-offset;
}
if(event.pageY + my_tooltip.height() + offset > border_top+window_height)
{
top_pos = border_top+window_height - my_tooltip.height();
}
else
{
top_pos = event.pageY+offset;
}
my_tooltip.css({left:left_pos, top:top_pos});
//my_tooltip.css({left:0, top:0});
my_tooltip.show();
}
function qi_show_tooltip(event, target_tooltip_div)
{
my_tooltip = target_tooltip_div.find('span');
var xkoordinata = event.pageX - target_tooltip_div.offset().left;
var ykoordinata = event.pageY - target_tooltip_div.offset().top;
xkoordinata+=20;
my_tooltip.css({left:xkoordinata, top:ykoordinata});
//my_tooltip.css({left:0, top:0});
my_tooltip.show();
}
function qi_hide_tooltip(target_tooltip_div)
{
my_tooltip = target_tooltip_div.find('span');
my_tooltip.css({left:"-9999px"});
my_tooltip.hide();
}
var current_rank = new Object;
var total_skill_points= new Object;
var skill_permalink_baseurl = [location.protocol, '//', location.host, location.pathname].join('');;//http://www.swtor-spy.com/'
var max_skill_points = 41;
function attach_mouseover()
{
jQuery('tr[id*="tr_planet"]').each(function(index) {
var planet_id=this.id;
var planet_id=planet_id.replace(/[^\d]+/,'');
if(data[planet_id]!=null)
{
jQuery(this).mouseover(function(event) {
var tooltip_content = '
'+data[planet_id][2]+'
'
tooltip_content += '';
if(data[planet_id][0] != null)
{
tooltip_content += data[planet_id][0]
}
else
{
tooltip_content += '';
}
jQuery('#tooltip_content').html(tooltip_content)
show_tooltip(event);
});
jQuery(this).mousemove(function(kmouse){
show_tooltip(kmouse);
});
jQuery(this).mouseleave(function() {
hide_tooltip();
});
}
});
jQuery('tr[id*="tr_companion"]').each(function(index) {
var companion_id=this.id;
var companion_id=companion_id.replace(/[^\d]+/,'');
if(data[companion_id]!=null)
{
jQuery(this).mouseover(function(event) {
if(data[companion_id][2]!='')
{
var tooltip_content = ''+data[companion_id][2]+'
';
}
else
{
var tooltip_content = 'NDA protected
';
}
tooltip_content += '';
if(data[companion_id][0] != null)
{
if(data[companion_id][0]=='')
{
tooltip_content += 'Until the NDA is dropped data for this companion will remain hidden. Thank you for your understanding.';
}
else
{
tooltip_content += data[companion_id][0];
}
}
tooltip_content += '';
jQuery('#tooltip_content').html(tooltip_content)
show_tooltip(event);
});
jQuery(this).mousemove(function(kmouse){
show_tooltip(kmouse);
});
jQuery(this).mouseleave(function() {
hide_tooltip();
});
}
});
total_skill_points.total_points = 0;
jQuery(".skill_tree_div").each(function(index) {
var skill_ids=this.id.split('_');
//var tree_name=
if(typeof data[skill_ids[0]][0][skill_ids[1]][skill_ids[2]] != 'undefined')
{
var podaci = data[skill_ids[0]][0][[skill_ids[1]]][[skill_ids[2]]];
//set opacity for bottom row
if(skill_ids[1] == '6')
{
jQuery('#'+this.id).css({ 'opacity' : 1 });
}
jQuery(this).mouseover(function(event) {
set_skill_tooltip(podaci, this.id);
show_tooltip(event);
});
jQuery(this).mousemove(function(kmouse){
show_tooltip(kmouse);
});
jQuery(this).mouseleave(function() {
hide_tooltip();
});
jQuery(this).bind("contextmenu", function(e) {
e.preventDefault();
});
jQuery(this).mousedown(function(event) {
switch (event.which) {
case 1:
next_skill_rank(this.id);
show_tooltip(event);
break;
case 3:
remove_skill_point(this.id);
show_tooltip(event);
break;
}
});
}
});
var cs_complements=[["Armormech","Scavenging","Investigation","UnderworldTrading"],
["Armstech","Scavenging","TreasureHunting"],
["Artifice","Archaeology","TreasureHunting","UnderworldTrading"],
["Biochem","Bioanalysis","UnderworldTrading"],
["Cybertech","Scavenging","Slicing","TreasureHunting","UnderworldTrading"],
["Synthweaving","Archaeology","Diplomacy","Investigation","UnderworldTrading"]
];
var cs_cache = new Array;
jQuery("#crew-skills-table tr").each(function(index) {
var row_id=this.id;
var tooltip_content = '';
jQuery(this).mouseover(function(event) {
var display_once=false;
jQuery.each(cs_complements,function (cs_index,cs_array){
var found=false;
jQuery.each(cs_array,function (k,v){
if(row_id==v)
{
found=true;
return;
}
});
if(found)
{
if(display_once)
{
//jQuery('#tooltip_content').append( '
');
jQuery('#tooltip_content').append( 'OR');
jQuery('#tooltip_content').append( '
');
}
else
{
jQuery('#tooltip_content').html('Goes well with:
');
}
tooltip_content=' ';
jQuery.each(cs_array,function (k,v){
if(row_id!=v)
{
var img_alone=jQuery("#"+v+" td img").clone();
var name_alone = jQuery("#"+v+" td h3").clone();
var img_altered=img_alone.width('20px');
img_altered.appendTo('#tooltip_content');
jQuery('#tooltip_content').append( name_alone.html());
jQuery('#tooltip_content').append( '
');
}
});
display_once=true;
}
});
if(tooltip_content!='')
{
show_tooltip(event);
}
});
jQuery(this).mousemove(function(kmouse){
if(tooltip_content!='')
{
show_tooltip(kmouse);
}
});
jQuery(this).mouseleave(function() {
hide_tooltip();
});
});
}
function next_skill_rank(skill_id)
{
var skill_ids=skill_id.split('_');
//are we allowed to click on this row?
if(typeof current_rank[skill_id] == 'undefined')
{
current_rank[skill_id]=0; //initialize current_rank of skill
}
if(total_skill_points[skill_ids[0]] == null)
{
total_skill_points[skill_ids[0]]=0; //initialize
}
if(total_skill_points.total_points+1 > max_skill_points)
{
return;
}
if(skill_ids[1]*1 < (6-Math.floor(total_skill_points[skill_ids[0]]/5)))
{
return;
}
if(typeof data[skill_ids[0]][0][skill_ids[1]][skill_ids[2]] != 'undefined')
{
var podaci = data[skill_ids[0]][0][[skill_ids[1]]][[skill_ids[2]]];
if((current_rank[skill_id]+1)*1 > podaci.p*1)
{
return;
}
current_rank[skill_id]++;
total_skill_points.total_points++;
if(typeof total_skill_points[skill_ids[0]] != 'undefined')
{
total_skill_points[skill_ids[0]]++;
}
else
{
total_skill_points[skill_ids[0]]=1;
}
set_skill_tooltip(podaci, skill_id);
display_totals();
jQuery('#scp_'+skill_id).html(current_rank[skill_id]);
}
//have we unlocked a new row?
var i;
var row_to_unlock = 6 - Math.floor(((total_skill_points[skill_ids[0]])/5));
if(total_skill_points[skill_ids[0]] >= (5 * (6 - skill_ids[1] + 1)) && row_to_unlock>=0)
{
for(i = 1; i<= 4; i++)
{
jQuery('#'+skill_ids[0]+'_'+(row_to_unlock)+'_'+i).css({ 'opacity' : 1 });
}
}
update_permalink();
}
function remove_skill_point(skill_id)
{
var skill_ids=skill_id.split('_');
//are we allowed to click on this row?
if(typeof current_rank[skill_id] == 'undefined')
{
current_rank[skill_id]=0; //initialize current_rank of skill
return; //return because there is nothing to right click
}
if(total_skill_points[skill_ids[0]] == null)
{
total_skill_points[skill_ids[0]]=0; //initialize
}
if( current_rank[skill_id] < 1)
{
return;
}
var current_row_we_are_on = 6 - Math.floor(((total_skill_points[skill_ids[0]]-1)/5));
if(skill_ids[1]>current_row_we_are_on)
{
return;
}
if(typeof data[skill_ids[0]][0][skill_ids[1]][skill_ids[2]] != 'undefined')
{
var podaci = data[skill_ids[0]][0][[skill_ids[1]]][[skill_ids[2]]];
if((current_rank[skill_id]-1)*1 < 0)
{
return;
}
current_rank[skill_id]--;
if(total_skill_points.total_points > 0)
{
total_skill_points.total_points--;
}
if(total_skill_points[skill_ids[0]] > 0)
{
total_skill_points[skill_ids[0]]--;
}
set_skill_tooltip(podaci, skill_id);
display_totals();
jQuery('#scp_'+skill_id).html(current_rank[skill_id]);
}
//have we locked a new row?
var i;
var row_to_lock = 6 - Math.floor(((total_skill_points[skill_ids[0]])/5)) - 1;
if(total_skill_points[skill_ids[0]] <= (5 * (6 - skill_ids[1] + 1)) && row_to_lock>=0)
{
for(i = 1; i<= 4; i++)
{
jQuery('#'+skill_ids[0]+'_'+(row_to_lock)+'_'+i).css({ 'opacity' : 0.6 });
}
}
update_permalink();
}
function display_totals()
{
jQuery.each(total_skill_points, function (index, value){
if(index!='total_points')
{
jQuery('#'+index+'_totals').html(value);
}
else
{
jQuery('#g_points').css('width',(max_skill_points - value)*8);
jQuery('#points_left').html(max_skill_points - value);
}
});
}
function set_skill_tooltip(podaci, skill_id)
{
var tooltip_content = ''+podaci.n+'';
var regexppatt=/%[0-9]+%/g;
matche_s=podaci.d.match(regexppatt);
var temp_current_rank=0;
var temp_next_rank = 0;
if(typeof current_rank[skill_id] != 'undefined')
{
temp_current_rank=current_rank[skill_id];
temp_next_rank = temp_current_rank;
}
var current_description='';
var next_rank='';
if(matche_s != null)
{
if(temp_current_rank>0 && temp_current_rank <= podaci.p)
{
current_description=podaci.d;
jQuery.each(matche_s,function(index, value) {
var re = new RegExp(value);
current_description=current_description.replace(re,podaci.r[index][temp_current_rank-1]);
});
}
if(temp_current_rank < podaci.p)
{
next_rank=podaci.d;
jQuery.each(matche_s,function(index, value) {
var re = new RegExp(value);
next_rank=next_rank.replace(re,podaci.r[index][temp_next_rank]);
});
}
}
else
{
if(temp_current_rank < podaci.p)
{
next_rank = podaci.d;
}
current_description=podaci.d;
}
if(current_description!='')
{
tooltip_content +='Rank ' + temp_current_rank + '/'+podaci.p+'';
tooltip_content +='
'+current_description+'
';
}
if(next_rank!='')
{
tooltip_content +='
Next Rank: ' + next_rank +'
';
}
jQuery('#tooltip_content').html(tooltip_content);
}
String.prototype.repeat = function(num) {
return new Array(isNaN(num)? 1 : ++num).join(this);
}
function update_permalink()
{
var default_paermalink=skill_permalink_baseurl + '?build='+'0'.repeat(4*7*3);
var final_string='';
jQuery.each(data, function(index, value) {
for( var i=6; i>=0; i--)
{
for(var j=1; j<=4; j++)
{
if(typeof current_rank[index+ '_' + i + '_'+j] != 'undefined')
{
final_string += current_rank[index+ '_' + i + '_'+j];
}
else
{
final_string += '0';
}
}
}
})
jQuery('#permalink').val(skill_permalink_baseurl + '?build=' + final_string);
}
function init_current_rank()
{
jQuery.each(current_rank, function(index, value){
var skill_ids=index.split('_');
if(total_skill_points[skill_ids[0]] == null)
{
total_skill_points[skill_ids[0]]=0; //initialize
}
if(typeof data[skill_ids[0]][0][skill_ids[1]][skill_ids[2]] != 'undefined')
{
var podaci = data[skill_ids[0]][0][[skill_ids[1]]][[skill_ids[2]]];
if((value)*1 > podaci.p*1)
{
//continue;
}
total_skill_points.total_points += value;
if(typeof total_skill_points[skill_ids[0]] != 'undefined')
{
total_skill_points[skill_ids[0]]+=value;
}
else
{
total_skill_points[skill_ids[0]]=value;
}
//set_skill_tooltip(podaci, skill_id);
jQuery('#scp_'+index).html(value);
}
var row_to_unlock = 6 - Math.floor(((total_skill_points[skill_ids[0]])/5));
if(total_skill_points[skill_ids[0]] >= (5 * (6 - skill_ids[1] + 1)) && row_to_unlock>=0)
{
for(var i = 1; i<= 4; i++)
{
jQuery('#'+skill_ids[0]+'_'+(row_to_unlock)+'_'+i).css({ 'opacity' : 1 });
}
}
});
display_totals();
update_permalink();
}