
var lang; 
var nav; 
var timeformat; 
var showdepth; 


function checkRadio (formName, rbGroupName) {
 var radios = document[formName].elements[rbGroupName];
 for (var i=0; i <radios.length; i++) {
  if (radios[i].checked) {
   return true;
  }
 }
 return false;
}

function setLoginFormVisibility() {
	var lf = document.getElementById("login");
	if (lf) {
		var state = getCookie('loginState');
		//alert(state); 
		if (state == 'hidden') {
			lf.style.visibility = 'hidden';		
		} else {
			lf.style.visibility = 'visible';
		}
	}
}

function toggleLoginForm() {
	var lf = document.getElementById("login");
	var state = getCookie('loginState');
	//alert(state); 
	if (state == null || state == 'visible') {
		document.cookie = "loginState=hidden; path=/";
	} else {
		document.cookie = "loginState=visible; path=/";
	}
	setLoginFormVisibility();
}

function parseGlobalId(globalId) {
        reID = /^(.+):(.+):(.+):(.+)/;
        globalId.search(reID);
		lang       = RegExp.$1;
        nav        = RegExp.$2;
        timeformat = RegExp.$3;
		showdepth  = RegExp.$4; 
}

function getBg(obj) {
	 if (obj){ 
	 	 var bg = obj.style.background; 
		 if (bg) return bg;
		 else return getBg(obj.parentNode); 
	 }
	 else return "white"; 
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	
	return curtop;
}

//function getMareFItemOld(t) {
//	return '<div class="item level1"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=productionoverview&amp;m=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">Förärvning</a></div><div class="item level2"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=productionoverview&amp;m=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">som mor (' + t.avk + ')</a></div><div class="item level2"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=productionrecord&amp;mm=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">som mormor (' + t.avkavk + ')</a></div><div class="item level2"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=productionrecord&amp;mmm=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">som mormorsmor (' + t.avk3 + ')</a></div><div class="item level2"><a href="' + location.protocol + "//" + location.host + 'servlet/GetBBData?type=productionrecord&amp;mmmm=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">som mormorsmormor (' + t.avk4 + ')</a></div><div class="item level2"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=lines&amp;trotter=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">viktiga linjer</a></div>';
//	return html; 
//}
function getFItem(t) {
	
	if (t.sex == 'm') {	
		fitem.appendChild(getMareFItem(t)); 
	} else {
		fitem.appendChild(getStallionFItem(t)); 			
	}	
}

function getMareFItem(t) {
	var fItem = getMenuFItem(t, "production", "m", 1, false, t.avk, "Förärvning");
	fItem.appendChild(getMenuFItem(t, "production", "m", 2, true, t.avk, "som mor")); 	
	fItem.appendChild(getMenuFItem(t, "production", "mm", 2, true, t.avkavk, "som mormor")); 	
	fItem.appendChild(getMenuFItem(t, "production", "mmm", 2, true, t.avk3, "som mormorsmor")); 	
	fItem.appendChild(getMenuFItem(t, "production", "mmmm", 2, true, t.avk4, "som mormorsmormor")); 	
	fItem.appendChild(getMenuFItem(t, "lines", "trotter", 2, false, 1, "viktiga linjer")); 	
	return fItem; 
}
function getStallionFItem(t) {
	var fItem = getMenuFItem(t, "productionoverview", "f", 1, false, t.avk, "Förärvning", false);
	fItem.appendChild(getMenuFItem(t, "productionoverview", "f", 2, true, t.avk, "som far", true));
	fItem.appendChild(getMenuFItem(t, "productionoverview", "f", 3, false, t.avk, "översikt", true));
	fItem.appendChild(getMenuFItem(t, "production&cc=FI", "f", 3, true, t.avk7, "nyckeltal finskfödda", true));
	fItem.appendChild(getMenuFItem(t, "production&cc=FR", "f", 3, true, t.avk5, "nyckeltal franskfödda", true));
	fItem.appendChild(getMenuFItem(t, "production&cc=IT", "f", 3, true, t.avk6, "nyckeltal italienskfödda", true));
	fItem.appendChild(getMenuFItem(t, "production&cc=SE", "f", 3, true, t.avk3, "nyckeltal svenskfödda", true));
	fItem.appendChild(getMenuFItem(t, "productionoverview", "mf", 2, true, t.avkavk, "som morfar", true));
	fItem.appendChild(getMenuFItem(t, "productionoverview", "mf", 3, false, t.avkavk, "översikt", true));
	fItem.appendChild(getMenuFItem(t, "production&cc=FI", "mf", 3, true, t.avk8, "nyckeltal finskfödda", true));
	fItem.appendChild(getMenuFItem(t, "production&cc=SE", "mf", 3, true, t.avk4, "nyckeltal svenskfödda", true));
	fItem.appendChild(getMenuFItem(t, "fmfoverview", "trotter", 2, false, 1, "far-morfarsstatistik", true));
	fItem.appendChild(getMenuFItem(t, "lines", "trotter", 2, false, 1, "viktiga linjer")); 	
	return fItem; 	
}

function getStallionFItemOld(t) {
	return '<div class="item level1"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=productionoverview&amp;f=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">Förärvning</a></div><div class="item level2"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=productionoverview&amp;f=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">som far (' + t.avk + ')</a></div><div class="item level3"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=productionoverview&amp;f=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">översikt</a></div><div class="item level3"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=production&amp;cc=SE&amp;f=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">nyckeltal svenskfödda (' + t.avk3 + ') </a></div><div class="item level3"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=production&amp;cc=FI&amp;f=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">nyckeltal finskfödda (' + t.avk5 + ')</a></div><div class="item level2"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=productionoverview&amp;mf=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">som morfar (' + t.avkavk + ')</a></div><div class="item level3"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=productionoverview&amp;mf=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">översikt</a></div><div class="item level3"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=production&amp;cc=SE&amp;mf=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">nyckeltal svenskfödda (' + t.avk4 + ')</a></div><div class="item level3"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=production&amp;cc=FI&amp;mf=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">nyckeltal finskfödda (' + t.avk6 + ')</a></div><div class="item level2"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=lines&amp;trotter=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">far-morfarsstatistik</a></div><div class="item level2"><a href="' + location.protocol + "//" + location.host + '/servlet/GetBBData?type=lines&amp;trotter=' + t.id + '&amp;breed=' + t.breed + '&amp;lang=swe">viktiga linjer</a></div>';
}

function getMenuFItem(t, operation, place, indent, avkDisplay, antalAvk, text, pro) {
	var link;
	if (antalAvk == 0) {
		link = document.createElement("span");
		link.className = 'disabledItem'; 
	} else {
		link = document.createElement("a");
		link.href = location.protocol + "//" + location.host + '/servlet/GetBBData?type=' + operation + '&' + place + '=' + t.id + '&breed=' + t.breed;
	}
	text = getLex(lang, text);
	if (avkDisplay && antalAvk) {
		text = text + ' (' + antalAvk + ')';
	}
    if (pro) {
        text = text + " <span class=\"pro\">Pro</span>";
    }
	link.innerHTML = text;
	linkWrapper = document.createElement("div");
	linkWrapper.className = 'item level' + indent; 
	linkWrapper.appendChild(link);
	return linkWrapper;
}

function BBContext()
{
	var thisObject = eval("this");
	this.element = document.createElement("div");
	this.element.className = 'bb-context';
	
	this.header = document.createElement("div");
	this.header.className = 'menuheader';
	this.element.appendChild(this.header);	

	this.body = document.createElement("div");
	this.body.className = 'menubody';
	this.element.appendChild(this.body);

	this.sex = 'x';
	this.avk = 0;
	this.avkavk = 0; 
	this.id = 0;
	//var menyn = eval(this.element); 

	this.build = function(h,s) {

		//var options = '&lang=' + lang + '&nav=' + nav + '&timeformat=' + timeformat + '&showdepth=' + showdepth;
		
		this.header.innerHTML = h ;
		if (s) 
		   this.header.style.background = s; 
		else
		   this.header.style.background = 'white'; 
	
		this.element.removeChild(this.body);

		var newBody = document.createElement("div");
		newBody.className = 'menubody';

		// HÄRSTAMNING 
		var hitem = document.createElement("div");
		hitem.className = 'item';	
		var hlink;
		hlink = document.createElement("a");
		hlink.href = location.protocol + "//" + location.host + '/servlet/' + 'GetBBData?trotter=' + thisObject.id + '&breed=' + thisObject.breed + '&lang=' + lang;
		hlink.innerHTML = getLex(lang, 'Härstamning');
		
		hitem.appendChild(hlink);
		newBody.appendChild(hitem);

		// FÖRÄRVNING
		if (thisObject.sex == 'm') {	
			newBody.appendChild(getMareFItem(thisObject)); 
		} else {
			newBody.appendChild(getStallionFItem(thisObject)); 			
		}

		var kitem = document.createElement("div");
		kitem.className = 'item level1';		
		var klink = document.createElement("a");
		klink.innerHTML = getLex(lang, 'Kommentarer');
		klink.href = 	location.protocol + "//" + location.host + '/servlet/' + 'GetBBData?type=trottermessages&trotter=' + thisObject.id + 
				'&breed=' + thisObject.breed + '&lang=' + lang; 
		kitem.appendChild(klink);
		newBody.appendChild(kitem);

		if (thisObject.sex == 'm') {
		   var vitem = document.createElement("div");
		   vitem.className = 'item level1';		
		   var vlink = document.createElement("a");
		   vlink.innerHTML = getLex(lang, 'Hingstval');
		   vlink.href = location.protocol + "//" + location.host + '/servlet/' + 'GetBBData?type=searchstallionform&m=' + thisObject.id + '&breed=' + thisObject.breed + 
				'&lang' + lang; 
		   vitem.appendChild(vlink);
		   newBody.appendChild(vitem);
		}	

		if (thisObject.id < 1000000) {
			   
		   var sitem = document.createElement("div");
		   sitem.className = 'item level1';	
		   
		   var slink = document.createElement("a");
		   slink.innerHTML = getLex(lang, 'STC Sportinfo (extern)');
		   slink.href = 'http://www.travsport.se/shestinfo?kommando=visaHerstamning&hestId=' + thisObject.id;
		   //slink.id = 'stc';
		   slink.target = '_blank'; 
		   sitem.appendChild(slink);
		   newBody.appendChild(sitem);
		}

		this.element.appendChild(newBody);
		this.body = newBody;
	}

	

	/**
	 * BBContext.addItemToContext(baseUrl)
	 * Add Link with {$id} where dynamic id should be placed
	 * baseUrl = "GetBBData?type=production&f={$id}&breed=warm&lang=swe&nav=js&timeformat=km";
	 **/
	this.addItemToContext = function(urlName, baseUrl)
	{
		this.baseUrls.push(baseUrl)
		
		subitem = document.createElement("div");
		subitem.className = 'item';
		
		theHref = document.createElement("a");
		theHref.innerHTML = urlName;
		theHref.href = baseUrl;

		alert('added target');
		theHref.target = "_blank";
	
		
		subitem.appendChild(theHref);
		this.subitems.push(subitem);
		this.element.appendChild(subitem);
	}
	
	/**
	 * BBContext.show()
	 **/
	this.show = function()
	{
		thisObject.element.style.visibility = 'visible';
	}
	
	/**
	 * BBContext.hide()
	 **/
	this.hide = function()
	{
		thisObject.element.style.visibility = 'hidden';
	}
	
	/**
	 * BBContext.attachEventsToElements(elementType, elementClassName)
	 **/
	this.attachEventsToElements = function(elementType, elementClassName)
	{
		allElements = document.getElementsByTagName(elementType);
		for(i = 0; i < allElements.length; i++)
		{
			element = allElements[i];
			if(element.className == elementClassName)
			{
				element.onmouseover = function() {
						   window.status = 'Meny'; 
						   document.body.style.cursor = 'pointer';
						   //tempbg = this.style.background; 
   						   //this.style.background = 'black'; 
						   //this.style.color = 'white';		   
						   

				}

				element.onmouseout = function() {
						   window.status = '';
						   document.body.style.cursor = 'auto';
						   //alert(this.parentNode.style.background); 
						   //this.style.background = this.parentNode.style.background; 
   						   //this.style.color = 'black'; 
						   
				}
			
				element.onclick = function()
				{
					thisObject.moveContext(this)
				}
			}
		}
	}
	
	/**
	 * BBContext.getX(htmlObject)
	 * BBContext.getY(htmlObject)
	 **/
	this.getX = findPosX;
	this.getY = findPosY;
	
	/**
         * BBContext.parseID(dynId)
        **/
        this.parseID = function(dynId)
        {
                var reID = dynId.split(":");
             	//reID = /^(.):(\d+):(\d+):(\d+):(\d+):(\d+):(\d+):(\d):(\d+):(.+):(.+)/;
				//        1    2     3     4     5     6     7    8     9    10   11
                //dynId.search(reID);
				if (reID.length == 4) {
					thisObject.sex = reID[0];
        	        thisObject.avk = null;
                	thisObject.avkavk = null;
					thisObject.isImportantAncestor = null;
        	        thisObject.id  = reID[2];
					thisObject.breed = reID[3];
				} else { 	
					thisObject.sex = reID[0];
        	        thisObject.avk = reID[1];
                	thisObject.avkavk = reID[2];
					thisObject.avk3 = reID[3];
					thisObject.avk4 = reID[4];
					thisObject.avk5 = reID[5];
					thisObject.avk6 = reID[6];
					thisObject.avk7 = reID[7];
					thisObject.avk8 = reID[8];
					thisObject.isImportantAncestor = reID[9];
        	        thisObject.id  = reID[10];
					thisObject.breed = reID[11];
				}
		//alert(	"sex = " + thisObject.sex + 
		//	"\navk = " + thisObject.avk + 
		//	"\navkavk = " + thisObject.avkavk + 
		//	"\nisImportantAncestor = " + thisObject.isImportantAncestor + 
		//	"\nid = " + thisObject.id + 
		//	"\nbreed = " + thisObject.breed); 	
	}

/*
	this.addItems = function() {
       	   //var options = '&lang=' + lang + '&nav=' + nav + '&timeformat=' + timeformat + '&showdepth=' + showdepth;
	   this.addItemToContext('Härstamning', location.protocol + "//" + location.host + 'servlet/' + 'GetBBData?trotter={$i}&breed={$b}&lang=' + lang);
	   if (this.sex == 'f') {
	      this.addItemToContext('Fadershingst', location.protocol + "//" + location.host + 'servlet/' + 'GetBBData?type=productionoverview&f={$i}&breed={$b}&lang=' + lang);
	      this.addItemToContext('Morfarshingst', location.protocol + "//" + location.host + 'servlet/' + 'GetBBData?type=productionoverview&mf={$i}&breed={$b}&lang=' + lang);
	   }
	   else {
	      this.addItemToContext('Modersto', location.protocol + "//" + location.host + 'servlet/' + 'GetBBData?type=productionoverview&m={$i}&breed={$b}&lang=' + lang);

	   }
	   this.addItemToContext('Viktiga linjer', location.protocol + "//" + location.host + 'servlet/' + 'GetBBData?type=lines&trotter={$i}&breed={$b}&lang=' + lang);

	   this.addItemToContext('Kommentarer', location.protocol + "//" + location.host + 'servlet/' + 'GetBBData?type=trottermessages&trotter={$i}&breed={$b}&lang=' + lang); 
	   this.addItemToContext('STC Sportinfo', 'http://www.atg.se/HastDetaljServlet?view=resultat&hastnyckel={$i}');
	}
*/
        /**
         * BBContext.parseUrl(dynUrlId, baseUrl)
        **/
        this.parseUrl = function(dynUrlId, baseUrl)
        {

	         re = /\{\$i\}/;
                 theHref = baseUrl.replace(re, thisObject.id);

                 re = /\{\$a\}/;
                 theHref = theHref.replace(re, thisObject.sex);

		 //alert(theHref);
		 re = /\{\$b\}/;
                 theHref = theHref.replace(re, thisObject.breed);

                 return theHref;
         }


	/**
	 * BBContext.moveContext(clickedObject)
	 **/
	this.moveContext = function(clickedObject)
	{
		this.hide();
		
		this.element.style.left = this.getX(clickedObject) + 'px';
		this.element.style.top = this.getY(clickedObject) + 'px';
		
		//alert(clickedObject.parentNode.outerHTML);
		var bg = getBg(clickedObject); 
		this.parseID(clickedObject.id);
		this.build(clickedObject.innerHTML, bg);
		
		//this.addItems();			
		//var anchors = this.element.getElementsByTagName('a');
		//for(i = 0; i < anchors.length; i ++ )
		//{
			//a = anchors[i];
			//a.href = this.parseUrl(clickedObject.id, this.baseUrls[i]);
		//	}
		
		
		
		this.show();
		return false;
	}
	

	this.element.onmouseout = function() {
              thisObject.hide();
        }

        this.element.onmousemove = function() {
              thisObject.show();
        }

	document.body.appendChild(this.element);
	
	
}
//window.onunload = function() {
//    var forms = document.getElementsByTagName("form");
//	for (var i = 0; i < forms.length; i++) {
//            for (var j = 0; j < forms[i].elements.length; j++) {
//                forms[i].elements[j].disabled = "disabled";
//            }
//    }
//}

window.onload = function()
{
	setLoginFormVisibility();

	parseGlobalId(document.getElementById("bodyID").className);
	//alert(lang + ':' + nav + ':' + timeformat + ':' + showdepth);
	var bbContext = new BBContext();

	bbContext.attachEventsToElements('span', 'attachContext');

//    var inputs = document.getElementsByTagName("input");
//	for (i = 0; i < inputs.length; i++) {
//        if (inputs[i].type == 'submit') {
//            inputs[i].onclick = function() {
//                if (inputs[i].type == 'submit') {
//                    inputs[i].disabled = 'disabled';
//                }
//            }
//        }
//    }


    var forms = document.getElementsByTagName("form");
	for (var i = 0; i < forms.length; i++) {
        forms[i].onsubmit = function() {
            this.submit();
            var browserName = BrowserDetect.browser;
            if (browserName == 'Firefox' || browserName == 'Explorer') {
                for (var j = 0; j < this.elements.length; j++) {
                    this.elements[j].disabled = "disabled";
                }
            }
            return false;            
        }
    }

   
	var s = document.getElementById("showBreedLink");
	if (s) {

	   s.onmouseover = function() {
		window.status = 'Visa raser';
		return true;
	   }

	   s.onmouseout = function() {
		window.status = '';
		return true; 
	   }

	   s.onclick = function() {
		resetAll();
		displayBreeds();
		return true; 
	   }
	}
	
	var ib = document.getElementById("showInbreedLink");
	if (ib) {
	   
	   displayInbreeding();
	   
	   ib.onmouseover = function() {
		window.status = 'Visa inavel';
		return true;
	   }
	   ib.onmouseout = function() {
		window.status = '';
		return true; 
	   }
	   ib.onclick = function() {
		resetAll();
		displayInbreeding();
		return true; 
	   }
	}

	var xp = document.getElementById("showXFactorPos");
	if (xp) {
	   xp.onmouseover = function() {
		window.status = 'Visa X-faktorpositioner';
		return true;
	   }
	   xp.onmouseout = function() {
		window.status = '';
		return true; 
	   }
	   xp.onclick = function() {
		resetAll();
		var sex; 
		var mainSpan = document.getElementById('mainHorseCell').getElementsByTagName('span');
		for (i = 0; i < mainSpan.length; i++) {
		    var mainId = mainSpan[i].id;
		    if (mainId) {
		        reID = /^(.):(\d+):(\d+)/;
			mainId.search(reID);
			sex = RegExp.$1;  
		    }
		}
		displayXFactorPos(sex);
		return true; 
	   }
	}


	var hl = document.getElementById("showhline");
	if (hl) {
	   hl.onmouseover = function() {
		window.status = 'Visa hingstlinje';
		return true;
	   }
	   hl.onmouseout = function() {
		window.status = '';
		return true; 
	   }
	   hl.onclick = function() {
		resetAll();
		displayHLine();
		return true; 
	   }
	}

	var sl = document.getElementById("showsline");
	if (sl) {
	   sl.onmouseover = function() {
		window.status = 'Visa stolinje';
		return true;
	   }
	   sl.onmouseout = function() {
		window.status = '';
		return true; 
	   }
	   sl.onclick = function() {
		resetAll();
		displaySLine();
		return true; 
	   }
	}


	var tf = document.getElementById("trotterField");
	if (tf) {
	   tf.onkeydown = function(e) {
		   var code;
		   if (!e) var e = window.event;
		   if (e.keyCode) code = e.keyCode;
		   else if (e.which) code = e.which;
		   //alert(code);
		   if (code >= 32 || code == 12 || code == 13) {
		   	document.getElementById("sireField").value = "";
			document.getElementById("damField").value = "";
		   }
		
	   }
	}	

	var sf = document.getElementById("sireField");
	if (sf) {
	   sf.onkeydown = function(e) {
		   var code;
		   if (!e) var e = window.event;
		   if (e.keyCode) code = e.keyCode;
		   else if (e.which) code = e.which;
		   //alert(code);
		   if (code >= 32 || code == 12 || code == 13)
		      document.getElementById("trotterField").value = "";
	   }
	}	

	var df = document.getElementById("damField");
	if (df) {
	   df.onkeydown = function(e) {
		   var code;
		   if (!e) var e = window.event;
		   if (e.keyCode) code = e.keyCode;
		   else if (e.which) code = e.which;
		   //	alert(code);
		   if (code >= 32 || code == 12 || code == 13)
		      document.getElementById("trotterField").value = "";
	   }
	}	

        var ls = document.getElementById("langswitchselect"); 
        if (ls) {
            ls.onchange = function(e) {
                document.getElementById("langswitchform").submit(); 
            }
        }

        var bs = document.getElementById("breedswitchselect");
        if (bs) {
            bs.onchange = function(e) {
                document.getElementById("breedswitchform").submit();
            }
        }

	var ss = document.getElementById("sdselect"); 
	if (ss) {
	   ss.onchange = function(e) {
		   document.getElementById("sdform").submit(); 
		   //document.getElementById("existingForm").showdepth.value = ss.value;
		   //document.getElementById("testForm").showdepth.value = ss.value;
	   }
	}

	var of = document.getElementById("optionsform"); 
	if (of) {
	   of.timeformat.onchange = function() { 
			    setPreferences(); 
	   }
           	   
           of.showcncy.onchange = function() { 
			    setPreferences(); 
	   } 
	}

	var ssf = document.getElementById("stallionsearchform");
	if (ssf) {
		ssf.marketselect.onchange = function() {
			    ssf.type.value = "searchstallionform"; 
			    ssf.submit();
		}
		ssf.cncyselect.onchange = function() {
			    ssf.type.value = "searchstallionform"; 
			    ssf.submit();
		} 
	}

	var i = 1; 
	do {
		var ah = document.getElementById('edit' + i);
		if (ah) {
			ah.onclick = function() {
				if (this.className == "edit") {
					this.className = "done";
					var n = this.nextSibling.childNodes[0].innerHTML; 
					var nr = this.nextSibling.childNodes[1].name; 
					//alert(nr); 
					this.nextSibling.childNodes[0].innerHTML = 	
						"<input type = \"text\" name = \"" + nr + "\" value = \"" + n + "\">";  
					this.nextSibling.childNodes[0].childNodes[0].select(); 
					this.nextSibling.childNodes[0].childNodes[0].focus(); 
					this.nextSibling.removeChild(this.nextSibling.childNodes[1]);
				}
			}
		}
		i++; 
	} while (ah);
	
	var sm = document.getElementById("searchmessage");
	if (sm) 
		sm.style.visibility = 'hidden';
}

function getCookie(name)
{
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1)
    {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
    {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

function displayInbreeding() {
	var treeTDs = document.getElementById('pedigree').getElementsByTagName('td');
	for (i = 0; i < treeTDs.length; i++) {
	    reClassName = /^(.*)_.*/;
	    treeTDs[i].className.search(reClassName);
	    inbCol = RegExp.$1;
	    treeTDs[i].style.background = inbCol;    
	}	    
 	
	var inbAncTRs = document.getElementById('inbreedingInfluenceTable').getElementsByTagName('tr');
	for (i = 0; i < inbAncTRs.length; i++) {
	    if (inbAncTRs[i].className) {
	       inbAncTRs[i].style.background = inbAncTRs[i].className;
	    }

	}
	
}

function displayBreeds() {
	var treeTDs = document.getElementById("pedigree").getElementsByTagName('td');
	for (i = 0; i < treeTDs.length; i++) {
	    reClassName = /^.*_(.*)/;
	    treeTDs[i].className.search(reClassName);
	    breedCol = RegExp.$1;
	    treeTDs[i].style.background = breedCol;    
	}	
	
	var french = document.getElementById("french"); 
	if (french) {
		french.style.background = "aqua";
		document.getElementById("russian").style.background = "red";
	}
}

function resetAll() {
 	var inbAncTRs = document.getElementById("inbreedingInfluenceTable").getElementsByTagName('tr');
	for (i = 0; i < inbAncTRs.length; i++) {
	    if (inbAncTRs[i].className) {
	       inbAncTRs[i].style.background = 'white';
	    }
	}
         
	var french = document.getElementById("french"); 
	if (french) {
		french.style.background = 'white';
		document.getElementById('russian').style.background = 'white';
	}
	document.getElementById('xancinfo').style.background = 'white'; 
	
        document.getElementById('hlineinfo').style.background = 'white';   
	document.getElementById('slineinfo').style.background = 'white';   

	
}

function colorAllAnc(curr, col) {
	 var anc  = document.getElementById(curr); 
	 if (anc) {
	 	 anc.style.background = col; 
		 colorAllAnc(curr + "f", col);
		 colorAllAnc(curr + "m", col);
	 }
}

function colorFMF(col) {
	finfo.style.background = col;
	f.style.background = col;
	mfinfo.style.background = col;
	mf.style.background = col;
}


function displayXFactorPos(sex) {
	document.getElementById('xancinfo').style.background = 'red'; 
	if (sex != 'f') {
	     colorXanc('f', false, 'red');
	}
	else {
	     colorAllAnc('f', 'white');
	}
	colorXanc('m', true, 'red');
	
}

function colorXanc(curr, isMare, col) {
	 var anc = document.getElementById(curr);	 
	 if (anc) {
		 anc.style.background = col;
		 if (isMare) { 
		    colorXanc(curr + "f", false, col);
		    colorXanc(curr + "m", true, col);   
		 }
		 else {
		    colorXanc(curr + "f", false, 'white');
		    colorXanc(curr + "m", true, col);     	
		    
		 }
	}
}

function displayHLine() {
	       resetAll();
	       colorHLine('f', 'red');
	       colorAllAnc('m', 'white');
	       document.getElementById('hlineinfo').style.background = 'red';   
}

function displaySLine() {
	       resetAll();
	       colorAllAnc('f', 'white');
	       colorSLine('m', 'red');
	       document.getElementById('slineinfo').style.background = 'red';   
}




function colorHLine(curr, col) {
	 var anc = document.getElementById(curr);	 
	 if (anc) {
		 anc.style.background = col;
		 colorHLine(curr + "f", col);
		 colorHLine(curr + "m", 'white');   
	}
}

function colorSLine(curr, col) {
	 var anc = document.getElementById(curr);	 
	 if (anc) {
		 anc.style.background = col;
		 colorSLine(curr + "f", 'white');
		 colorSLine(curr + "m", col);   
	}
}





function validateForm() {
	
   var sf = document.getElementById("statForm");						    
   if (sf.place.value == "mf") {
      if (sf.year.value == 0)  {
	 alert(getLex(lang, "För äldre avkommor finns endast fadersstatistik med marknadsförda hingstar"));
	 return false;
      }	 
      if (sf.category.value != "all") {
	 alert(getLex(lang, "Alternativet att endast visa marknadsförda hingstar eller fryshingstar gäller endast fadersstatistik"));
	 return false;
      }
      if (sf.rookiesonly.checked) {
      	 alert(getLex(lang,"Alternativet att endast visa hingstar som har sin första årgång i statistiken gäller endast fadersstatistik"));
	 return false;
     }
   }
   else {
	if (sf.year.value == 0)  {
	   if (sf.category.value == "all") {
	      alert(getLex(lang, "För äldre avkommor finns endast fadersstatistik med marknadsförda hingstar"));
	      return false;
	   }
	   if (sf.rookiesonly.checked) {
	      alert(getLex(lang, "Alternativet att endast visa hingstar som har sin första årgång i statistiken gäller inte äldre avkommor"));
	      return false;
	   }  
	}
   }
   return true;		
}


function openHelp(url, width, height, left, top) {
	 if (height > screen.height - top) height = screen.height - top;
	 if (left < 0) left = screen.width - width - 32; 

	 newwindow = window.open(url, 'helpwin', 'dependent=yes,fullscreen=no,toolbar=no,status=no,menubar=no,scrollbars=yes,resizable=no,directories=no,location=no,width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',screenX=' + left + ',screenY=' + top );
	 setTimeout('newwindow.focus()', 100);
	 return false;	   

}

function setPreferences() {
	 var of = document.getElementById("optionsform"); 
	 if (of) {
	    of.submit();
	    //document.cookie = "lang=" + of.lang.value;
	    //document.cookie = "nav=" + of.nav.value;  
	    //document.cookie = "timeformat=" + of.timeformat.value; 
	    //alert(document.cookie); 
	    //location.reload(); 
	 }
}


function getLex(lang, sweLex) {
	 if (lang == 'swe') return sweLex; 
	 if (lang == 'eng') return getEngLex(sweLex); 
	 if (lang == 'fr') return getFrLex(sweLex); 
}

function getEngLex(sweLex) {

	 if (sweLex == "Du måste först godkänna villkoren") return "You need to accept the terms before ordering";

	 if (sweLex == "Härstamning") return "Pedigree"; 
	 if (sweLex == "Förärvning") return "Production"; 
	 if (sweLex == "som far") return "as sire"; 
	 if (sweLex == "som morfar") return "as sire of dam"; 
	 if (sweLex == "översikt") return "overview"; 
	 if (sweLex == "nyckeltal svenskfödda") return "key figures Swedish-bred"; 
	 if (sweLex == "nyckeltal finskfödda") return "key figures Finnish-bred"; 
	 if (sweLex == "nyckeltal franskfödda") return "key figures French-bred"; 
	 if (sweLex == "nyckeltal italienskfödda") return "key figures Italian-bred"; 
	 if (sweLex == "far-morfarsstatistik") return "sire-broodmare sire statistics"; 

	 if (sweLex == "som mor") return "as dam"; 
	 if (sweLex == "som mormor") return "as 2nd dam"; 
	 if (sweLex == "som mormorsmor") return "as 3rd dam"; 
	 if (sweLex == "som mormorsmormor") return "as 4th dam"; 
	 if (sweLex == "viktiga linjer") return "important lines"; 
	 if (sweLex == "Kommentarer") return "Comments"; 
	 if (sweLex == "Hingstval") return "Find mate"; 
	 if (sweLex == "Sportinfo (extern)") return "Sportinfo";		
	 if (sweLex == "") return ""; 
	 if (sweLex == "Alternativet att endast visa hingstar som har sin första årgång i statistiken gäller inte äldre avkommor") return "\"Display only first crop stallions\" does not apply to aged trotter statistics";

	 if (sweLex == "För äldre avkommor finns endast fadersstatistik med marknadsförda hingstar")
	    return "For aged trotters only sire statistics table containing Swedish market stallions is available";
	  if (sweLex == "Alternativet att endast visa marknadsförda hingstar eller fryshingstar gäller endast fadersstatistik")  
	    return "\"Display only stallions on market\" only applies to sire statistics";
	 if (sweLex == "Alternativet att endast visa hingstar som har sin första årgång i statistiken gäller endast fadersstatistik") 
	    return "\"Display only first crop stallions\" only applies to sire statistics"; 

	    

	 return sweLex; 
}

function getFrLex(sweLex) {

     if (sweLex == "Du måste först godkänna villkoren") return "You need to accept the terms before ordering";

	 if (sweLex == "Härstamning") return "Pédigree"; 
	 if (sweLex == "Förärvning") return "Production"; 
	 if (sweLex == "som far") return "père"; 
	 if (sweLex == "som morfar") return "père de mère"; 
	 if (sweLex == "översikt") return "Apercu"; 
	 if (sweLex == "nyckeltal svenskfödda") return "statistique suédoise"; 
	 if (sweLex == "nyckeltal finskfödda") return "statistique finlandaise"; 
	 if (sweLex == "nyckeltal franskfödda") return "statistique francaise"; 
	 if (sweLex == "nyckeltal italienskfödda") return "statistique italien"; 
	 if (sweLex == "far-morfarsstatistik") return "croisements père x père de mère"; 

	 if (sweLex == "som mor") return "mère"; 
	 if (sweLex == "som mormor") return "grand-mère"; 
	 if (sweLex == "som mormorsmor") return "3ème mère"; 
	 if (sweLex == "som mormorsmormor") return "3ème mère"; 
	 if (sweLex == "viktiga linjer") return "lignées importantes"; 
	 if (sweLex == "Kommentarer") return "Commentaires"; 
	 if (sweLex == "Hingstval") return "Trouver un étalon"; 
	 if (sweLex == "Sportinfo (extern)") return "Sportinfo";		
	 if (sweLex == "") return ""; 
	 if (sweLex == "Alternativet att endast visa hingstar som har sin första årgång i statistiken gäller inte äldre avkommor") return "L'alternative de montrer que les étalons qui ont leur première année en statistique concerne seulement la statistique du père et non les statistiques des progénitures agées.";

	 if (sweLex == "För äldre avkommor finns endast fadersstatistik med marknadsförda hingstar")
	    return "Pour les trotteurs agés seulement les tableaux statistiques d'étalons contenant les étalons du marché suédois sont disponibles";
	  if (sweLex == "Alternativet att endast visa marknadsförda hingstar eller fryshingstar gäller endast fadersstatistik")  
	    return "L' alternative de montrer que les étalons qui sont commercialisés concerne seulement la statistique du père.";
	 if (sweLex == "Alternativet att endast visa hingstar som har sin första årgång i statistiken gäller endast fadersstatistik") 
	    return "L' alternative de montrer que les étalons qui ont leur première année en statistique concerne seulement la statistique du père et non les statistiques des progénitures agées."; 

	    

	 return sweLex; 
}

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: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			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.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

