
var current_taxes = [];
var product_thumbnail = document.getElementById('product_thumbnail');
var availObj = document.getElementById('product_avail');

var etailBrowser='msie';
var W=navigator.userAgent.toLowerCase();
if(W.indexOf("opera")!=-1)
{
  etailBrowser='opera';
}
else if(W.indexOf("msie")!=-1)
{
   etailBrowser='msie';
}
else if(W.indexOf("safari")!=-1)
{
   etailBrowser='safari';
}
else if(W.indexOf("mozilla")!=-1)
{
  etailBrowser='gecko';
}

function check_options(flag) { 
	var local_taxes = [];
	var is_rebuild_wholesale = false;
	var variantid = false;

	for (var t in taxes)
		local_taxes[t] = taxes[t][0];
	price = default_price;

	
	for (var x in variants) {
		if(!isNaN(x))
		{		
			if (variants[x][1].length == 0)
				continue;
	
			variantid = x;
			for (var c in variants[x][1]) {
				if (getPOValue(c) != variants[x][1][c]) {
					variantid = false;
					break;
				}
			}
	
			if (variantid)
				break;
		}
	}

	
	if (variantid) {
		price = variants[variantid][0][0];
		orig_price = variants[variantid][0][4];
		avail = variants[variantid][0][1];
		

		
		if (variants[variantid][3]) {
			product_wholesale = [];
			for (var t in variants[variantid][3]) {
				var _tmp = modi_price(variants[variantid][3][t][2], cloneObject(variants[variantid][3][t][3]), variants[variantid][3][t][4]);
				product_wholesale[t] = [
					variants[variantid][3][t][0], 
					variants[variantid][3][t][1], 
					_tmp[0],
					[]
				];

				
				for (var c in _tmp[1]) {
					product_wholesale[t][3][c] = _tmp[1][c];
				}
			}
			is_rebuild_wholesale = true;
		}

		
		for (var t in local_taxes) {
			if (variants[variantid][2][t])
				local_taxes[t] = parseFloat(variants[variantid][2][t]);
		}

		if (!product_thumbnail)
			product_thumbnail = document.getElementById('product_thumbnail');

		
		if (product_thumbnail) {  
		var image_path=product_thumbnail.src;   
		
			//if (variants[variantid][0][2].src && variants[variantid][0][2].width > 0 && variants[variantid][0][2].height > 0) {
			if (variants[variantid][0][2].src) {	
 		
									
					var orgwidth2 = variants[variantid][0][2].width;
					var orgheight2 = variants[variantid][0][2].height; 
					
					
					{
							if (orgwidth2 == 0 && orgheight2 == 0)
								var newwidth2 = 296;
							else if (orgwidth2 < 296 && orgheight2 < 296 )
							{
								var newwidth2 = orgwidth2;
								var newheight2 = orgheight2;
							}
							else if(orgwidth2 > 296 && orgheight2 < 296 )
							{
								var newwidth2 = 296;
								var newheight2 = (296*orgheight2)/orgwidth2;
							}
							else if (orgheight2 > 296 && orgwidth2 < 296)
							{
								var newheight2 = 296;
								var newwidth2 = (296*orgwidth2)/orgheight2;
							}
							else if (orgheight2 > 296 && orgwidth2 == 296)
							{
								var newheight2 = 296;
								var newwidth2 = (296*orgwidth2)/orgheight2;
							}
							else if (orgheight2 == 296 && orgwidth2 > 296)
							{
								var newwidth2 = 296;
								var newheight2 = (296*orgheight2)/orgwidth2;
							}
							else if (orgheight2 > 296 && orgwidth2 > 296)
							{
								var newheight2 = 296;
								var var3 = (296*orgwidth2)/orgheight2; 
								var newwidth2 = var3; 
								if (var3 > 296)
								{
									var newwidth2 = 296;
									var newheight2 = (296*newwidth2)/var3;
								}
							}
							
							newwidth2 = parseInt(newwidth2);
							newheight2 = parseInt(newheight2);
		
							
		  					if(document.getElementById('main_base'))
							{  
								etailPicturePlus_stopZooms();	
								var value='<a style="position: relative; display: block; outline-color: -moz-use-text-color; outline-style: none; outline-width: 0pt; text-decoration: none; width: 475px; -moz-user-select: none;" href="'+variants[variantid][0][2].src+'" class="etailPicturePlus" id="zoom1"><img id="product_thumbnail" src="'+variants[variantid][0][2].src+'" ';
								if(newwidth2)
								value=value+" width='"+newwidth2+"'";
								if(newheight2)
								value=value+" height='"+newheight2+"'";
								
								value=value+" style='vertical-align:middle' ></a>";
								
								document.getElementById('main_base').innerHTML = value; 
								//alert(value);
								//'<a style="position: relative; display: block; outline-color: -moz-use-text-color; outline-style: none; outline-width: 0pt; text-decoration: none; width: 475px; -moz-user-select: none;" href="'+variants[variantid][0][2].src+'" class="etailPicturePlus" id="zoom1"><img id="product_thumbnail" src="'+variants[variantid][0][2].src+'" width="'+newwidth2+'" height="'+newheight2+'" style="vertical-align:middle" ></a>';
								
								
								if(flag==1)
									setTimeout('etailPicturePlusZoomingFind()', 100);
								else
								{
									if(etailBrowser=='msie')
										setTimeout('etailPicturePlusZoomingFind()', 24000);
									else
										setTimeout('etailPicturePlusZoomingFind()', 50);
									
								} 
							}
					
				}
			}
			else if (image_path != product_image.src)
			{  
				
				
				if (product_image.width > 0 && product_image.height > 0) 
				{
					


					var orgwidth2 = product_image.width;
					var orgheight2 = product_image.height;
					
					if (orgwidth2 == 0 && orgheight2 == 0)
						var newwidth2 = 296;
					else if (orgwidth2 < 296 && orgheight2 < 296 )
					{
						var newwidth2 = orgwidth2;
						var newheight2 = orgheight2;
					}
					else if(orgwidth2 > 296 && orgheight2 < 296 )
					{
						var newwidth2 = 296;
						var newheight2 = (296*orgheight2)/orgwidth2;
					}
					else if (orgheight2 > 296 && orgwidth2 < 296)
					{
						var newheight2 = 350;
						var newwidth2 = (296*orgwidth2)/orgheight2;
					}
					else if (orgheight2 > 296 && orgwidth2 == 296)
					{
						var newheight2 = 296;
						var newwidth2 = (296*orgwidth2)/orgheight2;
					}
					else if (orgheight2 == 296 && orgwidth2 > 296)
					{
						var newwidth2 = 296;
						var newheight2 = (296*orgheight2)/orgwidth2;
					}
					else if (orgheight2 > 296 && orgwidth2 > 296)
					{
						var newheight2 = 296;
						var var3 = (296*orgwidth2)/orgheight2;
						var newwidth2 = var3;
						if (var3 > 296)
						{
							var newwidth2 = 296;
							var newheight2 = (296*newwidth2)/var3;
						}
					}
					
					
					newwidth2 = parseInt(newwidth2);
					newheight2 = parseInt(newheight2);

					
					if(document.getElementById('main_base'))
					{
						etailPicturePlus_stopZooms();	
							var value='<a style="position: relative; display: block; outline-color: -moz-use-text-color; outline-style: none; outline-width: 0pt; text-decoration: none; width: 475px; -moz-user-select: none;" href="'+variants[variantid][0][2].src+'" class="etailPicturePlus" id="zoom1"><img id="product_thumbnail" src="'+variants[variantid][0][2].src+'" ';
								if(newwidth2)
								value=value+" width='"+newwidth2+"'";
								if(newheight2)
								value=value+" height='"+newheight2+"'";
								
								value=value+" style='vertical-align:middle' ></a>";
								
								document.getElementById('main_base').innerHTML = value; 
						//document.getElementById('main_base').innerHTML = '<a style="position: relative; display: block; outline-color: -moz-use-text-color; outline-style: none; outline-width: 0pt; text-decoration: none; width: 305px; -moz-user-select: none;" href="'+product_thumbnail.src+'" class="etailPicturePlus" id="zoom1"><img id="product_thumbnail" src="'+product_thumbnail.src+'" width="'+newwidth2+'" height="'+newheight2+'" ></a>';
							if(flag==1)
								setTimeout('etailPicturePlusZoomingFind()', 100);
							/*else
							{	
								if(etailBrowser=='msie')
									setTimeout('etailPicturePlusZoomingFind()', 24000);
								else
									setTimeout('etailPicturePlusZoomingFind()', 50);
								
							}*/
					}
					
				}
			}
			
			
		}  
		
		if (document.getElementById('product_weight'))
			document.getElementById('product_weight').innerHTML = price_format(variants[variantid][0][3]);

		if (document.getElementById('product_weight_box'))
			document.getElementById('product_weight_box').style.display = parseFloat(variants[variantid][0][3]) > 0 ? "" : "none";

		
		if (document.getElementById('product_code'))
			document.getElementById('product_code').innerHTML = variants[variantid][0][5];

	}

	if (pconf_price > 0)
		price = pconf_price;

	
	var _tmp = modi_price(price, local_taxes, orig_price);
	price = _tmp[0];
	local_taxes = _tmp[1];
	if (!variantid) {
		product_wholesale = [];
		for (var t in _product_wholesale) {
			if(!isNaN(t))
			{	
				_tmp = modi_price(_product_wholesale[t][2], _product_wholesale[t][3].slice(0), _product_wholesale[t][4]);
				product_wholesale[t] = [
					_product_wholesale[t][0],
					_product_wholesale[t][1],
					_tmp[0],
					_tmp[1]
				];
			}
		}
		is_rebuild_wholesale = true;
	}

	
	for (var t in local_taxes) {
		if (document.getElementById('tax_'+t)) {
			document.getElementById('tax_'+t).innerHTML = price_format(Math.max(local_taxes[t], 0));
		}
		current_taxes[t] = local_taxes[t];
	}

	if (is_rebuild_wholesale)
		rebuild_wholesale();

	

	if(priceincludetax == "Y")
	{
		if(taxratetype == "%")
		{
			//var newprice = price + (price*taxrate) / 100;
			var newprice = price/((0.01*taxrate)+1);
		}
		else
		{
			//var newprice = parseFloat(price)+parseFloat(taxrate)*2;
			var newprice = price-taxrate;
		}

		if (document.getElementById('product_price'))
			document.getElementById('product_price').innerHTML = price_format(Math.max((price), 0));
			

		if (document.getElementById('product_price_exe_vat'))
			document.getElementById('product_price_exe_vat').innerHTML = price_format(Math.max(newprice, 0));
	}
	else
	{
		if(priceincludetax != "")
		{
			if(taxratetype == "%")
			{
				//var newprice = price + (price*taxrate) / 100;
				var newprice = price/((0.01*taxrate)+1);
			}
			else
			{
				//var newprice = parseFloat(price)+parseFloat(taxrate);	
				var newprice = parseFloat(price)+parseFloat(taxrate);
			}
		}
		else
			var newprice = parseFloat(price)+parseFloat(vatprice);

		if (document.getElementById('product_price_exe_vat'))
			document.getElementById('product_price_exe_vat').innerHTML = price_format(Math.max(newprice, 0));

		if (document.getElementById('product_price'))
			document.getElementById('product_price').innerHTML = price_format(Math.max((price), 0));
	}
	
	
	if (alter_currency_rate > 0 && document.getElementById('product_alt_price')) {
		var altPrice = price*alter_currency_rate;
		document.getElementById('product_alt_price').innerHTML = price_format(Math.max(altPrice, 0));
	}

	
	if (document.getElementById('save_percent') && document.getElementById('save_percent_box') && list_price > 0 && dynamic_save_money_enabled) {
		var save_percent = Math.round(100 - (price / list_price) * 100);
		if (save_percent > 0) {
			document.getElementById('save_percent_box').style.display = '';
			document.getElementById('save_percent').innerHTML = save_percent;

		} else {
			document.getElementById('save_percent_box').style.display = 'none';
			document.getElementById('save_percent').innerHTML = '0';
		}
	}
 
	
	if (document.getElementById('product_avail_txt')) {
		
		document.getElementById('product_avail_txt').innerHTML = avail > 0 ? substitute(lbl_items_instock, "items") : lbl_no_items_available;
		
	}

	if ((mq > 0 && avail > mq+min_avail) || is_unlimit)
		avail = mq + min_avail - 1;

	avail = Math.min(mq, avail);

	var select_avail = min_avail; 
	
	if (!availObj)
		availObj = document.getElementById('product_avail');

	if (availObj && availObj.tagName.toUpperCase() == 'SELECT') {

		
		if (!isNaN(min_avail) && !isNaN(avail)) { 
			var first_value = -1;
			if (availObj.options[0])
				first_value = availObj.options[0].value;

			if (first_value == min_avail) {

				
				if ((avail-min_avail+1) != availObj.options.length) {
					if (availObj.options.length > avail) {
						var cnt = availObj.options.length;
						for (var x = (avail < 0 ? 0 : avail); x < cnt; x++)
							availObj.options[availObj.options.length-1] = null;

					} else {
						var cnt = availObj.options.length;
						for (var x = cnt+1; x <= avail; x++)
							availObj.options[cnt++] = new Option(x, x);
					}
				}
			} else { 

				
				var cnt = availObj.options.length - 1;
				while (cnt >= 0)
					availObj.options[cnt--] = null;

				cnt = 0;
				for (var x = min_avail; x <= avail; x++)
					availObj.options[cnt++] = new Option(x, x);
			}
			if (availObj.options.length == 0 || min_avail > avail)
				availObj.options[0] = new Option(txt_out_of_stock, 0);
		}
		select_avail = availObj.options[availObj.selectedIndex].value;

	} else if (availObj && availObj.tagName.toUpperCase() == 'INPUT' && availObj.type.toUpperCase() == 'TEXT') {

		
        if (!isNaN(min_avail) && !isNaN(avail)) {
			availObj.minQuantity = min_avail;
			availObj.maxQuantity = avail;
		}
        select_avail = availObj.value;
	}

	check_wholesale(select_avail);

	if ((alert_msg == 'Y') && (min_avail > avail))
		alert(txt_out_of_stock);
	
	
	var ex_flag = check_exceptions();
	if (!ex_flag && (alert_msg == 'Y'))
		alert(exception_msg);

	if (document.getElementById('exception_msg')) {
		if (ex_flag) {
			document.getElementById('exception_msg').style.display = 'none';

		} else {
			document.getElementById('exception_msg').innerHTML = exception_msg_html;
			document.getElementById('exception_msg').style.display = '';
		}
	}

	return true;
}


function modi_price(_price, _taxes, _orig_price) {
	var return_price = round(_price, 2);

	
	for (var x2 in modifiers) {
		var value = getPOValue(x2);
		if (!value || !modifiers[x2][value])
			continue;

		
		var elm = modifiers[x2][value];
		return_price += parseFloat(elm[1] == '$' ? elm[0] : (_price*elm[0]/100));

		
		for (var t2 in _taxes) {
			if (elm[2][t2]) {
				_taxes[t2] += parseFloat(elm[1] == '$' ? elm[2][t2] : (_orig_price*elm[2][t2]/100));
			}
		}
	}

	return [return_price, _taxes];
}


function check_exceptions() {
	if (!exceptions)
		return true;

	
	for (var x in exceptions) {
		if (isNaN(x))
			continue;

		var found = true;
        for (var c in exceptions[x]) {
			var value = getPOValue(c);
			if (!value)
				return true;

            if (value != exceptions[x][c]) {
				found = false;
				break;
			}
		}
		if (found)
			return false;
	}

	return true;
}


function rebuild_wholesale() {

	var div = document.getElementById('wl-prices');
	var wl_table = $('table', div).get(0);

	var wl_taxes = $('div', div).get(0);
	
	if (!div || !wl_table || !wl_taxes)
		return false;

	
	var i = wl_table.rows.length - 1;
	while (i > 0)
		wl_table.deleteRow(i--);

	if (!product_wholesale || product_wholesale.length == 0) {
		div.style.display = 'none';
		return false;
	}

	
	var str = '';
	var r;
	for (i in product_wholesale) {
		if (product_wholesale[i][0] == 0)
			continue;

		r = wl_table.insertRow(-1);
		r.insertCell(-1).innerHTML = product_wholesale[i][0] + '+&nbsp;' + (product_wholesale[i][0] == 1 ? lbl_item : lbl_items);
		r.insertCell(-1).innerHTML = price_format(product_wholesale[i][2] < 0 ? 0 : product_wholesale[i][2], false, false, false, true);
	}

	if (wl_table.rows.length <= 1) {
        div.style.display = 'none';
		return false;
	}

   
	var tax_str = '';
    if (taxes.length > 0) {
        for (i in taxes) {
            if (current_taxes[i] > 0)
                tax_str += substitute(lbl_including_tax, 'tax', taxes[i][1]) + '<br />';
        }
    }

	if (tax_str.length > 0) {
		for (i = wl_taxes.childNodes.length - 1; (i >= 0 && wl_taxes.childNodes[i].nodeType == 3); i--)
			wl_taxes.removeChild(wl_taxes.childNodes[i]);

		wl_taxes.appendChild(document.createTextNode(tax_str));
		wl_taxes.style.display = '';

	} else {
		wl_taxes.style.display = 'none';
	}

    div.style.display = '';

	return true;
}


function check_wholesale(qty) {
	if (product_wholesale.length == 0)
		return true;

	var wl_taxes = current_taxes.slice(0);
	var wl_price = price;
	var found = false;
	for (var x = 0; x < product_wholesale.length; x++) {
		if (product_wholesale[x][0] <= qty && (product_wholesale[x][1] >= qty || product_wholesale[x][1] == 0)) {
			wl_price = product_wholesale[x][2];
			wl_taxes = product_wholesale[x][3].slice(0);
			found = true;
		}

		if (document.getElementById('wp' + x)) {
			var wPrice = price-default_price+product_wholesale[x][2];
			document.getElementById('wp' + x).innerHTML = price_format(Math.max(wPrice, 0));
		}
	}

	
	
	if(priceincludetax == "Y")
	{
		if(taxratetype == "%")
			var newprice = (wl_price*taxrate) / 100;
		else
			var newprice = parseFloat(wl_price)+parseFloat(taxrate);
		if (document.getElementById('product_price'))
			document.getElementById('product_price').innerHTML = price_format(Math.max((wl_price+newprice), 0));
			

		if (document.getElementById('product_price_exe_vat'))
			document.getElementById('product_price_exe_vat').innerHTML = price_format(Math.max(wl_price, 0));
	}
	else
	{
		if (document.getElementById('product_price_exe_vat'))
			document.getElementById('product_price_exe_vat').innerHTML = price_format(Math.max(wl_price, 0));
		if(priceincludetax != "")
		{
			if(taxratetype == "%")
				var newprice = wl_price + (wl_price*taxrate) / 100;
			else
				var newprice = parseFloat(wl_price)+parseFloat(taxrate);
		}
		else
			var newprice = parseFloat(wl_price)+parseFloat(vatprice);
			
		if (document.getElementById('product_price'))
			document.getElementById('product_price').innerHTML = price_format(Math.max((newprice), 0));
	}
	
	if (alter_currency_rate > 0 && document.getElementById('product_alt_price')) {
		document.getElementById('product_alt_price').innerHTML = price_format(Math.max(wl_price * alter_currency_rate, 0));
	}

	
	if (document.getElementById('save_percent') && document.getElementById('save_percent_box') && list_price > 0 && dynamic_save_money_enabled) {
		var save_percent = Math.round(100 - (Math.max(wl_price, 0) / list_price) * 100);
		if (save_percent > 0) {
			document.getElementById('save_percent_box').style.display = '';
			document.getElementById('save_percent').innerHTML = save_percent;

		} else {
			document.getElementById('save_percent_box').style.display = 'none';
			document.getElementById('save_percent').innerHTML = '0';
		}
	}


	for (var x in taxes) {
		if (document.getElementById('tax_'+x) && wl_taxes[x] && current_taxes[x]) {
			document.getElementById('tax_'+x).innerHTML = price_format(Math.max(wl_taxes[x], 0));
		}
	}

	return true;
}


function check_quantity_input_box(inp) {
	if (isNaN(inp.minQuantity))
		inp.minQuantity = min_avail;

	if (isNaN(inp.maxQuantity))
		inp.maxQuantit = avail;

	if (!isNaN(inp.minQuantity) && !isNaN(inp.maxQuantity)) {
		var q = parseInt(inp.value);
		if (isNaN(q)) {
			alert(substitute(lbl_product_quantity_type_error, "min", inp.minQuantity, "max", inp.maxQuantity));
			return false;
		}

		if (q < inp.minQuantity) {
			alert(substitute(lbl_product_minquantity_error, "min", inp.minQuantity));
			return false;
		}

		if (q > inp.maxQuantity) {
			alert(substitute(lbl_product_maxquantity_error, "max", inp.maxQuantity));
			return false;
		}

		check_wholesale(inp.value);
	}
	return true;
}


function getPOValue(c) {
	if (!document.getElementById('po' + c) || document.getElementById('po' + c).tagName.toUpperCase() != 'SELECT')
		return false;

	return document.getElementById('po'+c).options[document.getElementById('po'+c).selectedIndex].value;
}

function product_option(classid) {
	if (!isNaN(classid))
		 return document.getElementById("po" + classid);

	if (!names)
		return false;

	for (var x in names) {
		if (names[x]['class_name'] != classid)
			continue;

		return document.getElementById('po' + x);
    }

	return false;
}

function product_option_value(classid) {
	var obj = product_option(classid);
	if (!obj)
		return false;

	if (obj.type != 'select-one')
		return obj.value;

	var classid = parseInt(obj.id.substr(2));
	var optionid = parseInt(obj.options[obj.selectedIndex].value);
	if (names[classid] && names[classid]['options'][optionid])
		return names[classid]['options'][optionid];

	return false;
}

