YAHOO.namespace("index.container");

var Index = {

	base: null,
	jackpot: null,
	winners: null,
	timer: null,
	interval: 15000,

	//----	
	form_login: null,
	tooltips: {
},

getFormElements: function(form_name) {
	var tmp = YAHOO.util.Dom.getElementsBy(
			function(obj) {
				if (obj && obj.nodeName && (
					obj.nodeName.toLowerCase() == 'input' ||
					obj.nodeName.toLowerCase() == 'select' ||
					obj.nodeName.toLowerCase() == 'textarea'
				)) {
					return true;
				}
				return false;
			},
			null,
			document.forms[form_name]
		);
	var result = {};
	for (var i in tmp) {

		if (!tmp[i].name) {
			continue;
		}
		result[tmp[i].name] = tmp[i];
	}

	return result;
},

doChangeFormState: function(form, state) {
	var self = YAHOO.index.container.handler;
	var inputs = self.getFormElements(form);

	for (var i in inputs) {
		inputs[i].disabled = !state;
	}
},

searchAndFocus: function(form_name) {
	var self = YAHOO.index.container.handler;
	var tmp = self.getFormElements(form_name);

	if (tmp) {
		for (var i in tmp) {
			if ((tmp[i].type != 'hidden') && !tmp[i].disabled && tmp[i].focus) {
				tmp[i].focus();
				break;
			}
		}
	}
},

createTooltips: function() {
	var self = YAHOO.index.container.handler;
	for (var name in self.tooltips) {
		var elm = self.getFormElements(name);

		if (!elm) {
			continue;
		}

		for (var i in elm) {

			var field = elm[i]['name'];

			if (!field) {
				continue;
			}

			self.tooltips[name][field] = new YAHOO.widget.Tooltip(
					name + '_' + field, {
						context: elm[i],
						text: '',
						disabled: true
					}
				);
		}
	}
},

onLoginResponse: function(obj) {
	var self = YAHOO.index.container.handler;
	try {
		var f = obj.argument.form;
		self.doChangeFormState(f, true);
		var data = YAHOO.lang.JSON.parse(obj.responseText);
		if (data['error'] && data['field']) {
			alert(data['error']);
			var field = data['field'];
			var elm = self.getFormElements(f);
			if (!elm || !elm[field]) {
				return;
			}

			if (elm[field].focus) {
				elm[field].focus();
			}
			/*var r = YAHOO.util.Dom.getRegion(elm[field]);
			self.tooltips[f][field].pageX = r.right - 10;
			self.tooltips[f][field].pageY = r.top - 12;
			self.tooltips[f][field].cfg.setProperty(
			'text', data['error'], true
			);*/
			//self.tooltips[f][field].doShow(null, elm[field]);
			return;
		}
		if (data['redirect']) {
			document.location.href = self.base + data['redirect'];
		}
		if (data['show'])
		{
			self.onRegClick(data['show']);
		}
		/*else {
		self.form4real.hide();
		}*/
	}
	catch (x) {
		alert('Exception: ' + x + "\n" + obj.responseText);
	}
},

doLogin: function(type) {
	var self = YAHOO.index.container.handler;
	if (!self)
		return false;
	var f = null;
	if (type == 'fun') {
		f = 'form4fun';
	}
	else if (type == 'real') {
		f = 'lg';
	}

	if (!f) {
		return;
	}
	var callback = {
		success: self.onLoginResponse,
		failure: self.onRequestFailed,
		argument: { form: f }
	};
	var url = self.base + 'login/login/';
	YAHOO.util.Connect.setForm(f);
	YAHOO.util.Connect.asyncRequest('POST', url, callback);
	self.doChangeFormState(f, false);
},
//---

onRequestFailed: function() {

},

onJAWSuccess: function(obj) {

	var self = YAHOO.index.container.handler;

	try {
		var data = YAHOO.lang.JSON.parse(obj.responseText);

		if (self.jackpot && data['jackpot']) {
			self.jackpot.innerHTML = '$ ' + data['jackpot'];
		}

		if (self.winners && data['winners'] && data['winners'].length) {
			var html = '';
			for (var i = 0; i < data['winners'].length; i++) {
				if (data['winners'][i]['image'] != null) {
					html += '<img src="' + data['winners'][i]['image'] + '" ' +
							'alt="' + data['winners'][i]['country'] + '" ' +
							'align="absmiddle" />';
				}
				else {
					html += '<span style="width:27px"></span>';
				}
				html += ' ' + data['winners'][i]['name'] + '<br />';
			}
			self.winners.innerHTML = html;
		}
	}
	catch (x) {
		alert('Exception: ' + x + "\n" + obj.responseText);
	}
},

onCronRequest: function() {

	var self = YAHOO.index.container.handler;

	if (!self.jackpot && !self.winners) {
		return;
	}

	var callback = {
		success: self.onJAWSuccess,
		failure: self.onRequestFailed
	};
	var url = self.base + 'jackpot-and-winners/';
	YAHOO.util.Connect.asyncRequest('GET', url, callback);
	self.timer = setTimeout('Index.onCronRequest()', self.interval);
},

init: function() {

	if (YAHOO.index.container.handler) {
		return;
	}
	YAHOO.index.container.handler = Index;
	var self = YAHOO.index.container.handler;

	try {
		var result = YAHOO.util.Dom.getElementsBy(
				function(elm) { return true; }, 'base'
			);
		if (result && result.length) {
			result = result[0].href;
			if (result.substr(result.length - 1, 1) != '/') {
				result += '/';
			}
			self.base = result;
		}
	} catch (x) { self.base = ''; }

	self.jackpot = YAHOO.util.Dom.get('current_jackpot');
	self.winners = YAHOO.util.Dom.get('recent_winners');

	/*self.form_login = new YAHOO.widget.Module(
	'logon_form', {
	constraintoviewport: false,
	visible: true,
	zIndex: 3
	}
	);*/
	//self.form_login.render();
	//self.createTooltips();

	self.onCronRequest();
}
}


YAHOO.util.Event.addListener(window, "load", Index.init);
