var br=getBrowser();
var has_get_element=document.getElementById;
var is_ns4=(br[0]=="netscape" && br[1] <=4);
var is_ns6=(br[0]=="netscape" && br[1] >= 6);
var is_safari=(br[0]=="safari");
var is_ie4=(br[0]=="msie" && br[1] <=4);
var is_ie=(br[0]=="msie");

var G_popup_timeout;
var G_popover_target;

var POPUP_TIMEOUT=225;

function	log(str) {
	var dbgObj = document.getElementById("dbg");

	if(dbgObj) {
 		dbgObj.innerHTML = dbgObj.innerHTML + str+" ";
	}
}

function b_set_attr(obj,attr,value){
	try{
		if(is_safari){
			obj[attr]=""+value;
		}
		else{
			obj.setAttribute(attr,value);
		}
	}
	catch (e){
	}
}

function b_get_attr(obj,attr){
	try{
		if(is_safari){
			return obj[attr];
		}
		else{
			return obj.getAttribute(attr);
		}
	}
	catch (e){
		return null;
	}
}

function init_info_links(){
	if(document.getElementsByTagName&&document.getElementById){
		var links=document.getElementsByTagName("a");
		for(var i=0;i<links.length;i++){
			var link=links[i];
			if(b_get_attr(link,"sire")!=null){
				if(link.addEventListener){
					link.addEventListener("mouseover", mouseOverLink, false);
					link.addEventListener("mouseout", mouseOutLink, false);
				}
				else{
					link.onmouseover=mouseOverLink;
					link.onmouseout=mouseOutLink;
				}
			}
		}
	}
}

function getAncestorAttr(node,attr){
	while(node){
		if(b_get_attr(node,attr)){
			return node;
		}
		node=node.parentNode;
	}
	return null;
}

function mouseOverLink(evt){
	evt=evt ? evt : event;
	var parent=evt.currentTarget?evt.currentTarget:evt.srcElement;
	var target=getAncestorAttr(parent, "sire");

	if(target){
		G_popover_target=target;

		G_popup_timeout=setTimeout("start_popup()", POPUP_TIMEOUT);
	}
}

function	start_popup() {
	if(G_popover_target) {
		show_fetching();
		prepare_popover();
	}
}

function	show_div(id) {
	var d=document.getElementById(id);
	d.style.display='';
	d.style.visibility='';
}

function	hide_div(id) {
	var d=document.getElementById(id);
	d.style.display='none';
	d.style.visibility='hidden';
}

function show_fetching() {
	hide_div('balloon');
	show_div('fetching');

	overlib("",FULLHTML,STICKY,MOUSEOFF,FOLLOWMOUSE,0,OFFSETX,1,OFFSETY,-60);
}

function mouseOutLink(evt){
	clearTimeout(G_popup_timeout);
	G_popup_timeout=null;
	G_popover_target=null;
	return nd();
}

function prepare_popover() {
	function get_xmlhttp() {
		if(is_ie) {
			return new ActiveXObject("Microsoft.XMLHTTP");
		} else {
			return new XMLHttpRequest();
		}
	}

	try{
		if(G_popover_target) {
			if(G_popover_target.data){
				show_popover();
			} else {
				var data=new Object;
				G_popover_target.data=data;

				var sire_id=b_get_attr(G_popover_target, "sire");
				if(!sire_id) return;

				url=SIRE_INFO+"?id="+sire_id;

				try {
					data.xmlhttp=get_xmlhttp();
				} catch (e) {
					return;
				}

				data.xmlhttp.open("GET", url, true);

				data.xmlhttp.onreadystatechange=function() {
					if(data.xmlhttp.readyState==4){
						if(data.xmlhttp.status==200) {
							data.result=data.xmlhttp.responseText;
							show_popover();
						} else {
							alert("Could not fetch sire data from web site");
						}
					}
				}

				data.xmlhttp.send(null);
			}
		}
	} catch (e) {
		alert("problem in fetch:"+e);
	}
}

function show_popover(){
	if(fill_popover()){
		hide_div('fetching');
		show_div('balloon');
	} else {
		nd();
	}
}

function fill_popover(){

	function set_tag_value(nodeName,value){
		if(value==null){
			value="";
		}
		var node=document.getElementById(nodeName);
		if(node){
			node.innerHTML=value;
		}
	}

	if(G_popover_target && G_popover_target.data && G_popover_target.data.result){
    	var sire_data=new Function("return "+G_popover_target.data.result)();

		if(sire_data) {
			set_tag_value("si_name",sire_data['name']);
			set_tag_value("si_id",sire_data['id']);
			set_tag_value("si_breed",sire_data['breed']);
			set_tag_value("si_semen",sire_data['semen']);
			set_tag_value("si_alive",sire_data['alive']);

			var contacts=sire_data['contact'];

			var contact_str="";
			for(var i=0;i<contacts.length;i++){
				var contact=contacts[i];

				contact_str+=contact['name']+",&nbsp;"+contact['town']+" "+contact['state']+"<br/>";

				if(contact['phone']!='') {
					contact_str+=contact['phone']+"<br/>";
				}

			}

			set_tag_value("si_contacts",contact_str);

			set_tag_value("si_more_info",
				"<a href='wool_sire.php?id="+sire_data['id']+"'>More details</a>");
		}

		return true;
	}

	return false;
}


