Source for "Monkey Match"

By bagheera
Has no other scripts.


// ==UserScript==
// @name          Monkey Match
// @namespace     http://www.geocities.com/narayansriram
// @description   2 player memory game using greasemonkey and amazon services
// @include       http://bagheera.50webs.com/match.html
// ==/UserScript==
var fixedUrl = 'http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&SubscriptionId=1PKXRTEQQV19XXDW3ZG2&';

var loadStuff = function(event) {
	event.stopPropagation();
	event.preventDefault();
	startMonkeyMatch();
	document.removeEventListener('dblclick', loadStuff, true);
};

document.addEventListener('dblclick', loadStuff, true);

var imageCount = 0;

function randOrd(a, b){
	return (Math.round(Math.random())-0.5); 
}

function startMonkeyMatch(){
    document.getElementById('playerALabel').innerHTML = document.getElementById('playerAName').value;
    document.getElementById('playerBLabel').innerHTML = document.getElementById('playerBName').value;
	
	if (!GM_xmlhttpRequest) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	var keyword = document.getElementById("keywd").value;
	var amazonurl = fixedUrl+'&Operation=ItemSearch&Keywords='+keyword+'&SearchIndex=Books&ResponseGroup=Images';
	GM_xmlhttpRequest(
	{
		method: 'GET',
		url: amazonurl,
		headers: {
		'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey/0.3',
		'Accept': 'application/atom+xml,application/xml,text/xml',
		},
		onload: function(responseDetails) {
			var resultxml = responseDetails.responseText.replace(
			/<\?xml version="1.0" encoding="UTF-8"\?>/ ,'');
			
			GM_log('got result xml');
			try{
			var resultdom = new XML(resultxml);
			}catch(ex){
				GM_log(ex.toString());
			}
			GM_log('got result dom'+resultdom.length());
			var amzns = new Namespace('http://webservices.amazon.com/AWSECommerceService/2005-10-05');
			var imagenodes = resultdom..amzns::Item.amzns::MediumImage.amzns::URL.text();
			GM_log('got images'+imagenodes.length());
			var images = new Array();
			imageCount = imagenodes.length();
			for(var i=0; i< imageCount; i++){
				images.push(imagenodes[i]);
				images.push(imagenodes[i]);
			}
			images.sort(randOrd);
			for(var i=0; i<images.length; i++){
				addImage(images[i]);
			}
		}
	});
}
var count = 0;
var coverImgUrl = "http://images.amazon.com/images/P/1576834573.01._SCMZZZZZZZ_.jpg";
var coverImage = null;
var gameImages = new Array();
var oneOpen = false;
var openedImg = null;
var openedSlot = null;
var openedCover = null;
var p1score = document.getElementById('span_p1');
var p2score = document.getElementById('span_p2');
var scorebrdFocus = p1score;

var pnum = 0;
function playit(event){
	var targetid = event.target.getAttribute('id').replace('img_','');
	var targetspan = document.getElementById('span_'+targetid);
	targetspan.replaceChild(gameImages[targetid], event.target);
	event.stopPropagation();
	event.preventDefault();
	if(oneOpen){
		oneOpen = false;
		if(openedImg.src != gameImages[targetid].src){
			if(scorebrdFocus == p1score){
				scorebrdFocus = p2score;
				pnum = document.getElementById('playerBName').value;
				document.getElementById('playerBLabel').setAttribute('class','bighilite');
				document.getElementById('playerALabel').setAttribute('class','big');
			}else{
				scorebrdFocus = p1score;
				pnum = document.getElementById('playerAName').value;
				document.getElementById('playerALabel').setAttribute('class','bighilite');
				document.getElementById('playerBLabel').setAttribute('class','big');
			}
			alert('oh oh. '+pnum+'\'s turn next');
			targetspan.replaceChild(event.target, gameImages[targetid]);
			openedSlot.replaceChild(openedCover, openedImg);
		}else{
			var currentScore = scorebrdFocus.innerHTML;
			scorebrdFocus.innerHTML = ++currentScore;
			if(currentScore > imageCount/2){
				alert(pnum+' has won!');
				var garea = document.getElementById('div_gamearea')	;
				window.location.reload(true);
			}
		}
		
	}else{
		oneOpen = true;
		openedImg = gameImages[targetid];
		openedSlot = targetspan;
		openedCover = event.target;
	}
}	

function addImage(iurl){

	var spanElement = document.createElement('span');
	document.getElementById('div_gamearea').appendChild(spanElement);
	imageElement = document.createElement('img');
	imageElement.src = iurl;
	imageElement.width = 140;
	imageElement.height = 200;
	spanElement.setAttribute('id', 'span_'+count);
	imageElement.setAttribute('id', 'img_'+count);
	gameImages[count] = imageElement;

	var coverElement = document.createElement('img');
	coverElement.src = coverImgUrl;
	coverElement.width = 140;
	coverElement.height = 200;
	coverElement.setAttribute('id', 'img_'+count++);
	coverElement.addEventListener('click', playit, true);

	spanElement.appendChild(coverElement);
}