/**
 * This file holds javscript functions that are used by the templates in the Theme
 *
 */

/**
* Writes a dynamically generated list
* @param string The parameters to insert into the <select> tag
* @param array A javascript array of list options in the form [key,value,text]
* @param string The key to display for the initial state of the list
* @param string The original key that was selected
* @param string The original item value that was selected
*/
function writeDynaListInner( selectParams, source, key, orig_key, orig_val, itemID ) {
	var html = '\n	<select ' + selectParams + '>';
	var i = 0;
	for (x in source) {
		if (source[x][0] == key) {
			var selected = '';
			if ((orig_key == key && orig_val == source[x][1]) || (i == 0 && orig_key != key)) {
				selected = 'selected="selected"';
			}
			html += '\n		<option value="'+source[x][1]+'" '+selected+'>'+source[x][2]+'</option>';
		}
		i++;
	}
	html += '\n	</select>';

		document.getElementById(itemID).innerHTML = html;
}

function continueshopping() {
	var el = jQuery('#subnav li.current');
	if (el.length > 0) {
		var a = jQuery('#subnav li.current a');
		var href =  a.attr('href');
		href.replace("javascript:", "");
		eval(href);
	} else {
		el = jQuery('#subnav li a');
		if (el.length > 0) {
			a = el[0];
			var href =  a.href;
			href.replace("javascript:", "");
			eval(href);
		}
	}
}

 // AJAX FUNCTIONS
function loadNewPage( el, url) {
	// delete sytem messages
	var hh = $('system-message');
	if (hh) {
		hh.remove();
	}
	var theEl = $(el);
	var callback = {
		success : function(responseText) {
			theEl.innerHTML = responseText;
			this.evalScripts();
		}
	}
	var opt = {
	    // Use POST
	    method: 'get',
	    // Handle successful response
	    onComplete: callback.success
    }
	new Ajax( url + '&only_page=1'+'&cachebust=' + $time()+$random(1, 10000), opt ).request();
}

function loadNewPageNoScript( el, url) {

	var theEl = $(el);
	var callback = {
		success : function(responseText) {
			theEl.innerHTML = responseText;
		}
	}
	var opt = {
	    // Use POST
	    method: 'get',
	    // Handle successful response
	    onComplete: callback.success
    }
	new Ajax( url + '&only_page=1'+'&cachebust=' + $time()+$random(1, 10000), opt ).request();
}

function loadmenupage(id,el,url) {
	//alert($(id));
	$$('#subnav li.current').each(function(ele){
	    ele.removeClass('current');
	});

	$(id).addClass('current');
	loadNewPage(el,url);
}

function handleGoToCart() { document.location = live_site + '/index.php?option=com_virtuemart&page=shop.cart&product_id=' + formCartAdd.product_id.value + '&Itemid=' +formCartAdd.Itemid.value; }

var timeoutID = 0;
var currentFormId = '';
var currentParams = null;
function handleAddToCart( formId, parameters ) {
	formCartAdd = document.getElementById( formId );
	currentFormId = formId;
	currentParams = parameters;
	var callback = function(responseText) {
		response = eval('(' + responseText + ')')
		//alert(response.result);
		//alert(response.log);
		if (response.result == true) {
			var forms = $$('#'+currentFormId);
			forms.each(function(item,index) {
				item.innerHTML = currentParams[1]; // the text to replace
			});
			if (currentParams[0] == 'album') {
				// disable all buttons
				$$('#tracklist form.addtocart_form').each(function(item, index){
				    item.innerHTML = currentParams[2];
				});
			}
		} else {
			//alert(response.log);
		}
		//alert(abc);
		//updateMiniCarts();
	}

	var opt = {
	    // Use POST
	    method: 'post',
	    // Send this lovely data
	    data: $(formId),
	    // Handle successful response
	    onComplete: callback,

	    evalScripts: true
	}

	new Ajax(formCartAdd.action+'?cachebust=' + $time()+$random(1, 10000), opt).request();
}

function handleDelFromCart( formId, params ) {
	formCartDel = document.getElementById( formId );
	currentParams = params;
	var callback = function(responseText) {
		response = eval('(' + responseText + ')');
		//alert(response.result);
		//alert(response.log);
		if (response.result == true) {
			if (response.log == '0') {
				window.location.href="index.php?option=com_virtuemart&page=shop.cart";
			} else {
				if($(currentParams[0])) $(currentParams[0]).remove();
				if($('tax_total')) $('tax_total').innerHTML = parseFloat($('tax_total').innerHTML-currentParams[1]).toFixed(2);
				if($('total_price')) $('total_price').innerHTML = parseFloat($('total_price').innerHTML-currentParams[2]).toFixed(2);
			}
		} else {
			alert(response.log);
		}
	}

	var opt = {
	    // Use POST
	    method: 'post',
	    // Send this lovely data
	    data: $(formId),
	    // Handle successful response
	    onComplete: callback,

	    evalScripts: true
	}

	new Ajax(formCartDel.action+'?cachebust=' + $time()+$random(1, 10000), opt).request();
}

/**
* This function searches for all elements with the class name "vmCartModule" and
* updates them with the contents of the page "shop.basket_short" after a cart modification event
*/
function updateMiniCarts() {
	var callbackCart = function(responseText) {
		carts = $$( '.vmCartModule' );
		if( carts ) {
			try {
				for (var i=0; i<carts.length; i++){
					carts[i].innerHTML = responseText;

					try {
						color = carts[i].getStyle( 'color' );
						bgcolor = carts[i].getStyle( 'background-color' );
						if( bgcolor == 'transparent' ) {
							// If the current element has no background color, it is transparent.
							// We can't make a highlight without knowing about the real background color,
							// so let's loop up to the next parent that has a BG Color
							parent = carts[i].getParent();
							while( parent && bgcolor == 'transparent' ) {
								bgcolor = parent.getStyle( 'background-color' );
								parent = parent.getParent();
							}
						}
						var fxc = new Fx.Style(carts[i], 'color', {duration: 1000});
						var fxbgc = new Fx.Style(carts[i], 'background-color', {duration: 1000});

						fxc.start( '#222', color );
						fxbgc.start( '#fff68f', bgcolor );
						if( parent ) {
							setTimeout( "carts[" + i + "].setStyle( 'background-color', 'transparent' )", 1000 );
						}
					} catch(e) {}
				}
			} catch(e) {}
		}
	}
	var option = { method: 'post', onComplete: callbackCart, data: { only_page:1,page: "shop.basket_short", option: "com_virtuemart" } }
	new Ajax( live_site + '/index2.php', option).request();
}

/**
* This function allows you to present contents of a URL in a really nice stylish dhtml Window
* It uses the WindowJS, so make sure you have called
* vmCommonHTML::loadWindowsJS();
* before
*/
function fancyPop( url, parameters ) {

	parameters = parameters || {};
	popTitle = parameters.title || '';
	popWidth = parameters.width || 700;
	popHeight = parameters.height || 600;
	popModal = parameters.modal || false;

	window_id = new Window('window_id', {className: "mac_os_x",
										title: popTitle,
										showEffect: Element.show,
										hideEffect: Element.hide,
										width: popWidth, height: popHeight});
	window_id.setAjaxContent( url, {evalScripts:true}, true, popModal );
	window_id.setCookie('window_size');
	window_id.setDestroyOnClose();
}

//Download Butt
function toggleDigi () {
	$('prod-physi').setStyle('display', 'none');
	$('prod-physi-butt').removeClass('prodtab-on');
	$('prod-digi').setStyle('display', '');
	$('prod-digi-butt').addClass('prodtab-on');
	$('list-area-inner').setStyle('display', '');
	$('list-area-inner-physi').setStyle('display', 'none');
	$('ttls').setStyle('display', '');
	$('ttls-physi').setStyle('display', 'none');
	return false;
};

function togglePhysi () {
	$('prod-digi').setStyle('display', 'none');
	$('prod-digi-butt').removeClass('prodtab-on');
	$('prod-physi').setStyle('display', '');
	$('prod-physi-butt').addClass('prodtab-on');
	$('list-area-inner').setStyle('display', 'none');
	$('list-area-inner-physi').setStyle('display', '');
	$('ttls').setStyle('display', 'none');
	$('ttls-physi').setStyle('display', '');
	return false;
};

