function $(pWhat){
	return document.getElementById(pWhat);
}

function ingang(pWat, pPara){
	if (pWat=="showExplanation"){
		showExplanation(pPara);
	}
	if (pWat=="doAction"){
		doAction(pPara);
	}
	if (pWat=="checkSelection"){
		checkSelection();
	}
	if (pWat=="removeExplanations"){
		removeExplanations();
	}
}

function doSubmitDraw(){
	var lString = getOptions();
	lString+='&draw_data='+document.ActionForm.draw_data.value;
	getNewImage(lString,'create_drawing');
}

function getNewImage(pData, pFa){
	showCover();
	if (window.XMLHttpRequest)
	{// code for IE7+, Firefox, Chrome, Opera, Safari
			xmlhttp=new XMLHttpRequest();
	}
	else
	{// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlhttp.onreadystatechange=function()
	{
		if (xmlhttp.readyState==4 && xmlhttp.status==200)
			{
				var myImage = new Image();
				myImage.onload=function(){
						jg.clear();
						var userPic = $('UserPic');
						userPic.src=this.src;
						userPic.width=myImage.width;
						userPic.height=myImage.height;
						resizeAllElements(myImage.width,myImage.height);
						unsetBrdr();
						
						if(pFa!='next' && pFa!='previous'){
							gCurIndex+=1;
							gMaxIndex+=1
							}
						setPreviousNext();
						document.ActionForm.draw_data.value="";
						if(pFa=='create_drawing'){
							setToDraw();
							gArrayCollect = new Array();
							}
						hideCover();
					}
				myImage.src=xmlhttp.responseText;
			}
	}
	var lURL = "./index.php?fa="+pFa+"&"+pData;
	xmlhttp.open("GET",lURL,true);
	xmlhttp.send();
}

function resizeAllElements(pWidth,pHeight){
	var uPL = $('UserPicLayer');
	uPL.style.width=pWidth+'px';
	uPL.style.height=pHeight+'px';
	var uCr = $('covering');
	uCr.style.width=pWidth+'px';
	uCr.style.height=pHeight+'px';
	var uC = $('cover');
	uC.width=pWidth;
	uC.height=pHeight;
	gWidth=pWidth;
	gHeight=pHeight;
}

function giveInt(pString){
	var lNumber = parseInt(pString,10);
	if(!lNumber)
		return 1;
	return lNumber;
}

function prv(pWhat){
//	();
	var lForm = document.ActionForm;
	if(pWhat != 'bground1'){
		$('currentGlitter').src = $(pWhat).src;
		$('curTile').value=pWhat;
		setBg();
	}
	hideCover();
//	(lWidth,lHeight,pWhat);
}

function setStyle(element, property, value){
	if (element.style[property] !=null) {
		element.style[property] = value;
	} else if (element.currentStyle) {
		element.currentStyle[property] = value;
	} else if (document.defaultView && document.defaultView.getComputedStyle) {
		var style = document.defaultView.getComputedStyle(element, null);
		style.setPropertyValue(property,value);
	} else {
		return null;
	}

}

function clipImageToDesktop(pSelectedElement){
	DeskTop = $('UserPicLayer');
	lTheDeskTop = DeskTop;
	lDeskHeight= giveInt(lTheDeskTop.clientHeight);
	lDeskWidth = giveInt(lTheDeskTop.clientWidth);
	lDeskPos = getElementAbsolutePos(lTheDeskTop);
	lDeskTop=giveInt(lDeskPos.y);
	lDeskLeft = giveInt(lDeskPos.x);
	lSelPos = getElementAbsolutePos(pSelectedElement);
	lCurLeft = giveInt(lSelPos.x);
	lCurTop = giveInt(lSelPos.y);
	lClipRight = lDeskLeft + lDeskWidth - lCurLeft;
	lClipBottom = lDeskTop + lDeskHeight - lCurTop;
	lClipTop = lDeskTop - lCurTop;
	lClipLeft = lDeskLeft - lCurLeft;
//	lRec="rect("+lClipTop+"px "+ lClipRight +"px "+lClipBottom+"px " +lClipLeft+"px)";
	lRec="rect("+lClipTop+"px "+ lClipRight +"px "+lClipBottom+"px " +lClipLeft+"px)";
	setStyle(pSelectedElement,'clip',lRec);
}

function checkSelection(){
	var lPic = $('UserPic');
	var lWidth = giveInt(lPic.width);
	var lHeight = giveInt(lPic.height);
	if(lWidth == 1 && lHeight == 1){
		lWidth = giveInt(lPic.style.width);
		lHeight = giveInt(lPic.style.height);
	}
	var lToBig = false;
	lTotal = lWidth * lHeight;
	var lForm = document.ActionForm;
	lForm.fa.value='create_glitters';
	showCover();
	lForm.submit();
}

function getFuzzFactor(){
	var lFuzz = $('fuzz');
	var lNewFuzz = lFuzz.options[lFuzz.selectedIndex].value;
	return lNewFuzz;
}

function getFillType(){
	var lFill = $('filltype');
	var lNewFill = lFill.options[lFill.selectedIndex].value;
	return lNewFill;
}

function getBorder(){
	var lBrdr = $('border');
	var lNewBrdr = lBrdr.options[lBrdr.selectedIndex].value;
	return lNewBrdr;
}

function doAction(pWhat){
//	lForm = document.ActionForm;
//	lForm.fa.value=pWhat;
//	lForm.data.value='fuzz='+getFuzzFactor()+'&fill='+getFillType();
//	alert("doAction"+pWhat);
//	lForm.submit();
	getNewImage(null,pWhat);
	if(pWhat=='previous')
		gCurIndex-=1;
	if(pWhat=='next')
		gCurIndex+=1;
}

function setPreviousNext(){
	if(gCurIndex>=gMaxIndex-1)
		$('redo').disabled=true;
	else
		$('redo').disabled=false;
	if(gCurIndex==0)
		$('undo').disabled=true;
	else
		$('undo').disabled=false;
}
function doSimpleAction(pWhat){
	lForm = document.ActionForm;
	lForm.fa.value=pWhat;
	lForm.submit();
}

function cancelUpload(){
	location.href=$('app_server').value;
	return false;
  }

function getOptions(){
	var lFuzz = getFuzzFactor();
	var lFill = getFillType();
	var lTile = getGlitter();
	var lBorder = getBorder();
	return 'fuzz='+lFuzz+'&fill='+lFill+'&tile='+lTile+'&border='+lBorder;
}

function clicked(e, obj){
	var x = e.offsetX?(e.offsetX):e.pageX-getElementAbsolutePos(master).x;
	var y = e.offsetY?(e.offsetY):e.pageY-getElementAbsolutePos(master).y;
	var lString = getOptions();
	lString += '&coord='+x+','+y;
	getNewImage(lString,"add_glitter_trans");
}

function sendBorder(){
	if(document.ActionForm.fa.value!='create_border'){
		alert("Set first a border");
		return;
	}
	var lString = getOptions();
	getNewImage(lString,"add_border");
}

function setCover(){
	var lImage = $('UserPic');
	var lCover = $('cover');
	lCover.width=lImage.width;
	lCover.height=lImage.height;
}

function showCover(){
	var lLayer = $('covering');
	setCover();
	setStyle(lLayer,'zIndex',1000);
}

function hideCover(){
	var lLayer = $('covering');
	setStyle(lLayer,'zIndex',0);
}

function showExplanation(pWhich){
    removeExplanations();
	lLayer = $(pWhich);
	lShower= $('explain_preview');
	lShower.appendChild(lLayer);
	setStyle(lLayer,'display','block');
}

function removeExplanations(){
	lLayer = $('explain_fuzz');
	lLayer2 = $('explain_floodfill');
	setStyle(lLayer,'display','none');
	setStyle(lLayer2,'display','none');
	lShower= $('explain_preview');
	lHider= $('temp_container');
	if (lLayer.parentNode == lShower)
		lHider.appendChild(lLayer);
	if (lLayer2.parentNode == lShower)
		lHider.appendChild(lLayer2);
}

function getGlitter(){
	return $('curTile').value;
}

function Initialise(){
	var gFuzz = $('fuzz');
	if(!gFuzz)
		return;
	for (i=0;gFuzz.options.length > i;i++){
		if(gFuzz.options[i].value == gF)
			gFuzz.options[i].selected = true;
	}
	var gFill = $('filltype');
	for (i=0;gFill.options.length > i;i++){
		if(gFill.options[i].value == gFl)
			gFill.options[i].selected = true;
	}
	hideCover();
}

function addBookmark(title, url) {
		if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function")) {
			window.sidebar.addPanel(title, url, "");
		} else if(document.all) {
			window.external.AddFavorite(url, title);
		} else if(window.opera && window.print) {
			return true;
		}
	}

function gN(pPage, pPage2){
	getNewPage(pPage,pPage2);
}

function getNewPage(pData,pPage2){
	var lPage = pData;
	if (window.XMLHttpRequest)
	{xmlhttp=new XMLHttpRequest();}
	else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
	xmlhttp.onreadystatechange=function()
	{
		if (xmlhttp.readyState==4 && xmlhttp.status==200)
			{
				if(lPage=='bg_color')
					return;
				if(lPage < 100)
					$('tiles').innerHTML=xmlhttp.responseText;
				else
					$('page_choice').innerHTML=xmlhttp.responseText;
			}
	}
	if(pPage2!=null) pData += '&subpage='+pPage2;
	if(lPage < 100)	lURL = "./index.php?fa=glitters_page&page="+pData;
	else lURL = "./index.php?fa=glitters_range&page="+pData;
	if(lPage=='bg_color'){lURL="./index.php?fa=bg_color&color="+pPage2;}
	xmlhttp.open("GET",lURL,true);
	xmlhttp.send();
}

function readStyle(element, property){
	if (element.style[property] !=null && element.style[property] != "") {
		return element.style[property];
	} else if (element.currentStyle) {
		return element.currentStyle[property];
	} else if (document.defaultView && document.defaultView.getComputedStyle) {
		var style = document.defaultView.getComputedStyle(element, null)
		return style.getPropertyValue(property);
	} else {
		return null;
	}
}

function unsetBrdr(){
	var lPic = $('UserPic');
	var lLayer = $('UserPicLayer');
	lLayer.style.width = lPic.width+'px';
	lLayer.style.height = lPic.height+'px';
	setStyle(lLayer,'background',"");
	var lUserPic=$('LayerPic');
	lUserPic.style.left='0px';
	lUserPic.style.top='0px';
	var lCover=$('covering');
	lCover.style.left='0px';
	lCover.style.top='0px';
}

function setBrdr(){
	var lSelect=$('border');
	var lBorder = lSelect.options[lSelect.selectedIndex].value;
	var lPic = $('UserPic');
	var lWidth = giveInt(lPic.width);
	var lHeight = giveInt(lPic.height);
	setStyle(lPic,'border',"0px solid black");
	var lLayer = $('UserPicLayer');
	lLayer.style.width = lWidth + (2 * lBorder)+'px';
	lLayer.style.height = lHeight + (2 * lBorder)+'px';
	var lUserPic=$('LayerPic');
	lUserPic.style.left=lBorder+'px';
	lUserPic.style.top=lBorder+'px';
	var lCover=$('covering');
	lCover.style.left=lBorder+'px';
	lCover.style.top=lBorder+'px';
	setBg();
}

function unsetTxt(){
	var lText=$('txt');
	setStyle(lText,'display','none')
}

function setTxt(){
	var lTxt=$('thetxt');
	lTxt.src='./magik.gif';
	var lText=$('txt');
	setStyle(lText,'display','block');
}

function setBg(){
	var lLayer = $('UserPicLayer');
	setStyle(lLayer,'background',"url("+$('currentGlitter').src+")");
}

function cc(pWhat){
	var lc = readStyle(pWhat,'background-color');
	if(lc!=null){
		$('editor').style.backgroundColor=lc;
		getNewPage('bg_color',lc);
	}
}
function urlencode(string){
	string = string.replace(/\r\n/g,"\n");
	var utftext = "";
	for (var n = 0; n < string.length; n++) {
		var c = string.charCodeAt(n);
		if (c < 128) {
			utftext += String.fromCharCode(c);
		}
		else if((c > 127) && (c < 2048)) {
			utftext += String.fromCharCode((c >> 6) | 192);
			utftext += String.fromCharCode((c & 63) | 128);
		}
		else {
			utftext += String.fromCharCode((c >> 12) | 224);
			utftext += String.fromCharCode(((c >> 6) & 63) | 128);
			utftext += String.fromCharCode((c & 63) | 128);
		}
	}
	return escape(utftext);
}

function dosth(){
//hideCover();
var ltxt = $('txt');
clipImageToDesktop(ltxt);
}

function getTextPosition(){
	var lText = $('txt');
	var lTextPos = getElementAbsolutePos(lText);
	var lImage = $('UserPic');
	var lImagePos = getElementAbsolutePos(lImage);
	return (lTextPos.x - lImagePos.x) +","+ (lTextPos.y - lImagePos.y);
}

function resetTextPosition(){
	var lText = $('txt');
	var lImage = $('UserPic');
	var lImagePos = getElementAbsolutePos(lImage);
	var lPos2 = getElementAbsolutePos($('editor'));  
	lText.style.left = isFF ? lImagePos.x + 'px' : (lImagePos.x - lPos2.x - 10) + 'px';
    lText.style.top  = isFF ? lImagePos.y + 'px' : (lImagePos.y - lPos2.y - 10) + 'px';
}


function setText(){
	showCover();
	setTxt();
	var lGlitter = getGlitter();
	var lFontEl = $('font');
	var lFont = lFontEl.options[lFontEl.selectedIndex].value;
	var lSizeEl = $('txt_size');
	var lSize = lSizeEl.options[lSizeEl.selectedIndex].value;
	var lRotEl = $('rotText');
	var lRot = lRotEl.options[lRotEl.selectedIndex].value;
	var lText = urlencode($('txttxt').value);
	var lPos = getTextPosition();
	var lEdgeEl = $('text_border');
	var lEdge = lEdgeEl.options[lEdgeEl.selectedIndex].value;
	var lCol = $('txt_color').value;
	lData = "font="+lFont+"&size="+lSize+"&rot="+lRot+"&text="+lText+"&tile="+lGlitter+"&coord="+lPos+"&edge="+lEdge+"&edge_color="+lCol;
	var ltxt=$('thetxt');
	ltxt.src='./?fa=temp_text&'+lData;
	setReadyToDrag2();
	hideCover();
}

function menu(pId){
	var myMenu=new Array("tool_select","tool_draw","tool_border","tool_text");
	for(var i=0; i<myMenu.length; i++) {
		var lEl = $(myMenu[i]);
		if (pId==i)
			setStyle(lEl,'display','block');
		else
			setStyle(lEl,'display','none');
	}
	if(pId==0)
		setToFill();
	if(pId==1)
		setToDraw();
	if(pId==2)
		setToBorder();
	if(pId==3)
		setToText();
}

var gClipper;
function setReadyToDrag2(){
	document.onmousedown=selectForDrag2;
	document.onmouseup=deselectForDrag;
	gClipper = clipImageToDesktop;
}

var isIE=document.all;
var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
var isFF=$&&!document.all&&!isChrome;
var isdrag=false;
var xAtClick;
var yAtClick;
var xPicStart;
var yPicStart;
var gDraggableElement;

function deselectForDrag(e){
	isdrag=false;
}

function dragImage(e)
{
  if (isdrag){
  
	var lPos2 = getElementAbsolutePos($('editor'));  
	dobj.style.left = isFF ? (xPicStart + e.clientX - xAtClick) + 'px' : (xPicStart + event.clientX - xAtClick - lPos2.x - 10) + 'px';
    dobj.style.top  = isFF ? (yPicStart + e.clientY - yAtClick) + 'px' : (yPicStart + event.clientY - yAtClick - lPos2.y - 10) + 'px';
	gClipper(dobj);
    return false;
  }
}

function findDraggableElement(e) {
	var fobj       = isFF ? e.target : event.srcElement;
	var topelement = isFF ? "HTML" : "BODY";
	if(!fobj)
		return null;
	while (fobj.tagName != topelement && fobj.className != "dragableElement" && fobj.tagName != "HTML")
	{
 		fobj = isFF ? fobj.parentNode : fobj.parentElement;
	}
	if (fobj.className=="dragableElement")
		return fobj;
	return null;
}


function selectForDrag2(e){
 	var fobj=findDraggableElement(e);
	if (fobj==null)
		fobj=gDraggableElement;
  	if (fobj!=null)
  	{
    	isdrag = true;
    	dobj = fobj;
		var lPos=getElementAbsolutePos(dobj);
    	xPicStart = lPos.x;
    	yPicStart = lPos.y;
    	xAtClick = isFF ? e.clientX : event.clientX;
    	yAtClick = isFF ? e.clientY : event.clientY;
    	//$('txt').onmousemove=dragImage;
		document.onmousemove=dragImage;
    	return false;
  	}
}

function fillRadius(){
	var lRad = $('rotText');
	if(lRad.length>1)
		return;
	for (var n = 0; n <= 360; n++) {
		var elOptNew = document.createElement('option');
		elOptNew.value=n;
		elOptNew.text=n;
		lRad.options.add(elOptNew);
	}
}

function sendText(){
	var lGlitter = getGlitter();
	var lFontEl = $('font');
	var lFont = lFontEl.options[lFontEl.selectedIndex].value;
	var lSizeEl = $('txt_size');
	var lSize = lSizeEl.options[lSizeEl.selectedIndex].value;
	var lRotEl = $('rotText');
	var lRot = lRotEl.options[lRotEl.selectedIndex].value;
	var lText = urlencode($('txttxt').value);
	var lPos = getTextPosition();
	var lEdgeEl = $('text_border');
	var lEdge = lEdgeEl.options[lEdgeEl.selectedIndex].value;
	var lCol = $('txt_color').value;
	var lData = "font="+lFont+"&size="+lSize+"&rot="+lRot+"&text="+lText+"&tile="+lGlitter+"&coord="+lPos+"&edge="+lEdge+"&edge_color="+lCol; 
	getNewImage(lData,'add_glitter_text');
//	setStyle($('txt'),'zIndex',-100);
	setStopToDrag();
	setTxt();
	resetTextPosition();
	unsetTxt();
}
