/*
 * Copyright (c) Art. Lebedev Studio | http://www.artlebedev.ru/
 */

// Read a page's GET URL variables and return them as an associative array.
function getUrlVars() {
	var vars = [], hash;
	var hashes = window.location.href.slice(window.location.href.indexOf('?')
			+ 1).split('&');
	for (var i = 0; i < hashes.length; i++) {
		hash = hashes[i].split('=');
		vars.push(hash[0]);
		vars[hash[0]] = hash[1];
	}
	return vars;
}

$(function() {
			$('#mNode').click(function() {
						if ($('#mChilds').css('display') == 'none') {
							$('#mChilds').css('display', 'block');
						} else {
							$('#mChilds').css('display', 'none');
						}
					})
		});

var keep = false;
var PriceRURSale = 0;

function ToggleLoginPanel() {
	var LoginPanel = document.getElementById('LoginPanel');
	if (LoginPanel) {
		var display = LoginPanel.style.display;
		if (display == 'none' || !display) {
			LoginPanel.style.display = 'block';
			var LoginInput = document.getElementById('Username');
			if (LoginInput)
				LoginInput.focus();

			keep = true;
			document.onclick = CloseLoginPanel;
			document.onkeydown = EscapeLoginPanel;

			var UsernameField = document.getElementById('Username');
			var PasswordField = document.getElementById('Password');
			var SessionSubmit = document.getElementById('SessionSubmit');
			// if (UsernameField) UsernameField.onclick = Keep;
			// if (PasswordField) PasswordField.onclick = Keep;
			// if (SessionSubmit) SessionSubmit.onclick = Keep;
			LoginPanel.onclick = Keep;
		} else {
			LoginPanel.style.display = 'none';
		}
		return false;
	} else
		return true;
}

function Keep() {
	keep = true;
}

function CloseLoginPanel(event) {
	if (keep) {
		keep = false;
		return;
	}
	var LoginPanel = document.getElementById('LoginPanel');
	if (!LoginPanel)
		return;
	LoginPanel.style.display = 'none';

	document.onclick = null;
	document.onkeydown = null;
}

function EscapeLoginPanel(event) {
	if (window.event)
		event = window.event;
	var code = event.keyCode ? event.keyCode : event.which ? event.which : null;
	if (code == 27) {
		var LoginPanel = document.getElementById('LoginPanel');
		if (!LoginPanel)
			return;
		LoginPanel.style.display = 'none';

		document.onclick = null;
		document.onkeydown = null;
	}
}

function TestLogin() {
	var UsernameField = document.getElementById('Username');
	var PasswordField = document.getElementById('Password');
	var SessionSubmit = document.getElementById('SessionSubmit');
	if (!UsernameField || !PasswordField || !SessionSubmit)
		return;

	SessionSubmit.disabled = !UsernameField.value || !PasswordField.value;
}

function SubproductChange() {
	var result = {
		ru : 0,
		us : 0,
		eu : 0
	};
	var f = 1;
	for (var c in SubproductsChange) {
		var o = document.getElementById('Subproduct' + c);
		if (o && o.checked) {
			if (f) {
				f = 0;
				result.ru -= PriceRURSimple;
				result.eu -= PriceEURSimple;
				result.us -= PriceUSDSimple;
			};
			var a = SubproductsChange[c];
			result.ru += a.ru + PriceRURSimple;
			result.eu += a.eu + PriceEURSimple;
			result.us += a.us + PriceUSDSimple;
		};
	};

	return result;
}

function SubproductChecked(e) {
	PricedSubproductSelected(0, GlobalLang, SubproductChange());
	SubproductSelected();
}

function SubproductSelected() {
	var AddToChartButton = document.getElementById('AddToChartButton');
	if (!AddToChartButton || !SubproductsChange)
		return;

	var disabled = true;

	var hasOrder = false;
	var hasPreorder = false;

	for (var c in SubproductsChange) {
		var checkbox = document.getElementById('Subproduct' + c);
		if (checkbox && checkbox.checked) {
			disabled = false;
			if (SubproductsChange[c].preorder) {
				hasPreorder = true;
			} else {
				hasOrder = true;
			}
		}
	}
	AddToChartButton.disabled = disabled;
	if (hasPreorder && hasOrder) {
		AddToChartButton.value = OrderAndPreorderText;
	} else if (hasPreorder) {
		AddToChartButton.value = PreorderText;
	} else {
		AddToChartButton.value = ProductPreorder ? PreorderText : OrderText;
	}
}

function PricedSubproductSelected(state, lang, price) {
	var PriceRURValue = PriceRURSimple;
	var SalePriceRUR = document.getElementById('SalePriceRUR');
	var PriceEURValue = PriceEURSimple;
	var PriceUSDValue = PriceUSDSimple;

	if (SalePriceRUR) {
		var SalePriceRURValue = PriceRURSale;
	}

	if (state) {
		PriceRURValue += PriceRURAdditional;
		PriceEURValue += PriceEURAdditional;
		PriceUSDValue += PriceUSDAdditional;
	}

	if (price) {
		PriceRURValue += price.ru;
		PriceEURValue += price.eu;
		PriceUSDValue += price.us;
	}

	if (price.sale_price) {
		if (SalePriceRURValue !== undefined) {
			SalePriceRURValue += price.sale_price;
			// PriceEURValue += SalePriceEURAdditional;
			// PriceUSDValue += SalePriceUSDAdditional;
			PriceEURValue += price.sale_additional_price_eur;
			PriceUSDValue += price.sale_additional_price_usd;
		}
	}

	return showChange(PriceRURValue, SalePriceRURValue, PriceUSDValue,
			PriceEURValue, lang);
}

function priceRound(s) {
	var splitString = s.split(',');
	var num = parseFloat(splitString[0] + '.' + splitString[1]);

	return Math.round(num);
}

function formatPrice(s) {

	if (s.length >= 5) {
		var result = '';
		var i;
		for (i = 1; i * 3 < s.length; i++)
			result = '&nbsp;'
					+ s.substr(s.length - i * 3, s.length - (i - 1) * 3)
					+ result;

		result = s.substr(0, 3 - i * 3 + s.length) + result;
		return result;

	}
	{
		return s;
	}
}

function showChange(PriceRURValue, SalePriceRURValue, PriceUSDValue,
		PriceEURValue, lang) {
	var PriceRUR = document.getElementById('PriceRUR');
	var PricePiece = document.getElementById('PricePiece');
	var SalePriceLine = document.getElementById('SalePriceLine');
	var SalePriceRUR = document.getElementById('SalePriceRUR');
	var SalePricePiece = document.getElementById('SalePricePiece');
	var PriceUSD = document.getElementById('PriceUSD');
	var PriceEUR = document.getElementById('PriceEUR');

	if (!PriceRUR || !PriceUSD || !PriceEUR)
		return;

	PriceRURValue = parseInt(PriceRURValue * Discount * 100) + '';
	SalePriceRURValue = parseInt(SalePriceRURValue * Discount * 100) + '';
	PriceUSDValue = parseInt(PriceUSDValue * Discount * 100) + '';
	PriceEURValue = parseInt(PriceEURValue * Discount * 100) + '';

	var separator = lang == 'ru' ? ',' : '.';
	var roundSeparator = lang == 'ru' ? '&nbsp;' : ',';

	// var s = PriceRURValue.substring (0, PriceRURValue.length - 2) + separator
	// + PriceRURValue.substring (PriceRURValue.length - 2);
	var s = PriceRURValue.substring(0, PriceRURValue.length - 2);

	if (s.length > 7)
		s = s.substring(0, s.length - 6) + roundSeparator
				+ s.substring(s.length - 6, s.length);

	// PriceRUR.innerHTML = priceRound(s);
	PriceRUR.innerHTML = formatPrice('' + priceRound(s));

	if (SalePriceRUR) {
		// var sp = SalePriceRURValue.substring (0, SalePriceRURValue.length -
		// 2) + separator + SalePriceRURValue.substring
		// (SalePriceRURValue.length - 2);
		var sp = SalePriceRURValue.substring(0, SalePriceRURValue.length - 2);
		if (sp.length > 7)
			sp = sp.substring(0, sp.length - 6) + roundSeparator
					+ sp.substring(sp.length - 6, sp.length);

		SalePriceRUR.innerHTML = priceRound(sp);
	}

	PriceEUR.innerHTML = '≈&thinsp;'
			+ priceRound(PriceEURValue.substring(0, PriceEURValue.length - 2)
					+ separator
					+ PriceEURValue.substring(PriceEURValue.length - 2));
	PriceUSD.innerHTML = '≈&thinsp;'
			+ priceRound(PriceUSDValue.substring(0, PriceUSDValue.length - 2)
					+ separator
					+ PriceUSDValue.substring(PriceUSDValue.length - 2));
	// PriceUSD.innerHTML = PriceUSDValue.substring (0, PriceUSDValue.length -
	// 2) + separator + PriceUSDValue.substring (PriceUSDValue.length - 2);
	// PriceUSD.innerHTML = priceRound(PriceUSDValue.substring (0,
	// PriceUSDValue.length - 2));

	if (SalePriceRUR) {
		if (SalePriceRUR.innerHTML != PriceRUR.innerHTML) {
			PriceRUR.className = 'nonactual';
			// PricePiece.className = 'nonactual';
			SalePriceRUR.className = 'actual';
			SalePricePiece.className = 'actual';
		} else {
			PriceRUR.className = 'actual';
			// PricePiece.className = 'actual';
			SalePriceRUR.className = 'nonactual';
			SalePricePiece.className = 'nonactual';
		}
	}
}

function changePaymentButtons(product_id, subproduct_id){
	$('#item_description, #item_number, #item_sku').val(product_id + '-' + subproduct_id);
}

function MoveLoginFields(where) {
	var LoginAsNewUser = document.getElementById('LoginAsNewUser');
	var LoginAsExistingUser = document.getElementById('LoginAsExistingUser');
	var PasswordReset = document.getElementById('PasswordReset');
	var Agreement = document.getElementById('Agreement');

	var Select1 = document.getElementById('radio-actionSelect-1');
	var Select2 = document.getElementById('radio-actionSelect-2');

	if (!LoginAsNewUser || !LoginAsExistingUser || !PasswordReset || !Select1
			|| !Select2)
		return;

	var LoginAsNewUserHtml = LoginAsNewUser.innerHTML;
	var LoginAsExistingUserHtml = LoginAsExistingUser.innerHTML;

	var Html = LoginAsNewUserHtml.length > LoginAsExistingUserHtml.length
			? LoginAsNewUserHtml
			: LoginAsExistingUserHtml;

	if (Select1.checked) {
		LoginAsNewUser.innerHTML = Html;
		LoginAsExistingUser.innerHTML = '';
	} else {
		LoginAsExistingUser.innerHTML = Html;
		LoginAsNewUser.innerHTML = '';
	}
}

function RecalcTotalCost(part, position, id) {
	var DeliveryCost = 0;
	var DiscountPtr = $('#Discount');

	if(DiscountPtr !== undefined && DiscountPtr.size() > 0){
		if(id === 25){
			DiscountPtr[0].setAttribute("class", "visible");
		} else {
			DiscountPtr[0].setAttribute("class", "not_visible");
		}
	}

	for (var p = 1;; p++) {
		var cell = document.getElementById('ShipmentCosts' + p);
		if (!cell)
			break;

		for (var c = 1;; c++) {
			var span = document.getElementById('ShipmentCost' + p + '-' + c);
			if (!span)
				break;

			var nobr = span;
			for (var i = 0; i < span.childNodes.length; i++) {
				var node = span.childNodes[i];
				if (node.nodeType == 1 && node.nodeName.toLowerCase() == 'span') {
					nobr = node;
					break;
				}
			}
			if (p == part) {
				if (position == c) {
					span.className = 'visible';
					var value = nobr.innerHTML;
					value = value.replace(',', '.');
					DeliveryCost += parseFloat(value);
				} else {
					if (part == p)
						span.className = 'invisible';
				}
			} else {
				if (span.className == 'visible') {
					var value = nobr.innerHTML;
					value = value.replace(',', '.');
					DeliveryCost += parseFloat(value);
				}
			}
		}
	}

	var TotalToPay = document.getElementById('TotalToPay');
	if (!TotalToPay)
		return;

	var total = TotalNudePrice + DeliveryCost;

	if(DiscountPtr !== undefined && DiscountPtr.size() > 0){
		if(DiscountPtr[0].getAttribute('class') !== 'not_visible'){
			total = total + TotalDiscount;
		}
	}

	total = parseInt(total * 100.0);
	total /= 100.0;
	total = '' + total;
	if (total.indexOf('.') == -1)
		total = total;
	if (total.indexOf('.') == total.length - 2)
		total = total + '0';
	if (Lang == 'ru')
		total = total.replace('.', ',');
	TotalToPay.innerHTML = total;
}

var OpenedSubFields = null;
function OpenSubFields(who) {
	var subFields = document.getElementById(who);
	if (!subFields)
		return;

	if (OpenedSubFields)
		OpenedSubFields.className = 'invisible';
	subFields.className = 'visible';
	OpenedSubFields = subFields;
}

function writeImage(src, width, height) {
	document.writeln('<img src="' + src + '" alt="" border="0" height="'
			+ height + '" width="' + width + '">');
}

function getW() {
	return document && document.body.clientWidth
			? document.body.clientWidth
			: 0;
}

function ltrim(str) {
	return str.replace(/^\s+/g, '');
}

function rtrim(str) {
	return str.replace(/\s+$/g, '');
}

var sUserChoose;
var oNumber = '';
var sNumber = '';
var ProductList = '';
var AddButton;
var oCurrentSet;
var oCurrentTree;
var sCurrent = '';
var previewContainer;
var categoryId;
var subProductId;

function checkNumbers(e) {
	var key = (typeof e.charCode == 'undefined' ? e.keyCode : e.charCode);

	// Ignore special keys
	if (e.ctrlKey || e.altKey || key < 32)
		return true;

	key = String.fromCharCode(key);
	return /[\d ]/.test(key);

}

function buildPreview(obj_ptr) {
	var oCart = new Array();

	oNumber = obj_ptr;

	previewContainer = document.getElementById('previewContainer');
	subProductId = document.getElementById('id_subproduct');
	ProductList = document.getElementById('product_list');

	if (sNumber != oNumber.value) {
		sNumber = ltrim(oNumber.value);
		sNumber = sNumber.replace(/  /g, ' ');
		previewContainer.innerHTML = '';

		ShowPreview();
	}
}

function ShowPreview() {
	var iDCount = 0;

	categoryId = document.getElementById('id_category');

	if (categoryId && categoryId.value != '') {
		oCurrentSet = SubproductsPreview[categoryId.value];
		oCurrentTree = SubproductsTree[categoryId.value];

		AddButton = document.getElementById('AddToChartButton');
	}

	if (sNumber.length > 0) {
		// oNumber.value = sNumber;
		AddButton.disabled = false;
		previewContainer.innerHTML = '';
		for (var i = 0; i < sNumber.length; i++) {
			sCurrent = sNumber.substr(i, 1);
			if (sCurrent != ' ') {
				for (var cnt = 0; cnt < oCurrentTree.length; cnt++) {
					if (cnt == parseInt(sCurrent)) {
						if (i > 0) {
							ProductList.value = ProductList.value + ','
									+ oCurrentTree[cnt];
						} else {
							ProductList.value = oCurrentTree[cnt];
						}

						sImg = oCurrentSet[oCurrentTree[cnt]];
						newImage = document.createElement('img');
						newImage.setAttribute('src', sImg);
						previewContainer.appendChild(newImage);
						iDCount++;
					}
				}

				RecalsSubproductPrice(iDCount);

			} else {
				oSpace = document.createElement('span');
				oSpace.className = 'sp';
				previewContainer.appendChild(oSpace);
			}
		}
	} else {
		ProductList.value = '';
		AddButton.disabled = true;
	}
}

function RefreshPreview() {
	var categoryId = document.getElementById('id_category');
	var AddButton = document.getElementById('AddToChartButton');

	if (categoryId && categoryId.value != '') {
		oCurrentSet = SubproductsPreview[categoryId.value];
		oCurrentTree = SubproductsTree[categoryId.value];
	}

	if (sNumber.length > 0) {
		AddButton.disabled = false;
		previewContainer.innerHTML = '';
		for (var i = 0; i < sNumber.length; i++) {
			sCurrent = sNumber.substr(i, 1);

			for (var cnt = 0; cnt < oCurrentTree.length; cnt++) {
				if (cnt == parseInt(sCurrent)) {
					if (i > 0) {
						ProductList.value = ProductList.value + ','
								+ oCurrentTree[cnt];
					} else {
						ProductList.value = oCurrentTree[cnt];
					}

					sImg = oCurrentSet[oCurrentTree[cnt]];
					newImage = document.createElement('img');
					newImage.setAttribute('src', sImg);
					previewContainer.appendChild(newImage);
				}
			}
		}
		RecalsSubproductPrice(sNumber.length);
	} else {
		ProductList.value = '';
		AddButton.disabled = true;
	}
}

function RecalsSubproductPrice(subProductCount) {
	var PriceRURValue = PriceRURSimple;
	var PriceEURValue = PriceEURSimple;
	var PriceUSDValue = PriceUSDSimple;
	var SalePriceRURValue = PriceRURSale;

	PriceRURValue *= subProductCount;
	PriceEURValue *= subProductCount;
	PriceUSDValue *= subProductCount;
	SalePriceRURValue *= subProductCount;

	showChange(PriceRURValue, SalePriceRURValue, PriceUSDValue, PriceEURValue,
			GlobalLang);
}

function checkClearPaymentData(checkBoxPtr) {
	var formPtr = document.getElementById('SendPaymentDataForm');
	var fieldSetPtrStyle = formPtr.getElementsByTagName('div')[1];

	if (fieldSetPtrStyle.style.display == ''
			|| fieldSetPtrStyle.style.display == 'none') {
		fieldSetPtrStyle.style.display = 'block';
		checkBoxPtr.value = 1;
	} else {
		fieldSetPtrStyle.style.display = 'none';
		checkBoxPtr.value = 0;
	}
}

function onNewBadge(sBadgeName) {
	$('#f_submit').append('<input type="hidden" name="badge_name" value="'
			+ sBadgeName + '" />');
}

(function($) {
	var cache = [];

	$.preLoadImages = function() {
		var args_len = arguments.length;
		for (var i = args_len; i--;) {
			var cacheImage = document.createElement('img');
			cacheImage.src = arguments[i];
			cache.push(cacheImage);
		}
	}
})(jQuery);

$(function() {
    if (typeof(SubproductsResourceKey) != "undefined") {
        for (SubproductsResourceKey in SubproductsResource) {
            $.preLoadImages(SubproductsResource[SubproductsResourceKey]);
        }
    }
});

$(function(){
	if(typeof(SubproductsResourceKey) != "undefined"){
		for(SubproductsResourceKey in SubproductsResource){
			$.preLoadImages(SubproductsResource[SubproductsResourceKey]);
		}
	}
});

/*
$(function(){
	var elements = $('.button-delimiter, #PaymentButtons');
	var form = jQuery('#f_submit');
	form.bind('change', function () {
		var checkedItem = form.find(':radio').filter(':checked').attr('id');
		if (checkedItem === 'id_discount_0') {
			elements.show();
		} else {
			elements.hide();
		}
	});
});
*/
