function validate_nvalue(n, min, max)
    // makes sure n is a number and is equal or between min and max
	{ret=0;
	if (n*1!=n) ++ret;
	else if ((n<min) || (n>max)) ++ret;	
	return ret;
	}
function randomval(n)
    // generates a random number from 0-n
	{limit=n*1+1;
	rvret=(Math.random()*parseInt(limit)).toFixed(0);
	if (rvret==limit) rvret=0;
	return rvret*1;
	}

function famousshit()
	{shitter="";
	document.getElementById("inpercent").value=20;
	document.getElementById("infloat").value=0;		
	switch((document.getElementById("inperson").value)*1)
		{case 0:	shitter="George Washington";
			document.getElementById("inmonth1").value=0;
			document.getElementById("inday1").value=22;
			document.getElementById("inyear1").value=1732;
			document.getElementById("inmonth2").value=11;
			document.getElementById("inday2").value=14;
			document.getElementById("inyear2").value=1799;
			document.getElementById("inlength").value=10;
			document.getElementById("indiameter").value=1.5;
			break;
		case 1:	shitter="Jesus Christ";
			document.getElementById("inmonth1").value=11;
			document.getElementById("inday1").value=25;
			document.getElementById("inyear1").value=0;
			document.getElementById("inmonth2").value=3;
			document.getElementById("inday2").value=26;
			document.getElementById("inyear2").value=33;
			document.getElementById("inlength").value=10;
			document.getElementById("indiameter").value=1.5;
			break;
		case 2:	shitter="Dr. Martin Luther King, Jr.";
			document.getElementById("inmonth1").value=0;
			document.getElementById("inday1").value=15;
			document.getElementById("inyear1").value=1929;
			document.getElementById("inmonth2").value=3;
			document.getElementById("inday2").value=4;
			document.getElementById("inyear2").value=1968;
			document.getElementById("inlength").value=11;
			document.getElementById("indiameter").value=1.5;
			break;
		case 3:	shitter="Adolf Hitler";
			document.getElementById("inmonth1").value=3;
			document.getElementById("inday1").value=20;
			document.getElementById("inyear1").value=1889;
			document.getElementById("inmonth2").value=3;
			document.getElementById("inday2").value=30;
			document.getElementById("inyear2").value=1945;
			document.getElementById("inlength").value=8;
			document.getElementById("indiameter").value=1.5;
			break;
		case 4:	shitter="Andre The Giant";
			document.getElementById("inmonth1").value=4;
			document.getElementById("inday1").value=19;
			document.getElementById("inyear1").value=1946;
			document.getElementById("inmonth2").value=0;
			document.getElementById("inday2").value=27;
			document.getElementById("inyear2").value=1993;
			document.getElementById("inlength").value=16;
			document.getElementById("indiameter").value=2.5;
			break;					
		case 5:	shitter="Mother Teresa";
			document.getElementById("inmonth1").value=7;
			document.getElementById("inday1").value=26;
			document.getElementById("inyear1").value=1910;
			document.getElementById("inmonth2").value=8;
			document.getElementById("inday2").value=5;
			document.getElementById("inyear2").value=1997;
			document.getElementById("inlength").value=7;
			document.getElementById("indiameter").value=1;
			break;	
		case 6:	shitter="Mama Cass";
			document.getElementById("inmonth1").value=8;
			document.getElementById("inday1").value=19;
			document.getElementById("inyear1").value=1941;
			document.getElementById("inmonth2").value=6;
			document.getElementById("inday2").value=29;
			document.getElementById("inyear2").value=1974;
			document.getElementById("inlength").value=13;
			document.getElementById("indiameter").value=2;
			break;	
		case 7:	shitter="Mohammed";
			document.getElementById("inmonth1").value=11;
			document.getElementById("inday1").value=25;
			document.getElementById("inyear1").value=570;
			document.getElementById("inmonth2").value=5;
			document.getElementById("inday2").value=8;
			document.getElementById("inyear2").value=632;
			document.getElementById("inlength").value=10;
			document.getElementById("indiameter").value=1.5;
			break;	
		case 8:	shitter="Princess Diana";
			document.getElementById("inmonth1").value=6;
			document.getElementById("inday1").value=1;
			document.getElementById("inyear1").value=1961;
			document.getElementById("inmonth2").value=7;
			document.getElementById("inday2").value=31;
			document.getElementById("inyear2").value=1997;
			document.getElementById("inlength").value=8;
			document.getElementById("indiameter").value=1.5;
			break;	

		}
	shitulate(shitter);
	}

function shitulate(p)
    // functions calculator when button is clicked
	{shitnote="Shit Totals";
	if (p!=1) shitnote+=" For " + p;
	shitnote+=":<div class=\"shittots\">";
    // gets note to display ready
	error=0;					
    // 1 invalid birthdate, 3 invalid length, 4 invalid diameter, 5 invalid boyancy
	days=0;

	clength=document.getElementById("inlength").value;
	diameter=document.getElementById("indiameter").value;
	sinkers=document.getElementById("inpercent").value;
	if (document.getElementById("infloat").value==1) sinkers=100-sinkers;
    // gets most non-date data from form
	endday=new Date();
	startday=new Date();
	d=new Array();
	d[0]=document.getElementById("inmonth1").value;
	d[1]=document.getElementById("inday1").value;
	d[2]=document.getElementById("inyear1").value*1;
	d[3]=document.getElementById("inmonth2").value;
	d[4]=document.getElementById("inday2").value;
	d[5]=document.getElementById("inyear2").value;
	startday.setMonth(d[0]);
	startday.setDate(d[1]);
	startday.setYear(d[2]);
	endday.setMonth(d[3]);
	endday.setDate(d[4]);
	endday.setYear(d[5]);
	days=Math.round((endday.getTime()-startday.getTime())/86400000);
    // calculate days beens shitting based on input date data
	if (validate_nvalue(days, 1, 50000)>0) error=1;
	if (validate_nvalue(clength, 6, 16)>0) error=3;
	if  ((diameter!=1) && (diameter!=1.5) && (diameter!=2) && (diameter!=2.5)) error=4;
	if (validate_nvalue(sinkers, 0, 100)>0) error=5;
    // validates all input data
	if (error==0)
    // good data, processing info
		{shittot=clength*days;
		miles=Math.round(shittot*100/63360)/100;
		shittot*=(diameter/2)*(diameter/2)*3.1428;
		volume=Math.round(shittot*100/231)/100;
		tons=Math.round((((((sinkers/100)*.04) + ((100-sinkers)/100)*.03))*shittot)/2000*100)/100;
    // calculates various attributes of shit, .03 pounds per cubic inch for floaters, .04 for sinkers		

		shitnote+=miles + " miles<p class=\"shittot\">";
		shitnote+=volume + " gallons<p class=\"shittot\">";
		shitnote+=tons + " tons</div><div class=\"shitnote\">";
    // outputs cacluations about shit
		switch(randomval(3))
  // randomly adds a fact about that amount of shit
			{case 0: 	shitnote+=shitheight(diameter*days);			break;
			case 1:	shitnote+=shitarea(clength*diameter*days);		break;
			case 2:	shitnote+=shittime(days);				break;
			case 3:	shitnote+=shitvolume(Math.round(shittot*100/1728)/100);	break;	
			}
		shitnote+=".</div></div>";
		}
	else if (error==1)
    // bad dates
		{shitnote="<div class=\"shitnote\">Your dates are screwed up somehow.  I don't know.  Maybe your last crap was before your first crap, perhaps ";
		shitnote+="you don't know how many days are in a month or possibly the years are so far apart it would be impossilbe for ";
		shitnote+="someone to live that long to shit that much.  Again, I don't know what exactly screwed it up, but your dates are wrong.</div>";
		}
	else
    // bad data
		{shitnote="<div class=\"shitnote\">I don't know who you think you are, but use the god damn form correctly.  You somehow entered incorrect data into a drop ";
		shitnote+="drop down that severly limits how you enter data.  I mean god damn, all you have to do is choose an option--there's no ";
		shitnote+="typing involved, yet you still fucked it up. </div> ";
		}
	document.getElementById("totnote").innerHTML =shitnote;
    // prints results to form
	return false;
	}
function shitvolume(v)
    // spits out random fact about volume of crap input
	{ret="That's enough poop to fill ";
	switch(randomval(3))
    // randomly selects sentence structure
		{case 0: 	ret="With that amount of shit you could fill ";		break;
		case 1:	ret="By volume, that crap is equal to ";			break;
		case 2:	ret="That quantity of shit is equal to ";			break;
		}
	switch(randomval(6))
    // randomly selects vitem to compare it to
		{case 0:	vitem="basketball";
			ivol=.221;
			break;
		case 1:	vitem="occupied grave";
			ivol=108.9;
			break;
		case 2:	vitem="bathtub";
			ivol=14.58;
			break;
		case 3:	vitem="bushel";
			ivol=1.24;
			break;
		case 4:	vitem="barrel";
			ivol=7.35;
			break;
		case 5:	vitem="prison cell at Alcatraz";
			ivol=360;
			break;
		case 6:	vitem="children's swimming pool";
			ivol=32.1;
			break;		
		}

	v=Math.round(v*100/ivol)/100;
	tv=v + " ";
    // cleans up comparision math
	if (v<=1) 
    // comparison is less than 1, will output percentage of one example
		{tv=(v*100) + " ";
		ret+=tv.substring(0,2) + "% of a " + vitem;
		}
	else ret+=tv.substring(0,6) + " " + vitem + "s";
    // comparision is greater than 1, will output multiples example 
	return ret;
	}
function shittime(craps)
    // spits out random fact about time spent shitting
	{tps=(randomval(3) + 4);
	craps*=tps;
    // calculates minutes spent shitting based on a random average 
	ret="Figuring " + tps + " minutes per shit";
	switch(randomval(3))
    // randomly selects sentence structure
		{case 0: 	ret="At " + tps + " minutes per crap";			break;
		case 1:	ret="Averaging " + tps + " minutes per poop";		break;
		case 2:	ret="Using " + tps + " minutes for each time shit";		break;
		}
	switch(randomval(9))
    // randomly selects event to compare it to
		{case 0:	cevent="episodes of Oprah";
			etime=60;
			break;
		case 1:	cevent="newscasts";
			etime=30;
			break;
		case 2:	cevent="football games";
			etime=60;
			break;
		case 3:	cevent="months";
			etime=43920;
			break;
		case 4:	cevent="days";
			etime=1440;
			break;
		case 5:	cevent="hours";
			etime=60;
			break;
		case 6:	cevent="Apollo 11 moon missions";
			etime=11718;
			break;
		case 7:	cevent="Wizard of Oz's";
			etime=101;
			break;
		case 8:	cevent="weekends of life";
			etime=48;
			break;
		case 9:	cevent="Kentucky Derbies";
			etime=2.1;
			break;
		case 10:	cevent="batches of chocolate chip cookies baking time";
			etime=12;
			break;
		}
	craps=Math.round(craps*100/etime)/100;
	ct=craps + " ";
    // cleans up comparison math
	ret+=", that's " + ct.substring(0,8) + " " + cevent + " ";
	switch(randomval(3))
    // randomly selects sentence ending
		{case 0: 	ret+="spent dropping turds";			break;
		case 1:	ret+="wasted on the shitter";			break;
		case 2:	ret+="crapping life away";			break;
		case 3:	ret+="going #2";				break;
		}
	return ret;
	}
function shitarea(area)
    // randomly spits out fact about area of shit
	{ret="If those turds were placed on the ground next to another they would cover ";
	switch(randomval(3))
    // randomly selects sentence structure
		{case 0: 	ret="That's enough crap to cover ";			break;
		case 1:	ret="That amount of shit could blanket ";			break;
		case 2:	ret="Placed properly, all that shit would hide ";		break;
		}
	switch(randomval(7))
    // randomly selects item to compare
		{case 0:	aname="high school basketball court";
			ainches=604800;
			break;
		case 1:	aname="bowling lane";
			ainches=30240;
			break;
		case 2:	aname="singles tennis court";
			ainches=303264;
			break;
		case 3:	aname="king sized bed";
			ainches=6240;
			break;
		case 4:	aname="Mona Lisa";
			ainches=630;
			break;
		case 5:	aname="ping-pong table"; 
			ainches=6480;
			break;
		case 6:	aname="boxing ring";
			ainches=57600;
			break;
		case 7:	aname="olympic pool";
			ainches=2314368;
			ret="If those turds were set afloat in next to another they would cover ";
			break;
		}
	sizeper=Math.round(area*100/ainches)/100;
	sp=sizeper + " ";
    // cleans up comparison math
	if (sizeper<=1) 
    // if less than 1, uses percents to display comparison
		{sp=(sizeper*100) + " ";
		ret+=sp.substring(0,5) + "% of a " + aname;
		}
	else ret+=sp.substring(0,5) + " " + aname + "s";
    // if greater than 1, uses multiples of example item to compare
	return ret;
	}
function shitheight(height)
    // randomly displays fact about shits hieght
	{ret="If stacked like bricks, that shit would rise ";
	switch(randomval(4))
    // randomly selects sentence structure
		{case 0: 	ret="Stacked atop each other, those turds would rise "; 		break;
		case 1:	ret="Piled perfectly on each other, that shit would reach ";		break;
		case 2:	ret="Used as building blocks, those craps would go ";		break;
		case 3:	ret="Arranged on top of another, the turds would rise ";		break;
		}
	switch(randomval(16))
    // randomly selects item for comparison
		{case 0:	bname="Empire State Building";
			bfloors=102;
			bfloor=147;
			btype=1;
			break;
		case 1:	bname="Sears Tower";
			bfloors=108;
			bfloor=161.2;
			btype=1;
			break;	
		case 2:	bname="Eiffel Tower";
			bheight=12756;
			btype=0;
			break;
		case 3:	bname="Washington Monument";
			bheight=6665;
			btype=0;
			break;
		case 4:	bname="Abraham Lincoln";
			bheight=76;
			btype=0;
			break;
		case 5:	bname="John Holme's cock";
			bheight=11;
			btype=0;
			break;
		case 6:	bname="St. Louis Arch";
			bheight=7560;
			btype=0;
			break;
		case 7:	bname="Taj Mahal";
			bheight=2556;
			btype=0;
			break;
		case 8:	bname="Mt. Everest";	
			bheight=348348;
			btype=0;
			break;
		case 9:	bname="Mount Rushmore";
			bheight=68700;
			btype=0;
			break;
		case 10:	bname="Golden Gate Bridge";
			bheight=8952;
			btype=0;
			break;
		case 11:	bname="tall midget";
			bheight=58;
			btype=0;
			break;
		case 12:	bname="average giraffe";
			bheight=8952;
			btype=0;
			break;
		case 13:	bname="Great Pyramid";
			bheight=5460;
			btype=0;
			break;
		case 14:	case 15:
			switch(randomval(8))
    // randomly selects someon 5'9 to compare to
				{case 0:	bname="Axl Rose";		break;
				case 1:	bname="Albert Einstein";	break;
				case 2:	bname="Naomi Campbell";	break;
				case 3:	bname="Mariah Carey";	break;
				case 4:	bname="Ed Asner";		break;
				case 5:	bname="Freddie Mercury";	break;
				case 6:	bname="Hugh Hefner";	break;
				case 7:	bname="Diane Sawyer";	break;
				case 8:	bname="Sylvester Stallone";	break;
				}		
			bheight=69;
			btype=0;
			break;
		case 16:	bname="World Trade Center";
			bfloors=110;
			bfloor=147.8;
			btype=3;
			break;	
		}
	if (btype==0)
    // comparing it to a item without floors
		{sizeper=Math.round(height*100/bheight)/100;
		sp=sizeper + " ";
		if (sizeper<=1) 
			{sp=(sizeper*100) + " ";
			ret+=sp.substring(0,2) + "% up the " + bname;
			}
		else ret+="the height of " + sp.substring(0,6) + " " + bname + "s";
		} 

	else
    // comparing it to a building with floors
		{floors=Math.round((height)/bfloor);
		if (floors<=bfloors) ret+=" past Floor #" + floors +" of the " + bname;
		else ret+=" equal the height of " + Math.round(floors*10/bfloors)/10 +" " + bname + "s";
		if (btype==3) ret+=". If they still existed that is"
		}

	return ret;
	}

		

