String.prototype.truncate = function(max_length, str) {
	if (typeof max_length == 'undefined') { 
		max_length = 80; 
	}
	if (typeof str == 'undefined') { 
		str = "..."; 
	}
	
	out = '';
	if (this.length > max_length) {
		out = this.substring(0, max_length-3);
		if (out.substr(-1) != ' ') {
			out = out.replace(/(.+)([ ]+.+)/, '$1');
		}
		out += '...';
	}
	return out;
}


 
function getElement(element_id)
    {
    return (document.all)?document.all[element_id]:document.getElementById(element_id);
    }

function arrayPush(array,value)
    {
    array[array.length] = value;
    }

function inArray(value,array){

	for(var i in array){
		if(array[i] == value){
			return true;
		}
	}
	return false;
}

function parseInt2(str2parse)
{
var re = /\d+/gi;

if(str2parse.search(re) >= 0)
    {
	var found =  str2parse.match(re);
	return (new Number(found[0]));
    }
    else
	return false;
}



// -----------------------------------------------------------------------------
// tooltip.js - beginning
// -----------------------------------------------------------------------------
var sw = screen.width;
var sh = screen.availHeight;//screen.height;
var sp=true;
var popup;
var Slow_show_deltaWH = 2; 
var Slow_hide_deltaWH = 2; 
var Show_deltaWH = 10;
var Hide_deltaWH = 10;
var SOffset = 10;
var ShowSpeed = 20;
var HideSpeed = 20;
var timer = null;
var top = 0;
var wait_for_continue = false;
var waiting = false;
var tooltip_id = "source_tooltip";
var browser = null;
var motion_direction_x = 0;
var motion_direction_y = 0;
var margin = 20;
var Event = null;

function setOut(t)
    {
   	if(!elementExists('debug_output'))
   		document.body.innerHTML+= "<div id='debug_output'></div>";

    getElement('debug_output').innerHTML = t;
    }

function displayDebug(object)
    {
    var tmp ="";
        
    tmp += '<hr>'+object+'<hr>';    
	    
    for(var p in object)
	tmp += 'property: <b>'+p+'</b> value: <b>'+object[p]+'</b><br>';    
    setOut(tmp);
    }

function setEvents(element)
	{
	if(!tooltip_loaded) return false;	
		
	element.onmouseover 	= OnMouseOver_Evant;
	element.onmouseout 		= OnMouseOut_Evant;

	if(document.documentElement.onmousemove == null)
	    document.documentElement.onmousemove = OnMouseMove_Evant;
//	element.onmousemove 	= OnMouseMove_Evant;
	}
	
function getEventX(e)
{
if(document.all)
	return event.clientX  + (document.documentElement.scrollLeft || document.body.scrollLeft);
else
	return e.pageX;
}
	
function getEventY(e)
{
if(document.all)
	return event.clientY + (document.documentElement.scrollTop || document.body.scrollTop); 
else
	return e.pageY;
}

function setLeft(element,left)
    {
    var tw = parseInt(element.style.width);
    
    if(left == null) left = parseInt(element.style.left);

    if(left == null) return 0;    	

	if((left+tw+(2*margin)) > screen.width) 
	    left -= tw + margin;	    
	else
	    left += margin;
	    
    element.style.left = left+"px";
    }

function setTop(element,top)
    {
    var th = parseInt(element.style.height);
    
    if(top == null) top = parseInt(element.style.top);
    
    if(top == null) return 0;
    
    if((top+th+(2*margin)+180) > (screen.availHeight+(document.documentElement.scrollTop || document.body.scrollTop)))
        top -= th + margin;
    else
	top += margin;
    element.style.top = top+"px";
    }

function OnMouseMove_Evant(e)
	{
	if(popup == null) return false;
	Event = (e || event);
	
	var x = getEventX(e);
	var y = getEventY(e);
	
	var tooltip = getElement(tooltip_id);

	if(!tooltip.id) return 0;
	
	setLeft(tooltip,x);
	setTop(tooltip,y);
			    
	
	
//	tooltip.style.left = x+"px";
//	tooltip.style.top = y+"px";
	
	}	
	
function OnMouseOver_Evant(e)
	{
	var x = getEventX(e)+20;
	var y = getEventY(e)+20;
	Tooltip_createContent(this);
	showTooltip(tooltip_id,x,y);
//	displayDebug(this);
//	alert((this.nodeName || this.tagName))
	}

function OnMouseOut_Evant(e)
	{
	
	if((this.nodeName || this.tagName) != "DIV") return 0;
	
	hideTooltip();
	}

// tooltip	

function pop_motion(mode)
{
popup_width = popup.scrollWidth;
popup_height = popup.scrollHeight;



	if(mode == 'show')
		{
		var new_val;

		var deltaWH = Show_deltaWH;
		var SdeltaWH = Slow_show_deltaWH; 
if(parseInt(popup.style.width) < (popup_width-1))
			{
			popup.style.width = (parseInt(popup.style.width) + deltaWH)+"px";
			
//			setLeft(popup,parseInt(popup.style.left));
						
//			if(parseInt(popup.style.height) < 25)
//			popup.style.height = (parseInt(popup.style.height) + deltaWH)+"px";			
			}
		else	
		if(parseInt(popup.style.height) < popup_height)
			{
			popup.style.width = popup_width+"px";
			if(wait_for_continue) { clearTimeout(timer); timer=null; waiting=true; return 0; }
			popup.style.height = (parseInt(popup.style.height) + ((parseInt(popup.style.height)+SOffset < popup_height && parseInt(popup.style.height) > SOffset)?deltaWH:SdeltaWH))+"px";
			
//			setLeft(popup,parseInt(popup.style.top));
			}

		if(parseInt(popup.style.width) >= popup_width && parseInt(popup.style.height) >= popup_height)	
				{
				popup.scrollTop=0;
				popup.scrollLeft=0;
				clearTimeout(timer);
				timer = null;			
				}		
				else timer = setTimeout('pop_motion("'+mode+'")',ShowSpeed);
		}
	else
	if(mode == 'hide')
		{
		var deltaWH = Hide_deltaWH;
		var SdeltaWH = Slow_hide_deltaWH;
		 
		if(parseInt(popup.style.height) > 25)
			{
			new_val = parseInt(popup.style.height) - ((parseInt(popup.style.height) > SOffset)?deltaWH:SdeltaWH);
			if(new_val < 1) new_val = 1;
			
			popup.style.height = new_val+"px";
//			setLeft(popup,parseInt(popup.style.top));
			}
			else 
			{
		if(parseInt(popup.style.width) > 1)
			{
			if(parseInt(popup.style.width) > 1)
				{
				new_val = parseInt(popup.style.width) - deltaWH;
				if(new_val < 1) new_val = 1;
				
				popup.style.width = new_val+"px";
//				setLeft(popup,parseInt(popup.style.left));
				}
				
			if(parseInt(popup.style.height) > 1)
				{
				new_val = parseInt(popup.style.height) - deltaWH;
				if(new_val < 1) new_val = 1;
				
				popup.style.height = new_val+"px";
//				setLeft(popup,parseInt(popup.style.top));
				}

			}
			else 
			{ 
			popup.style.width = "1px";
			popup.style.height = "1px"; 
			}
			
			}
			
		if((parseInt(popup.style.width) == 1) && (parseInt(popup.style.height) == 1))	
				{
				popup.scrollTop=0;
				popup.scrollLeft=0;
				popup.style.visibility = 'hidden';
				popup = null;
				clearTimeout(timer);
				timer = null;
				}		
				else timer = setTimeout('pop_motion("'+mode+'")',HideSpeed);

//	setLeft(popup,null);
//	setTop(popup,null);
		}
		
}

function showTooltip(tip_id,x,y)
{
popup = getElement(tip_id);

if(!popup.id) return 0;



popup.style.visibility = 'visible';
popup.scrollTop=0;
popup.scrollLeft=0;

//popup.style.width = "1px";
//popup.style.height= "1px";
popup.style.top = y+"px";
popup.style.left = x+"px";

//popup.style.top = (((sh/2) - (parseInt(popup.style.height)/2))+top)-100;

sp = true;

if(timer != null)
	{
	clearTimeout(timer);
	timer = null;
	}

pop_motion('show');
}

function hideTooltip()
{
sp = true;
if(timer != null)
	{
	clearTimeout(timer);
	timer = null;
	}
	
pop_motion('hide');
//wait_for_continue = true;
}

	


function addContentAndContine(content)
	{
	if(waiting)
		{
		waiting = false;
		wait_for_continue = false;
		}
		
	popup.lastChild.innerHTML = content;	
	pop_motion('show');	
	}

function Tooltip_createContent(element)
    {
    var story_id = parseInt2(element.id);
    var tooltip = getElement(tooltip_id);
    content = tooltip.lastChild;
    
    
    var list = source[story_id];
    
    var rows = Math.ceil(Math.sqrt(list.length));
    var cols = Math.ceil(list.length / rows);
    var tmp = "";
    
    for(var i=0;i<list.length;i++)
	    {
	    tmp += "<div style='display:inline;'><img src='"+list[i][0]+"' ALT='' style='border:solid 1px #cdcdcd;' align='absmiddle'>&nbsp;"+list[i][1]+"</div>";
	    if(i%cols == 0) tmp += "<br />";
	    }
    
    content.innerHTML = tmp;	
    }

// end
//window['onscroll'] = function() { setOut(document.body.scrollTop); };

var tooltip_loaded = true;
// -----------------------------------------------------------------------------
// tooltip.js - end
// -----------------------------------------------------------------------------

