/* jQuery regexp plugin 

hasznalat: $('div:regex(class, hirdetes_.*)') 
			(Azok a divek, ahol a class illeszkedik erre: hirdetes_.*)
	
*/
jQuery.expr[':'].regex = function(elem, index, match) {
    var matchParams = match[3].split(','),
        validLabels = /^(data|css):/,
        attr = {
            method: matchParams[0].match(validLabels) ? 
                        matchParams[0].split(':')[0] : 'attr',
            property: matchParams.shift().replace(validLabels,'')
        },
        regexFlags = 'ig',
        regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g,''), regexFlags);
    return regex.test(jQuery(elem)[attr.method](attr.property));
}


/*
* dragndrop
* version: 1.5.0 (05/14/2010)
* @ jQuery v1.4.*
*
* Licensed under the GPL:
*   http://gplv3.fsf.org
*
* Copyright 2008, 2009 Jericho [ thisnamemeansnothing[at]gmail.com ] 
* Illesztés jQuery 1.4-hez, továbbfejlesztés: Netrix (bojti)
*
*  usage:
				$('.akarmi').Drags({	// Mit mozgassunk?

					handler: '.handler',	// Mit lehet megragadni?

					onDrag: function(e) {		},
					onMove: function(e) {		},
					onDrop: function(e) {		}
*  
*/
//(function($) {
    $.extend($.fn, {
        getCss: function(key) {
            var v = parseInt(this.css(key));
            if (isNaN(v))
                return false;
            return v;
        }
    });
    $.fn.Drags = function(opts) {
        var ps = $.extend({
            zIndex: 20,
            //opacity: .7,
            handler: null,
			onDrag: function() { },
            onMove: function() { },
            onDrop: function() { }
        }, opts);
        var dragndrop = {
            drag: function(e) {
                var dragData = e.data.dragData;
                dragData.target.css({
                    left: dragData.left + e.pageX - dragData.offLeft,
                    top: dragData.top + e.pageY - dragData.offTop
                });
                dragData.handler.css({ cursor: 'move' });
                dragData.onMove(e);
            },
            drop: function(e) {
                var dragData = e.data.dragData;
                dragData.target.css(dragData.oldCss); //.css({ 'opacity': '' });
                dragData.handler.css('cursor', dragData.oldCss.cursor);
                dragData.onDrop(e);
                $(document).unbind('mousemove', dragndrop.drag).unbind('mouseup', dragndrop.drop);
            }
        }
        return this.each(function() {
            var me = this;
            var handler = null;
            if (typeof ps.handler == 'undefined' || ps.handler == null)
                handler = $(me);
            else
                handler = (typeof ps.handler == 'string' ? $(ps.handler, this) : ps.handler);
            handler.bind('mousedown', { e: me }, function(s) {

                var target = $(s.data.e);
				if(typeof(s.pageX) == 'undefined') {
					s.pageX = (target.getCss('left') || 0) + 10;
				}
				if(typeof(s.pageY) == 'undefined') {
					s.pageY = (target.getCss('top') || 0) + 15;
				}
                var oldCss = {};
                if (target.css('position') != 'absolute') {
                    try {
                        target.position(oldCss);

                    } catch (ex) {alert(''); }
                    target.css('position', 'absolute');
                }
                oldCss.cursor = target.css('cursor') || 'default';
                //oldCss.opacity = target.getCss('opacity') || 1;
                var dragData = {
                    left: oldCss.left || target.getCss('left') || 0,
                    top: oldCss.top || target.getCss('top') || 0,
                    width: target.width() || target.getCss('width'),
                    height: target.height() || target.getCss('height'),
                    offLeft: s.pageX,
                    offTop: s.pageY,
                    oldCss: oldCss,
					//onDrag: ps.onDrag,
                    onMove: ps.onMove,
                    onDrop: ps.onDrop,
                    handler: handler,
                    target: target
                }
                //target.css('opacity', ps.opacity);
				ps.onDrag(s);
                $(document).bind('mousemove', { dragData: dragData }, dragndrop.drag).bind('mouseup', { dragData: dragData }, dragndrop.drop);
				return false;
            });
        });
    }
//})(jQuery); 