Asset.images([
	'images/moognify.gif',
	'images/down.gif',
	'images/upl.gif'
]);

MooWaiter = {
  // the script to wait this amount of msecs until it shows the loading element
  timeUntilShow: 250,

  // opacity of loading element
  opacity: 0.8,

  // Start waiting status - show loading element
  startWaiting: function(className, timeUntilShow, opacity) {
    element = this;
    className = className || 'waiting';
    timeUntilShow = timeUntilShow || MooWaiter.timeUntilShow;
    opacity = opacity || MooWaiter.opacity;
    element._waiting = true;
    if (!element._loading) {
      var e = element._loading = new Element('div', {
      	'styles': {
      		'position': 'absolute',
      		'opacity': opacity
      	}
      }).injectInside(/*element.offsetParent*/$(element).getParent() || document.body);
    }
    element._loading.className = className;
    (function() {
      if (this._waiting) {
        $(this._loading).setStyles({
          'left': this.getLeft(),
          'top': this.getTop(),
          'width': this.getSize().size.x,
          'height': this.getSize().size.y
        });
      }
    }).bind(element).delay(timeUntilShow);
    return this;
  },

  // Stop waiting status - hide loading element
  stopWaiting: function() {
    element = this;
    if (element._waiting) {
      element._waiting = false;
      //element._loading.parentNode.removeChild(element._loading);
      $(element._loading).remove();
      element._loading = null;
    }
    return this;
  }
};

if (MooTools) {
  Element.extend(MooWaiter);

  /* Extends functionality from <Waiter> into <Ajax>.

     Additional Options:
     useWaiter - (boolean) if true will automatically apply a <Waiter> to the update target; defaults to false. Note: if you do not specify a value for update option this is ignored.
     waiterOptions - (object) options value passed on to <Waiter> class.
     waiterTarget - (element) if specified, the Waiter will overlay this element, otherwise it uses the update target specified in the ajax options.
  */
  if (typeof Ajax != "undefined") {
     var Ajax = Ajax.extend({
         options: {
           useWaiter: false,
           waiterOptions: {
             className: 'waiting',
             timeUntilShow: MooWaiter.timeUntilShow,
             opacity: MooWaiter.opacity
           },
           waiterTarget: false
         },
         initialize: function(url, options) {
           this.parent(url, options);
           if (this.options.useWaiter && ($(this.options.waiterTarget) || $(this.options.update))) {
             var stop = function() {
               ($(this.options.waiterTarget) || $(this.options.update)).stopWaiting();
             }.bind(this);
             this.addEvent('onComplete', stop);
             this.addEvent('onFailure', stop);
           }
         },
         request: function(data) {
           if (this.options.useWaiter) {
             try {
               ($(this.options.waiterTarget) || $(this.options.update)).startWaiting(this.options.waiterOptions.className, this.options.waiterOptions.timeUntilShow, this.options.waiterOptions.opacity);
             } catch(e) {}
           }
           this.parent(data);
           return this;
         }
     });
  }
}

var Blackbox = {
	init: function(options){
		this.eventPosition = this.position.bind(this);
		this.overlay = new Element('div', {'id': 'lbOverlay'}).injectInside(document.body);
		this.fx = { overlay: this.overlay.effect('opacity', {duration: 10}).hide() };
		this.position();
		this.setup(true);
		this.fx.overlay.start(0.8);
		this.overlay.onclick = this.close.bind(this);
	},

	position: function(){
		var divPosition = window.ie6 ? 'absolute' : 'fixed';
		var divTop = window.ie6 ? window.getScrollTop() : 0;
		this.overlay.setStyles({'top': divTop, 'height': window.getHeight(), 'position': divPosition});
	},

	setup: function(open){
		var elements = $A(document.getElementsByTagName('object'));
		elements.extend(document.getElementsByTagName(window.ie ? 'select' : 'embed'));
		elements.each(function(el){
			if (open) el.lbBackupStyle = el.style.visibility;
			el.style.visibility = open ? 'hidden' : 'visible';
		});
		if (window.ie6)
		{
			var fn = open ? 'addEvent' : 'removeEvent';
			window[fn]('scroll', this.eventPosition)[fn]('resize', this.eventPosition);
		}
	},

	close: function(){
		for (var f in this.fx) this.fx[f].stop();
		this.fx.overlay.chain(this.setup.pass(false, this)).start(0);
		$('errordiv').remove();
		return false;
	}
};

function showError(text) {
	Blackbox.init();

	errordiv = new Element('div', {'id': 'errordiv'}).injectInside(document.body);
	errordiv.innerHTML = text;
	var c = errordiv.getCoordinates();

	errordiv.setStyles({
		'top': (document.body.clientHeight - c.height)/2,
		'left': (document.body.clientWidth - c.width)/2
	});

	errordiv.addEvent('click',function(){
		Blackbox.close();
	});
}

function setvoting(id) {
	new Ajax('voting.php', {
		method: 'get',
		update: 'voiting',
        useWaiter: true,
		evalScripts: true,
		data: 'action=vote&id=' + id
	}).request();
}

function setmodel(model, color) {
	if (oldcolor=='')
	{
		oldcolor = $('modelname' + oldmodel + '1').getStyle('background-color');
	}

	$('model' + oldmodel).setStyles({'display': 'none'});
	$('model' + model).setStyles({'display': 'block'});

	$('modelname' + oldmodel + '1').setStyles({'display': 'none'});
	$('modelname' + oldmodel + '2').setStyles({'display': 'block'});
	$('modelname' + model + '2').setStyles({'display': 'none'});
	$('modelname' + model + '1').setStyles({'display': 'block'});

	$('models').setStyles({'border-right': color + ' 1px solid'});

	oldmodel = model;
	oldcolor = color;
}

function opensubs(id) {
	$('subs' + id).setStyles({
		'margin-top': -374,
		'position': 'absolute',
		'display': 'block'
	});

	return false;
}

function closesubs(id) {
	$('subs' + id).setStyles({'display': 'none'});
}

function showmenu() {
	if ($('subcats').opened!=true) {
		$('submenu').removeClass('downl');
		$('submenu').addClass('upl');
		$('subcats').setStyles({
			'display': 'block',
			'position': 'absolute'
		});
		$('subcats').opened = true;
	} else {
		$('submenu').removeClass('upl');
		$('submenu').addClass('downl');
		$('subcats').setStyles({'display': 'none'});
		$('subcats').opened = false;
	}
}

function setBike(id) {
	$('specs' + oldspecs).setStyles({'display': 'none'});
	$('descr' + oldspecs).setStyles({'display': 'none'});
	$('model_' + oldspecs).removeClass('cur mod' + currmod);
	$('specs' + id).setStyles({'display': 'block'});
	$('descr' + id).setStyles({'display': 'block'});
	$('model_' + id).addClass('cur mod' + currmod);
	oldspecs = id;
}
