var SubFrame_Reloader = window.dsi_loader.document;

function dgn_load_content(url)
{
	parent.subframe_loader.location.href=url;
}

function dgn_copy_node(element,dest_frame)
{
	//alert("DCN_1");
	if(!dest_frame){dest_frame=document;}
	var new_element = dest_frame.createElement(element.nodeName);

	for(var x = 0; x < element.attributes.length; x++)
	{
		if(element.attributes[x].nodeValue)
		{
			if(IE) //IE 7 HACK MK II ((c) by Dragis 15.10.2008)
			{
				var attri=dest_frame.createAttribute(element.attributes[x].nodeName);
				attri.nodeValue=element.attributes[x].nodeValue;
				new_element.setAttributeNode(attri);
			}
			else
			{
				new_element.setAttribute(element.attributes[x].nodeName, element.attributes[x].nodeValue);
			}
		}
	}

	if(IE)
	{
		new_element.onclick=element.onclick;
	}

	//alert("DCN_2");
	for(var i = 0; i < element.childNodes.length; i++)
	{
		if(element.childNodes[i].nodeType==1)
		{
			new_element.appendChild(dgn_copy_node(element.childNodes[i],dest_frame));
		}
		else // nodeType == 3
		{
			new_element.appendChild(dest_frame.createTextNode(element.childNodes[i].nodeValue))
		}
	}
	//alert("DCN_3");
	return new_element;
}


function dgn_sub_resize(id,to_x,to_y,is_x,is_y)
{
	var ele=document.getElementById(id).style;

	if(is_x==-1 && is_y==-1)
	{
		is_x=ele.width;
		is_y=ele.height;
		is_x=is_x.slice(0,is_x.lastIndexOf("px"));
		is_y=is_y.slice(0,is_y.lastIndexOf("px"));
	}

	var dis_x=to_x-is_x;
	var dir_x=1;
	if(dis_x<0)
	{
		dis_x=is_x-to_x;
		dir_x=-1;
	}
	var dis_y=to_y-is_y;
	var dir_y=1;
	if(dis_y<0)
	{
		dis_y=is_y-to_y;
		dir_y=-1;
	}
	if(dis_y>0 || dis_x>0)
	{
		var speed=0;
		if(dis_x<=1)
		{
			is_x=to_x;
		}
		else
		{
			is_x++;is_x--;
			is_x=is_x+(dir_x*dis_x/10);
		}
		if(dis_y<=2)
		{
			is_y=to_y;
		}
		else
		{
			is_y++;is_y--;
			is_y=is_y+(dir_y*dis_y/10);
		}
//		alert("DSM DONE FROM "+is_x+"x"+is_y+" TO "+to_x+"x"+to_y )
		ele.width=Math.round(is_x) + "px";
		ele.height=Math.round(is_y) + "px";
		window.setTimeout("dgn_sub_resize('"+id+"','"+to_x+"','"+to_y+"','"+is_x+"','"+is_y+"');", 10);
	}	
	return 1;
}

function dgn_sub_move(id,to_x,to_y,is_x,is_y)
{
	var ele=document.getElementById(id).style;

	if(is_x==-1 && is_y==-1)
	{
		is_x=ele.left;
		is_y=ele.top;
		is_x=is_x.slice(0,is_x.lastIndexOf("px"));
		is_y=is_y.slice(0,is_y.lastIndexOf("px"));
	}

	var dis_x=to_x-is_x;
	var dir_x=1;
	if(dis_x<0)
	{
		dis_x=is_x-to_x;
		dir_x=-1;
	}
	var dis_y=to_y-is_y;
	var dir_y=1;
	if(dis_y<0)
	{
		dis_y=is_y-to_y;
		dir_y=-1;
	}
	if(dis_y>0 || dis_x>0)
	{
		var speed=0;
		if(dis_x<=1)
		{
			is_x=to_x;
		}
		else
		{
			is_x++;is_x--;
			is_x=is_x+(dir_x*dis_x/10);
		}
		if(dis_y<=2)
		{
			is_y=to_y;
		}
		else
		{
			is_y++;is_y--;
			is_y=is_y+(dir_y*dis_y/10);
		}
//		alert("DSM DONE FROM "+is_x+"x"+is_y+" TO "+to_x+"x"+to_y )
		ele.left=Math.round(is_x) + "px";
		ele.top=Math.round(is_y) + "px";
		window.setTimeout("dgn_sub_move('"+id+"','"+to_x+"','"+to_y+"','"+is_x+"','"+is_y+"');", 10);
	}	
	return 1;
}


/*function hip_hop_test(id)
{
	dgn_move('MBB',Math.round(Math.random()*500),Math.round(Math.random()*500));
	dgn_move(id,Math.round(Math.random()*500),Math.round(Math.random()*500));
	dgn_resize('MBB',Math.round(Math.random()*500),Math.round(Math.random()*500));
	dgn_resize(id,Math.round(Math.random()*500),Math.round(Math.random()*500));
	dgn_fade('MBB',Math.round(Math.random()*100));
	dgn_fade(id,Math.round(Math.random()*100));
}*/

function dgn_sub_fade(id,opacity,ele_op)
{
	var ops=opacity;
	opacity++;opacity--;
	var ele=document.getElementById(id);
	if(IE)
	{
		if(ele_op==-1)
		{
			ele_op=ele.filters[0].opacity;
		}
		ele_op++;ele_op--;
		var dis=Math.abs(opacity-ele_op);
		var dir=1;
		if(ele_op>opacity)
		{
			dir=-1;
		}
		if(dis<5)
		{
			ele.filters[0].opacity=opacity;
			if(opacity==0)
			{ele.style.display='none';}
		}
		else
		{
//			alert(ele_op+(dir/2));
			ele_op=ele_op+(dir*5);
			ele.filters[0].opacity=ele_op;
//			alert(ele.filters[0].opacity);
			window.setTimeout("dgn_sub_fade('"+id+"','"+ops+"','"+ele_op+"');", 25);
		}
	}
	else
	{	
		opacity=opacity/100;
		if(ele_op==-1)
		{
			ele_op=ele.style.opacity;
		}
		ele_op++;ele_op--;
		var dis=Math.abs(opacity-ele_op);
		var dir=1;
		if(ele_op>opacity)
		{
			dir=-1;
		}
		if(dis<0.05)
		{
			ele.style.opacity=opacity;
			if(opacity==0)
			{ele.style.display='none';}
		}
		else
		{
//			alert(ele.style.opacity);
			ele_op=ele_op+(dir/20);
			ele.style.opacity=ele_op;
//			alert(ele.style.opacity);
			window.setTimeout("dgn_sub_fade('"+id+"','"+ops+"','"+ele_op+"');", 25);
		}
	}
	return true;
}

function dgn_resize(id,x,y)
{
	dgn_sub_resize(id,x,y,-1,-1);
}

function dgn_move(id,x,y)
{
	dgn_sub_move(id,x,y,-1,-1);
}

function dgn_fade(id,opacity)
{
	dgn_sub_fade(id,opacity,-1);
}

/*function dgn_submit_form(form_id)
{
	//alert("DSF_1");
	var form=document.getElementById(form_id);
	parent.subframe_loader.document.getElementById('return2').appendChild(dgn_copy_node(form,parent.subframe_loader.document));
	parent.subframe_loader.document.getElementById(form_id).submit();
}*/

function dgn_sw_server_file(target_id)
{
	document.getElementById('darker').style.display='block';
	dgn_fade('darker','50');
	document.getElementById('subwindow').style.display='block';
	dgn_load_content('load.php?act=init&type=server_file&target=' + target_id);
}

function dgn_sw_server_file_end(value,target_id)
{
	dgn_fade('darker','0');
	document.getElementById('subwindow').style.display='none';
	document.getElementById(target_id).value=value;
}

function dgn_displayswitch(id)
{
	if(document.getElementById(id).style.display=='none')
	{
		document.getElementById(id).style.display='block';
	}
	else
	{
		document.getElementById(id).style.display='none';
	}
}

function insert_ask(id, ask, aTag, bTag, eTag)
{
var ask = prompt(ask,'');
insert(id,aTag + ask + bTag,eTag);
}

function insert_askask(id, aska, askb, aTag, bTag, cTag, eTag)
{
var askaa = prompt(aska,'http://');
var askbb = prompt(askb,'Link');
insert(id,aTag + askaa + bTag + askbb + cTag,eTag);
}

function insert_opt(id, opt_id, aTag, bTag, eTag)
{
//alert("Insert_Opt_Call");
//alert(document.getElementById(opt_id));
//alert(document.getElementById(opt_id).value);
insert(id,aTag + document.getElementById(opt_id).value + bTag,eTag);
}

function insert(id,aTag, eTag) {
  var input = document.getElementById(id);
  input.focus();
  /* für Internet Explorer */
  if(typeof document.selection != 'undefined') {
    /* Einfügen des Formatierungscodes */
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = aTag + insText + eTag;
    /* Anpassen der Cursorposition */
    range = document.selection.createRange();
    if (insText.length == 0) {
      range.move('character', -eTag.length);
    } else {
      range.moveStart('character', aTag.length + insText.length + eTag.length);      
    }
    range.select();
  }
  /* für neuere auf Gecko basierende Browser */
  else if(typeof input.selectionStart != 'undefined')
  {
    /* Einfügen des Formatierungscodes */
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
    /* Anpassen der Cursorposition */
    var pos;
    if (insText.length == 0) {
      pos = start + aTag.length;
    } else {
      pos = start + aTag.length + insText.length + eTag.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
  }
  /* für die übrigen Browser */
  else
  {
    /* Abfrage der Einfügeposition */
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos)) {
      pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length) {
      pos = input.value.length;
    }
    /* Einfügen des Formatierungscodes */
    var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
    input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
  }
}
