var ltfieldlast = 1;

var debugforall = false;
function forall( tag, pattern, attr, iterator )
{
	var tags = document.getElementsByTagName( tag );
	tags = $A( tags );
	if( debugforall == true ) alert( 'tag found: ' + tags.length );
	tags.each( function( tag, i )
	{
		var chk = Elem.getAttribute( tag, attr );
		if( debugforall == true ) alert( 'attribute: ' + attr + ' = ' + chk );
		
		if( pattern.exec( chk ) )
		{
			if( debugforall == true ) alert( 'tag ok' );
			iterator( chk, tag );
		} else
		{
			if( debugforall == true ) alert( 'tag bad' );
		}
	});
}

/***************************************************
* segédek
*****************************************************/
var allDragClasses = new Array();
function addDragClass( elem )
{
	var cl = elem.getAttribute( 'className' ) || elem.getAttribute( 'class' );
	var idx = allDragClasses.find( function( ic ){ cl == ic } );
	if( ! idx )
	{
		allDragClasses[ allDragClasses.length ] = cl;
	}
}

function clearValueOf( elem, pattern, v )
{
	var value = v || elem.firstChild.data;
	pattern.exec( elem.id );
	var feladatid = RegExp.$1;
	var aE = $A( document.forms[ megoldasFormName ].elements );
	ctrlpattern = new RegExp( "megoldas\\[" + feladatid + "\\]" );
	var fields = new Array();
	
	aE.each( function( tag ) {
//		trace( [ tag.getAttribute( 'name' ), "megoldas\\[" + feladatid + "\\]" ] );
		if( ctrlpattern.exec( tag.getAttribute( 'name' ) ) )
		{
			if( tag.value == value )
			{
				trace( tag.getAttribute( 'name' ) );
				fields.push( tag.getAttribute( 'name' ) );
				tag.value = '';
			}
		}
	});
//	trace( "return " + fields.length );
	return fields;
}

function clearLtBackround( fields )
{
	fields.each( function( name ) {
		var id = name.replace( /megoldas/, "droplt" );
		Stye.removeAttribute( $(id), 'backgroundColor' );
	});
}

function unsetMegoldas( elem, drop )
{
	var dragor = /drag\[/;
	var dragah = /dragah\[/;
	var draglt = /draglt(mus?)?\[/;

	var id = elem.getAttribute("id");

	// összerendelés drag
	if( dragor.exec( id ) )
	{
		trace( 'unsetor' );
		unlinkMegoldas( elem )
	} else if( dragah.exec( id ) )
	{
		trace( 'unsetah' );
		unsetAHMegoldas( elem, drop )
	} else if( draglt.exec( id ) )
	{
		trace( 'unsetlt' );
		unsetLTMegoldas( elem )
	} else	trace( id );
}

var MOVE_INTO = 1;
var MOVE_LEFT = 2;

function moveItem( drag, drop, pos )
{
	var dpwidth = drop.offsetWidth;
	var dpheight = drop.offsetHeight;

	var dgwidth = drag.offsetWidth;
	var dgheight = drag.offsetHeight;
	
    var offsetsbox = Position.cumulativeOffset( drop );
	switch( pos )
	{
		case MOVE_INTO:
			var dgx = offsetsbox[0] + ( ( dpwidth - dgwidth ) / 2 );
			var dgy = offsetsbox[1] + ( ( dpheight - dgheight ) / 2 );
			break;
		case MOVE_LEFT:
			var dgx = offsetsbox[0] + dpwidth;
			var dgy = offsetsbox[1];
			break;
		default:
			alert( "ismeretlen pozíció" );
	}
	trace( offsetsbox );
	trace( dpwidth + ' ' + dgx + ' ' + dgy );
	Style.setAttribute( drag, "top", dgy + "px" );
	Style.setAttribute( drag, "left", dgx + "px" );
}



/***************************************************
* Rendezés beállítása
*****************************************************/
var rendezesIdPattern = /^(\d+)rendezes$/;
var megoldasFormName = 'form1';

function setupInfoicon()
{
	/**
	* Lückentext behúzós szavak beállítása
	*/
	var body = document.getElementsByTagName('body')[0]; 
	forall( 'span', /info_\d+/, 'id', function( id ) {
		var obj = $(id);
		var exp = id.replace( /info/, "explain" );
		var oExp = $(exp);
		body.appendChild( oExp );
		var w = oExp.style.width;
		var h = oExp.style.height;
		Position.absolutize( oExp );
		oExp.style.width = w;
		oExp.style.height = h;
		Style.setAttribute( oExp, "zIndex", 1000 );
		
//		Style.setAttribute( oExp, "top", ( offsetsbox[1] - 10 ) + "px" );
//		Style.setAttribute( oExp, "left", ( offsetsbox[0] + 10 ) + "px" );

		Elem.setAttribute( obj, "onclick", "showExplain( '"+exp+"', true, event )" );
		Elem.setAttribute( obj, "onmouseout", "showExplain( '"+exp+"', false, event )" );
	});
}

function showExplain( id, show, e )
{
	var exp = $( id );
	if( show == true )
	{
	    var ob = Position.realOffset(exp);
//		alert( ob[0] + ' ' + ob[1] );
//		alert( Mouse.Y( e ) + ' ' + Mouse.X( e ) );
		Style.setAttribute( exp, "top", Mouse.Y( e ) + 10 + "px" );
		Style.setAttribute( exp, "left", Mouse.X( e ) + 10 + "px" );
		Style.setAttribute( exp, "zIndex", 100 );
		Element.setOpacity( exp, 1.0 );
		Style.removeAttribute( exp, "display" );

//		Effect.Appear( exp );

	} else
	{
		var op = Element.getOpacity( exp );
		op = op != null ? parseFloat( op ) : 0.0;
		op = Style.getAttribute( exp, "display" ) == "none" ? 0.0 : op;

		if( op > 0 )
		{
//			Effect.Appear( exp, { from: op, to: 0.0 } );
			Style.setAttribute( exp, "zIndex", -100 );
			Style.setAttribute( exp, "display", "none" );
		}
	}
}
function setupMiniamp()
{
	/**
	* Lückentext behúzós szavak beállítása
	*/
//			Elem.create( "param", {name: "flashvars", value: "fp="+obj.href+"&amp;fg=9BAFC5&amp;bg=FFFFFF"} ),
/*

*/	forall( 'a', /miniamp/, 'className', function( className, obj ) {
		var ply = Elem.create( "object", {type: "application/x-shockwave-flash", data: "jsext/miniamp/miniamp.swf", width: "150", height: "29"},
			Elem.create( "param", {name: "movie", value: "jsext/miniamp/miniamp.swf"} ),
			Elem.create( "param", {name: "flashvars", value: "fp=upload%2Ffile%2Ftest%2Fmephisto%2Emp3&amp;fg=9BAFC5&amp;bg=FFFFFF"} ),
			Elem.create( "param", {name: "menu", value: "false"} ),
			Elem.create( "a", {className: "miniamp", href: "http://www.macromedia.com/go/getflashplayer", title: "Flash lejátszó letöltése"},
				"Nincs flash lejátszód, vagy nincs engedélyezve." )
		);
//		var src = document.createTextNode( ply.innerHTML );
//		obj.parentNode.appendChild( src );

		obj.parentNode.replaceChild( ply, obj );
//		ply.LoadMovie(0, "jsext/miniamp/miniamp.swf");
	});
	
	tt=document.getElementById('interactive');
	tt.LoadMovie(0, "jsext/miniamp/miniamp.swf");
	var p1 = Elem.create( "param", {name: "movie", value: "jsext/miniamp/miniamp.swf"} );
}

function setupMegoldas()
{
	forall( 'ul', rendezesIdPattern, 'id', function( id ) { 
		Sortable.create( id ); 
	});
	var aE = document.forms[ megoldasFormName ].elements;

	setupInfoicon();
//	setupMiniamp();

	addEvent(document.forms[ megoldasFormName ], 'submit', onSubmit );
}

function onPrint( msg )
{
	if( confirm( msg ) )
	{
		newwin_submit( megoldasFormName, 'print' );
	}
	
}

function onSubmit()
{
	forall( 'ul', rendezesIdPattern, 'id', function( id ) 
	{
		var seq = Sortable.sequence( id );
		rendezesIdPattern.exec( id );
		var feladatid = RegExp.$1;
		document.forms[ megoldasFormName ].elements['megoldas['+feladatid+'][megoldas]'].value = seq;
	});

	if( typeof( rule ) != 'undefined' )
	{
//		display_arraykeys( rule );
		for( fid in rule )
		{
			if( typeof( rule[ fid ] ) == "function" ) continue;
			oDiv = document.getElementById( "rejtveny_megoldas_" + fid );
//			if( ! oDiv ) alert( "Nincs ilyen: " + "rejtveny_megoldas_" + fid );
//			else alert( "Van ilyen: " + "rejtveny_megoldas_" + fid );
			oDiv.innerHTML = "";
			ArraytoPhpArray( rule[ fid ], oDiv, "megoldas["+fid+"]" );
		}
	}
}

addEvent(window, 'load', setupMegoldas );

