function stopHere(evt){
	if(!evt)	var evt = window.event;
	evt.cancelBubble = true;
	if(evt.stopPropagation)	evt.stopPropagation();
}

var getElementsByClassName = function(className){
	var elements = document.getElementsByTagName('*');
	
	var nodes = new Array();
	for(var i=0;i<elements.length;i++){
		if(elements[i].className==className)
			nodes.push(elements[i]);
	}
	return nodes;
}

var DicFor = new Object();
DicFor.player = null;

DicFor.showPlayButtons = function(obj) {	
	if(DicSound.playObject)	DicSound.destroy();
	if(DicFor.player)	DicFor.hidePlayButtons();
	
// elvileg lehetne több lejátszógombot is megjeleníteni, azért vannak ezek!!!	
	
	DicFor.player = obj.parentNode;
	obj.parentNode.style.background = '#F1F8FF url(/img/ard.gif) no-repeat';
	obj.parentNode.style.backgroundPosition = '100% 5%';
	var ulp = null;
	
	console.log(obj.parentNode);
	
	if(document.all)	ulp = obj.parentNode.childNodes[4];
		else ulp = obj.parentNode.childNodes[5];
	ulp.style.display = 'block';
	for(var i=0;i<ulp.childNodes.length;i++){
		if(ulp.childNodes[i].tagName=='LI')
			ulp.childNodes[i].onclick = function(evt){stopHere(evt); DicSound.toggle(this);}			
	}
	
	obj.onclick = function(evt){stopHere(evt); DicFor.hidePlayButtons(this);}
}



DicFor.hidePlayButtons = function() {		
	if(DicFor.player){
		DicFor.player.style.background = '';
		DicFor.player.style.backgroundPosition = '100% 5%';
		var ulp = null;
		if(document.all)	ulp = DicFor.player.childNodes[4];
			else ulp = DicFor.player.childNodes[5];
		ulp.style.display = 'none';
		var b = null;
		if(document.all) b = DicFor.player.childNodes[0];
			else b = DicFor.player.childNodes[1];
		b.onclick = function(evt){stopHere(evt); DicFor.showPlayButtons(this);}
		DicFor.player = null;
	}
}




DicFor.initHover = function() {

    try {
    
        // hanglejátszó gombok (baloldalt)
    	$$('table.results tr td div b.play').each(function(o) {
    	    o.observe('click', function(event) {
//                DicFor.showPlayButtons(this); // ha több lejátszógomb is van...
                DicSound.toggle(this);
            });
    	});
    
        // hanglejátszó gombok (jobboldalt)
    	$$('table.results tr td ul li b.play').each(function(o) {
    	    o.observe('click', function(event) {
                Event.stop(event);
//                DicFor.showPlayButtons(this); // ha több lejátszógomb is van...
                DicSound.toggle(this);
            });
    	});

    
    	// visszalinkek felrakása
    	$$('table.results tr td img.edit').each(function(o) {
    	    
    	    var imgObject = o;
    	    
    	    o.observe('click', function(event) {
    			
                window.location = '/meaning/'+imgObject.id;					
    		});
        });

    
        var hasLinkReverse = false;
    
    	// visszalinkek felrakása
    	$$('table.results tr td ul li.linkreverse').each(function(o) {
    	    
            hasLinkReverse = true;
    	
    	    o.observe('mouseover', function(event) {
    			this.style.background = '#FFFFFF';					
    		});
    		
    		o.observe('mouseout', function(event) {
    			this.style.background = '';					
    		});
    		
    		o.observe('click', function(event) {
                DicFor.searchReverse(this);
            });
        });
    
        if (hasLinkReverse) {
            // mouseover-ek beállítása
        	$$('table.results tr').each(function(tr) {
        	
        	    tdChilds = Element.childElements(tr);
        	
        		tdChilds[0].observe('mouseover', function(event) { // baloldali td onmouseover
        		    this.style.background = '#FFFFFF';
    
        		    childs = Element.childElements(this.parentNode);
        		    
        		    fistLI = childs[1].getElementsBySelector('ul li.linkreverse')[0];
        			fistLI.style.background = '#FFFFFF';					
        		});
        		
        		tdChilds[0].observe('mouseout', function(event) { // baloldali td onmouseout
        		    childs = Element.childElements(this.parentNode);
    
                    if('' == this.parentNode.className)
                        childs[0].style.background = '#D4E7FA';
    				else 
                        childs[0].style.background = '#E0EFFE';
        		    
        		    fistLI = childs[1].getElementsBySelector('ul li.linkreverse ')[0];
        			fistLI.style.background = '';					
        		});
    
        		tdChilds[1].observe('mouseover', function(event) { // jobboldali td onmouseover
        		    childs = Element.childElements(this.parentNode);
        		    childs[0].style.background = '#FFFFFF';
        		});
    
        		tdChilds[1].observe('mouseout', function(event) { // jobboldali td onmouseout
        		    childs = Element.childElements(this.parentNode);
    
    			    if('' == this.parentNode.className)	
                        childs[0].style.background = '#D4E7FA';
    			    else 
                        childs[0].style.background = '#E0EFFE';
        		});
            });
        }
    
        if(document.getElementById('q').createTextRange)
            document.getElementById('q').createTextRange().select();
    	else
            document.getElementById('q').select();
    	
    	document.getElementById('q').focus();
        
    } catch (err) {
        //alert('Hiba ...');    
    }
}



DicFor.submit = function() {
	window.close();
	window.open('','_df','menubar,toolbar,location,resizable,scrollbars,status,fullscreen,directories')
	document.forms[0].submit();	
}

DicFor.showDic = function(id){
	document.getElementById(id).style.display = 'block';
}

DicFor.hideDic = function(id){
	document.getElementById(id).style.display = 'none';
}
DicFor.radios = new Array();
DicFor.labels = new Array();

DicFor.labelInit = function(){
	var inputs = document.getElementsByTagName('input');
	var nr = 0;
	for(var i=0;i<inputs.length;i++){
		if(inputs[i].type.toLowerCase()=='radio'){						
			DicFor.radios[nr] = inputs[i];
			DicFor.radios[nr].onclick = function(){DicFor.changeLabel(this)};
			nr++;
		}
		
	}
	DicFor.labels = document.getElementsByTagName('label');
	for(var i=0;i<DicFor.labels.length;i++){
		DicFor.labels[i].onclick = function(){DicFor.changeLabel(this)};
	}	
}
DicFor.changeLabel = function(o){
	var id = o.id;	
	var	group = '';
	if(!o.name)
		for(var i=0;i<DicFor.radios.length;i++){
			if(DicFor.radios[i].id == id){
				group = DicFor.radios[i].name;
			}
		}
		else group = o.name;
	
	for(var i=0;i<DicFor.radios.length;i++) {
		if(DicFor.radios[i].name == group && DicFor.radios[i].id == id){
			DicFor.radios[i].checked = true;
			for(var j=0;j<DicFor.labels.length;j++){
				if(DicFor.labels[j].id == DicFor.radios[i].id){
					DicFor.labels[j].className = 'sel';
					break;
				}
			}
		} else if(DicFor.radios[i].name == group && DicFor.radios[i].id != id){
			DicFor.radios[i].checked = false;
			for(var j=0;j<DicFor.labels.length;j++){
				if(DicFor.labels[j].id == DicFor.radios[i].id){
					DicFor.labels[j].className = '';
					break;
				}
			}
		}
	}	
}

DicFor.searchReverse = function(obj){
  var action = $('searchForm').action;
  var lastChar = action.substring(action.length - 1, action.length);
  var per = '';
  if (lastChar != '/') {
      per = '/';
  }
  
  var newLocation = $('searchForm').action + per + Url.encode(obj.title) + '/' + getSearchType() + '/' + getSearchMatch() + '/' + getAccent() + '/' + getFuzzy() + '/1'; 
  document.location = newLocation;
  return false;
}

var Window = {	
	getWindowSize : function(){				
		if (document.all){					
			var xScroll, yScroll;
			var windowWidth, windowHeight;
		
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;						
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
			
			if(yScroll < windowHeight){			
				pageHeight = windowHeight;
			} else { 		
				pageHeight = yScroll;
			}
			
			if(xScroll < windowWidth){	
				pageWidth = windowWidth;
			} else {
				pageWidth = xScroll;
			}
	
			return [pageWidth,pageHeight, document.body.clientWidth + document.documentElement.scrollLeft, document.body.clientHeight + document.documentElement.scrollTop]; 
				
		}else{			
			return [document.documentElement.clientWidth + document.documentElement.scrollLeft,document.documentElement.clientHeight + document.documentElement.scrollTop, document.documentElement.clientWidth+window.pageXOffset+document.documentElement.scrollLeft, document.documentElement.clientHeight+window.pageYOffset+document.documentElement.scrollTop ];
		}												
	}
}

DicFor.window = function(){
	this.layer = document.getElementById('layer');
	this.window = document.getElementById('window');
//	this.title = document.getElementById('windowtitle');
//	this.content = document.getElementById('windowcontent');
	
	this.showWindow = function(width, height, dx, dy, title, content){		
		var ws = Window.getWindowSize();		
		this.layer.style.display = 'block';
		
		this.window.style.width = width + 'px';
		this.window.style.height = height + 'px';
		
		this.window.style.left = (((ws[2] - width)/2) + dx) + 'px';
		this.window.style.top  = (((ws[3] - height)/2) + dy) + 'px';
		
//		this.title.innerHTML = title;
		
		var url = content;
		
		new Ajax.Request(
		
        url, {
            method: 'post',
            onComplete: function(request) {
//                $('windowcontent').innerHTML = request.responseText;
                $('wContent').innerHTML = request.responseText;
            }, 
            evalScripts:true, 
            parameters: ''
        }
    );
    
    this.window.style.display = 'block';
		
	}
	
	this.hideWindow = function(){
		this.layer.style.display = 'none';
		this.window.style.display = 'none';
	}
}

var e = function(e){alert(e);}; 
if (!Prototype.Browser.IE) document.captureEvents(Event.MOUSEMOVE)

document.onmousemove = getMouseXY;

var tempX = 0
var tempY = 0

var mouseXY = Array();

function getMouseXY(e) {  	
  if (!e) 
		var e = window.event;
  if (Prototype.Browser.IE) { // grab the x-y pos.s if browser is IE
    tempY = event.clientY + parseInt(document.documentElement.scrollTop);
    tempX = event.clientX + parseInt(document.documentElement.scrollLeft);
  } else {  // grab the x-y pos.s if browser is NS
    tempX = e.pageX
    tempY = e.pageY
  }  
  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}  
  // show the position values in the form named Show
  // in the text fields named MouseX and MouseY
  
  mouseXY[0] = tempX;
  mouseXY[1] = tempY;  
  
  return true;
}


function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	} else if (obj.x) curleft += obj.x;
	return curleft;
}
function findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent!=null) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	} else if (obj.y) curtop += obj.y;
	return curtop;

}
var DragDrop = function(obj, box, pageCategories, dragEnd){
	obj.onDragStart = function(x, y){						
			var top = findPosY(this);
			var left = findPosX(this);
			if(Prototype.Browser.IE) var w = this.offsetWidth - 7;
				else var w = this.clientWidth;
			
			this.style.width = parseInt(w)+"px";
			this.style.margin = 0;
			this.style.left = (left)+"px";

			this.style.top = (top)+"px";
			this.parentNode.insertBefore(moduleGhost, this);			
			moduleGhost.style.height = this.offsetHeight +"px";	
			moduleGhost.style.width = this.offsetWidth +"px";	
			this.style.position = "absolute";			
		},
	obj.onDrag = function(nx, ny){
			var col = null;
			
			if(pageCategories.cells[0])	if ((nx+this.offsetWidth/2)>=findPosX(pageCategories.cells[0])) col = pageCategories.cells[0];
			if(pageCategories.cells[1])	if ((nx+this.offsetWidth/2)>=findPosX(pageCategories.cells[1])) col = pageCategories.cells[1];
			if(pageCategories.cells[2])	if ((nx+this.offsetWidth/2)>=findPosX(pageCategories.cells[2])) col = pageCategories.cells[2];
	
			if(col!=null){
				if(moduleGhost.parentNode!=col){
					var pN = moduleGhost.parentNode;				
					pN.removeChild(moduleGhost);
					col.appendChild(moduleGhost);				
				}
				var myPos = 0;							
				
				var elems = null;
				elems = Array();
				for(var i=0;i<col.childNodes.length;i++){
					if(col.childNodes[i].tagName == "DIV" && col.childNodes[i]!=this){			
						elems.push(col.childNodes[i]);
					}
				}
				for(var i=0;i<elems.length;i++){
					if(elems[i] == moduleGhost){
						myPos = i;
						break;
					}
				}		
				
				if (myPos!=0 && ny<=findPosY(elems[myPos-1])) {	
					col.removeChild(moduleGhost);	
					col.insertBefore(moduleGhost, elems[myPos-1]);	
				}			
				
				if (myPos!=(elems.length-1) && ny>=findPosY(elems[myPos+1])) {			
					if (elems[myPos+2]) {
						col.insertBefore(moduleGhost, elems[myPos+2]);
					} else {						
						col.appendChild(moduleGhost);
					}	
				}
				
			}		
		},
	obj.onDragEnd = function(x,y){
			if (!Prototype.Browser.IE) document.captureEvents(Event.MOUSEMOVE)
			document.onmousemove = getMouseXY;
			this.style.position=  "static"			
			moduleGhost.parentNode.insertBefore(this, moduleGhost);		
			moduleGhost.parentNode.removeChild(moduleGhost);
			this.style.margin = '0 0 8px 0';
			if(dragEnd!=null) new dragEnd();
	}
}

var Drag = {	
	obj : null,

    init : function(o, oRoot, minX, maxX, minY, maxY, bSwapHorzRef, bSwapVertRef, fXMapper, fYMapper)
    {
        o.onmousedown = Drag.start;

        o.hmode       = bSwapHorzRef ? false : true ;
        o.vmode       = bSwapVertRef ? false : true ;

        o.root = oRoot && oRoot != null ? oRoot : o ;

        if (o.hmode  && isNaN(parseInt(o.root.style.left  ))) o.root.style.left   = "0px";
        if (o.vmode  && isNaN(parseInt(o.root.style.top   ))) o.root.style.top    = "0px";
        if (!o.hmode && isNaN(parseInt(o.root.style.right ))) o.root.style.right  = "0px";
        if (!o.vmode && isNaN(parseInt(o.root.style.bottom))) o.root.style.bottom = "0px";

        o.minX = typeof minX != 'undefined' ? minX : null;
        o.minY = typeof minY != 'undefined' ? minY : null;
        o.maxX = typeof maxX != 'undefined' ? maxX : null;
        o.maxY = typeof maxY != 'undefined' ? maxY : null;

        o.xMapper = fXMapper ? fXMapper : null;
        o.yMapper = fYMapper ? fYMapper : null;				
		
        o.root.onDragStart = new Function();
        o.root.onDragEnd   = new Function();
        o.root.onDrag      = new Function();  
    },

    start : function(e)
    {
        var o = Drag.obj = this;
		
		
        e = Drag.fixE(e);		
        var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
        var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
        o.root.onDragStart(x, y);

        o.lastMouseX    = e.clientX;
        o.lastMouseY    = e.clientY;

        if (o.hmode) {
            if (o.minX != null)    o.minMouseX    = e.clientX - x + o.minX;
            if (o.maxX != null)    o.maxMouseX    = o.minMouseX + o.maxX - o.minX;
        } else {
            if (o.minX != null) o.maxMouseX = -o.minX + e.clientX + x;
            if (o.maxX != null) o.minMouseX = -o.maxX + e.clientX + x;
        }

        if (o.vmode) {
            if (o.minY != null)    o.minMouseY    = e.clientY - y + o.minY;
            if (o.maxY != null)    o.maxMouseY    = o.minMouseY + o.maxY - o.minY;
        } else {
            if (o.minY != null) o.maxMouseY = -o.minY + e.clientY + y;
            if (o.maxY != null) o.minMouseY = -o.maxY + e.clientY + y;
        }
		Drag.drag(e);
        document.onmousemove    = Drag.drag;
        document.onmouseup        = Drag.end;
			
        return false;
    },

    drag : function(e)
    {
		moduleGhost.style.display = "block";
        e = Drag.fixE(e);
        var o = Drag.obj;
        var ey    = e.clientY;
        var ex    = e.clientX;
        
		var y = parseInt(o.root.style.top);
        var x = parseInt(o.root.style.left);
        var nx, ny;
         
		nx = x + ex - o.lastMouseX;
        ny = y + ey - o.lastMouseY;

        Drag.obj.root.style[o.hmode ? "left" : "right"] = nx + "px";
        Drag.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px";
        Drag.obj.lastMouseX    = ex;
        Drag.obj.lastMouseY    = ey;

        Drag.obj.root.onDrag(nx, ny);
		
        return false;
    },

    end : function()
    {
        
		document.onmousemove = null;
        document.onmouseup   = null;
        Drag.obj.root.onDragEnd(    parseInt(Drag.obj.root.style[Drag.obj.hmode ? "left" : "right"]), 
                                    parseInt(Drag.obj.root.style[Drag.obj.vmode ? "top" : "bottom"]));		
		
        Drag.obj = null;
    },

    fixE : function(e)
    {
        if (typeof e == 'undefined') e = window.event;
        if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
        if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
        return e;
    }
}

var Box = function(obj){				
	var boxHead = null;
	var boxHeadLink = null;
	
	this.build = function(){						

		if(document.all) {
			boxHead = obj.childNodes[0];
			boxHeadLink = boxHead.childNodes[0];
		}else {
			boxHead = obj.childNodes[1];
			boxHeadLink = boxHead.childNodes[0];
		}				
		boxHeadLink.onmousedown = stopHere;		

		
		Drag.init(boxHead, obj);
		new DragDrop(obj, this, $('mod').rows[0], SavePage);						
	}		
	
	this.build();
}
var categoryBoxes = new Array();
var CreatePage = function() {
	var pageCategories = $('mod');
	for(var i=0;i<3;i++) {
		var boxes = pageCategories.rows[0].cells[i].childNodes;
		for(var j=0;j<boxes.length;j++) {			
			if(boxes[j].tagName && boxes[j].className=='mod') {				
				categoryBoxes.push(new Box(boxes[j]));
				//break;
			}
		}
		//break;
	}	
}

var SavePage = function(){
	var pageCategories = $('mod');
	var pars = '';
	
	for(var i=0;i<3;i++){
		var boxes = pageCategories.rows[0].cells[i].childNodes;
		for(var j=0;j<boxes.length;j++){			
			if(boxes[j].tagName && boxes[j].className=='mod') {				
				switch(i){
					case 0:
//						pars += '&first_col[]=' + boxes[j].id.substring(4, boxes[j].id.length);						
						pars += '&first_col[]=' + boxes[j].id;						
						break;
					case 1:
//						pars += '&second_col[]=' + boxes[j].id.substring(4, boxes[j].id.length);
						pars += '&second_col[]=' + boxes[j].id;
						break;
					case 2:
//						pars += '&third_col[]=' + boxes[j].id.substring(4, boxes[j].id.length);
						pars += '&third_col[]=' + boxes[j].id;
						break;
				}
			}
		}
	}
	
  //alert(pars); // ide az ajax kódot
  
  new Ajax.Request('/updatedicslist', { evalScripts: true, parameters: pars } );
    
}
/* Drag 'n' Drop begin */

/* ----------------------------------------------------------------------- */

var dw = null;

Event.observe(window, 'load', function() {
    dw = new DicFor.window();
});
