var BROWSERS_MODULE_INCLUDED;
if(BROWSERS_MODULE_INCLUDED)
{
	//silent noop - Module is allready included!
}
else
{
	BROWSERS_MODULE_INCLUDED=true;
	
var DOM = (document.getElementById) ? 1 : 0;
var NS4 = (document.layers) ? 1 : 0;
var IE4 = (document.all) ? 1 : 0;
var loaded = 0;	// to avoid stupid errors of Microsoft browsers
var Opera5 = (navigator.userAgent.indexOf("Opera 5") > -1 || navigator.userAgent.indexOf("Opera/5") > -1 || navigator.userAgent.indexOf("Opera 6") > -1 || navigator.userAgent.indexOf("Opera/6") > -1) ? 1 : 0;
var Konqueror= (navigator.userAgent.indexOf("Konqueror")>-1 ? 1:0);
var Safari=(navigator.userAgent.indexOf("Safari")>-1 ? 1:0);

// it works with NS4, Mozilla, NS6, Opera 5 and 6, IE
var currentY = -1;
var currentX = -1;
var framewidth = -1;

var IE = document.all?true:false;
var tempX = 0;
var tempY = 0;

function getMouseXY(e) {
if (IE) { // grab the x-y pos.s if browser is IE
tempX = event.clientX + document.body.scrollLeft;
tempY = event.clientY + document.body.scrollTop;
}
else {  // grab the x-y pos.s if browser is NS
tempX = e.pageX;
tempY = e.pageY;
}  
if (tempX < 0){tempX = 0;}
if (tempY < 0){tempY = 0;}  
currentX = tempX;
currentY = tempY;
return true;
}

function captureMousePosition(e) {
/*
    if (document.layers) {
        xMousePos = e.pageX;
        yMousePos = e.pageY;
        xMousePosMax = window.innerWidth+window.pageXOffset;
        yMousePosMax = window.innerHeight+window.pageYOffset;
    } else if (document.all) {
        xMousePos = window.event.x+document.body.scrollLeft;
        yMousePos = window.event.y+document.body.scrollTop;
        xMousePosMax = document.body.clientWidth+document.body.scrollLeft;
        yMousePosMax = document.body.clientHeight+document.body.scrollTop;
    } else if (document.getElementById) {
        xMousePos = e.pageX;
        yMousePos = e.pageY;
        xMousePosMax = window.innerWidth+window.pageXOffset;
        yMousePosMax = window.innerHeight+window.pageYOffset;
    }*/
    if (!e)
    e = window.event;
    if (e.pageX || e.pageY){
        currentX = e.pageX;
        currentY = e.pageY;
    }
    else if (e.clientX || e.clientY){
        currentX = e.clientX + document.body.scrollLeft  + document.documentElement.scrollLeft;
        currentY = e.clientY + document.body.scrollTop   + document.documentElement.scrollTop;   }  
}

function grabMouse(e) {
    //alert(navigator.userAgent);

    if(!e) e = window.event;
	
	if ((DOM && !IE4) || Opera5) {		
		currentY = e.clientY;
		currentX = e.clientX;
		framewidth = e.width;
		
	} else if (NS4) {
		currentY = e.pageY;
		currentX = e.pageX;
		framewidth = e.width;
	} else if (IE4)
	{
		currentY = event.clientY;
		currentX = event.clientX;
		framewidth = event.width;
	} else 
	{
		currentY = event.y;
		currentX = event.x;
		framewidth = event.width;
	}
	if (DOM && !IE4 && !Opera5 && !Safari && !Konqueror) 
	{
		currentY += window.pageYOffset;
		currentX += window.pageXOffset;
	} 
	else if (IE4 && DOM && !Opera5) 
	{
		if(document.documentElement && document.documentElement.scrollTop)
		{
			
			currentY+=document.documentElement.scrollTop;
			currentX+=document.documentElement.scrollLeft;
		}
		else
		{
			currentY += document.body.scrollTop;
			currentX += document.body.scrollLeft;		
		} 
	}
}

if ((DOM || NS4) && !IE4) {
	document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE);
}


document.onmousemove=captureMousePosition


function getElement(n, d) 
{ 
	//v4.0
	var p,i,x;
	
	x=null;
	
	if(!d) 
		d=document; 
	if( ( p=n.indexOf("?") ) > 0 && parent.frames.length) 
	{
		d=parent.frames[n.substring(p+1)].document; 
		n=n.substring(0,p);
	}
	if(!(x=d[n]) && d.all) 
		x=d.all[n]; 
	
	for (i=0;!x && i < d.forms.length ; i++) 
		x=d.forms[i][n];
	
	for(i=0;!x && d.layers && i<d.layers.length ; i++) 
		x=getElement(n,d.layers[i].document);
	
	if(!x && document.getElementById) 
		x=document.getElementById(n); 
	
	return x;
}

function setVisibility(elementName,on) 
{
	
	if (loaded && getElement(elementName)) 
	{	// to avoid stupid errors of Microsoft browsers
		if (on ) 
		{
			if (DOM) 
				document.getElementById(elementName).style.visibility = "visible";
			else if (NS4) 
				document.layers[elementName].visibility = "show";
			else 
				document.all[elementName].style.visibility = "visible";
		} 
		else 
		{
			if (DOM) 
				document.getElementById(elementName).style.visibility = "hidden";
			else if (NS4) 
				document.layers[elementName].visibility = "hide";
			else 
				document.all[elementName].style.visibility = "hidden";
		}
	}
}

function isVisible(elementName)
{
	if (loaded && getElement(elementName)) // to avoid stupid errors of Microsoft browsers
	{ // to avoid stupid errors of Microsoft browsers	
		
		if (DOM) 
		{
			if(document.getElementById(elementName).style.visibility == "visible")
				return true
			else
				return false;
		} 
		else if (NS4) 
		{
			if(document.layers[elementName].visibility == "show")
				return true;
			else
				return false;
		} 
		else 
		{
			if(document.all[elementName].style.visibility == "visible")
				return true;
			else
				return false;
		}
	} 
	
	return false;

}

function isDisplay(elementName)
{
	return isDisplayEl(getElement(elementName));
}

function isDisplayEl(element)
{
	if(loaded && element!=null)
	{ // to avoid stupid errors of Microsoft browsers
		var theLevel = element;
		if(theLevel.style.display == "none")
			return false;
		else
			return true;
		
	}
	
	return true;
}

function isCollection(obj)
{
	var retVal=false;
	var obj1;
	try
	{
		if( (typeof obj.length)!='undefined')
			retVal=true;
	}catch(e)
	{
	}
	
	return retVal;
}

function toggleDisplay(elementName)
{
	
	if(loaded && getElement(elementName)!=null)
	{ // to avoid stupid errors of Microsoft browsers
		if(isCollection(getElement(elementName)))
		{
			for(var i=0;i<getElement(elementName).length;i++)
				setDisplayEl(getElement(elementName)[i],!isDisplayEl(getElement(elementName)[i]))
		}
		else if(getElement(elementName))
		{
			setDisplay(elementName,!isDisplay(elementName))
		}
			
	}
}

function setDisplayEl(element,on)
{
	if(loaded && element!=null)
	{  // to avoid stupid errors of Microsoft browsers
		var theLevel = element;
		if(on)
			theLevel.style.display = "block";
		else
			theLevel.style.display = "none";
	}
}


function setDisplay(elementName,on)
{
	setDisplayEl(getElement(elementName),on);
}


function getWindowLeft() 
{
	if (loaded) 
	{	// to avoid stupid errors of Microsoft browsers
		if (IE4) 
		{
			return window.screenLeft;
		}
		else
		{ 
			return window.screenX;
		}
	}
}
function getWindowTop() 
{
	if (loaded) 
	{	// to avoid stupid errors of Microsoft browsers
		if (IE4) 
		{
			return window.screenTop;
		}
		else
		{ 
			return window.screenY;
		}
	}
}


function setLeft(elementName,x) 
{
	if (loaded && getElement(elementName)) 
	{	// to avoid stupid errors of Microsoft browsers
		if (DOM) 
		{
			document.getElementById(elementName).style.left = x + "px";
		}
		else if (NS4) 
			document.layers[elementName].left = x;
		else
		{ 
			document.all[elementName].style.pixelLeft = x;
		}
	}
}

function setTop(elementName,y) 
{
	if (loaded && getElement(elementName)) 
	{	// to avoid stupid errors of Microsoft browsers
		if (DOM) 
		{
		    document.getElementById(elementName).style.top = y + "px";
		}
		else if (NS4) 
		{
			document.layers[elementName].top = y;
		}
		else 
		{
			document.all[elementName].style.pixelTop = y;
		}
	}
}

function setWidth(elementName,w)
{
	if (loaded && getElement(elementName)) 
	{	// to avoid stupid errors of Microsoft browsers
		if (DOM) 
			document.getElementById(elementName).style.width = w;
		else if (NS4) 
			document.layers[elementName].width = w;
		else 
			document.all[elementName].style.pixelWidth = w;
		
	}
}


function moveElementY(elementName, ordinata) 
{
	if (loaded && getElement(elementName)) 
	{	// to avoid stupid errors of Microsoft browsers
	// Konqueror: ordinata = -1 according to the initialization currentY = -1
	// Opera: isNaN(ordinata), currentY is NaN, it seems that Opera ignores the initialization currentY = -1
		if (ordinata != -1 && !isNaN(ordinata)) 
		{	// The browser has detected the mouse position
			if (DOM) 
			{
				// attenzione a "px" !!!
				appoggio = parseInt(document.getElementById(elementName).style.top);
				if (isNaN(appoggio)) appoggio = 0;
				
				if (Math.abs(appoggio + ordinata_margin - ordinata) > thresholdY)
					setTop(elementName,ordinata - ordinata_margin);
				
			} 
			else if (NS4) 
			{
				if (Math.abs(document.layers[elementName].top + ordinata_margin - ordinata) > thresholdY)
					setTop(elementName,ordinata - ordinata_margin);
			} 
			else 
			{
				if (Math.abs(document.all[elementName].style.pixelTop + ordinata_margin - ordinata) > thresholdY)
					setTop(elementName,ordinata - ordinata_margin);
			}
		}
	}
}

function moveElementX(elementName, ordinata,_itemWidth) 
{
	
	var frameWidth;
	var itemWidth= parseInt(_itemWidth)
	if(NS4)
		frameWidth = document.Frame.innerWidth;	
	else
		frameWidth = document.body.offsetWidth;

									
	var finalpos = 0;
	if (loaded && getElement(elementName)) 
	{   // to avoid stupid errors of Microsoft browsers
		if (ordinata != -1 && !isNaN(ordinata)) 
		{
			if (DOM) 
			{
				appoggio = parseInt(document.getElementById(elementName).style.left);

				if (Math.abs(ordinata_margin - ordinata) > thresholdX)
					finalpos = ordinata - ordinata_margin;
				else
					finalpos = thresholdX;

				if((finalpos + itemWidth) > (frameWidth-thresholdXR))
					finalpos = (frameWidth-thresholdXR - itemWidth);

				setLeft(elementName,finalpos);

			} 
			else if (NS4) 
			{			
				if (Math.abs(ordinata_margin - ordinata) > thresholdX)
					finalpos = ordinata - ordinata_margin;
				else
					finalpos = thresholdX;
				if((document.layers[elementName].left + itemWidth) > (frameWidth-thresholdXR))
					finalpos = (frameWidth-thresholdXR - itemWidth);
										
				setLeft(elementName,finalpos);
			} 
			else 
			{	
				if (Math.abs(ordinata_margin - ordinata) > thresholdX)
					finalpos = ordinata - ordinata_margin;
				else
					finalpos =  thresholdX;
				if((finalpos + itemWidth) > (frameWidth-thresholdXR))
					finalpos = (frameWidth-thresholdXR -itemWidth);								
					
				setLeft(elementName,finalpos);
			}
		}
	}
}

function isArray(vari)
{
	if(vari[0])
		return true;
	
	return false;
}


/*
window.Array.prototype.linkare_add = function(elemento)
{
	this[this.length]=elemento;
}

window.Array.prototype.linkare_remove = function(elemento)
{
	var foundPos=this.linkare_indexOf(elemento);
	var newArray=new Array();
	
	for(var i=0;i<foundPos;i++)
		newArray.linkare_add(this[i]);
	for(var i=foundPos+1;i<this.length;i++)
		newArray.linkare_add(this[i]);
	
	return newArray;
}

window.Array.prototype.linkare_clear = function()
{
	return this.splice(0,this.length);
}


window.Array.prototype.linkare_copy = function()
{
	return this.slice(0,this.length);
}
*/

function arrayIndexOf(arr,elemento)
{
	for(var i=0;i<arr.length;i++)
		if(arr[i]==elemento)
			return i;

	return -1;
}


function arrayContains(arr,elemento)
{
	return (arrayIndexOf(arr,elemento)!=-1);
}


window.String.prototype.replaceAll = function(search,replace)
{
	if(this!=null && this!="" && search!=null && search!="" && replace!=null)
	{
		var pos=this.indexOf(search);
		if(pos!=-1)
		{
			var replaced=this.substring(0,pos)+replace+this.substring(pos+search.length);
			return replaced.replaceAll(search,replace);
		}
	}
	return this;
}

window.String.prototype.endsWith = function(sEnd)
{
	return (this.substr(this.length-sEnd.length)==sEnd);
}

window.String.prototype.startsWith = function(sStart)
{
	return (this.substr(0,sStart.length)==sStart);
}

window.String.prototype.trim = function()
{
	var b=0,e=this.length -1;
	while(this.substr(b,1) == " ") b++;
	while(this.substr(e,1) == " ") e--;
	return this.substring(b,e+1);
}

window.String.prototype.reverse = function()
{
	var a = new Array();
	for(var i=0;i<this.length;i++) a.push(this.substr(i,1));
	return a.reverse().join("");
}

function highLight(elementName)
{
	var el=getElement(elementName);
	if(el)
		if(!el.className.endsWith("_HighLight"))
			el.className=el.className+"_HighLight";
}

function unHighLight(elementName)
{
	var el=getElement(elementName);
	if(el)
		if(el.className.endsWith("_HighLight"))
			el.className=el.className.replaceAll("_HighLight","");
}

function isHighLight(elementName)
{
	var el=getElement(elementName);
	if(el)
		if(el.className.endsWith("_HighLight"))
			return true;
	
	return false;
}

function toggleHighLight(elementName)
{
	if(isHighLight(elementName))
		unHighLight(elementName);
	else
		highLight(elementName);
	
}


function imgOver(elementName)
{
	var el=getElement(elementName);
	if(el && el.src)
		if(el.src.indexOf("_out")!=-1)
			el.src=el.src.replaceAll("_out","_over");		
}

function imgOut(elementName)
{
	var el=getElement(elementName);
	if(el && el.src)
		if(el.src.indexOf("_over")!=-1)
			el.src=el.src.replaceAll("_over","_out");		
}

function isImgOver(elementName)
{
	var el=getElement(elementName);
	if(el && el.src)
		return (el.src.indexOf("_over")!=-1);
	
	return false;
}



function toggleImgOverOut(elementName)
{
	if(isImgOver(elementName))
		imgOut(elementName);
	else
		imgOver(elementName);	
}


function imgOn(elementName)
{
	var el=getElement(elementName);
	if(el && el.src)
		if(el.src.indexOf("_off")!=-1)
			el.src=el.src.replaceAll("_off","_on");		
}

function imgOff(elementName)
{
	var el=getElement(elementName);
	if(el && el.src)
		if(el.src.indexOf("_on")!=-1)
			el.src=el.src.replaceAll("_on","_off");		
}

function isImgOn(elementName)
{
	var el=getElement(elementName);
	if(el && el.src)
		return (el.src.indexOf("_on")!=-1);
	
	return false;
}

function toggleImgOnOff(elementName)
{
	if(isImgOn(elementName))
		imgOff(elementName);
	else
		imgOn(elementName);	
}

function putInnerHTML(elementName,html)
{
	if (loaded && getElement(elementName)) // to avoid stupid errors of Microsoft browsers
	{ // to avoid stupid errors of Microsoft browsers	
		if (DOM) 
		{
			getElement(elementName).innerHTML=html;
		} 
		else if (NS4) 
		{
			getElement(elementName).document.open();
			getElement(elementName).document.write(html);
			getElement(elementName).document.close();
		} 
		else 
		{
			getElement(elementName).innerHTML=html;
		}
	} 
}

function getInnerHTML(elementName)
{
	return getInnerHTMLEl(getElement(elementName));
}

function getInnerHTMLEl(element)
{
	if (loaded && element) // to avoid stupid errors of Microsoft browsers
	{ // to avoid stupid errors of Microsoft browsers	
		if (DOM) 
		{
			return element.innerHTML;
		} 
		else if (NS4) 
		{
			return element.document.content;
			
		} 
		else 
		{
			return element.innerHTML;
		}
	} 
}

function addInnerHTML(elementName,html)
{
	if (loaded && getElement(elementName)) // to avoid stupid errors of Microsoft browsers
	{ // to avoid stupid errors of Microsoft browsers	
		if (DOM) 
		{
			getElement(elementName).innerHTML=getInnerHTML(elementName)+html;
		} 
		else if (NS4) 
		{
			getElement(elementName).document.open();
			getElement(elementName).document.write(getInnerHTML(elementName)+html);
			getElement(elementName).document.close();
		} 
		else 
		{
			getElement(elementName).innerHTML=getInnerHTML(elementName)+html;
		}
	} 
}


function addByFormTemplate(src_template_element,dest_element,max_define,current_size)
{
	if (loaded && getElement(src_template_element) && getElement(dest_element) && current_size<max_define) // to avoid stupid errors of Microsoft browsers
	{ // to avoid stupid errors of Microsoft browsers	
		
		var html_source=getInnerHTML(src_template_name);
		html_source=html_source.replace(/Ğiğ/g,""+current_size);
		html_source=html_source.replace(/Ği+1ğ/g,""+(current_size+1));
		var html_dest=getInnerHTML(dest_element);
		
		putInnerHTML(dest_element,html_dest+html_source);
	} 
}

function attachOnLoad(function_ref)
{
	if ((DOM || NS4) && !IE4)
		addEventListener("load", function_ref, false);
	else
		attachEvent("onload", function_ref);
}


loaded=1;
	
}