// --------------------------------------------------------------------
// Refrigerator Poetry
//
// poetry.js
// copyright 2003 walter sargent
//	www.waltersargent.com
// --------------------------------------------------------------------

var _salute = [
"welcome",
"greetings",
"hello"
];


var _noun = [
"dream",
"turtle",
"frog",
"moon",
"night",
"sky",
"forest",
"mountain",
"pea",
"pod",
"Podling",
"song",
"bubble",
"kiss",
"poppy",
"god",
"goddess",
"tree",
"star",
"river",
"raindrop",
"emerald",
"clover",
"spark",
"gumdrop",
"snowflake",
"sunflower",
"princess",
"meadow",
"moonlight",
"root",
"spirit",
"cloud",
"stone",
"One",
"heart",
"mirror",
"ocean",
"firefly",
"frost",
"lizard",
"vision",
"movie",
"sunlight"
];

MAX_NOUN = 44

var _adjective = [
"green",
"dreaming",
"winter",
"sunlit",
"flowering",
"thundering",
"lucky",
"glowing",
"living",
"eternal",
"sparkling",
"smiling",
"everlasting",
"little",
"beaming",
"singing",
"deep",
"woodland",
"perpetual",
"shimmering",
"incandescent",
"luminescent",
"dark",
"moist",
"brave",
"ivy",
"jade",
"mint",
"verdant",
"drive-in",
"lime-green"
];

MAX_ADJECTIVE = 30

var _verb = [
"see",
"dream",
"reveal",
"know",
"heal",
"love",
"kiss",
"radiate",
"give",
"multiply",
"receive",
"cherish",
"chant",
"become",
"herald",
"beckon",
"hold",
"plant",
"create",
"charm",
"sing"
];

MAX_VERB = 21

var _adverb = [
"deeply",
"blissfully",
"gently",
"fearlessly",
"mindfully",
"consciously",
"eternally",
"joyfully",
"spontaneously",
"joyfully",
"mysteriously",
"darkly"
];

MAX_ADVERB = 12

var _prep = [
"of",
"for",
"in",
"to",
"with",
"from",
"and"
];

MAX_PREP = 7

var _lastNoun = -1 ;
var _lastAdjective = -1 ;
var _lastPrep = -1 ;
var _count = 0 ;


function clearAll(){
	_lastNoun = -1 ;	_lastAdjective = -1 ; _lastPrep = -1 ;
}

function getRandom(n){
	return Math.floor(Math.random()*n);
}

function flip(){
	if( getRandom(10) > 5 )
		return true;
	return false;
}


function getSalute(){
	return _salute[getRandom(3)] + ", ";
}

function pluralize(n){

	var i = n.length;
	switch(n.charAt(i-1)){
	case 's':
		return n + "es ";
	case 'y':
		return n.slice(0,i-1) + "ies ";
	}
	return n + "s ";
}


function getNoun(s){
	var i = getRandom(MAX_NOUN);
	while ( i == _lastNoun ){
		i = getRandom(MAX_NOUN);
	}
	_lastNoun=i;
	if(s)
		return pluralize(_noun[i] );
	return _noun[i] + " ";
}

function isVowel(c){
	switch(c){
	case 'a': return true;
	case 'e': return true;
	case 'i': return true;
	case 'o': return true;
	case 'u': return true;
	}
	return false;
}
function getAdjective(pre){
	var i = getRandom(MAX_ADJECTIVE);
	while ( i == _lastAdjective ){
		i = getRandom(MAX_ADJECTIVE);
	}
	_lastAdjective=i;
	var s = _adjective[i];
  	if( pre ){
		if( isVowel(s.charAt(0)) )
			return "an " + s + " ";
		return "a " + s + " ";
	}

	return s + " ";
}

function getVerb(s){
	if( s )
		return pluralize(_verb[getRandom(MAX_VERB)]);
	return _verb[getRandom(MAX_VERB)]  + " ";
}

function getAdverb(){
	return _adverb[getRandom(MAX_ADVERB)]  + " ";
}

function getPrep(){
	var i = getRandom(MAX_PREP);
	while ( i == _lastPrep ){
		i = getRandom(MAX_PREP);
	}
	_lastPrep=i;
	return _prep[i] + " ";
}

function writePoetry(){

	clearAll();
	_count++ ;
	var msg = getSalute() ;
	var dbg ="";
	// from...
	if( flip() ){
		msg+="from " ;
		switch(getRandom(3)){
		case 0:
			msg+= getAdjective(1);
			if(flip())
				getNoun(0);
			msg+= getNoun(0); break;
		case 1:
			msg+= getAdjective(0);
			if(flip())
				getNoun(0);
			msg+= getNoun(1); break;
		case 2:
		default:
			msg+= getAdjective(0) + getNoun(1) + "who " + getAdverb() + getVerb(0) + getAdjective(0) + getNoun(1);
			document.write(msg);
			return;
		}

		// to...
		if( flip() ){
			msg+="to " + getAdjective(1) + getNoun(0) + getNoun(0);
			document.write(msg);
			return;
		}
	}
	else
	{
		switch(getRandom(3)){
		case 0 : msg+= "my " ;break;
		case 1 : msg+= "O " ;break;
		}
		msg+= getAdjective(0) + getNoun(0) ;
		switch(getRandom(3)){
		case 0 : msg+= "who " + getAdverb() + getVerb(1) + getAdjective(0) + getNoun(1); break;
		case 1 : msg+= "who " + getVerb(1) + getAdverb() ; break;
 		case 2 : msg+= getNoun(0) + getPrep() + getAdjective(1) + getNoun(0); break;
		}
	}

	document.write(msg);
	document.write("  " + dbg );

}

