// Copyright (C) 2010  JINMEI Tatuya

// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.

// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.

var YelpInfo = {
	defaults: {
		updaterId: 'Yelpinfo-updater',
		ywsid: 'Sq5uPVNYPMkvYAywdFC76g',
	},

	getRatingByPhonenum: function(phonenum) {
		var resturl = 'http://api.yelp.com/phone_search?' +
			'phone=' + phonenum +
			'&ywsid=' + this.defaults.ywsid +
			'&callback=YelpInfo.callback';

		var head = document.getElementsByTagName('head')[0];
		var script = document.createElement('script');
		script.src = resturl;
		script.id = this.defaults.updaterId;
		head.appendChild(script);
	},

	callback: function(arg) {
		if (arg.message.code != 0) {
			alert("Error: failed to get yelp data: " +
			      arg.message.text);
		} else {
			this.updateInfo(arg.businesses[0]);
		}
		
		var script = document.getElementById(this.defaults.updaterId);
		var head = document.getElementsByTagName('head')[0];
		if (head)
			head.removeChild(script);
	},

	updateInfo: function(bizinfo) {
		var container = document.getElementById('yelpinfo-' +
							bizinfo.phone)
		if (!container) {
			alert("Error: yelp data doesn't match ours");
			return;
		}
		var ratingnode = document.createTextNode('rating: ');
		
		container.removeChild(container.firstChild);
		container.appendChild(ratingnode);

		var imgnode = document.createElement('img');
		imgnode.src = bizinfo.rating_img_url;
		imgnode.alt = 'yelp rating ' + bizinfo.avg_rating;
		container.appendChild(imgnode);
	}
};

