
var loaders = new Array();

function showLoading(msg) {
	if (loaders['loading'] != null) {
		loaders['loading'].cancel();
	}
	if ($('loading').style.display != 'block') {
		loaders['loading'] = new Effect.Appear('loading', {duration:0.25});
	}
	setStatusBar('loading', msg);
}

function hideLoading() {
	setStatusBar('', '');
}

function setStatusBar(barStatus, msg) {
	$('statusbarmsg').innerHTML = msg;
	if ($('statusbar').className != barStatus) {
		$('statusbar').className = barStatus;
	}
	if ($('statusbaricon') != null) {
		$('statusbaricon').innerHTML = '<img src="/images/icons/'+barStatus+'.png" alt="" />';
	}
}

function unsetStatusBar() {
	if ($('statusbaricon') != null) {
		$('statusbaricon').innerHTML = '';
	}
	$('statusbar').className = 'hidden';
	$('statusbarmsg').innerHTML = '&nbsp;';
}


function ajaxGetUpdate(action, args, callback) {
	 callback = typeof(callback) != 'undefined' ? callback : false;

	new Ajax.Request(action, {
				method: 'get',
  				onSuccess: function(transport) {
  					hideLoading();
					if (transport.responseText == '1') {
						if (callback != false) {
							callback(args);
						}
					} else {
						setStatusBar('error', transport.responseText);
					}
  				}
	});
}

function ajaxPostUpdate(action, params, callback) {
	 callback = typeof(callback) != 'undefined' ? callback : false;
	new Ajax.Request(action, {
				method: 'post',
				parameters: params,
				evalScripts: true,
  				onSuccess: function(transport) {
  					hideLoading();
					if (transport.responseText == '1') {
						if (callback != false) {
							callback(params);
						}
					} else {
						setStatusBar('error', transport.responseText);
					}
  				}
	});
}


function ajaxUpdate(action, elem, params, showLoading) {
	params = typeof(params) != 'undefined' ? params : {};
	showLoading = typeof(showLoading) != 'undefined' ? showLoading : false;
	if (showLoading) {
		elemLoading(elem);
	}
	new Ajax.Updater(elem, action, {parameters: params, evalScripts: true, onSuccess: function(transport) { hideLoading();}});
}



function refreshPage(cache) {
	cache = typeof(cache) != 'undefined' ? cache : true;
	if (cache) {
		location.reload(false);
	} else {
		location.reload(true);
	}
}


function elemLoading(elem) {
	$(elem).innerHTML = '<p style="text-align:center; color:#999999;">&nbsp;<br /><img src="/images/item_loading.gif" alt="" /><br />&nbsp;<br />&nbsp;&nbsp;&nbsp;Loading...<br />&nbsp;</p>';
}

function addToCart(prod, qty) {
	$('atc_'+prod).src = '/images/loading.gif';
	new Ajax.Updater('cart', '/order/add/'+prod+'/'+qty, {evalScripts: true, onSuccess: function(transport) { $('atc_'+prod).src = '/images/buttons/added_to_cart.jpg';}});
}

var connections = 0;
function getThumbnail(code, attempt) {
	//--do not look up thumbnails
	$('thumb_'+code).setAttribute('alt', 'IMAGE NOT AVAILABLE');
	$('thumb_'+code).src = '/images/imgnotaval.jpg';
	//return false;
	//--end
	attempt = typeof(attempt) != 'undefined' ? attempt : 1;
	if (attempt <= 1) {
		connections++;
		var d = 0;
		if (connections > 0) {
			d = connections/5;
		}
		
		doTheWork.delay(d, code, attempt);
	}
}

function doTheWork(code, attempt) {
	new Ajax.Request('/products/getthumbnail', {
		method: 'post',
		parameters: {product:code},
			onSuccess: function(transport) {
							if (transport.responseText == '1') {
								var time = new Date();
								$('thumb_'+code).src = '/images/products/thumbnails/'+code+'.jpg?'+time.getTime();
								connections--;
							} else {
								$('thumb_'+code).setAttribute('alt', 'IMAGE NOT AVAILABLE');
								$('thumb_'+code).src = '/images/imgnotaval.jpg';
								connections--;
							}
						},
			onFailure: function(transport) {
							attempt++;
							getThumbnail.delay(2.0, code, attempt);
						}
	});

}
