function niceSlider(id, width, shag, min, max, begin, end, onchangeLeft, onchangeRight){	this.id = id;	this.width = width;	this.shag = shag;	this.min = min;	this.max = max + this.shag;	this.begin = begin;	this.end = end;	this.proc = (this.width - 16)/(this.max - this.min);	this.shagpix = this.shag*this.proc;        var me = this;	this.slide = new slider(id, width, me.shagpix, {                    "onSlideLeft": onchangeLeft,                    "onSlideRight": onchangeRight		});        this.def(this.min, this.max);	this.init(this.begin, this.end); }niceSlider.prototype.init = function(begin, end){	if((begin >= this.min)&&(begin <= this.max)&&(end >= this.min)&&(end <= this.max)){		var b = parseInt(this.slide.determineShag((begin - this.min)*this.proc));		var c = parseInt(this.slide.determineShag((end - this.min)*this.proc));		this.slide.init(b,c);	}}niceSlider.prototype.def = function(min, max){	this.min = min;	this.max = max + this.shag;	this.proc = (this.width - 6)/(this.max - this.min);	this.shagpix = this.shag*this.proc;	this.slide.sh = this.shagpix;	this.slide.defineShag();}function slider(slidein, width, sh, masfunc, funcshag){	this.slidein = getElementByVitya(slidein);	this.masShag = Array();	this.width = width;	this.sh = sh;	if(funcshag){		this.shag = function(){ return window[funcshag].apply(window, arguments);}	}else{		this.shag = false;	}	this.createElement();	this.masfunc = masfunc;	this.defineShag();	this.addEventAll();	this.initLeft();	this.initRight();	this.initSelected();	this.assignSelected();}slider.prototype.createElement = function(){	this.selected = new Elem("DIV", {"className": "slider_selected"});	this.left = new Elem("DIV", {"className": "slider_scroll_left"});	this.right = new Elem("DIV", {"className": "slider_scroll_right"});	this.slidein.appendChild(this.selected);	this.slidein.appendChild(this.left);	this.slidein.appendChild(this.right);	this.bg = new Elem("DIV", {"className": "slider_bg"});	addEvent(this.bg, "click", createMethodReference(this, "clickSlide"));	this.bg_left = new Elem("DIV", {"className": "slider_bg_left"});	this.bg_center = new Elem("DIV", {"className": "slider_bg_center"});	this.bg_right = new Elem("DIV", {"className": "slider_bg_right"});	this.slidein.appendChild(this.bg);    this.bg.appendChild(this.bg_left);    this.bg.appendChild(this.bg_center);    this.bg.appendChild(this.bg_right);    this.bg.style.width = this.slidein.style.width;    this.slidein.style.width = this.width.toString() + "px";    this.bg_center.style.width = (this.slidein.offsetWidth - this.bg_left.offsetWidth - this.bg_right.offsetWidth - 2).toString() + "px";}slider.prototype.init = function(leftShag, rightShag){	if(leftShag == rightShag) leftShag--;	if(leftShag > rightShag){		var t = leftShag;		leftShag = rightShag;		rightShag = t;	}	this.left.shag = leftShag;	this.right.shag = rightShag;	this.appointShag(this.left, leftShag);	this.appointShag(this.right, rightShag);	this.assignSelected();}slider.prototype.clickSlide = function(e){	var x = parseInt(this.defPositionX(e));	var shag = this.determineShag(x);	if(this.left.shag > shag){		this.appointShag(this.left, shag);		this.assignSelected();	}	if(this.right.shag < shag){		this.appointShag(this.right, shag);		this.assignSelected();	}}slider.prototype.fsh = function(i){	return i*this.sh;}slider.prototype.defineShag = function(){	this.masShag = null;	this.masShag = Array();	if(!this.shag){		this.shag = this.fsh;	}	var i = 0;	this.masShag[0] = parseInt(this.shag(0));	while(true){	if(this.slidein.offsetWidth - this.right.offsetWidth < this.masShag[i]){		return true;	}	i++;		this.masShag[i] = parseInt(this.shag(i));	}}slider.prototype.determineShag = function(left){	for(var i = 0; i < this.masShag.length; i++){		if(this.masShag[i] >= left) return i - 1;	}	return this.masShag.length - 2;}slider.prototype.addEventAll = function(){	addEvent(window.document, "mouseup", createMethodReference(this, "pasiveMove"));}slider.prototype.initLeft = function(){	this.left.shag = this.determineShag(this.left.offsetLeft);	this.appointShag(this.left, this.left.shag);	addEvent(this.left, "mousedown", createMethodReference(this, "activeMove"));	addEvent(window.document, "mousemove", createMethodReference(this, "leftMove"));}slider.prototype.initRight = function(){    this.right.shag = this.determineShag(this.right.offsetLeft);	this.appointShag(this.right, this.right.shag);	addEvent(this.right, "mousedown", createMethodReference(this, "activeMove"));	addEvent(window.document, "mousemove", createMethodReference(this, "rightMove"));}slider.prototype.initSelected = function(){	addEvent(this.selected, "mousedown", createMethodReference(this, "activeMove"));	addEvent(window.document, "mousemove", createMethodReference(this, "selectedMove"));}slider.prototype.activeMove = function(e){	var elem = element(e);	elem.move = true;	elem.offset_begin = parseInt(elem.offsetLeft);	elem.posx_begin = parseInt(this.defPositionX(e));	if(elem == this.selected){		this.selected.initShag = this.determineShag(this.selected.posx_begin);		this.left.initShag = this.left.shag;		this.right.initShag = this.right.shag;	}	elem.draggable = true;    this.removeSelection();}slider.prototype.removeSelection = function(){	window.document.body.onselectstart= function(){ return false;}	if(window.getSelection){		window.getSelection().removeAllRanges();	}else if(document.selection && document.selection.clear) document.selection.clear();}slider.prototype.defaultSelection = function(e){	window.document.body.onselectstart= function(){ return true;}	if(e.preventDefault){		e = (window.event)?window.event:e;		e.preventDefault();	}}slider.prototype.pasiveMove = function(e){	this.left.move = false;	this.right.move = false;	this.selected.move = false;	this.defaultSelection(e);}slider.prototype.leftMove = function(e){	if(this.left.move){		var pos_x = parseInt(this.defPositionX(e)) + this.left.offset_begin - this.left.posx_begin;		if((pos_x > 0) && (pos_x < this.right.offsetLeft)){			this.assignShag(this.left, pos_x);		}else{			if(pos_x < 0) this.assignShag(this.left, this.masShag[1]);		}	}}slider.prototype.rightMove = function(e){	if(this.right.move){		var pos_x = parseInt(this.defPositionX(e)) + this.right.offset_begin - this.right.posx_begin;		if((pos_x <= this.slidein.offsetWidth) && (pos_x > this.left.offsetLeft)){			this.assignShag(this.right, pos_x);		}else{			if(pos_x > this.slidein.offsetWidth){				this.assignShag(this.right, this.slidein.offsetWidth);			}		}	}}slider.prototype.selectedMove = function(e){	if(this.selected.move){		var newShag   = this.determineShag(this.defPositionX(e));		var addShag   = newShag - this.selected.initShag;		var leftShag  = this.left.initShag + addShag;		var rightShag = this.right.initShag + addShag;		if((this.selected.initShag != newShag) && (leftShag >= 0) && (rightShag <= this.masShag.length - 2)){			this.appointShag(this.left, leftShag);			this.appointShag(this.right, rightShag);			this.assignSelected();		}else{			if(leftShag < 0){				this.appointShag(this.left, this.masShag[0]);				this.appointShag(this.right, rightShag - leftShag);				this.assignSelected();			}			if(rightShag > this.masShag.length - 2){				this.appointShag(this.left, leftShag + (this.masShag.length - 2 - rightShag));				this.appointShag(this.right, this.masShag.length - 2);				this.assignSelected();			}		}	}}slider.prototype.appointShag = function(el, shag){	if(this.masShag.length - 2 < shag){	  shag = this.masShag.length - 2;	}	if(shag < 0) shag = 0;	el.shag = shag;	var sh0 = parseInt(this.shag(shag));	el.style.left = sh0.toString() + "px";	if(this.masfunc){		if(el == this.left){			if(this.masfunc.onSlideLeft) this.masfunc.onSlideLeft.call(this, shag, sh0);		}		if(el == this.right){			if(this.masfunc.onSlideRight) this.masfunc.onSlideRight.call(this, shag, sh0);		}	}}slider.prototype.assignShag = function(el, pos_x){	var newShag = this.determineShag(pos_x);	if(el.shag != newShag){		var oldShag = el.shag;		el.shag = newShag;		if(this.left.shag != this.right.shag){			this.appointShag(el, el.shag);		}else{			el.shag = oldShag;		}		this.assignSelected();	}}slider.prototype.defPositionX = function(e){	return defPosition(e).x - this.slidein.offsetLeft}slider.prototype.assignSelected = function(){	this.selected.style.left = (this.left.offsetLeft + this.left.offsetWidth/2).toString() + "px";	this.selected.style.width = (this.right.offsetLeft - this.left.offsetLeft).toString() + "px";}function addEvent(elem, e, func){	if(document.addEventListener){		elem.addEventListener(e, eval(func), false);	}else{		elem.attachEvent("on"+e, eval(func));	}}function createMethodReference(object, methodName){	return function(){        return object[methodName].apply(object, arguments);    };}function element(e){	return window.event?window.event.srcElement: e.target;}function Elem(elem, masvalue, masstyle){	var element = document.createElement(elem);	for(var i in masvalue){		element[i] = masvalue[i];	}	for(var i in masstyle){		element.style[i] = masstyle[i];	}	return element;}function getElementByVitya(elem){	var result;	switch(typeof(elem)){		case "object": result = elem; break		case "string": result = document.getElementById(elem); break;	}	return result;}function defPosition(event) {    var x = y = 0;    if (document.attachEvent != null) {        x = window.event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);        y = window.event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);    } else if (!document.attachEvent && document.addEventListener) {        x = event.clientX + window.scrollX;        y = event.clientY + window.scrollY;    }    return {x:x, y:y};}
