//
// Copyright (c) Art. Lebedev Studio | http://www.artlebedev.ru/
// Author - Leechy | leechy@design.ru
//

/* images preload */

var arrBtns = new Array();
arrBtns['empty'] = new Image(14, 16);
arrBtns['empty'].src = '/img/i/d-t.gif';

arrBtns['plus'] = new Image(14, 16);
arrBtns['plus'].src = '/img/+.gif';
arrBtns['plus-d'] = new Image(14, 16);
arrBtns['plus-d'].src = '/img/+.gif';
arrBtns['plus-a'] = new Image(14, 16);
arrBtns['plus-a'].src = '/img/+.gif';

arrBtns['minus'] = new Image(14, 16);
arrBtns['minus'].src = '/img/-.gif';
arrBtns['minus-d'] = new Image(14, 16);
arrBtns['minus-d'].src = '/img/-.gif';
arrBtns['minus-a'] = new Image(14, 16);
arrBtns['minus-a'].src = '/img/-.gif';

arrBtns['clear'] = new Image(14, 16);
arrBtns['clear'].src = '/img/i/basket/clear.gif';
arrBtns['clear-d'] = new Image(14, 16);
arrBtns['clear-d'].src = '/img/i/basket/clear-d.gif';
arrBtns['clear-a'] = new Image(14, 16);
arrBtns['clear-a'].src = '/img/i/basket/clear-a.gif';


/* basket submit */

var iBasketSubmitTO = 0;
var bBasketNotSubmitted = false;
var strURL2Follow = null;

function linkClick( evt ) {
	strURL2Follow = this.href;
	if ( bBasketNotSubmitted ) {
		if ( iBasketSubmitTO != 0 ) clearTimeout( iBasketSubmitTO );
		basketSubmit();
		if ( evt && evt.preventDefault ) evt.preventDefault();
		//return false;
	}
}

function basketSubmit() {
	if ( window.strBasketUrl ) {
		var strIDs = '';
		var strValues = '';
		var strTypes = '';
		var arrNewCookieValues = new Array();
		var arrNewCookiePrices = new Array();
		for ( i in arrBasketItems ) {
			if ( arrBasketItems[i].iCurrentCnt != arrBasketItems[i].iCnt || arrBasketItems[i].iCurrentCnt != arrBasketItems[i].iSubmittedCnt ) {
				arrBasketItems[i].iSubmittedCnt = arrBasketItems[i].iCurrentCnt;
				if ( strIDs.length ) strIDs += '|';
				strIDs += i;
				if ( strValues.length ) strValues += '|';
				strValues += arrBasketItems[i].iCurrentCnt;
				if ( strTypes.length ) strTypes += '|';
				strTypes += arrBasketItems[i].iType;

				arrNewCookieValues[i] = arrBasketItems[i].iCurrentCnt;
				arrNewCookiePrices[i] = arrBasketItems[i].iPrice;
			}
		}
		if ( strIDs.length ) {
				updateBasketProductsCookie( arrNewCookieValues, arrNewCookiePrices )
		}
	}
	iBasketSubmitTO = 0;
}

function basketLoaded( iResult ) {
//	alert( iResult );
	if ( !iResult ) alert('order wasn\'t accepted!');
	/* clearing iframe src */
	var strURL = '/_blank.html';
	var objBasketIFrame = document.getElementById('basketFrame');
	if ( objBasketIFrame ) {
		if ( objBasketIFrame.contentDocument ) objBasketIFrame.contentDocument.location.replace( strURL );
			else if ( objBasketIFrame.contentWindow ) objBasketIFrame.contentWindow.document.location.replace( strURL );
				else objBasketIFrame.src = strURL;
	}

	/* continue */
	if ( strURL2Follow ) document.location.href = strURL2Follow;
	bBasketNotSubmitted = false;
}


/* basket controls */

var iMaxCnt = 10000;

function basketControlOver( evt ) {
	if ( this.src.indexOf('d-t.gif') >= 0 ) return;
	this.src = arrBtns[this.className + '-a'].src
}

function basketControlOut( evt ) {
	if ( this.src.indexOf('d-t.gif') >= 0 ) return;
	this.src = arrBtns[this.className].src
}

function basketControlDown( evt ) {
	if ( this.src.indexOf('d-t.gif') >= 0 ) return;
	this.src = arrBtns[this.className + '-d'].src
}

function basketControlUp( evt ) {
	if ( this.src.indexOf('d-t.gif') >= 0 ) return;
	this.src = arrBtns[this.className + '-a'].src
}

function basketControlActivate( evt ) {
	var iBasketItemId = this.id.substring(0, this.id.indexOf('Basket') );
	var objSpanElem = document.getElementById( iBasketItemId );
	if ( ( iBasketItemId && arrBasketItems[ iBasketItemId ] ) || this.className == 'clear' ) {
		if ( iBasketSubmitTO != 0 ) clearTimeout( iBasketSubmitTO );
		strURL2Follow = null;
		if ( this.className == 'plus' && arrBasketItems[ iBasketItemId ].iCurrentCnt < iMaxCnt ) {
			if ( arrBasketItems[ iBasketItemId ].iCurrentCnt == 0 ) {
				var objMinusControlImg = document.getElementById( iBasketItemId + 'BasketMinus' );
				if ( objMinusControlImg ) objMinusControlImg.src = arrBtns['minus'].src;
			}
			arrBasketItems[ iBasketItemId ].iCurrentCnt++;
			objSpanElem.value = arrBasketItems[ iBasketItemId ].iCurrentCnt;
			if ( arrBasketItems[ iBasketItemId ].iCurrentCnt == iMaxCnt ) this.src = arrBtns['empty'].src;
			bBasketNotSubmitted = true;
		} else if ( this.className == 'minus' && arrBasketItems[ iBasketItemId ].iCurrentCnt > 0 ) {
			if ( arrBasketItems[ iBasketItemId ].iCurrentCnt == iMaxCnt ) {
				var objPlusControlImg = document.getElementById( iBasketItemId + 'BasketPlus' );
				if ( objPlusControlImg ) objPlusControlImg.src = arrBtns['plus'].src;
			}
			arrBasketItems[ iBasketItemId ].iCurrentCnt--;
			objSpanElem.value = arrBasketItems[ iBasketItemId ].iCurrentCnt;
			if ( arrBasketItems[ iBasketItemId ].iCurrentCnt == 0 ) this.src = arrBtns['empty'].src;
			bBasketNotSubmitted = true;
		} else if ( this.className == 'clear' ) {
			for ( i in arrBasketItems ) {
				arrBasketItems[i].iCurrentCnt = 0;
				var objCntElem = document.getElementById(i);
				if ( objCntElem ) objCntElem.value = '0';
				var objMinusControlImg = document.getElementById( i + 'BasketMinus' );
				if ( objMinusControlImg ) objMinusControlImg.src = arrBtns['empty'].src;
			}
		}
		//calcOverallPrice();
		iBasketSubmitTO = basketSubmit();
	}
}

function basketInputControlActivate( id ) {
	var iBasketItemId = id;
	var objSpanElem = document.getElementById( iBasketItemId );
	if ( ( iBasketItemId && arrBasketItems[ iBasketItemId ] ) ) {
		if ( iBasketSubmitTO != 0 ) clearTimeout( iBasketSubmitTO );
		strURL2Follow = null;
		if ( objSpanElem.value >= iMaxCnt ) {
			objSpanElem.value = iMaxCnt;
			arrBasketItems[ iBasketItemId ].iCurrentCnt = iMaxCnt;
		} else if ( objSpanElem.value <= 0 ) {
			objSpanElem.value = 0;
			arrBasketItems[ iBasketItemId ].iCurrentCnt = 0;
		} else {
			arrBasketItems[ iBasketItemId ].iCurrentCnt = objSpanElem.value;
		}
		if ( arrBasketItems[ iBasketItemId ].iCurrentCnt == iMaxCnt ) {
			var objPlusControlImg = document.getElementById( iBasketItemId + 'BasketPlus' );
			if ( objPlusControlImg ) objPlusControlImg.src = arrBtns['empty'].src;
			var objMinusControlImg = document.getElementById( iBasketItemId + 'BasketMinus' );
			if ( objMinusControlImg ) objMinusControlImg.src = arrBtns['minus'].src;
		} else if ( arrBasketItems[ iBasketItemId ].iCurrentCnt == 0 ) {
			var objPlusControlImg = document.getElementById( iBasketItemId + 'BasketPlus' );
			if ( objPlusControlImg ) objPlusControlImg.src = arrBtns['plus'].src;
			var objMinusControlImg = document.getElementById( iBasketItemId + 'BasketMinus' );
			if ( objMinusControlImg ) objMinusControlImg.src = arrBtns['empty'].src;
		} else {
			var objPlusControlImg = document.getElementById( iBasketItemId + 'BasketPlus' );
			if ( objPlusControlImg ) objPlusControlImg.src = arrBtns['plus'].src;
			var objMinusControlImg = document.getElementById( iBasketItemId + 'BasketMinus' );
			if ( objMinusControlImg ) objMinusControlImg.src = arrBtns['minus'].src;
		}
		//calcOverallPrice();
		iBasketSubmitTO = basketSubmit();
	}
}

function calcOverallPrice() {
	if ( objBasketOverall ) {
		var iOverallPrice = 0;
		for ( i in arrBasketItems ) {
			iOverallPrice += (arrBasketItems[i].iCurrentCnt * arrBasketItems[i].iPrice)
		}
		var strPrice = String(iOverallPrice);
		if ( strPrice.indexOf('.') < 0 ) {
			var strFormattedPrice = strPrice + '<span class="cents">,00</span>';
		} else {
			strPrice += '00';
			var strFormattedPrice = strPrice.substring(0, strPrice.indexOf('.')) +
				'<span class="cents">,' + strPrice.substr(strPrice.indexOf('.') + 1, 2) + '</span>';
		}
		objBasketOverall.innerHTML = strFormattedPrice;
	}
}


function FormatSummaPrice( iOverallPrice ) {
	var strPrice = String(iOverallPrice);
	if ( strPrice.indexOf('.') < 0 ) {
		var strFormattedPrice = strPrice + '<span class="cents">,00</span>';
	} else {
		strPrice += '00';
		var strFormattedPrice = strPrice.substring(0, strPrice.indexOf('.')) +
			'<span class="cents">,' + strPrice.substr(strPrice.indexOf('.') + 1, 2) + '</span>';
	}
	return strFormattedPrice;
}


/* basket items initialization */

function createBasketControl( strClassName, iCnt, id ) {
	var objImage = document.createElement('img');
	var strImageSrc = ( ( strClassName == 'plus' && iCnt >= iMaxCnt || strClassName == 'minus' && iCnt <= 0 ) )? arrBtns['empty'].src : arrBtns[ strClassName ].src;
	objImage.setAttribute('src', strImageSrc);
	objImage.setAttribute('width', '14');
	objImage.setAttribute('height', '16');
	objImage.className = strClassName;
	objImage.id = id;
	if ( strClassName == 'minus' ) {
		objImage.setAttribute('hspace', '2');
	}
	objImage.onmouseover = basketControlOver;
	objImage.onmouseout = basketControlOut;
	objImage.onmousedown = basketControlDown;
	objImage.onmouseup = basketControlUp;
	objImage.onclick = basketControlActivate;
	if ( ( document.all && !window.opera ) || navigator.userAgent.indexOf('Safari') >= 0 )
		objImage.ondblclick = basketControlActivate;
	return objImage;
}


var arrBasketItems = new Array();
function BasketItem( iCnt, iType, iPrice ) {
	this.iCnt = iCnt;
	this.iSubmittedCnt = iCnt;
	this.iCurrentCnt = iCnt;
	this.iType = iType;
	this.iPrice = iPrice;
	return this;
}

function createBasketItem( objCntSpan ) {
	/* add new basket item to the array */
	var iCnt = 0;

	if ( arrBasketProducts[ objCntSpan.id ] ) {
		iCnt = parseInt( arrBasketProducts[ objCntSpan.id ] );
		if ( !isNaN(iCnt) ) objCntSpan.value = iCnt;
			else iCnt = 0;
	}

	var objType = document.getElementById( objCntSpan.id + 'Type' );
	var iType = ( objType )? parseInt( getTextValue( objType ) ) : 0;
	var objPrice = document.getElementById( objCntSpan.id + 'Price' );
	var iPrice = ( objPrice )? parseFloat( getTextValue( objPrice ) ) : 0;
	arrBasketItems[ objCntSpan.id ] = new BasketItem( iCnt, iType, iPrice );
	/* create controls */
	var objControlsContainer = document.getElementById( objCntSpan.id + 'Controls' );
	if ( objControlsContainer ) {
		var objPlusImage = createBasketControl( 'plus', iCnt, objCntSpan.id + 'BasketPlus' )
		var objMinusImage = createBasketControl( 'minus', iCnt, objCntSpan.id + 'BasketMinus' )
		objControlsContainer.appendChild( objPlusImage );
		objControlsContainer.appendChild( objMinusImage );
	}
}

var objBasketOverall = null;
var iCntDiff = 0;

arrBasketProducts = new Array();
function getBasketProductsFromCookie() {
	var strBasketProductsCookie = getCookie('basket_products');
	var arrBasketProductsCookie = strBasketProductsCookie.split('|');
	for ( var i = 0; i < arrBasketProductsCookie.length; i++ ) {
		var iDelimiterPos = arrBasketProductsCookie[i].indexOf('=');
		arrBasketProducts[ arrBasketProductsCookie[i].substring( 0, iDelimiterPos ) ] = arrBasketProductsCookie[i].substr( iDelimiterPos + 1 );
	}
}

arrBasketPrices = new Array();
function getBasketPricesFromCookie() {
	var strBasketPricesCookie = getCookie('basket_prices');
	var arrBasketPricesCookie = strBasketPricesCookie.split('|');
	for ( var i = 0; i < arrBasketPricesCookie.length; i++ ) {
		var iDelimiterPos = arrBasketPricesCookie[i].indexOf('=');
		arrBasketPrices[ arrBasketPricesCookie[i].substring( 0, iDelimiterPos ) ] = arrBasketPricesCookie[i].substr( iDelimiterPos + 1 );
	}
}

function updateBasketProductsCookie( arrNewValues, arrNewPrices ) {
	for ( var i in arrNewValues ) {
		arrBasketProducts[i] = arrNewValues[i];
		arrBasketPrices[i] = arrNewPrices[i];
	}
	var strBasketProductsCookie = '';
	var strBasketPricesCookie = '';
	var iCnt = 0;
	var iOverallPrice = 0;
	for ( var i in arrBasketProducts ) {
		if ( arrBasketProducts[i] && arrBasketProducts[i] != '' ) {
			if ( strBasketProductsCookie.length ) strBasketProductsCookie+= '|'
			strBasketProductsCookie += i + '=' + arrBasketProducts[i];
			iCnt += parseInt( arrBasketProducts[i] );
			if ( strBasketPricesCookie.length ) strBasketPricesCookie+= '|'
			strBasketPricesCookie += i + '=' + arrBasketPrices[i];
			iOverallPrice += (arrBasketProducts[i] * arrBasketPrices[i])
		}
	}
	var dExpire = new Date();
	dExpire.setDate( dExpire.getDate() + 21 );
	setCookie('basket_products', strBasketProductsCookie, dExpire, '/');
	setCookie('basket_items', iCnt, dExpire, '/');
	setCookie('basket_prices', strBasketPricesCookie, dExpire, '/');
	setCookie('basket_summa', iOverallPrice, dExpire, '/');
	drawBasket();
}

function initBasket() {
	if (document.createTextNode) {
		objBasketOverall = document.getElementById('overallPrice');
		getBasketProductsFromCookie();
		getBasketPricesFromCookie();

		for ( var iElemIdx = 0; ( objSpanElem = document.getElementsByTagName('input').item( iElemIdx ) ); iElemIdx++ ) {
			if ( matchClass( objSpanElem, 'basket-cnt' ) ) {
				createBasketItem( objSpanElem );
			}
		}
		/* please don't kill me for this */
		for ( var iElemIdx = 0; ( objLinkElem = document.getElementsByTagName('a').item( iElemIdx ) ); iElemIdx++ ) {
			if ( objLinkElem.href && !objLinkElem.onclick ) {
				objLinkElem.onclick = linkClick;
			}
		}
		/* diff count */
		iCntDiff = parseInt( getCookie('basket_items') );
		if ( isNaN( iCntDiff ) ) {
			iCntDiff = 0;
		} else {
			for ( i in arrBasketItems ) {
				iCntDiff -= arrBasketItems[i].iCnt;
			}
		}
		
		/* clear button creation */
		var objClearBtnCell = document.getElementById( 'clearButtonCell' );
		if ( objClearBtnCell ) objClearBtnCell.appendChild( createBasketControl( 'clear', 5, 'clearBtn' ) );
		
		/* iframe creation */
		/*var objBasketIFrame = document.createElement('iframe');
		objBasketIFrame.id = 'basketFrame';
		objBasketIFrame.className = 'basket-iframe';
		objBasketIFrame.src = '/_blank.html';
		document.getElementsByTagName('body')[0].appendChild( objBasketIFrame );*/
		
		/* overall price calculating */
		//calcOverallPrice();
	}
}


addEvent(window, 'load', initBasket);