jQuery(function () {
	if (document.getElementById('cpForm')) {
		cartInit();
		checkoutInit();
	}
	else{
		if (document.getElementById('cartForm')) {
			cartInit();
		}
		else {
			if (document.getElementById('pTtl')) {
				productInit();
			}
			jQuery('.cst').change(changeSortType);
			if (document.getElementById('lqk')) {
				filtre();
			}
			topMenuInit();
			products2cart();
            if (document.getElementById('vis')) {
                showcaseBanners();
            };

			if ($.browser.msie && parseInt($.browser.version) < 7) {
				function minicartEnhancerIe6() {
					var minicart = jQuery('#minicartEnhancer');
					var win = jQuery(window);
					var winWidth = win.width();
					minicart.css('width', winWidth + 'px');
				}
				minicartEnhancerIe6();
			}
		}
		$('input:text').typeout();
        trusted();
	}
});
/******************************************************************/
/* start trusted */
function trusted() {
    var z="";function verify(a,b,c,d){b=b.replace(/|-|./gi,"");var e=new RegExp("\s","g");b=b.replace(e,"");if(!z.closed&&z.location){z.location.href=encodeUrl(a)}else{z=window.open(encodeUrl(a),b,"location=no, scrollbars=yes, resizable=yes, toolbar=no, menubar=no, width="+c+", height="+d);if(!z.opener)z.opener=self}if(window.focus){z.focus()}}function encodeUrl(a){if(a.indexOf("?")>0){encodedParams="?";parts=a.split("?");params=parts[1].split("&");for(i=0;i<params.length;i++){if(i>0){encodedParams+="&"}if(params[i].indexOf("=")>0){p=params[i].split("=");encodedParams+=(p[0]+"="+escape(encodeURI(p[1])))}else{encodedParams+=params[i]}}a=parts[0]+encodedParams}return a}
    
    function a_click() {
        verify('https://www.trusted.ro/assets/verify.php?id=34173cb38f07f89ddbebc2ac9128303f','TRUSTED', 600, 700);
        return false;
    }
    $('.trst').click(a_click);
}
/* end trusted */
/******************************************************************/

function showcaseBanners() {
	var i = 0;
	var timer = null;
	var viswr = $('#viswr');

	var vis = $('#vis');

	var visd = $('#visd');
	var has_visd = (visd.length == 1);

	var visnd = $('#visnd');
	var has_visnd = (visnd.length == 1);

    var ars = $('.ar', viswr);
    var has_ars = (ars.length > 0);

	function say_html(i) {
		var html = '<img src="' + xcart_web_dir + '/' + vis_dir + '/' + vis_bn[i]['src'] + '" />';
		if (vis_bn[i]['link']) {
			html = '<a href="' + vis_bn[i]['link'] + '">' + html + '</a>';
		}
		return html;
	}
	function auto_change() {
		i++;
		vis.fadeTo('slow', '0.33', function () {
			_change(null);
			vis.fadeTo('slow', 1, startTimer);
		});
	}
	function _change(bul_elem) {
        if (i < 0) {
            i = vis_n - 1;
        }
        else if (i >= vis_n) {
            i = 0;
        }
		var html = say_html(i);
		vis.html(html);
		if (has_visd) {
			if (vis_bn[i]['extra'] && vis_bn[i]['extra'][2]) {
				html = vis_bn[i]['extra'][2];
			}
			else {
				html = '';
			}
			visd.html(html);
		}
		if (has_visnd) {
			$('.s', visnd).removeClass('s');
			if (bul_elem == null) {
				bul_elem = a_visnd.eq(i);
			}
			bul_elem.addClass('s');
		}
        /*
        if (has_ars) {
            ars.removeClass('d');
            var c = -1;
            if (i == 0) {
                c = 0;
            }
            else if (i == vis_n - 1) {
                c = 1;
            }
            if (c >= 0) {
                ars.eq(c).addClass('d');

            }
        }
        // */
	}
    function arr_click () {
        var a = $(this);
        if (a.hasClass('d')) {
            return false;
        };
        var dir = (a.hasClass('l') ? -1 : 1);
        i += dir;
        _change();
        return false;
    }
	function startTimer() {
		timer = setTimeout(auto_change, 7000);
	}
	function stopTimer() {
		clearTimeout(timer);
		return false;
	}
	if (has_visd) {
		for (var j = 0; j < vis_n; j++) {
			if (vis_bn[j]['extra']) {
				vis_bn[j]['extra'] = jQuery.parseJSON(vis_bn[j]['extra']);
			}
		}
	}
	if (has_visnd) {
		function a_visnd_in() {
			i = a_visnd.index(this);
			_change();
			stopTimer();
			return false;
		}
		function a_visnd_click() {
			var h = $('a', vis).attr('href');
			if (h) {
				window.location = h;
			}
			return false;
		}
		var a_visnd = $('a', visnd);
		a_visnd.mouseenter(a_visnd_in).click(a_visnd_click);
	}
	//*
	startTimer();
	if (viswr.length == 1) {
		viswr.hover(stopTimer, startTimer);
        ars.click(arr_click);
	}
	else {
		vis.hover(stopTimer, startTimer);
	}
	// */
}

function filtre() {
	var wr = $('#lqk');
	var s_all = $('select', wr);
	function ajax_callback(data) {
		//console.log(data);
		if (!data) {
			return true;
		}
		for (var fcatid in data) {
			opts = data[fcatid];
			var s = $('.fc' + fcatid, wr);
			var html = '';
			var i;
			var n = opts.length;
			for (i = 0; i < n; i++) {
				html += '<option value="' + opts[i][1] + '">' + opts[i][0] + '</option>';
			}
			//console.log(s);
			_s_reset(s, html);
		}
	}
	function s_changed() {
		var s = $(this);
		var v = s.val();
		var i = s_all.index(s);

		var flt_prefix = $('#flt_prefix');
		var url = xcart_web_dir + '/' + flt_prefix.val();
		var sep = ',';
		if (flt_prefix.hasClass('f')) {
			sep = '/';
		}
		if (i == 2) {
			if (!v || v == '0') {
				return;
			}
			s_all.each(function () {
				url += $(this).val() + sep;
			});
			if (sep == ',') {
				url = url.substr(0, url.length-1);
			}
			window.location = url;
		}
		else {
			var so = s_all.filter(':gt(' + i + ')');
			so.each(s_reset);
			if (!v || v == '0') {
				return;
			}
			var flt = s_all.filter(':eq(0)').val();
			if (v) {
				flt += sep + v;
			}
			jQuery.ajax({
				type: 'GET',
				url: xcart_web_dir + '/qf.php',
				dataType: 'json',
				success: ajax_callback,
				data: {
					f: flt
				},
				async: false
			});
		}
	}
	function _s_reset(s, a) {
		var h = '<option value="0">' + $('option:first', s).text() + '</option>' + a;
		s.get(0).options.length = 0;
		s.append(h);

	}
	function s_reset() {
		var s = $(this);
		_s_reset($(this), '');
	}
	s_all.change(s_changed);
	if ($.browser.msie) {
		function s_in() {
			$(this).addClass('a');
			//t.focus();
		}
		function s_out() {
			$(this).removeClass('a');
		}
        s_all.filter(':last').mouseenter(s_in).blur(s_out);
	}
}

function topMenuInit() {
	function a_in() {
		var el = $(this);
		$('.s', wr).removeClass('s');
		wr.attr('className', el.attr('class') + '_m');
	}
	function a_out() {
		def_s.addClass('s');
		wr.attr('className', def_class);
	}

	var wr = $('#menu');
	var def_s = $('.s', wr);
	var def_class = wr.attr('class') || '';


	$('a', wr).hover(a_in, a_out);
}
function products2cart() {
	var items = $('.p2c');
	if (items.length < 1) {
		return false;
	}
	function item_click() {
		var a = $(this);
		var s = a.prev();
		var pid = parseInt(s.attr('name').substring(1));
		var amount = parseInt(s.val());
		window.location = xcart_web_dir + '/' + 'cart.php?mode=add&productid=' + pid + '&amount=' + amount;
		return false;
	}
	items.click(item_click);
	return true;
}
function changeSortType(){
	var val = this.options[this.selectedIndex].value;
	if (val) {
		window.location = xcart_web_dir + '/' + val;
	}
	return true;
}

/******************************************************************/
/* start typeout */
(function(jQuery) {
	jQuery.fn.typeout = function (options){
		var opts = jQuery.extend({}, jQuery.fn.typeout.defaults, options);
		return this.each(function (){
			var t = jQuery(this);
			var title = t.attr(opts.attr);
			if (title) {
				t.removeAttr(opts.attr);
				t.blur(function (){
					if (jQuery.trim(t.val()) == '') {
						t.val(title);
						if (opts.classWhenEmpty) {
							t.addClass(opts.classWhenEmpty);
						}
					}
				});
				t.focus(function (){
					if (t.val() == title) {
						t.val('');
						if (opts.classWhenEmpty) {
							t.removeClass(opts.classWhenEmpty);
						}
					}
				});
				t.parents('form:first').submit(function(){
					if (t.val() == title) {
						t.val('');
					}
				});
				t.blur();
			}
		});
	};
	jQuery.fn.typeout.defaults = {
		'classWhenEmpty' : '',
		'attr': 'alt'
	};
})(jQuery);
/* end typeout */
/******************************************************************/
/******************************************************************/
/* start product */
function productInit() {
	function p2wl_click() {
		var pid = parseInt($(this).attr('class').substring(1));
		var amount = parseInt($('#psss' + pid).val());
		if (!amount || amount < 1) {
			amount = 1;
		}

		window.location = xcart_web_dir + '/' + 'cart.php?mode=add2wl&productid=' + pid + '&amount=' + amount;
		return false;
	}
	$('#p2wl').click(p2wl_click);

	if (document.getElementById('ppd')) {
		var ppd = $('#ppd');
		if ($('.arr', ppd).length > 0) {
			ppd.rollerDiv();
		}
		$('#ppdcwr a', ppd).colorbox({
			'rel': 'di',
			'opacity': '0.7'
		});
	}
}
/* end product */
/******************************************************************/
/******************************************************************/
/* start roller_div */
(function(jQuery) {
	jQuery.fn.rollerDiv = function (options, customSettings) {
		var opts = jQuery.extend({}, jQuery.fn.rollerDiv.defaults, options);
		return this.each(function (){
			var settings = jQuery.extend({
				'init': false,
				'containerWidth': 0,
				'containerVirtualWidth': 0,
				'itemWidth': 0,
				'itemMarginRight': 0,
				'lastItemMinusPx': 0,
				'widthFullVisible': 0,
				'totalItems': 0,
				'scrollOnce': 0,
				'currentScroll': 0,
				'itemsToScrollOnce': 0
			}, customSettings);
			var wrapper = jQuery(this);
			var scroller = false;
			function initSettings() {
				var item = jQuery(opts.itemSelector + ':first', wrapper);

				if (settings.itemMarginRight) {
					var itemMarginRight = settings.itemMarginRight;
				}
				else {
					var itemMarginRight = item.css('margin-right');
					itemMarginRight = parseInt(itemMarginRight.substr(0, itemMarginRight.length-2));
				}

				var itemWidth = item.outerWidth();
				var itemWidthAndMargin = itemWidth + itemMarginRight;
				var totalItems = jQuery(opts.itemSelector, wrapper).length;

				settings.init = true;
				settings.totalItems = totalItems;
				if (settings.lastItemMinusPx == 0) {
					settings.lastItemMinusPx = itemMarginRight;
				}
				settings.itemMarginRight = itemMarginRight;
				scroller = jQuery(opts.cntSelector, wrapper);

				settings.containerWidth = scroller.width();

				if (settings.itemsToScrollOnce == 0) {
					settings.itemsToScrollOnce = parseInt((settings.containerWidth+itemMarginRight) / itemWidthAndMargin);
				}

				settings.widthFullVisible  = settings.itemsToScrollOnce * itemWidthAndMargin;

				if (opts.itemsToScrollOnce == 'faraultimul') {
					settings.itemsToScrollOnce -= 1;
				}
				if (settings.scrollOnce == 0) {
					settings.scrollOnce = settings.itemsToScrollOnce * itemWidthAndMargin;
				}
				settings.containerVirtualWidth = totalItems * itemWidthAndMargin;
				settings.itemWidth = itemWidthAndMargin;
			}
			function disableArrow(arr) {
				jQuery('.arr' + arr, wrapper).addClass('d');
			}
			function enableArrow(arr) {
				jQuery('.arr' + arr, wrapper).removeClass('d');
			}
			jQuery('.arr', wrapper).click(function () {
				var a = jQuery(this);
				var dir = 1;
				var thisArrow = 'R';
				var theOtherArrow = 'L';


				if (a.hasClass('d')) {
					return false;
				}
				if (!settings.init) {
					initSettings();
				}
				if (a.hasClass('arrL')) {
					dir = -1;
					thisArrow = 'L';
					theOtherArrow = 'R';
				}
				var newScroll = settings.currentScroll + settings.scrollOnce * dir;

				if (newScroll <= 0) {
					newScroll = 0;
					disableArrow('L');
				}
				else if (dir == 1 && (newScroll + settings.scrollOnce >= settings.containerVirtualWidth - settings.lastItemMinusPx)) {
					newScroll = settings.containerVirtualWidth - settings.containerWidth - settings.lastItemMinusPx;
					disableArrow('R');
				}
				if (scroller) {
					scroller.animate({scrollLeft: newScroll}, 1000);
					settings.currentScroll = newScroll;
				}
				enableArrow(theOtherArrow);
				return false;
			});
		});
	};
	jQuery.fn.rollerDiv.defaults = {
		'itemSelector': '#ppdcwr a',
		'cntSelector': '#ppdcnt',
		'classWhenEmpty' : '',
		'itemsToScrollOnce': 'max',
		'attr': 'alt'
	};
})(jQuery);
/* end roller_div */
/******************************************************************/

/******************************************************************/
/* start cart */
function cartInit() {
	function quantity_changed() {
		jQuery('#cartForm').submit();
		return false;
	}
	jQuery('.sCq').change(quantity_changed);
}
/* end cart */
/******************************************************************/

/******************************************************************/
/* start elastic */
(function(jQuery){
	jQuery.fn.extend({
		elastic: function() {

			//	We will create a div clone of the textarea
			//	by copying these attributes from the textarea to the div.
			var mimics = [
				'paddingTop',
				'paddingRight',
				'paddingBottom',
				'paddingLeft',
				'fontSize',
				'lineHeight',
				'fontFamily',
				'width',
				'fontWeight'];

			return this.each( function() {

				// Elastic only works on textareas
				if ( this.type != 'textarea' ) {
					return false;
				}

				var $textarea	=	jQuery(this),
					$twin		=	jQuery('<div />').css({'position': 'absolute','display':'none','word-wrap':'break-word'}),
					lineHeight	=	parseInt($textarea.css('line-height'),10) || parseInt($textarea.css('font-size'),'10'),
					minheight	=	16,
					maxheight	=	parseInt($textarea.css('max-height'),10) || Number.MAX_VALUE,
					goalheight	=	0,
					i 			=	0;

				// Opera returns max-height of -1 if not set
				if (maxheight < 0) { maxheight = Number.MAX_VALUE; }

				// Append the twin to the DOM
				// We are going to meassure the height of this, not the textarea.
				$twin.appendTo($textarea.parent());

				// Copy the essential styles (mimics) from the textarea to the twin
				var i = mimics.length;
				while(i--){
					$twin.css(mimics[i].toString(),$textarea.css(mimics[i].toString()));
				}


				// Sets a given height and overflow state on the textarea
				function setHeightAndOverflow(height, overflow){
					curratedHeight = Math.floor(parseInt(height,10));
					//console.log(height, curratedHeight);
					if($textarea.height() != curratedHeight){
						$textarea.css({'height': curratedHeight + 'px','overflow':overflow});
					}
				}


				// This function will update the height of the textarea if necessary
				function update() {

					// Get curated content from the textarea.
					var textareaContent = $textarea.val().replace(/&/g,'&amp;').replace(/  /g, '&nbsp;').replace(/<|>/g, '&gt;').replace(/\n/g, '<br />');

					var twinContent = $twin.html();

					if(textareaContent+'&nbsp;' != twinContent){

						// Add an extra white space so new rows are added when you are at the end of a row.
						$twin.html(textareaContent+'&nbsp;');

						// Change textarea height if twin plus the height of one line differs more than 3 pixel from textarea height
						if(Math.abs($twin.height() - $textarea.height()) > 3){
							var goalheight = $twin.height();
							if (textareaContent && goalheight < 28) {
								goalheight = 28;
							}
							if(goalheight >= maxheight) {
								setHeightAndOverflow(maxheight,'auto');
							} else if(goalheight <= minheight) {
								setHeightAndOverflow(minheight,'hidden');
							} else {
								setHeightAndOverflow(goalheight,'hidden');
							}

						}

					}

				}

				// Hide scrollbars
				$textarea.css({'overflow':'hidden'});

				// Update textarea size on keyup
				$textarea.keyup(function(){ update(); });

				// And this line is to catch the browser paste event
				$textarea.live('input paste',function(e){ setTimeout( update, 250); });

				// Run update once when elastic is initialized
				update();

			});

        }
    });
})(jQuery);
/* end elastic */
/******************************************************************/

/******************************************************************/
// start Simple_Page_Checkout
function checkoutInit() {
	var isLoginCallback = false;
	var unameTimer = false;
	var aMlivrBusy = false;
	var isSpMatrix = false;
	var isPowerSh = false;
	var isUsernameTaken = false;

	if (cpObj.isSpM) {
		isSpMatrix = true;
	}
	if (cpObj.isPowerSh) {
		isPowerSh = true;
	}

	function fieldIsRequired(field) {
		if ('undefined' == typeof(requiredFields)) {
			return false;
		}
		var n = requiredFields.length;
		var i;
		for (i = 0; i < n; i++) {
			// fuck ie
			if (!requiredFields[i] || !requiredFields[i][0]) {
				continue;
			}
			if (field == requiredFields[i][0]) {
				return true;
			}
		}
		return false;
	}
	function _callbackChecks(root) {
		_callbackCheckRedirect(root);
	}
	function _callbackCheckRedirect(root) {
		var r = jQuery('redirect', root);
		if (r.length >= 1) {
			r = r.filter(':first').text();
			_redirect(r);
		}
	}

	function loginCallback(data, status) {
		//console.log('in login callback', data);
		var root = jQuery(data);
		if (root.length < 1) {
			_animStopLogin();
			return false;
		}

		_callbackChecks(root);

		var error = $('error', root);
		if (error.length >= 1) {
			// avem o eroare
			_animStopLogin();
			alert(cpError.err_invalid_login);
			return false;
		}
		// toate bune...

		isLoginCallback = true;

		//
		// sa afisam formular de logout
		//
		$('#cartTtlR').remove();
		$('#cartLoginForm').dialog('close');

		_liveLoginBox();

		// hide registration
		$('#registrationSection').remove();


		//
		// sa prelucram user_data + newslists
		//

		if (isPowerSh) {
			var _make_b_city = false;
			var _make_s_city = false;
		}

		$('user_data > *', root).each(function (){
			//console.log(this.tagName);
			//console.log('l-am gasit');
			var t = jQuery(this);
			var elem = jQuery('#' + this.tagName);
			var tagType = elem.attr('tagName');

			if ('INPUT' == tagType) {
				var type = elem.attr('type');
				var val = t.text();
				if ('checkbox' == type) {
					var checked = elem.attr('checked');
					// should we click this elem ?
					if (!checked && val == 'Y') {
						elem.attr('checked', 'checked').click().attr('checked', 'checked');
					}
					else if (checked && val != 'Y') {
						elem.removeAttr('checked').click().removeAttr('checked');
					}

				}
				else {
					elem.val(t.text());
				}
			}
			else if ('SELECT' == tagType) {
				if (isPowerSh) {
					if (elem.attr('id') == 'b_city') {
						_make_b_city = t.text();
						//alert('avem _make_b_city ' + _make_b_city);
					}
					else if (elem.attr('id') == 's_city') {
						_make_s_city = t.text();
						//alert('avem _make_s_city ' + _make_s_city);
					}
				}
				//console.log(tagType, elem);
				elem.val(t.text());
			}
			else {
				elem.html(t.text());
			}
			//return false;
		});

		if (isPowerSh) {
			if (_make_b_city) {
				jQuery('#b_state').change();
				if (jQuery.browser.msie) {
					setTimeout(function () {
						jQuery('#b_city').val(_make_b_city + '');
					}, 100);
				}
				else {
					jQuery('#b_city').val(_make_b_city + '');
				}

			}
			if (_make_s_city) {
				jQuery('#s_state').change();
				if (jQuery.browser.msie) {
					setTimeout(function () {
						jQuery('#s_city').val(_make_s_city + '');
					}, 100);
				}
				else {
					jQuery('#s_city').val(_make_s_city + '');
				}
			}
		}


		if (isSpMatrix) {
			//spmatrix
			spMatrixCallback(data, status);
		}
		else {
			// shipping
			shippingCallback(data, status);
			// payments
			_redisplayPaymentsCallback(data, status);
		}
		_animStopLogin();
		isLoginCallback = false;
	}

	function shippingCallback(data, status) {
		if (isSpMatrix) {
			spMatrixCallback(data, status);
			return;
		}
		aMlivrBusy = false;
		var root = jQuery(data);

		if (root.length < 1) {
			return false;
		}
		var hasMark = $('no_shipping', root).length;
		if (hasMark > 0) {
			$('#checkoutShippingWait, #checkoutShippingDisplay').css('display', 'none');
			$('#checkoutShippingMessage, #checkoutShippingError').css('display', '');
			return false;
		}

		hasMark = $('free_shipping', root).length;

		$('#checkoutShippingMessage, #checkoutShippingWait, #checkoutShippingError').css('display', 'none');
		$('#checkoutShippingDisplay').html($('shipping_box', root).text()).css('display', '');
		_liveCpSm();

		// caci daca avem isLoginCallback, vom ajunge in changePaymentCallback

		if (!isLoginCallback) {
			_redisplayCartCallback(data, status);
			_animStopCartBox();
		}
		aMlivrBusy = false;
	}

	function changeShippingCallback(data, status) {
		_redisplayCartCallback(data, status);
		_animStopCartBox();
	}
	function changePaymentCallback(data, status) {
		//console.log('intru in changePaymentCallback');
		var root = jQuery(data);
		if (root.length < 1) {
			return false;
		}
		var mark = $('payment_changed_error', root);
		if (mark.length > 0) {
			// stim ca acum avem doar not_found
			// TODO -> use jui
			alert(cpError.lbl_spc_err_payment);
			return;
		}
		_redisplayCartCallback(data, status);
		if (!isLoginCallback) {
			_animStopCartBox();
		}
	}
	function checkUsernameCallback(data, status) {
		_animStopCheckUsername();
		var root = jQuery(data);
		if (root.length != 1) {
			return false;
		}
		root = $('user_ok', root);
		// weepee
		if (root.length >= 1) {
			isUsernameTaken = false;
			_showPasswordArea();
			$('#checkoutUsernameUsed').css('display', 'none');
			$('#uname').removeClass('cpMIr');
			$('#img_uname').html('');
			return;
		}
		$('#checkoutUsernameUsed').css('display', 'block');
		_validateMarkWithError('uname', false)
	}
	function unsetCouponCallback(data, status) {
		//console.log('am intrat in unsetCouponCallback');
		if (isSpMatrix) {
			spMatrixCallback(data, status);
			return;
		}
		_redisplayCartCallback(data, status);
		_animStopCartBox();
	}
	function customContentCallback(data, status) {
		var root = jQuery(data);
		root = jQuery('custom_content', root);
		if (root.length < 1) {
			return false;
		}
		$('#cpScustomContent').html(root.text());
	}
	function warnMinOrderCallback(data, status) {
		var root = $(data);
		root = $('content', root);
		if (root.length < 1) {
			return false;
		}
		$('#zpc_dWMO').html(root.text());
	}

	function _redisplayCartCallback(data, status) {
		//console.log('am intrat in _redisplayCartCallback');
		var root = jQuery(data);

		// please remember that ckuck norris hates ie :D
		if (jQuery.browser.msie && parseInt(jQuery.browser.version) < 7) {
			root = jQuery('cart_box', root);
			if (root.length > 1) {
				root = jQuery(root.get(root.length-1));
			}
		}
		else {
			root = jQuery('cart_box:last', root);
		}
		if (root.length < 1) {
			//console.log('in _redisplayCartCallback nu am cart_box')
			return false;
		}
		if (root.length > 1) {
			root = jQuery(root.get(root.length-1));
		}

		$('#spcTotals').html(root.text());
		_liveCartBox();
	}
	function _redisplaySPmCallback(data, status) {
		//console.log('am intrat in cpspMwr');
		var root = jQuery(data);

		// please remember that ckuck norris hates ie :D
		if (jQuery.browser.msie && parseInt(jQuery.browser.version) < 7) {
			root = jQuery('cpspm_box', root);
			if (root.length > 1) {
				root = jQuery(root.get(root.length-1));
			}
		}
		else {
			root = jQuery('cpspm_box:last', root);
		}
		if (root.length < 1) {
			//console.log('in _redisplayCartCallback nu am cart_box')
			return false;
		}
		if (root.length > 1) {
			root = jQuery(root.get(root.length-1));
		}
		$('#cpspMwr').html(root.text()).css('display', '');
		var paymentVal = $('.cpspradio:checked').val();
		if (paymentVal) {
			paymentVal = paymentVal.substr(paymentVal.indexOf('_')+1);
		}
		else {
			paymentVal = 0;
		}
		_showPaymentDiv(paymentVal);
		_liveSPmatrix();
	}
	function _redisplayPaymentsCallback(data, status) {
		//console.log('intru in _redisplayPaymentsCallback');
		_redisplayCartCallback(data, status);

		var root = jQuery(data);
		var mark = $('payments_not_changed', root);
		if (mark.length >= 1) {
			return false;
		}
		mark = $('no_payments', root);
		if (mark.length >= 1) {
			// TODO -> shoud we alert here ?.
			$('#spcTotals').html('');
			return false;
		}
		if (jQuery.browser.msie && parseInt(jQuery.browser.version) < 7) {
			mark = jQuery('payments_box', root);
			if (mark.length > 1) {
				mark = jQuery(mark.get(mark.length-1));
			}
		}
		else {
			mark = jQuery('payments_box:last', root);
		}
		if (mark.length == 1) {
			$('#spcPayments').html(mark.text());
			_livePayments();
		}
	}
	function spMatrixCallback(data, status) {
		var root = jQuery(data);
		if (root.length < 1) {
			return false;
		}
		var hasMark = $('no_shipping', root).length;
		if (hasMark > 0) {
			$('#checkoutShippingWait, #checkoutShippingDisplay, #cpspMwr').css('display', 'none');
			$('#checkoutShippingMessage, #checkoutShippingError').css('display', 'block');
			_animStopCartBox();
			return false;
		}

		if (!isLoginCallback) {
			$('#checkoutShippingMessage, #checkoutShippingWait, #checkoutShippingError').css('display', 'none');

			var mark = $('spm_ok', root);
			if (mark.length < 1) {
				alert(cpError.errorSpmInvalid);
				_redirect(cpObj.loc);
				return;
			}
			else {
				_checkFormAction(data, status);
				_redisplayCartCallback(data, status);
				_redisplaySPmCallback(data, status);
			}
			_animStopCartBox();
		}
		else {
			_checkFormAction(data, status);
			_redisplayCartCallback(data, status);
			_redisplaySPmCallback(data, status);
			$('#checkoutShippingMessage').css('display', 'none');
		}
	}
	function _checkFormAction(data, status){
		var root = jQuery(data);

		// please remember that ckuck norris hates ie :D
		if (jQuery.browser.msie && parseInt(jQuery.browser.version) < 7) {
			root = jQuery('cpsp_form_action', root);
			if (root.length > 1) {
				root = jQuery(root.get(root.length-1));
			}
		}
		else {
			root = jQuery('cpsp_form_action:last', root);
		}

		if (root.length >= 1) {
			cpForm.attr('action', xcart_web_dir + '/payment/' + root.text());
		}
	}

	function isRegistrationRequired() {
		return (cpObj && cpObj.regReq);
	}

	function checkUsername() {
		var uname = jQuery.trim($('#uname').val());
		if ('' == uname) {
			if (isRegistrationRequired()) {
				_validateMarkWithError('uname');
			}
			return false;
		}
		isUsernameTaken = true;

		_animStartCheckUsername();
		$.get('cart.php?mode=checkout&on=checkout', {
				'request': 'check_uname',
				'c_uname': uname

			}, checkUsernameCallback);
	}
	function _showPasswordArea() {
		$('#passwd1display, #passwd2display, #membershipdisplay').css('display', '');
		$('#passwd1, #passwd2').change(_inputTextChanged);
	}
	function cartBoxDisplay(data) {
		var root = jQuery(data);
		if (root.length != 1) {
			return false;
		}
		var cart = $('cart_box', root);
		if (cart.length < 1) {
			return false;
		}
		$('#spcTotals').html(cart.text());
		_liveCartBox();
	}
	function _liveLoginBox() {
		$('.cpLoginButton, #aShowLogin').unbind();

		$('.cpLoginButton').click(function () {
			var b = jQuery(this);
			if (b.hasClass('out')) {
				window.location = xcart_web_dir + '/include/login.php?mode=logout';
			}
			else {
				//console.log('.cpLoginButton clicked to login');
				var errU = cpIsEmptyField('checkoutUser');
				var errP = cpIsEmptyField('checkoutPass')
				if (errU || errP) {
					var msg = '';
					if (errU) {
						msg += substitute(lbl_required_field_is_empty, 'field', cpError.fields['username']) + '\n';
					}
					if (errP) {
						msg += substitute(lbl_required_field_is_empty, 'field', cpError.fields['password']) + '\n';
					}
					alert(msg);
					if (!errU) {
						$('#checkoutPass').focus();
					}
					else {
						$('#checkoutUser').focus();
					}
					return false;
				}
				var u = $('#checkoutUser').attr('value');
				var p = $('#checkoutPass').attr('value');
				_animStartLogin();
				$.post('cart.php?mode=checkout&on=checkout', {
					'request': 'login',
					'username': jQuery.trim(u),
					'password': jQuery.trim(p)

				}, loginCallback);
			}
			return false;
		});
		//console.log('in _liveLoginBox');

		$('#aShowLogin').click(showloginBox);
	}
	function showloginBox() {
		var dialog = $("#cartLoginForm");
		if (dialog.hasClass('v')) {
			dialog.dialog('open');
		}
		else {
			var pad = (jQuery.browser.msie ? 10 : 0);
			dialog.addClass('v').dialog({
				autoOpen: false,
				bgiframe: true,
				resizable: false,
				height:220,
				width: (330 + pad) + 'px',
				modal: true,
				overlay: {
					backgroundColor: '#000',
					opacity: 0.5
				}
			}).dialog('open');
		}
		return false;
	}

	function _liveCpSm() {
		if (isSpMatrix) {
			return false;
		}
		$('.cpSm').click(function() {
			_animStartCartBox();
			$.get('cart.php?mode=checkout&on=checkout', {
				'request': 'change_shipping',
				'shippingid': $(this).attr('value')
			}, changeShippingCallback);
		});
	}
	function _liveCartBox() {
		$('.cpScupon').click(function (){
			var cupon = jQuery(this).attr('id').substr(6);
			_animStartCartBox();
			$.get('cart.php?mode=checkout&on=checkout', {
					'request': 'unset_coupon',
					'cupon': cupon

				}, unsetCouponCallback);
			return false;
		});
		$('.spcShowC').click(showCustomBox);
	}
	function _livePayments() {
		if (isSpMatrix) {
			return false;
		}
		$('.cpChP').click(function() {
			var t = jQuery(this);
			var value = t.attr('alt');
			cpForm.attr('action', xcart_web_dir + '/payment/' + value);
			value = t.attr('value');
			_showPaymentDiv(value);
			//_animStartCartBox();
			$.get('cart.php?mode=checkout&on=checkout', {
				'request': 'change_payment',
				'paymentid': value
			}, changePaymentCallback);
		});
	}
	function _liveSPmatrix() {
		$('.cpspradio').click(function() {
			var t = jQuery(this);
			_animStartCartBox();

			// sa trimitem formularul unde trebuie
			var val = t.attr('alt');
			cpForm.attr('action', xcart_web_dir + '/payment/' + val);

			val = t.attr('value');
			var paymentVal = val.substr(val.indexOf('_')+1);
			_showPaymentDiv(paymentVal);
			//console.log(paymentVal);
			$.get('cart.php?mode=checkout&on=checkout', {
				'request': 'changeSPm',
				'val': val

			}, spMatrixCallback);
			$('#cpspMatrix b.cpspbsel').removeClass('cpspbsel');
			$('.cpspmitemSel').removeClass('cpspmitemSel');
			t.parents('.cpspmitem').addClass('cpspmitemSel').children('b').addClass('cpspbsel');
		});
		$('.cpspmitem:has(input)').addClass('cpspmitemJs').click(function(e) {
			var elem = jQuery(this);
			var target = jQuery(e.target);
			if (target.is('input') || elem.is('input')) {
				//console.log('facem click pe input');
			}
			else{
				//console.log(elem, '\n\n', target);
				$('input', elem).click();
			}
			// console.log(t.attr('tagName').toLowerCase());
			//
			// return false;
		});
	}
	function _liveTerms() {
		$('.cpBterms').click(function (){
			hideBoxCustom();
			if (jQuery(this).hasClass('yes')) {
				$('#agree_to_terms').attr('checked', 'checked');
			}
			else {
				$('#agree_to_terms').removeAttr('checked');
			}
			return false;
		});
	}

	function _showPaymentDiv(id) {
		if (document.getElementById('template_div' + id)){
			$('.cppdiv').removeClass('cpTpShow');
			$('#cpTrToHide, #template_div' + id).addClass('cpTpShow').addClass('crap');
		}
		else {
			$('#cpTrToHide, .cppdiv').removeClass('cpTpShow');
		}
	}
	function showCustomBox(item) {
		var item = jQuery(this);
		//console.log('am intrat in functie');

		var d = $('#cpShowCustom');

		if (!d.data('isDialog')) {
			var pad = (jQuery.browser.msie ? 15 : 0);
			d.dialog({
				autoOpen: false,
				bgiframe: true,
				resizable: false,
				height:490,
				width: (780 + pad) + 'px',
				modal: true,
				overlay: {
					backgroundColor: '#000',
					opacity: 0.5
				}
			}).data('isDialog', true);
		}

		var title = item.attr('title');
		if (title == '') {
			title = item.text();
		}

		d.dialog('option', 'title', title);


		var wrContent = $('#cpScustomContent');
		wrContent.html('').removeClass('show');
		var wait = $('#cpCustomWait');
		wait.addClass('show');

		d.dialog('open');

		var req = item.attr('rel');
		$.get('cart.php?mode=checkout&on=checkout', {
				'request': 'customContent',
				'subrequest': req
			}, function (data) {
				var root = jQuery('custom_content', jQuery(data));
				if (root.length < 1) {
					d.dialog('close');
				}
				wait.removeClass('show');
				wrContent.html(root.text()).addClass('show');

				if (req == 'terms') {
					_liveTerms();
				}
			}
		);

		return false;
	}
	function hideBoxCustom(){
		$('#cpShowCustom').dialog('close');
	}
	function warnMinOrder() {
		if (document.getElementById('zpc_dWMO')) {
			$('#zpc_dWMO').dialog('open');
			return true;
		}

		var html = '<div id="zpc_dWMO"></div>';
		var d = $(html).appendTo(cpForm);
		d.dialog({
			'modal': true,
			'width': '560px',
			'height': '400',
			'title': cpError.lbl_zpc_warnMinOrder_title
		});

		$.get('cart.php?mode=checkout&on=checkout&request=warnMinOrder', warnMinOrderCallback);
	}

	function formSubmit() {
		if (validateForm()) {
			if (cpObj.warnMinOrder) {
				warnMinOrder();
				return false;
			}
			$('#checkoutOrderSubmitted').addClass('v');
			$('#checkoutOrderButton').addClass('n');
			cpForm.submit();
		}
		return false;
	}
	function _validateEmail() {
		var val = $.trim($('#email').val());
		if (val && val.search(email_validation_regexp) > -1) {
			return true;
		}
		return false;
	}
	function _validatePasswordMatch() {
		return ($('#passwd1').val() == $('#passwd2').val() ? true : false);
	}
	function validateForm() {
		var errorMsg = '';

		var errorSomeFields = false;
		var errorRegistration = false;
		var errorPassCheck = false;
		var errorUsername = false;
		var errorShipping = false;
		var errorPayment = false;
		var errorEmail = false;
		var errorAgree = false;
		var errorSpm = false;
		var tmp = false;
		var i;

		// hai sa vedem daca e logat
		var isLogged = $('#registrationSection').length < 1 ? true : false;

		// datele formularului
		if ('undefined' != typeof(requiredFields)) {
			n = requiredFields.length;
			var field = null;
			for (i = 0; i < n; i++) {
				// fuck ie
				if (!requiredFields[i] || !requiredFields[i][0]) {
					continue;
				}
				field = requiredFields[i][0];
				if ('' == $('#' + field).val()) {
					if ((field == 'uname' || field == 'passwd1' || field == 'passwd2') && !isLogged) {
						errorRegistration = true;
					}
					errorSomeFields = true;
					_validateMarkWithError(field, false);
				}
			}
		}

		if (!isLogged && $('#uname').val() != '' && !_validatePasswordMatch()) {
			errorPassCheck = true;
		}


		tmp = $.trim($('#email').val());
		if (!_validateEmail()) {
			errorEmail = true;
			_validateMarkWithError('email', false);
		}


		if (isSpMatrix) {
			// spmatrix
			tmp = parseInt($('.cpspradio:checked').val());
			if (isNaN(tmp) || tmp < 1) {
				errorSpm = true;
			}
		}
		else {
			// shipping
			if (cpObj.chkShip) {
				tmp = parseInt($('#checkoutShippingDisplay input[name=shippingid]:checked').val());
				if (isNaN(tmp) || tmp < 1) {
					errorShipping = true;
				}
			}
			// payment
			tmp = parseInt($('#paymentOptions input[name=paymentid]:checked').val());
			if (isNaN(tmp) || tmp < 1) {
				errorPayment = true;
			}
		}

		/* agree to terms */
		if (cpObj.chkAgree) {
			tmp = $('#agree_to_terms');
			if (!tmp.attr('checked')) {
				errorAgree = true;
				_validateAgreeMarkWithError();
				tmp.click(_validateAgreeWatch);
			}
		}

		if (errorSomeFields) {
			errorMsg += '&bull; ' + cpError.errorSomeFields + '<br />';
		}
		if (errorEmail) {
			errorMsg += '&bull; ' + txt_email_invalid + '<br />';
		}
		if (errorRegistration) {
			errorMsg += '&bull; ' + cpError.errorRegistration + '<br />';
		}
		if (errorPassCheck) {
			errorMsg += '&bull; ' + cpError.errorPassMatch + '<br />';
		}
		if (isUsernameTaken) {
			errorMsg += '&bull ' + cpError.errorUsernameTaken + '<br />';
		}
		if (isSpMatrix) {
			if (errorSpm) {
				errorMsg += '&bull; ' + cpError.errorSpmNotSelected + '<br />';
			}
		}
		else {
			if (errorShipping) {
				errorMsg += '&bull; ' + cpError.errorShipping + '<br />';
			}
			if (errorPayment) {
				errorMsg += '&bull; ' + cpError.errorPayment + '<br />';
			}
		}
		if (errorAgree) {
			errorMsg += '&bull; ' + cpError.errorAgree + '<br />';
		}
		if (errorMsg == '') {
			return true;
		}

		$('#spcErrorDescr').html(errorMsg);
		$('#spcError').removeClass('n');

		tmp  = cpForm.offset();
		$(window).scrollTop(tmp.top);
		return false;
	}
	function _validateAgreeWatch() {
		_validateAgreeRemoveMarkError();
		jQuery(this).unbind('click', '_validateAgreeWatch');
	}
	function _validateAgreeMarkWithError() {
		$('#checkoutTermsAgree').addClass('err');
	}
	function _validateAgreeRemoveMarkError() {
		$('#checkoutTermsAgree').removeClass('err');
	}
	function _validateMarkWithError(field, focusIt) {
		$('#img_' + field).html('<img alt="" src="' + images_dir + '/spc_error_x.png" />');
		if (focusIt) {
			$('#' + field).addClass('cpMIr').focus();
		}
		else {
			$('#' + field).addClass('cpMIr');
		}
		//console.log('va trebui sa marchez ' + field + 'ca fiind cu eroare');
	}
	function calculateShippings(doNotAlert){
		if (aMlivrBusy) {
			return false;
		}

		var reqFields = ['state', 'country', 'conty', 'city', 'zipcode'];
		var prefix = 'b_';
		var shipTo = 'b';
		if ($('#ship2diff').attr('checked')) {
			prefix = 's_';
			shipTo = 's';
		}

		var n = reqFields.length;
		var i;
		var f = '';
		var v = '';

		var values = new Array();
		//console.log(reqFields, n);

		var isError = '';

		for (i = 0; i < n; i++) {
			f = prefix + reqFields[i];
			v = $(('#' + f)).val();
			//console.log(v + ' ' + f + ' ' + reqFields[i] + ' ' + i);
			if ('' == v && ('city' == reqFields[i] || fieldIsRequired(f))) {
				aMlivrBusy = false;
				_shippingShowButtonToCalculate();
				if (!doNotAlert) {
					_validateMarkWithError(f, true);
					alert(substitute(lbl_required_field_is_empty, 'field', cpError.fields[reqFields[i]]));
				}
				return false;
			}
		}

		_animStartCalculateShipping();

		$.get('cart.php?mode=checkout&on=checkout', {
				'request': 'shipping',
				'shipTo': shipTo,
				'state': $('#' + prefix + 'state').val(),
				'country': $('#' + prefix + 'country').val(),
				'conty': $('#' + prefix + 'conty').val(),
				'zipcode': $('#' + prefix + 'zipcode').val(),
				'city': $('#' + prefix + 'city').val()

			}, shippingCallback);

		return false;
	}
	function _shippingShowButtonToCalculate() {
		$('#checkoutShippingWait, #checkoutShippingDisplay, #checkoutShippingError, #cpspMwr').css('display', 'none');
		$('#checkoutShippingMessage').css('display', '');
	}

	function _redirect(loc) {
		window.location = xcart_web_dir + '/' + loc;
	}

	function _animStartCalculateShipping() {
		$('#checkoutShippingWait').css('display', '');
	}
	function _animStopCalculateShipping() {
		$('#checkoutShippingWait').css('display', 'none');
	}

	function _animStartCartBox() {
		$('#spcTotals').css('display', 'none');
		$('#checkoutTotalsWait').css('display', '');
	}
	function _animStopCartBox() {
		$('#spcTotals').css('display', '');
		$('#checkoutTotalsWait').css('display', 'none');
	}

	function _animStartCheckUsername() {
		$('#checkoutUsernameWait').css('display', '');
	}
	function _animStopCheckUsername() {
		$('#checkoutUsernameWait').css('display', 'none');
	}

	function _animStartLogin(){
		return true;
	}
	function _animStopLogin(){
		return true;
	}

	function _inputTextChanged() {
		if (isLoginCallback) {
			return false;
		}
		var t = jQuery(this);

		if (jQuery.trim(t.val()) != '' && (t.attr('id') != 'email' || _validateEmail())) {
			t.removeClass('cpMIr');
			$('#img_' + t.attr('id')).html('');
		}
	}

	function cpIsEmptyField(id, value) {
		var elem = $("#" + id);
		if (elem.length != 1) {
			return true;
		}
		var val = jQuery.trim(elem.attr('value'));
		if (val == '' || val == elem.attr('alt')) {
			return true;
		}
		return false;
	}
	var zpcShWatch_inner = false;

	function zpcShWatch() {
		if (zpcShWatch_inner) {
			//console.log('zpcShWatch_inner');
			return false;
		}
		zpcShWatch_inner = true;
		var el = jQuery(this);
		var val = el.val();
		var id = el.attr('id');
		var id1 = id.substr(0,1);
		var id2 = id.substr(2);

		//console.log('zpcShWatch triggered for: #' + id + ', value: ' + val);

		var ship2diff = $('#ship2diff').attr('checked');
		var s = '';
		if (ship2diff && id1 == 's') {
			s = 's';
		}
		else if (!ship2diff && id1 == 'b') {
			s = 'b';
		}

		//console.log(id1, id2, ship2diff, s);

		var clone = false;
		if (id1 == 'c') {
			if (ship2diff) {
				clone = 's';
			}
			else {
				clone = 'b';
			}
		}
		else if (s) {
			clone = 'c';
		}
		if (clone) {
			var clone_id = '#' + clone + '_' + id2;
			jQuery(clone_id).val(val);
			if (id2 == 'city' && s) {
				jQuery(clone_id).val(val);
				//alert();
			}
		}

		//console.log('zpcShWatch');
		if (s && id2 == 'state') {
			//console.log('trebuie sa schimbam orasele ptr c');
			jQuery('#c_city').html(jQuery('#' + s + '_city').html());
		}
		if (id2 == 'city' || !s || (s && id2 == 'state')) {
			if (isLoginCallback) {
				zpcShWatch_inner = false;
				return false;
			}
			//console.log('zpcShWatch will calculateShippings');
			calculateShippings(true);
		}

		zpcShWatch_inner = false;
	}
	function aCpnChange() {
		jQuery('#cpnFrmT, #couponForm').addClass('cd');
		return false;
	}
	function fWatchGetElem(id) {
		var id_msg = 'zpc_fmsg_' + id;

		if (!document.getElementById(id_msg)) {
			var wr = $('#zpcStp1');

			var wr_pos = wr.offset();
			var el_pos = $('#' + id).offset();
			var wr_w2 = wr.width() / 2;

			var el_msg_left = 30;

			if (wr_pos.left - el_pos.left < wr_w2) {
				el_msg_left += wr_w2;
			}

			var html = '<div id="' + id_msg + '" class="zpcfmsg" style="top:' + (el_pos.top - wr_pos.top - 2) + 'px;left:' +  el_msg_left + 'px;"></div>';
			wr.append(html);
		}
		return $('#' + id_msg);
	}
	function fMsgSet(el_msg, id, msg) {
		el_msg.removeClass('info ok not_ok').addClass(msg).html(zpcWatchFields[id][msg]);
	}
	function zpcFwatchFocus() {
		var el = $(this);
		var id = el.attr('id');
		var el_msg = fWatchGetElem(id);

		fMsgSet(el_msg, id, 'info');
	}

	function zpcFwatchBlur() {
		var el = $(this);
		var id = el.attr('id');
		var el_msg = fWatchGetElem(id);

		var val = $.trim(el.val());

		var msg = 'ok';
		if (val == '' || (id == 'email' && !_validateEmail())) {
			msg = 'not_ok';
		}

		fMsgSet(el_msg, id, msg);
	}
	function formElementChanged() {
		var data = new Object();

		$('input,select,textarea', cpForm).each(function () {
			var el = $(this);
			var name = el.attr('name');
			var val = el.val();
			if (el.attr('tagName').toUpperCase() == 'INPUT') {
				var type = el.attr('type').toUpperCase();
				if (type == 'RADIO' || type == 'CHECKBOX') {
					val = $('[name=' + name + ']:checked', cpForm).val();
					if (typeof(val) == 'undefined') {
						val = '';
					}
				}
			}
			data[name] = val;
		});
		$.post('cart.php?mode=checkout&on=checkout&request=field_changed', data);
		//console.log(data);
	}

	var cpForm = $('#cpForm');

	$('.show_box').click(function (){
		var t = jQuery(this);
		var showBox = t.attr('checked');
		if (showBox) {
			$("#" + t.attr('id') + '_s_box' ).css('display', '');
		}
		else {
			$("#" + t.attr('id') + '_s_box' ).css('display', 'none');
		}
	});
	$('#uname').keyup(function (){
		clearTimeout(unameTimer);
		unameTimer = setTimeout(checkUsername, 1000);
	});
	$('#aMlivr').click(function () {
		calculateShippings();
		return false;
	});

	$('#ship2diff').click(function () {
		if (isLoginCallback) {
			return false;
		}
		_shippingShowButtonToCalculate();
	});

	if (isPowerSh) {
		power_shipping_init();
	}

	/*
	$('#b_state, #b_country, #b_conty, #b_zipcode, #b_city, #s_state, #s_country, #s_conty, #s_zipcode, #s_city').live('change', function () {
		if (isLoginCallback) {
			return false;
		}
		calculateShippings(true);
	});
	// */

	$('#b_state, #b_city, #s_state, #s_city, #c_state, #c_city').live('change', zpcShWatch);

	$('#spcSbm').click(formSubmit);

	$('.spcScustom').click(showCustomBox);

	$('.spcInnerBoxDoSpLeft td input[type=text]').change(_inputTextChanged);

	$('#zpcCnotes').typeout({
		'attr': 'title',
		'classWhenEmpty': 'empty'
	}).elastic();

	if (typeof(zpcWatchFields) == 'object') {
		for (var f_id in zpcWatchFields) {
			jQuery('#' + f_id).focus(zpcFwatchFocus).blur(zpcFwatchBlur);
		}
	}
	//var elements = $(cpForm.attr('elements'));
	var elements = $('input,select,textarea', cpForm);
	elements.live('change', formElementChanged);

	_liveLoginBox();
	_liveCpSm();
	_liveCartBox();
	_livePayments();
	_liveSPmatrix();
}
// end Simple_Page_Checkout
/******************************************************************/

function watchForTabPressOnSelectIE6(e) {
	if (e.keyCode == 9) {
		var el = $(this);
		setTimeout('$("#' + el.attr('id') + '").change();', 50);
	}
}

/******************************************************************/
/* start PowerShipping */
function PowerShipping() {
	this.version = 0.2;
	this.ie6 = (jQuery.browser.msie && parseInt(jQuery.browser.version) < 7);

	PowerShipping.prototype.init = function () {
		//console.log('PowerShipping object created');
		this.assureObserving();
		this.cities = [];
	}
	PowerShipping.prototype.hook_change_states = function (obj){
		//console.log('in hook_change_states', obj, obj.oldSelectedIndex);


		// this: window.powerShipping
		this.doSomething(jQuery(obj).attr('id'));
		//this.assureObserving();
	}
	PowerShipping.prototype.assureObserving = function(){
		//console.log('in assureObserving');
		if (this.ie6) {
			jQuery('#b_state, #s_state, #c_state').live('keydown', watchForTabPressOnSelectIE6);
		}
		jQuery('#b_state, #s_state, #c_state').live('change', this.changeState);
	}
	PowerShipping.prototype.changeState = function () {
		//console.log('in change');

		// here 'this' is the object where the event occured, NOT window.powerShipping, we need window.powerShipping;
		window.powerShipping.doSomething(jQuery(this).attr('id'));
	}
	PowerShipping.prototype.getCities = function (state_value) {
		//console.log('tre sa luam orasele pentru ' + state_value);

		// we need  synchronous  mode
		jQuery.ajax({
			type: 'GET',
			url: xcart_web_dir + '/getCities.php',
			dataType: 'json',
			success: function(data) {
				//console.log(state_value, data);
				window.powerShipping.cities[state_value] = data;
			},
			data: {
				code: state_value
			},
			async: false
		});
		//console.log(window.powerShipping.cities[state_value]);
	}

	// identifier: b_* / s_* => b/s
	PowerShipping.prototype.doSomething = function (identifier) {
		identifier = identifier.substr(0,1);
		//var country_id = where + '_country';
		var city_id = identifier + '_city';
		var state_id = identifier + '_state';
		if (!document.getElementById(city_id)) {
			return;
		}

		//console.log('trying todo something for', identifier, city_id, state_id);

		var selectForCities = false;
		var city = jQuery('#' + city_id);
		var tagName = city.attr('tagName').toUpperCase();

		if (document.getElementById(state_id)) {
			var state_el = jQuery('#' + state_id);
			var state_value = state_el.val();
			if (state_value) {
				var first_option = $('option:first', state_el);
				if (!first_option.val()) {
					first_option.remove();
				}
			}
			if (!state_value && cpObj) {
				state_value = '_not_';
				var empty_city = {
					cityid: 0,
					city: '[Va rugam alegeti]'
				};

				this.cities[state_value] = [];
				this.cities[state_value][0] = empty_city;

			}
			if (!this.cities[state_value]) {
				// try to load cities from the select box.
				this.getCities(state_value);
			}
			if (this.cities[state_value]) {
				selectForCities = true;
			}
			//console.log(window.powerShipping.cities[state_value]);
		}


		//console.log(tagName, selectForCities);
		if (selectForCities) {
			var oldValue = city.val();
			if (tagName == 'SELECT') {
				city.get(0).options.length = 0;
			}
			else {
				city.replaceWith('<select id="' + city_id + '"></select>');
				city = jQuery('#' + city_id);
			}
			n = this.cities[state_value].length;
			var html = '';
			var c = '';
			//console.log(oldValue);
			for (i = 0; i < n; i++) {
				c = this.cities[state_value][i].city;
				html += '<option value="' + c + '"' + (c == oldValue ? ' selected="selected"' : '') + '>' + c + '</option>';
			}
			//console.log(html);
			city.html(html);
			//console.log(identifier);
			//console.log('e cazul');
		}
		else if (tagName != 'INPUT') {
			city.replaceWith('<input id="' + city_id + '" value="" />');
		}
		if (identifier == 'c') {
			var clone_id = 'b_city';
			if (jQuery('#ship2diff').attr('checked')) {
				clone_id = 's_city';
			}
			var clone = jQuery('#' + clone_id);
			if (selectForCities) {
				clone.replaceWith('<select id="' + clone_id + '" name="' + clone_id + '">' + html + '</select>');
			}
			else if (tagName != 'INPUT') {
				clone.replaceWith('<input id="' + clone_id + '" name="' + clone_id + '" value="" />');
			}
			//console.log('pwsh will trigger change for:' + clone_id);
			//clone.change();

		}
	}
	this.init();
}

/*
paginile care folosesc modulul de PowerShipping (register/checkout)
trebuie sa apeleze
*/
function power_shipping_init() {
	jQuery(function (){
		if (!window.powerShipping) {
			window.powerShipping = new PowerShipping();
		}
	});
}
function power_shipping_hook_change_states(obj){
	if (window.powerShipping) {
		window.powerShipping.hook_change_states(obj);
	}
}

/* end PowerShipping */
/******************************************************************/

