function SetCookie (name, value) {  
var argv = SetCookie.arguments;  
var argc = SetCookie.arguments.length;  
var expires = (argc > 2) ? argv[2] : null;
var today = new Date();
var dateExp = new Date(today.getYear()+3,today.getMonth(),today.getDate(),today.getHours(),today.getMinutes(),today.getSeconds());
var path = (argc > 3) ? argv[3] : null;  
var domain = (argc > 4) ? argv[4] : null;  
var secure = (argc > 5) ? argv[5] : false;  
document.cookie = name + "=" + escape (value) + 
((expires == null) ? "" : ("; expires=" + dateExp.toGMTString())) + 
((path == null) ? "" : ("; path=" + path)) +  
((domain == null) ? "" : ("; domain=" + domain)) +    
((secure == true) ? "; secure" : "");
}
function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
function eraseCookie(name)
{
	SetCookie(name,"",-1);
}
function getWindowScroll() {
    var T, L, W, H;
	with(document){
      if (document.documentElement && documentElement.scrollTop) {
        T = documentElement.scrollTop;
        L = documentElement.scrollLeft;
      } else if (document.body) {
        T = body.scrollTop;
        L = body.scrollLeft;
      }
      if (typeof(innerWidth)=='number') {
        W = innerWidth;
        H = innerHeight;
      } else if (document.documentElement && documentElement.clientWidth) {
        W = documentElement.clientWidth;
        H = documentElement.clientHeight;
      } else {
        W = body.offsetWidth;
        H = body.offsetHeight
      }
	}
    return { top: T, left: L, width: W, height: H };
}
function showDetails(url,stay,size,which){
	if(which==undefined){which=''};
	wind=$('detailsWindow'+which);
	wind.style.display='none';
	if(!stay){
		wind.style.top=(mouseY+20)+'px';
		wind.style.left=(mouseX)+'px';
		if(!size){
			wind.style.width='350px';
		}else{
			wind.style.width='650px';
		}
	}
	new Ajax.Updater('detailsWindow'+which,url,{asynchronous:true,evalScripts:true,onComplete:function(){wind.style.display='';recenter();}});
}
showDetailsLocal=function(text,stay,size,which){
	if(which==undefined){which=''};
	wind=$('detailsWindow'+which);
	wind.style.display='none';
	if(!stay){
		wind.style.top=(mouseY+20)+'px';
		wind.style.left=(mouseX)+'px';
		if(!size){
			wind.style.width='350px';
		}else{
			wind.style.width='650px';
		}
	}
	wind.innerHTML=text;
	wind.style.display='';
}
hideDetailsLocal=function(which){
	if(which==undefined){which=''};
	wind=$('detailsWindow'+which);
	wind.style.display='none';
}
enserie=function(ids){
	ids=ids.split(',');
	retVal='';
	ids.each(function(id){
		if(typeof($(id))=='object'){
			retVal+='&'+id+'='+escape($F(id));
		}
	});
	return retVal;
}
recenter=function(which){
	ws=getWindowScroll();
	dw=$('detailsWindow'+which);
	rightlimit=parseInt(dw.style.left)+parseInt(dw.style.width);
	bottomlimit=parseInt(dw.style.top)+300;
	if(ws.top+ws.height < bottomlimit){
		$('theBody').scrollTop=parseInt(dw.style.top)-50;
	}else{
		if(ws.top > parseInt(dw.style.top)){
			$('theBody').scrollTop=parseInt(dw.style.top)-50;
		}
	}
	if(ws.left+ws.width < rightlimit){
		$('theBody').scrollLeft=parseInt(dw.style.left)-30;
	}else{
		if(ws.left > parseInt(dw.style.left)){
			$('theBody').scrollLeft=parseInt(dw.style.left)-30;
		}
	}
	activeNodes = document.getElementsByClassName('acti');
	if(activeNodes.length > 0){
		activeNodes[0].focus();
	}
}
function el_toggle(name){
	if($(name).style.display=='none'){
		new Effect.Appear(name,{queue:'end'});
	}else{
		new Effect.Fade(name,{queue:'end'});
	}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  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=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_changeProp(objName,x,theProp,theValue) { //v6.0
  var obj = MM_findObj(objName);
  if (obj && (theProp.indexOf("style.")==-1 || obj.style)){
    if (theValue == true || theValue == false)
      eval("obj."+theProp+"="+theValue);
    else eval("obj."+theProp+"='"+theValue+"'");
  }
}
function MM_openBrWindow(theURL,winName,features) { //v2.0
  mine=window.open(theURL,winName,features);
  mine.focus();
}
function errorAjax (t) {
    alert('Error ' + t.status + ' -- ' + t.statusText);
}
function openpopup(lnk,name,props){
	pWindow=window.open(lnk, name, props) ;
	pWindow.focus();
}
function IsNumeric(sText){
	var ValidChars = "0123456789.-";
	var IsNumber=true;
	var Char;
	for (i = 0; i < sText.length && IsNumber == true; i++){ 
	  Char = sText.charAt(i); 
	  if (ValidChars.indexOf(Char) == -1){
		 IsNumber = false;
	  }
	}
	if(sText!=''){
		if(parseFloat(sText)!=sText){
			IsNumber=false;	
		}
	}
	return IsNumber;
}
function IsNumericPositive(sText){
	var ValidChars = "0123456789.";
	var IsNumber=true;
	var Char;
	for (i = 0; i < sText.length && IsNumber == true; i++) 
	  { 
	  Char = sText.charAt(i); 
	  if (ValidChars.indexOf(Char) == -1) 
		 {
		 IsNumber = false;
		 }
	  }
	if(sText!=''){
		if(parseFloat(sText)!=sText){
			IsNumber=false;	
		}
	}
	return IsNumber;
}
function IsInteger(sText){
	var ValidChars = "0123456789-";
	var IsNumber=true;
	var Char;
	for (i = 0; i < sText.length && IsNumber == true; i++){ 
	  Char = sText.charAt(i); 
	  if (ValidChars.indexOf(Char) == -1){
		 IsNumber = false;
	  }
	}
	if(sText!=''){
		if(parseInt(sText)!=sText){
			IsNumber=false;	
		}
	}
	return IsNumber;
}
function IsIntegerPositive(sText){
	var ValidChars = "0123456789";
	var IsNumber=true;
	var Char;
	for (i = 0; i < sText.length && IsNumber == true; i++) 
	  { 
	  Char = sText.charAt(i); 
	  if (ValidChars.indexOf(Char) == -1) 
		 {
		 IsNumber = false;
		 }
	  }
	return IsNumber;
}
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();
