/**
 *	slider value control
 *		requires prototype.js
 *		mailto: toth.szabolcs@carnation.hu
 *
 */

	Slider = Class.create();
	Slider.prototype = {
		initialize: function( id, settings ) {

			this.parseSettings(settings);
			this.container = $(id);
			this.drag = false;
			this.value = false;
			this.percent = 0;
			this.input = false;
			
			ins = this.container.getElementsByTagName('input');
			
			if(ins[0]) {
				this.input = ins[0];
				ins[0].style.display = "none";
			}

			this.icon = document.createElement('div');
			this.icon.className = "slideIcon";
			this.icon.posLeft = 0;
			this.icon.posTop = 0;
			
			this.track = document.createElement('div');
			this.track.className = "slideTrack";
			
			this.active = document.createElement('div');
			this.active.className = "active";
			
			this.track.appendChild(this.active);
					
			this.back = document.createElement('div');
			this.back.className = "slideBack";
			
			$(id).appendChild(this.icon);
			$(id).appendChild(this.track);
			$(id).appendChild(this.back);
			
			if(this.settings.extra_content) $(id).appendChild(this.settings.extra_content);
			
			Object.extend(this.icon, this);
			Object.extend(this.track, this);
			Object.extend(this.container, this);

			this.icon.onmousedown = this.dragOn.bindAsEventListener(this);
			this.icon.onmouseup = this.dragOff.bindAsEventListener(this);
			this.track.onmousedown = this.trackOn.bindAsEventListener(this);
			
			this.setDefault();
			this.setVal( true );	

			if(this.settings.disabled) this.disable();
		},
		
		parseSettings: function( settings ) {
			this.settings = {};
			Object.extend(this.settings, settings);
			if(!this.settings.orientation) this.settings.orientation = 'horizontal';
			if(!this.settings.display_value) this.settings.display_value = false;
			if(!this.settings.value_min) this.settings.value_min = 0;
//			if(!this.settings.default_percent) this.settings.default_percent = 100;
		},
		
		globalOffsetLeft: function(){
			switch(this.settings.offsetLeft){
				case "phonerotate":
					return eval( $('page').offsetLeft + 577 );
					break;
				default:
					return eval( $('page').offsetLeft + $('rightColumn').offsetLeft + this.container.offsetLeft );
			}

		},
		globalOffsetTop: function(){
			return eval( /*$('page').offsetLeft + $('rightColumn').offsetLeft + */this.container.offsetTop );
		},		
		
		setDefault: function () {
			if( this.settings.default_percent ) {	
				posLeft = Math.floor(eval(Math.floor(eval(eval(this.settings.default_percent/100) * this.track.offsetWidth))-Math.floor(eval(this.icon.offsetWidth / 2))));
				this.icon.style.left = posLeft+"px";
				this.icon.posLeft = posLeft;
				this.active.style.left = eval(posLeft - this.active.offsetWidth )+"px";
			}
		},
		
		setVal: function() {
// 0. parameter:  cancel_onchange   true legyen az értéke, ha nem kell lefusson onchange event




			this.percent = Math.floor( eval( ((this.icon.posLeft + (Math.floor(eval(this.icon.offsetWidth / 2))) ) / (this.track.offsetWidth - (this.track.offsetWidth * 0.02)) ) * 100 ));		
			this.value = Math.floor(eval(((this.settings.value_max - this.settings.value_min)*(this.percent/100))+this.settings.value_min));


			switch( $(this.settings.value_container).tagName.toLowerCase() ) {
				case "input":						
					$(this.settings.value_container).value = (this.settings.display_value) ? this.value : this.percent;
					break;
				default:			
					$(this.settings.value_container).innerHTML = (this.settings.display_value) ? this.value+' '+this.settings.value_metric : this.percent;					
				break;
			}
			

			if(this.input){ 
				this.input.value = (this.settings.display_value) ? this.value : this.percent;
				if(!arguments[0]){ 
					if(document.createEvent){
						var chng = document.createEvent("HTMLEvents");
						chng.initEvent("change", false, true);
						this.input.dispatchEvent(chng);
					}
					if(document.fireEvent){
						this.input.fireEvent("onchange");
					}
				}
			}
		},
				
		dragOn: function() {
			b = document.getElementsByTagName('body');
			b[0].onrelease = this.bodyOff.bindAsEventListener(this);			
			b[0].onmouseup = this.bodyOff.bindAsEventListener(this);
			this.icon.onmousemove = function(e) {			
				if(e == undefined ) e = event;
				this.iconSet(e);
				this.trackSet(e);			
			}
			this.container.onmousemove = function(e) {
				if(e == undefined ) e = event;
				this.iconSet(e);
				this.trackSet(e);
			}
			if(document.fireEvent){document.onselectstart =  function() { return false; }}
		},
		
		bodyOff: function(e){
			this.icon.onmousemove = function(e) {return false; }; 
			this.container.onmousemove = function(e) {return false; }
			this.drag = false; 
			this.setVal(true);
			if(document.fireEvent){document.onselectstart =  function() {}}	
		},
		
		trackOn: function(e) {
			if(e == undefined ) e = event;
			this.iconSet(e);
			this.trackSet(e);
		},
		
		iconSet: function( e ) {
			switch(this.settings.orientation){
				case 'horizontal':
					if( Event.pointerX(e) > this.globalOffsetLeft() && Event.pointerX(e) < eval(this.globalOffsetLeft() + this.track.offsetWidth) ){
						l = eval(Event.pointerX(e)-(Math.floor(eval(this.icon.offsetWidth / 2)))-this.globalOffsetLeft());
						this.icon.style.left = l+"px";
						this.icon.posLeft = l;
					} else {
						return false; 
					}	
					break;
				case 'vertical':
					if( Event.pointerY(e) > this.globalOffsetTop() && Event.pointerY(e) < eval(this.globalOffsetTop() + this.track.offsetHeight) ){
						l = eval(Event.pointerY(e)-(Math.floor(eval(this.icon.offsetHeight / 2)))-this.globalOffsetTop());
						this.icon.style.top = l+"px";
						this.icon.posTop = l;
					} else {
						return false; 
					}	
					break;	
			}
			this.setVal();
		},
		
		trackSet: function( e ) {	
			switch(this.settings.orientation){
				case 'horizontal':
					if( Event.pointerX(e) > this.globalOffsetLeft() && Event.pointerX(e) < eval(this.globalOffsetLeft() + this.track.offsetWidth) ){
						this.active.style.left = eval(Event.pointerX(e) - 0 - this.globalOffsetLeft() - this.active.offsetWidth )+"px";
					} else {
						return false; 
					}
					break;
				case 'vertical':
					if( Event.pointerY(e) > this.globalOffsetTop() && Event.pointerY(e) < eval(this.globalOffsetTop() + this.track.offsetHeight) ){
						this.active.style.top = eval( Event.pointerY(e)  - this.active.offsetHeight*2/* - this.globalOffsetTop() */)+"px";
					} else {
						return false; 
					}
					break;	
				}
		},	
				
		dragOff: function() {
			this.drag = false; 
			this.icon.onmousemove = function(e) {return false; }
			this.container.onmousemove = function(e) {return false; }
		},
		
		disable: function() {
			if(document.agent.ie){
				this.container.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=30)";					
				$(this.settings.value_container).style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=30)";
				$(this.settings.label_container).style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=30)";
			}
			else{
				this.container.style.opacity = '0.3';
				$(this.settings.value_container).style.opacity = '0.3';
				$(this.settings.label_container).style.opacity = '0.3';
			}
			this.icon.onmousedown = function(){ return false; };
			this.icon.onmouseup = function(){ return false; };
			this.track.onmousedown = function(){ return false; };
		},
		
		enable: function() {
			if(document.agent.ie){
				this.container.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=100)";			
				$(this.settings.value_container).style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=100)";
				$(this.settings.label_container).style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=100)";
			}
			else{
				this.container.style.opacity = '1';
				$(this.settings.value_container).style.opacity = '1';
				$(this.settings.label_container).style.opacity = '1';
			}									
			this.icon.onmousedown = this.dragOn.bindAsEventListener(this);
			this.icon.onmouseup = this.dragOff.bindAsEventListener(this);
			this.track.onmousedown = this.trackOn.bindAsEventListener(this);			
		},		
		
		destruct: function() {		
			if(document.agent.ie)purge(this.icon)
			this.container.removeChild(this.icon);
			if(document.agent.ie)purge(this.track)			
			this.container.removeChild(this.track);
			if(document.agent.ie)purge(this.back)			
			this.container.removeChild(this.back);
		}
	}

	IntervalSlider = Class.create();
	IntervalSlider.prototype = {
		initialize: function( id, settings ) {

			this.parseSettings(settings);
			this.container = $(id);
			this.drag = false;
			this.currentDrag = null;
			this.value = false;
			this.percent = 0;

			
			this.inputMin = $(this.settings.min_input);
			this.inputMax = $(this.settings.max_input);
			
			this.inputMin.style.display = "none";
			this.inputMax.style.display = "none";

			this.iconMin = document.createElement('div');
			this.iconMin.className = "slideIcon";
			this.iconMin.id = "IconMin"+Math.round(eval(Math.random()*100));
			this.iconMin.posLeft = 0;
			this.iconMin.posTop = 0;

			this.iconMax = document.createElement('div');
			this.iconMax.className = "slideIcon";
			this.iconMax.id = "IconMax"+Math.round(eval(Math.random()*100));
			this.iconMax.posLeft = 0;
			this.iconMax.posTop = 0;
			
			this.track = document.createElement('div');
			this.track.className = "slideTrack";
			
			this.active = document.createElement('div');
			this.active.className = "active";
			
			this.track.appendChild(this.active);
					
			this.back = document.createElement('div');
			this.back.className = "slideBack";
			
			$(id).appendChild(this.iconMin);
			$(id).appendChild(this.iconMax);
			$(id).appendChild(this.track);
			$(id).appendChild(this.back);
			
			if(this.settings.extra_content) $(id).appendChild(this.settings.extra_content);

			this.iconMin.m	= this;
			this.iconMax.m	= this;
			this.track.m	= this;
			this.container.m= this;

			this.iconMin.onmousedown = this.dragOn.bindAsEventListener(this);
			this.iconMin.onmouseup = this.dragOff.bindAsEventListener(this);

			this.iconMax.onmousedown = this.dragOn.bindAsEventListener(this);
			this.iconMax.onmouseup = this.dragOff.bindAsEventListener(this);

			this.setDefault();
			this.setVal( true );	
			
			if(this.settings.disabled) this.disable();
		},
		
		parseSettings: function( settings ) {
			this.settings = {};
			Object.extend(this.settings, settings);
			if(!this.settings.orientation) this.settings.orientation = 'horizontal';
			if(!this.settings.display_value) this.settings.display_value = false;
			if(!this.settings.value_min) this.settings.value_min = 0;
//			if(!this.settings.default_percent) this.settings.default_percent = 100;
		},
		
		globalOffsetLeft: function(){
			
			if(this.settings.mainPage){
				return eval( $('page').offsetLeft + $('Left').offsetLeft + this.container.offsetLeft );
			} else {
				return eval( $('page').offsetLeft + $('rightColumn').offsetLeft + this.container.offsetLeft );
			}
		},
		
		globalOffsetTop: function(){
			return eval( /*$('page').offsetLeft + $('rightColumn').offsetLeft + */this.container.offsetTop );
		},
		
		
		setDefault: function () {
			
			
		

			if( (this.settings.default_min || this.settings.default_min == 0) && this.settings.default_max ) {	
			
	
			
				posLeftMin = Math.floor(
					eval(Math.floor(
						eval(
							eval(Math.round( 
								eval( 
									100*( this.settings.default_min / this.settings.value_max)
								) ) / 100
							) * 
							this.track.offsetWidth
						))  - Math.floor(							eval( this.iconMin.offsetWidth / 2))
						));
							

								
				posLeft = Math.floor(eval(Math.floor(eval(eval(Math.round( eval(100*(this.settings.default_max / this.settings.value_max)) )/100) * this.track.offsetWidth))-Math.floor(eval(this.iconMin.offsetWidth / 2))));
				
				this.iconMin.style.left = posLeftMin+"px";
				this.iconMin.posLeft = posLeftMin;
				
				this.iconMax.style.left = posLeft+"px";
				this.iconMax.posLeft = posLeft;
				
				this.active.style.left = eval(posLeft - this.active.offsetWidth )+"px";
			} else {
				posLeftMin = Math.floor(eval(Math.floor(eval(eval(0/100) * this.track.offsetWidth))+Math.floor(eval(this.iconMin.offsetWidth / 2))));
				posLeft = Math.floor(eval(Math.floor(eval(eval(99/100) * this.track.offsetWidth))-Math.floor(eval(this.iconMin.offsetWidth / 2))));
				
				this.iconMin.style.left = posLeftMin+"px";
				this.iconMin.posLeft = posLeftMin;
				
				this.iconMax.style.left = posLeft+"px";
				this.iconMax.posLeft = posLeft;
				
				this.active.style.left = eval(posLeft - this.active.offsetWidth )+"px";
			}
		},
		
/**
 *
 *	kulon lekezelni a min es a max poziciot es kimenteni az erteket
 *	
 *	
 */
		
		setVal: function() {

//console.debug('setVal');

			this.percentMin = Math.floor( eval( ((this.iconMin.posLeft + (Math.floor(eval(this.iconMin.offsetWidth / 2))) ) / (this.track.offsetWidth - (this.track.offsetWidth * 0.02)) ) * 100 ));
			this.percentMax = Math.floor( eval( ((this.iconMax.posLeft + (Math.floor(eval(this.iconMax.offsetWidth / 2))) ) / (this.track.offsetWidth - (this.track.offsetWidth * 0.02)) ) * 100 ));
					
			this.valueMin = Math.floor(eval(((this.settings.value_max - this.settings.value_min)*(this.percentMin/100))+this.settings.value_min));
			this.valueMax = Math.floor(eval(((this.settings.value_max - this.settings.value_min)*(this.percentMax/100))+this.settings.value_min));
			
			switch( $(this.settings.valueMin_container).tagName ) {
				case "input":
					$(this.settings.valueMin_container).value = (this.settings.display_value) ? this.valueMin : this.percentMin;
					$(this.settings.valueMax_container).value = (this.settings.display_value) ? this.valueMax : this.percentMax;
					break;
				default:			
					$(this.settings.valueMin_container).innerHTML = (this.settings.display_value) ? this.valueMin+' '+this.settings.value_metric : this.percentMin;					
					$(this.settings.valueMax_container).innerHTML = (this.settings.display_value) ? this.valueMax+' '+this.settings.value_metric : this.percentMax;
				break;
			}
			
			
			this.inputMin.value = (this.settings.display_value) ? this.valueMin : this.percentMin;
			this.inputMax.value = (this.settings.display_value) ? this.valueMax : this.percentMax;
			
			if(!arguments[0]){ 
				if(document.createEvent){
					var chng1 = document.createEvent("HTMLEvents");
					chng1.initEvent("change", false, true);
					this.inputMax.dispatchEvent(chng1);

				}
				if(document.fireEvent){
					this.inputMax.fireEvent("onchange");
					//this.inputMax.fireEvent("onchange");
				}
			}
			
		},
				
		dragOn: function(e) {
			if(document.agent.ie){
				etarget = e.srcElement;
			} else {
				etarget = e.target;
			}			
			
			this.currentDrag = etarget;
			
			b = document.getElementsByTagName('body');
			b[0].onrelease = this.bodyOff.bindAsEventListener(this);
			b[0].onmouseup = this.bodyOff.bindAsEventListener(this);
						
			this.currentDrag.onmousemove = function(e) {
				if(e == undefined ) e = event;
				this.m.iconSet(e);
				if( this.m.currentDrag == this.m.iconMax ){this.m.trackSet(e);}
			}
			
			this.container.onmousemove = function(e) {
				if(e == undefined ) e = event;
				this.m.iconSet(e);
				if( this.m.currentDrag == this.m.iconMax ){this.m.trackSet(e);}
			}
			
			if(document.fireEvent){document.onselectstart =  function() { return false; }}
			
		},
		
		bodyOff: function(e){
			this.iconMax.onmousemove = function(e) {return false; };
			this.iconMin.onmousemove = function(e) {return false; }; 
			this.container.onmousemove = function(e) {return false; }
			this.drag = false; 
			//this.setVal(true);
			if(document.fireEvent){document.onselectstart =  function() {}}	
		},
		
		trackOn: function(e) {
			if(e == undefined ) e = event;
			//this.iconSet(e);
			//this.trackSet(e);
		},
		
		iconSet: function( e ) {
			switch(this.settings.orientation){
				case 'horizontal':
					if(this.currentDrag == this.iconMin){
						_iconPosMin = this.globalOffsetLeft();	
						_iconPosMax = this.globalOffsetLeft()+this.iconMax.posLeft;
					} else if( this.currentDrag == this.iconMax ){
						_iconPosMin = this.globalOffsetLeft()+this.iconMin.posLeft;
						_iconPosMax = eval(this.globalOffsetLeft() + this.track.offsetWidth);
					}
									
					if( Event.pointerX(e) > _iconPosMin && Event.pointerX(e) < _iconPosMax ){
						l = eval(Event.pointerX(e)-(Math.floor(eval(this.currentDrag.offsetWidth / 2)))-this.globalOffsetLeft());
						this.currentDrag.style.left = l+"px";
						this.currentDrag.posLeft = l;
					} else {
						return false; 						
					}	
					break;
				case 'vertical':				
					if(this.currentDrag == this.iconMin){
						_iconPosMin = this.globalOffsetTop();	
						_iconPosMax = this.globalOffsetTop()+this.iconMax.posTop;
					} else if( this.currentDrag == this.iconMax ){
						_iconPosMin = this.iconMin.posTop;	
						_iconPosMax = eval(this.globalOffsetTop() + this.track.offsetHeight);
					}				
				
					if( Event.pointerY(e) > this.globalOffsetTop() && Event.pointerY(e) < eval(this.globalOffsetTop() + this.track.offsetHeight) ){
						l = eval(Event.pointerY(e)-(Math.floor(eval(this.currentDrag.offsetHeight / 2)))-this.globalOffsetTop());
						this.currentDrag.style.top = l+"px";
						this.currentDrag.posTop = l;
					} else {
						return false; 
					}	
					break;	
			}
			this.setVal();
		},
		
		trackSet: function( e ) {	
			switch(this.settings.orientation){
				case 'horizontal':
 					
					_iconPosMin = this.globalOffsetLeft()+this.iconMin.posLeft;
					_iconPosMax = eval(this.globalOffsetLeft() + this.track.offsetWidth);
									
					if( Event.pointerX(e) > _iconPosMin && Event.pointerX(e) < _iconPosMax ){
						this.active.style.left = eval(Event.pointerX(e) - 0 - this.globalOffsetLeft() - this.active.offsetWidth )+"px";
					} else {
						return false; 
					}
					break;
				case 'vertical':
					if( Event.pointerY(e) > this.globalOffsetTop() && Event.pointerY(e) < eval(this.globalOffsetTop() + this.track.offsetHeight) ){
						this.active.style.top = eval( Event.pointerY(e)  - this.active.offsetHeight*2/* - this.globalOffsetTop() */)+"px";
					} else {
						return false; 
					}
					break;	
			}
		},	
				
		dragOff: function() {
			
			this.drag = false; 
			this.currentDrag = null;
			this.iconMin.onmousemove = function(e) {return false; }
			this.iconMax.onmousemove = function(e) {return false; }
			this.container.onmousemove = function(e) {return false; }
		},
		
		disable: function() {
			if(document.agent.ie){
				this.container.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=30)";					
				$(this.settings.valueMin_container).style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=30)";
				$(this.settings.valueMax_container).style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=30)";
				$(this.settings.label_container).style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=30)";
			}
			else{
				this.container.style.opacity = '0.3';
				$(this.settings.valueMin_container).style.opacity = '0.3';
				$(this.settings.valueMax_container).style.opacity = '0.3';
				$(this.settings.label_container).style.opacity = '0.3';
			}
			
			this.iconMin.onmousedown = function(){ return false; };
			this.iconMax.onmousedown = function(){ return false; };
			this.iconMin.onmouseup = function(){ return false; };
			this.iconMax.onmouseup = function(){ return false; };
			
			//this.track.onmousedown = function(){ return false; };
		},
		
		enable: function() {
			if(document.agent.ie){
				this.container.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=100)";			
				$(this.settings.valueMin_container).style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=100)";
				$(this.settings.valueMax_container).style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=100)";
				$(this.settings.label_container).style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=100)";
			}
			else{
				this.container.style.opacity = '1';
				$(this.settings.valueMin_container).style.opacity = '1';
				$(this.settings.valueMax_container).style.opacity = '1';
				$(this.settings.label_container).style.opacity = '1';
			}									
			this.iconMin.onmousedown = this.dragOn.bindAsEventListener(this);
			this.iconMax.onmousedown = this.dragOn.bindAsEventListener(this);
			this.iconMin.onmouseup = this.dragOff.bindAsEventListener(this);
			this.iconMax.onmouseup = this.dragOff.bindAsEventListener(this);
			
			//this.track.onmousedown = this.trackOn.bindAsEventListener(this);			
		},		
		
		destruct: function() {		
			this.container.removeChild(this.iconMin);
			this.container.removeChild(this.iconMax);
			this.container.removeChild(this.track);
			this.container.removeChild(this.back);
		}
	}

