var xmlHttp;
var deltype;
var lookup;
var lastbreed
var thiscolor;
var thissire;
var thisdam;
var numbabies=0;

function deletewinning(l,r) { 
	if(confirm("Are you sure you want to delete this winning?")) {
		xmlHttp=GetXmlHttpObject();
		if (xmlHttp==null) {
			alert ("Browser does not support HTTP Request");
			return;
		}
		deltype = "win";
		var url = "deletewinning.php";
		url += "?l="+l;
		url += "&r="+r;
		url += "&sid="+Math.random();
		xmlHttp.onreadystatechange=deletedone;
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	}
}

function deletephoto(t,r) { 
	if(confirm("Are you sure you want to delete this photo?")) {
		deltype = "photo";
		xmlHttp=GetXmlHttpObject();
		if (xmlHttp==null) {
			alert ("Browser does not support HTTP Request");
			return;
		}
		var url = "deletephoto.php";
		url += "?t="+t;
		url += "&r="+r;
		url += "&sid="+Math.random();
		xmlHttp.onreadystatechange=deletedone;
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	}
}

function deletebreeding(t,r) { 
	if(confirm("Are you sure you want to delete this breeding record?")) {
		deltype = "breeding";
		xmlHttp=GetXmlHttpObject();
		if (xmlHttp==null) {
			alert ("Browser does not support HTTP Request");
			return;
		}
		var url = "deletebreeding.php";
		url += "?t="+t;
		url += "&r="+r;
		url += "&sid="+Math.random();
		xmlHttp.onreadystatechange=deletedone;
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	}
}

function deletedone() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		if(deltype=="breeding") {
			gotoPage("My Breedings","");
		}
		else {
			editRabbit(xmlHttp.responseText);
		}
	}
}

function getLists() {
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null) {
		alert ("Browser does not support HTTP Request")
		return
	}
	var url = "getlists.php";
	url += "?breed="+document.getElementsByName("rabbit_breed")[0].value;
	if(document.getElementsByName("rabbit_dob").length) {
		validateDate("rabbit_dob");
		var dob = document.getElementsByName("rabbit_dob")[0].value;
		if(dob) {
			url += "&parents=1&dob="+dob;
			lastdob = dob;
		}
	}
	url += "&sid="+Math.random();
	xmlHttp.onreadystatechange=listsready;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function listsready() { 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		if(document.getElementById("damlist")) {
			while(document.getElementById("damlist").options.length) {
				document.getElementById("damlist").remove(0);
			}
			while(document.getElementById("sirelist").options.length) {
				document.getElementById("sirelist").remove(0);
			}
		}
		var Q = xmlHttp.responseText.split("@");
		var x;
		var y;
		var L;
		if(lastbreed != document.getElementsByName("rabbit_breed")[0].value) {
			lastbreed = document.getElementsByName("rabbit_breed")[0].value;
			L = Q[0].split(";");
			while(document.getElementById("colorlist").options.length) {
				document.getElementById("colorlist").remove(0);
			}
			for(x in L) {
				y=document.createElement('option');
				y.value = L[x].split(":")[0];
				if(y.value == thiscolor) {
					y.selected = true;
				}
				y.text = L[x].split(":")[1];
				try {
					document.getElementById("colorlist").add(y,null);
				}
				catch(ex) {
					document.getElementById("colorlist").add(y);
				}
			}
		}
		if(document.getElementById("damlist")) {
			var ancestors = false;
			L = Q[1].split(";");
			for(x in L) {
				if(L[x].split(":")[1]) {
					y=document.createElement('option');
					y.value = L[x].split(":")[0];
					y.text = L[x].split(":")[1];
					if(y.text=='Ancestor Records') {
						y.disabled = true;
						ancestors = true;
					}
					if(y.value == thisdam) {
						y.selected = true;
					}
					else if(ancestors) {
						delete y;
						y = 0;
					}
					if(y) {
						try {
							document.getElementById("damlist").add(y,null);
						}
						catch(ex) {
							document.getElementById("damlist").add(y);
						}
					}
				}
			}
			ancestors = false;
			L = Q[2].split(";")
			for(x in L) {
				if(L[x].split(":")[1]) {
					y=document.createElement('option');
					y.value = L[x].split(":")[0];
					y.text = L[x].split(":")[1];
					if(y.text=='Ancestor Records') {
						y.disabled = true;
						ancestors = true;
					}
					if(y.value == thissire) {
						y.selected = true;
					}
					else if(ancestors) {
						delete y;
						y = 0;
					}
					if(y) {
						try {
							document.getElementById("sirelist").add(y,null);
						}
						catch(ex) {
							document.getElementById("sirelist").add(y);
						}
					}
				}
			}
		}
		else {
			document.getElementById("colorlist").options[0].text = "Any";
		}
	} 
}

function GetXmlHttpObject() {
	var xmlHttp=null;
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e) {
		//Internet Explorer
		try {
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function gotoPage(page,parent) {
	document.getElementsByName("parent_page")[0].value = parent;
	document.getElementsByName("current_page")[0].value = page;
	document.form.submit();
}

function validateDate(str) {
	if(document.getElementsByName(str).length>0) {
		t = document.getElementsByName(str)[0].value;
	}
	else {
		t = str;
	}
	if(t.toLowerCase()=="today") {
		var d=new Date();
		t = (1+d.getMonth())+"/"+d.getDate()+"/"+d.getFullYear();
	}
	var val = t.split("/");
	var x;
	if(val.length < 2) {
		return false;
	}
	if(val[2].length==2&&val[2].charAt(0)=="0") {
		val[2] = val[2].charAt(1);
	}
	if(parseInt(val[2])<100) {
		val[2] = 2000 + parseInt(val[2]);
	}
	for(x in val) {
		if(isNaN(val[x]) || val[x] < 0 || Math.round(val[x]) != val[x]) {
			return false;
		}
	}
	if(val[0] > 12 || val[1] > 31 || val.length > 3) {
		return false;
	}
	if(document.getElementsByName(str).length>0) {
		document.getElementsByName(str)[0].value = val[0] + "/" + val[1] + "/" + val[2];
	}
	else {
		return val[0] + "/" + val[1] + "/" + val[2];
	}
	return true;
}

function littercolorready() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {		
		var Q = xmlHttp.responseText.split("@");
		var L = Q[0].split(";");
		for(var x=0;x<32;x++) {
			while(document.getElementsByName("newbaby_color"+x)[0].options.length) {
				document.getElementsByName("newbaby_color"+x)[0].remove(0);
			}
			var h;
			for(h in L) {
				var y=document.createElement('option');
				y.value = L[h].split(":")[0];
				y.text = L[h].split(":")[1];
				try { document.getElementsByName("newbaby_color"+x)[0].add(y,null); }
				catch(ex) { document.getElementsByName("newbaby_color"+x)[0].add(y); }
			}
		}
	}
}

function setborndate(d,s,b,i) {
	document.getElementsByName("newlitter_dam")[0].value = d;
	document.getElementsByName("newlitter_sire")[0].value = s;
	document.getElementsByName("newlitter_id")[0].value = i;
	
	document.getElementById("popupbox").innerHTML = "\
	<h2>Please enter the date of birth for this litter or the word 'today'</h2>\
	<br>\
	<br>\
	<input name='borndateval'><br><br>\
	<input type='button' value='Set Birth Date' onClick='borndateset();'>";
	document.getElementById("popupbox").style.display = "block";
}

function borndateset() {
	document.getElementById("popupbox").style.display = "none";
	var dob = document.getElementsByName("borndateval")[0].value;
	if(!dob) { return; }
	dob = validateDate(dob);
	if(!dob) {
		alert("INVALID DATE!");
		return;
	}
	document.getElementsByName("newlitter_dob")[0].value = dob;
	gotoPage("Add Litter","");
}


function addbaby(d,s,b,i,dob) { 
	if(		document.getElementsByName("newlitter_dam")[0].value != d ||
			document.getElementsByName("newlitter_sire")[0].value != s ||
			document.getElementsByName("newlitter_id")[0].value != i ||
			document.getElementsByName("newlitter_dob")[0].value != dob) {
		numbabies = 0;
		for(var x=0;x<32;x++) { document.getElementById("newbaby"+x).style.display = "none"; }
		document.getElementsByName("newlitter_dam")[0].value = d;
		document.getElementsByName("newlitter_sire")[0].value = s;
		document.getElementsByName("newlitter_id")[0].value = i;
		document.getElementsByName("newlitter_dob")[0].value = dob;
		xmlHttp=GetXmlHttpObject();
		if (xmlHttp==null) {
			alert ("Browser does not support HTTP Request")
			return
		}
		var url = "getlists.php";
		url += "?breed="+b;
		url += "&sid="+Math.random();
		xmlHttp.onreadystatechange=littercolorready;
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	}
	if(numbabies > 30) {
		return false;
	}
	document.getElementById("popupbox").innerHTML = "\
	<h2>How many babies would you like to add?</h2>\
	<br>\
	<br>\
	<input name='numbabies'><br><br>\
	<input type='button' value='Add Babies' onClick='addnumbabies();'>";
	document.getElementById("popupbox").style.display = "block";
}

function addnumbabies() {
	numbabies = document.getElementsByName("numbabies")[0].value;
	if(isNaN(numbabies)||numbabies<0) {
		alert("Invalid litter count!");
		return;
	}
	for(var x=0;x<32;x++) {
		if(x<numbabies) {
			document.getElementById("newbaby"+x).style.display = "block";
		}
		else {
			document.getElementById("newbaby"+x).style.display = "none";
			document.getElementsByName("newbaby_sex"+x)[0].value = '';
			document.getElementsByName("newbaby_name"+x)[0].value = '';
			document.getElementsByName("newbaby_earno"+x)[0].value = '';
			document.getElementsByName("newbaby_color"+x)[0].value = 0;
		}
	}
	document.getElementById("popupbox").style.display = "none";
	if(numbabies>0) {
		document.getElementById("newlitter").style.display = "block";
		document.getElementsByName("newlitter_done")[0].style.display = "inline";
	}
	else {
		document.getElementById("newlitter").style.display = "none";
		document.getElementsByName("newlitter_done")[0].style.display = "none";
	}	
}

var forceupdate=0;
function pedlookup(t,exact) {
	if(xmlHttp) {
		if(xmlHttp.readyState==1) {
			setTimeout("pedlookup('"+t+"',"+exact+");",100);
			return;
		}
	}
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null) {
		alert ("Browser does not support HTTP Request")
		return
	}
	lookup = t;
	var url = "getpedstuff.php";
	url += "?name="+document.getElementsByName(t+"_name")[0].value;
	url += "&sex="+t.substring(t.length-1);
	if(exact) {
		forceupdate = 1;
		url += "&exact=1";
	}
	else forceupdate = 0;
	url += "&sid="+Math.random();
	xmlHttp.onreadystatechange=pedstuffready;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function pedstuffready() {
	if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		var L = xmlHttp.responseText.split(";");
		if(L.length<5) {
			if(L.length==1) { return; }
			var x;
			for(x in L) {
				var Q = L[x].split(",");
				if(Q[0].length && (forceupdate||confirm("Did you mean "+Q[0]+"?","Yes","No"))) {
					document.getElementsByName(lookup+"_name")[0].value = Q[0];
					document.getElementsByName(lookup+"_color")[0].value = Q[1];
					document.getElementsByName(lookup+"_weight")[0].value = Q[2];
					document.getElementsByName(lookup+"_earno")[0].value = Q[3];
					document.getElementsByName(lookup+"_regno")[0].value = Q[4];
					document.getElementsByName(lookup+"_gcno")[0].value = Q[5];
					if(lookup.length<3) {
						var temp = lookup;
						if(Q[6]!='0') {
							document.getElementsByName(temp+"s_name")[0].value = Q[6];
							pedlookup(temp+"s",1);
						}
						if(Q[7]!='0') {
							document.getElementsByName(temp+"d_name")[0].value = Q[7];
							pedlookup(temp+"d",1);
						}
					}
					break;
				}
			}
		}
		else if(document.getElementsByName(lookup+"_name")[0]) {
			var Q = ""+document.getElementsByName(lookup+"_name")[0].value;
			if(Q.length>2) {
				alert("More than 5 possible matches for that name/ear #");
			}
		}
	}
}

function fillzip(t) { 
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null) {
		alert ("Browser does not support HTTP Request")
		return
	}
	var url = "getzipstuff.php";
	url += "?zip="+t;
	url += "&sid="+Math.random();
	xmlHttp.onreadystatechange=zipstuffready;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function zipstuffready() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		var L = xmlHttp.responseText.split(",");
		document.getElementsByName("state")[0].value = L[0];
		document.getElementsByName("city")[0].value = L[1];
	}
}

function createAccount() {
	var val = document.getElementsByName("username")[0].value.toLowerCase();
	if(val.length > 32 || val.length < 4) {
		alert("Username must be 4-32 characters.");
		return;
	}
	for(i in val) {
		var a = val.charCodeAt(i)
		if(a > 122 || a < 48 || (a > 57 && a < 97)) {
			alert("Invalid Character in username: " + val[i]);
			return;
		}
	}
	val = document.getElementsByName("pass")[0].value.toLowerCase();
	if(val.length > 32 || val.length < 7) {
		alert("Password must be 7-32 characters.");
		return;
	}
	for(i in val) {
		var a = val.charCodeAt(i);
		if(a > 122 || a < 48 || (a > 57 && a < 97)) {
			alert("Invalid Character in password: " + val[i]);
			return;
		}
	}
	if(document.getElementsByName("pass")[0].value != document.getElementsByName("passcheck")[0].value) {
		alert("Password and Check do not match!");
		return;
	}
	val = document.getElementsByName("rabbitry")[0].value.toLowerCase()
	if(val.length > 100) {
		alert("Rabbitry Title must not exceed 100 characters.");
		return
	}
	gotoPage("My Herd","");
}

function editAccount() {
	val = document.getElementsByName("rabbitry")[0].value.toLowerCase();
	if(val.length > 100) {
		alert("Rabbitry Title too long");
		return
	}
	gotoPage("Account Details","");
}

function addBreeding() {
	val = document.getElementsByName("breeding_doe")[0].value.toLowerCase();
	if(isNaN(val)||val<0) {
		alert("Select a doe for this breeding");
		return;
	}
	val = document.getElementsByName("breeding_buck")[0].value.toLowerCase();
	if(isNaN(val)||val<0) {
		alert("Select a buck for this breeding");
		return;
	}
	if(validateDate("breeding_date")) gotoPage("Add Breeding","");
	else alert("Invalid Date");
}

function submitbaby() {
	for(var x=0;x<numbabies;x++) {
		var val = document.getElementsByName("newbaby_name"+x)[0].value;
		if(val == "" && document.getElementsByName("newbaby_earno"+x)[0].value=="") { continue; }
		if(val == "New Rabbit..." || val.length > 100 || val == "") {
			alert("Invalid Rabbit Name!");
			return;
		}
		val = document.getElementsByName("newbaby_sex"+x)[0].value;
		if(isNaN(val) || val < 0) {
			alert("Please select the gender of your rabbit (this can be updated later)");
			return;
		}
		if(document.getElementsByName("newbaby_color"+x)[0].options.length>1) {
			val = document.getElementsByName("newbaby_color"+x)[0].value;
			if(isNaN(val) || val < 0) {
				alert("Please select the color of all rabbits");
				return;
			}
		}
	}
	gotoPage("Add Babies","");
}

function addRabbit() {
	var val = document.getElementsByName("rabbit_name")[0].value;
	if(val == "New Rabbit..." || val.length > 100 || val == "") {
		alert("Invalid Rabbit Name!");
		return;
	}
	val = document.getElementsByName("rabbit_weight")[0].value;
	if(isNaN(val) || parseFloat(val) < 0) {
		alert("Invalid Rabbit Weight!");
		return;
	}
	val = document.getElementsByName("rabbit_saleprice")[0].value;
	if(isNaN(val) || parseFloat(val) < 0) {
		alert("Invalid Rabbit Price!");
		return;
	}
	val = document.getElementsByName("rabbit_sex")[0].value;
	if(isNaN(val) || val < 0) {
		alert("Please select the gender of your rabbit");
		return;
	}
	val = document.getElementsByName("rabbit_breed")[0].value;
	if(isNaN(val) || val < 0) {
		alert("Please select the breed of your rabbit");
		return;
	}
	val = document.getElementsByName("rabbit_color")[0].value;
	if(isNaN(val) || val < 0) {
		document.getElementsByName("rabbit_color")[0].value = 0;
	}
	val = document.getElementsByName("rabbit_dob")[0].value;
	if(val.length > 0) {
		if(validateDate("rabbit_dob")) gotoPage("Add Rabbit","");
		else alert("Invalid Date");
	}
	else gotoPage("Add Rabbit","");
}

function viewPedigree() {
	window.open("pedigree.php");
}

function readmessage(t) {
	document.getElementsByName("readmessage")[0].value = t
	document.form.submit();
}

function unreadmessage(t) {
	document.getElementsByName("unreadmessage")[0].value = t
	document.form.submit();
}

function deletemessage(t) {
	if(confirm("Are you sure you want to delete these messages?")) {
		document.getElementsByName("deletemessage")[0].value = t
		document.form.submit();
	}
}
function friendready() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		alert(xmlHttp.responseText);
		document.form.submit();
	}
}

function addfriend(t,l) {
	if(confirm("Are you sure you want to add this friend?")) {
		xmlHttp=GetXmlHttpObject();
		if (xmlHttp==null) {
			alert ("Browser does not support HTTP Request")
			return
		}
		var url = "friends.php";
		url += "?addfriend="+t;
		if(l==1) url += "&friender=1";
		url += "&sid="+Math.random();
		xmlHttp.onreadystatechange=friendready;
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	}
}

function remfriend(t) {
	if(confirm("Are you sure?")) {
		xmlHttp=GetXmlHttpObject();
		if (xmlHttp==null) {
			alert ("Browser does not support HTTP Request")
			return
		}
		var url = "friends.php";
		url += "?remfriend="+t;
		url += "&sid="+Math.random();
		xmlHttp.onreadystatechange=friendready;
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	}
}

function viewRabbitry(str) {
	document.getElementsByName("viewID")[0].value = str;
	if(document.getElementsByName('pageno').length>0) {
		document.getElementsByName('pageno')[0].value = 0;
	}
	if(str>0) gotoPage("My Herd","");
	else gotoPage("Home","");
}

function deleteRabbit(str) {
	if(confirm("Are you sure you want to delete this rabbit and all associated photos/winnings/breedings?")) {
		document.getElementsByName("delete_rabbit")[0].value = str
		gotoPage("My Herd","");
	}
}

function addwinning(str) {
	if(document.getElementsByName("wintype")[0].value == "") {
		alert("Please select a type of winning to add");
		return;
	}
	if(document.getElementsByName("winloc")[0].value == "") {
		alert("Please enter a location for this winning. If you don't know it, you can just enter a -");
		return;
	}
	validateDate("windate"); 
	document.getElementsByName("delete_rabbit")[0].value = str;
	gotoPage(str,"My Herd");
}

function editRabbit(str) {
	document.getElementsByName("delete_rabbit")[0].value = str;
	gotoPage(str,"My Herd");
}

