/*
 * ppDrag 0.2 - Extremely Fast Drag&Drop for jQuery
 * http://ppdrag.ppetrov.com/
 *
 * Copyright (c) 2008 Peter Petrov (ppetrov AT ppetrov.com)
 * Licensed under the LGPL (LGPL-LICENSE.txt) license.
 */


(function($) {
	
	$.fn.ppdrag = function(options) {
		if (typeof options == 'string') {
			if (options == 'destroy') return this.each(function() {
				$.ppdrag.removeEvent(this, 'mousedown', $.ppdrag.start, false);
				$.data(this, 'pp-ppdrag', null);
			});
		}
		return this.each(function() {
			$.data(this, 'pp-ppdrag', { options: $.extend({}, options) });
			$.ppdrag.addEvent(this, 'mousedown', $.ppdrag.start, false);
		});
	};
	
	$.ppdrag = {
		start: function(event) {
			if (!$.ppdrag.current) {
				$.ppdrag.current = { 
					el: this,
					oleft: parseInt(this.style.left) || 0,
					otop: parseInt(this.style.top) || 0,
					ox: event.pageX || event.screenX,
					oy: event.pageY || event.screenY
				};
				var current = $.ppdrag.current;
				var data = $.data(current.el, 'pp-ppdrag');
				if (data.options.zIndex) {
					current.zIndex = current.el.style.zIndex;
					current.el.style.zIndex = data.options.zIndex;
				}
				$.ppdrag.addEvent(document, 'mouseup', $.ppdrag.stop, true);
				$.ppdrag.addEvent(document, 'mousemove', $.ppdrag.drag, true);
			}
			if (event.stopPropagation) event.stopPropagation();
			if (event.preventDefault) event.preventDefault();
			return false;
		},
		
		drag: function(event) {
			if (!event) var event = window.event;
			var current = $.ppdrag.current;
			
			//individ fix
			drag=1;
			left_val = (current.oleft + (event.pageX || event.screenX) - current.ox);
			left_val_l = parseInt(document.getElementById("box_ppdrag_l").offsetLeft)+0;
			left_val_r = parseInt(document.getElementById("box_ppdrag_r").offsetLeft)+0;
			if (left_val<(10)) drag=0;
			if (left_val>right_limit) drag=0;
			
			//drag_step_cof = Math.round((left_val-10)/drag_step);
			//left_val = drag_step*drag_step_cof+10;
			
			arLeftData = new Array();
			arLeftData = [].concat(arLeftRev)
			arLeftData.push(left_val)
			arLeftData.sort(sortNumber)
			k = arraySearch(arLeftData,left_val)
			k_min = left_val - arLeftData[(k-1)]
			k_max = arLeftData[(k+1)] - left_val
			if(k_min<k_max)
				left_val = arLeftData[(k-1)]
			else
				left_val = arLeftData[(k+1)]
			
			
			
			if(current.el.id=="box_ppdrag_l" && left_val>=left_val_r) drag=0;
			if(current.el.id=="box_ppdrag_l" && left_val==left_val_l) drag=0;
			if(current.el.id=="box_ppdrag_r" && left_val<=left_val_l) drag=0;
			if(current.el.id=="box_ppdrag_r" && left_val==left_val_r) drag=0;
			
			if(drag==1){
				current.el.style.left = left_val + 'px';
				thisRis = arLeft[left_val];
				if(current.el.id=="box_ppdrag_l"){
					$("#dateline_info_c_l").html(ar_info[thisRis]);
					date_from = ar_f[thisRis];
					$('#h_date_from').val(date_from)
				}else{
					$("#dateline_info_c_r").html(ar_info[thisRis]);
					date_to = ar_e[thisRis];
					$('#h_date_to').val(date_to)
				}
			}
			
			dateline_info_act();
			
			if (event.stopPropagation) event.stopPropagation();
			if (event.preventDefault) event.preventDefault();
			return false;
		},
		
		stop: function(event) {
			var current = $.ppdrag.current;
			var data = $.data(current.el, 'pp-ppdrag');
			$.ppdrag.removeEvent(document, 'mousemove', $.ppdrag.drag, true);
			$.ppdrag.removeEvent(document, 'mouseup', $.ppdrag.stop, true);
			if (data.options.zIndex) {
				current.el.style.zIndex = current.zIndex;
			}
			if (data.options.stop) {
				data.options.stop.apply(current.el, [ current.el ]);
			}
			$.ppdrag.current = null;
			if (event.stopPropagation) event.stopPropagation();
			if (event.preventDefault) event.preventDefault();
			
			clear_markers();
			ajax_markers();
			
			return false;
		},
		
		addEvent: function(obj, type, fn, mode) {
			if (obj.addEventListener)
				obj.addEventListener(type, fn, mode);
			else if (obj.attachEvent) {
				obj["e"+type+fn] = fn;
				obj[type+fn] = function() { return obj["e"+type+fn](window.event); }
				obj.attachEvent("on"+type, obj[type+fn]);
			}
		},
		
		removeEvent: function(obj, type, fn, mode) {
			if (obj.removeEventListener)
				obj.removeEventListener(type, fn, mode);
			else if (obj.detachEvent) {
				obj.detachEvent("on"+type, obj[type+fn]);
				obj[type+fn] = null;
				obj["e"+type+fn] = null;
			}
		}
		
	};

})(jQuery);



function viewObject(name) 
{ 
var obj = eval(name), i; 

if(!obj) 
{ 
alert("\""+name+"\" ia not an object"); 
return; 
} 

var w_Test = open("","Test","width=600,height=500,scrollbars=1"); 

if(!w_Test) 
{ 
alert("Cannot open window for "+name); 
return; 
} 

w_Test.document.open(); 

for(i in obj) 
w_Test.document.write(name+"."+i+"="+obj[i]+"<br>"); 

w_Test.document.close(); 
} 