var pre = '';
var after = '';
var safe_shadow = '#CCCCCC';

function FetchElement(id) {
	if (document.getElementById) {
		xfelement = document.getElementById(id)
	}
	else if (document.all) {
		xfelement = document.all[id]
	}
	else if (document.layers) {
		xfelement = document.layers[id]
	}
	return xfelement
}

function ajax() {
	var xmlhttp, bComplete = false;
	try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
	catch (e) { try { xmlhttp = new XMLHttpRequest(); }
	catch (e) { xmlhttp = false; }}}
	if (!xmlhttp) return null;
	this.connect = function(sURL, sMethod, sVars, fnDone) {
		if (!xmlhttp) return false;
		bComplete = false;
		sMethod = sMethod.toUpperCase();
		try {
			xmlhttp.open(sMethod, sURL+"?"+sVars, true);
			xmlhttp.onreadystatechange = function(){
        		if (xmlhttp.readyState == 4 && !bComplete) {
				bComplete = true;
				fnDone(xmlhttp);
			}};
			xmlhttp.send('');
		}
		catch(z) { return false; }
		return true;
	};
	return this;
}

function fonts() {
	window.open("index.php?action=fonts","","width=640,height=480,resizable=no,scrollbars=yes,location=no");
}

function download_smiley(curl) {
	window.location.href = curl;
}

function save_smiley(file, querystr) {
	var Conn = new ajax();
	if (!Conn) {
		var curl = file+'?'+querystr;
		window.open(curl+'&cache=3',"","width=180,height=30,innerHeight=180,innerWidth=30,personalbar=no,resizable=no,scrollbars=no,location=no,locationbar=no,toolbar=no,statusbar=no,menubar=no");
	}
	else {
		var fnWhenDone = function (oXML) {
			var nfile = oXML.responseText;
			FetchElement('Message').value = 'The smiley was saved successfully! Now select a representation form (UBB code or HTML code) or download the smiley!';
			FetchElement('URL').value = nfile;
			FetchElement('Message').focus();
		};
		var connect = Conn.connect(file, "get", querystr+'&cache=4', fnWhenDone);
		if (!connect) {
			var curl = file+'?'+querystr;
			window.open(curl+'&cache=3',"","width=180,height=30,innerHeight=180,innerWidth=30,personalbar=no,resizable=no,scrollbars=no,location=no,locationbar=no,toolbar=no,statusbar=no,menubar=no");
		}
	}
}

function SuchenUndErsetzen(QuellText, SuchText, ErsatzText) {   
	if ((QuellText == null) || (SuchText == null))           { return null; }
	if ((QuellText.length == 0) || (SuchText.length == 0))   { return QuellText; }
	if ((ErsatzText == null) || (ErsatzText.length == 0))    { ErsatzText = ""; }
    var LaengeSuchText = SuchText.length;
	var LaengeErsatzText = ErsatzText.length;
	var Pos = QuellText.indexOf(SuchText, 0);
	while (Pos >= 0) {
		QuellText = QuellText.substring(0, Pos) + ErsatzText + QuellText.substring(Pos + LaengeSuchText);
		Pos = QuellText.indexOf(SuchText, Pos + LaengeErsatzText);
	}
	return QuellText;
}

function enter(code) {
	FetchElement('Message').value = pre+code+after;
	FetchElement('URL').value = code;
	FetchElement('Message').focus();
}
function showimage(source) {
	FetchElement('icons').src = source;
}

function set_prefix(gpre, gafter) {
    url = FetchElement('URL').value;
    if (url == '') {
    	return false;
    }
    FetchElement('Message').value = gpre+url+gafter;
    FetchElement('Message').focus();
    showimage(url);	
}

function update(cache) {
	frm = FetchElement('Gen');
	var sn = frm.sn[0].value;
	for (i=0; i<frm.sn.length; i++){
		if(frm.sn[i].checked == true){
			sn = frm.sn[i].value;
		}
	}
	var face = frm.face.value;
	var size = frm.size.value;
	var text = frm.text.value;
	var color = frm.color.value;
	var border = frm.border.value;
	var schildbg = frm.schildbg.value;
	var rotate = frm.rotate.value;
	var align = frm.align.value;
	var bwidth = frm.borderwidth.value;
	var bstyle = frm.borderstyle.value;
	var shadow = frm.shadow;
	var shadow2 = '';
	text = escape(text);
	color = SuchenUndErsetzen(color, '#', "");	
	border = SuchenUndErsetzen(border, '#', "");	
	schildbg = SuchenUndErsetzen(schildbg, '#', "");
	
	if(face.length > 0) {
		face = '&face='+face;
	}
	else {
		face = '';
	}
	if (shadow.disabled == false) {
		shadow2 = '&shadow='+SuchenUndErsetzen(shadow.value, '#', "");
	}
	if(bwidth > 0) {
		bwidth = '&borderwidth='+bwidth;
	}
	else {
		bwidth = '';
	}
	if(bstyle > 1 && bstyle < 5) {
		bstyle = '&borderstyle='+bstyle;
	}
	else {
		bstyle = '';
	}
	if(size.length > 0 && size != '12') {
		size = '&size='+size;
	}
	else {
		size = '';
	}
	if(color.length > 0 && color != 'CC0000') {
		color = '&color='+color;
	}
	else {
		color = '';
	}
	if(sn.length > 0) {
		sn = '&smilienummer='+sn;
	}
	else {
		sn = '';
	}
	if(schildbg.length > 0 && schildbg != 'FFFFFF') {
		schildbg = '&schildbg='+schildbg;
	}
	else {
		schildbg = '';
	}
	if(border.length > 0 && border != '000000') {
		border = '&border='+border;
	}
	else {
		border = '';
	}
	if(text.length > 0) {
		text = '&text='+text;
	}
	else {
		text = '';
	}
	if(align == 'R' || align == 'L') {
		align = '&align='+align;
	}
	else {
		align = '';
	}
	if(rotate > 0 && rotate < 360) {
		rotate = '&rotate='+rotate;
	}
	else {
		rotate = '';
	}
	
	var file = surl+'index.php';
	var querystr = 'action=generate'+text+sn+size+face+color+schildbg+border+rotate+align+bwidth+bstyle+shadow2;
	var url = file+'?'+querystr;
    if (cache == 3) {
    	querystr = querystr+'&cache=3';
    	save_smiley(file, querystr);
    }
    else if (cache == 2) {
    	curl = url+'&cache=2';
    	download_smiley(curl);
    }
    else {
    	if (cache == 'p1') {
        	enter(url);
        } 
		else {FetchElement('Message').value = 'You can now save the smiley on our webspace or download it to your hard disk.';
			FetchElement('Message').focus();
			};
    	showimage(url);	
    }
}

function virtualcolor(id) {
	
	if (id == 'all') {
		virtualcolor(1,1);
		virtualcolor(2,1);
		virtualcolor(3,1);
		virtualcolor(4,1);
		return;
	}
	
	var vc = FetchElement('vc'+id);
	var ic = FetchElement('ic'+id);
	
	var val = ic.value;
	
	if (val < 1) {
		color = '#000000';
	}
	else {
		if (val.indexOf('#') == -1) {
			color = '#'+val;
		}
		else {
			color = val;
		}
	}
	
	ic.value = color;
	
	vc.style.backgroundColor = color;
		
}

function colors(field) {
	FetchElement('cdiv1').style.visibility = 'hidden';
	FetchElement('cdiv2').style.visibility = 'hidden';
	FetchElement('cdiv3').style.visibility = 'hidden';
	FetchElement('cdiv4').style.visibility = 'hidden';
	if (field != 0) {
    	FetchElement('cdiv'+field).style.visibility = 'visible';
		FetchElement('cdiv'+field).innerHTML = writeRow(field);
		window.setTimeout("colors(0)", 5000);
	}
}

function writeRow(field) {
	
	var ar = new Array("#330000","#333300","#336600","#339900","#33CC00","#33FF00","#66FF00","#66CC00","#669900","#666600","#663300","#660000","#FF0000","#FF3300","#FF6600","#FF9900","#FFCC00","#FFFF00","#330033","#333333","#336633","#339933","#33CC33","#33FF33","#66FF33","#66CC33","#669933","#666633","#663333","#660033","#FF0033","#FF3333","#FF6633","#FF9933","#FFCC33","#FFFF33","#330066","#333366","#336666","#339966","#33CC66","#33FF66","#66FF66","#66CC66","#669966","#666666","#663366","#660066","#FF0066","#FF3366","#FF6666","#FF9966","#FFCC66","#FFFF66","#330099","#333399","#336699","#339999","#33CC99","#33FF99","#66FF99","#66CC99","#669999","#666699","#663399","#660099","#FF0099","#FF3399","#FF6699","#FF9999","#FFCC99","#FFFF99","#3300CC","#3333CC","#3366CC","#3399CC","#33CCCC","#33FFCC","#66FFCC","#66CCCC","#6699CC","#6666CC","#6633CC","#6600CC","#FF00CC","#FF33CC","#FF66CC","#FF99CC","#FFCCCC","#FFFFCC","#3300FF","#3333FF","#3366FF","#3399FF","#33CCFF","#33FFFF","#66FFFF","#66CCFF","#6699FF","#6666FF","#6633FF","#6600FF","#FF00FF","#FF33FF","#FF66FF","#FF99FF","#FFCCFF","#FFFFFF","#0000FF","#0033FF","#0066FF","#0099FF","#00CCFF","#00FFFF","#99FFFF","#99CCFF","#9999FF","#9966FF","#9933FF","#9900FF","#CC00FF","#CC33FF","#CC66FF","#CC99FF","#CCCCFF","#CCFFFF","#0000CC","#0033CC","#0066CC","#0099CC","#00CCCC","#00FFCC","#99FFCC","#99CCCC","#9999CC","#9966CC","#9933CC","#9900CC","#CC00CC","#CC33CC","#CC66CC","#CC99CC","#CCCCCC","#CCFFCC","#000099","#003399","#006699","#009999","#00CC99","#00FF99","#99FF99","#99CC99","#999999","#996699","#993399","#990099","#CC0099","#CC3399","#CC6699","#CC9999","#CCCC99","#CCFF99","#000066","#003366","#006666","#009966","#00CC66","#00FF66","#99FF66","#99CC66","#999966","#996666","#993366","#990066","#CC0066","#CC3366","#CC6666","#CC9966","#CCCC66","#CCFF66","#000033","#003333","#006633","#009933","#00CC33","#00FF33","#99FF33","#99CC33","#999933","#996633","#993333","#990033","#CC0033","#CC3333","#CC6633","#CC9933","#CCCC33","#CCFF33","#000000","#003300","#006600","#009900","#00CC00","#00FF00","#99FF00","#99CC00","#999900","#996600","#993300","#990000","#CC0000","#CC3300","#CC6600","#CC9900","#CCCC00","#CCFF00","#000000","#333333","#666666","#999999","#cccccc","#ffffff");
	
	var cells = 17;
	var str = "";
	
	for (var i=0; i<ar.length; ) {
		str += '<div class="colors">';
		for (var j=0; j<=cells && i<ar.length; j++) {
			str += '<a href="javascript: doClick(\''+field+'\', \''+ar[i]+'\');" style="background-color: '+ar[i]+';"><img src="templates/images/pixel.gif" border="0" alt="" /></a>';
			i++;
		}
		str += '</div>';
	}
	return str;
}

function vars(field) {
	FetchElement('vdiv').style.visibility = 'hidden';
	if (field != 0) {
    	FetchElement('vdiv').style.visibility = 'visible';
		FetchElement('vdiv').innerHTML = writeVars();
		window.setTimeout("vars(0)", 5000);
	}
}

function writeVars() {
	
	var vars = 		new Array(
	'{TIME}',
	'{DATE}',
	'{COUNTER_ALL}',
	'{COUNTER_SMILEY}',
	'{CREATED}'
	);
	var vars_lang = new Array(
	'Current time',
	'Current date',
	'Number of created smileys',
	'Number of views of the smiley',
	'Creation date'
	);
	
	var vstr = '';
	
	vstr += '<table class="vars" border="0" width="200" cellspacing="1" cellpadding="2" bgcolor="#FF8800">';
	for (var i=0; i<vars.length; i++) {
			vstr += '<tr><td width="40%"><a href="javascript: enter_vars(\''+vars[i]+'\');">'+vars[i]+'</a></td><td width="60%">'+vars_lang[i]+'</td></tr>';
	}
	vstr += '</table>';

	return vstr;
}

function enter_vars(code) {
	var now = FetchElement('text').value;
	FetchElement('text').value = now+code;
	FetchElement('text').focus();
	FetchElement('vdiv').style.visibility = 'hidden';
}

function doClick(field,bgc) {
	FetchElement('ic'+field).value=bgc;
	virtualcolor(field);
	FetchElement('cdiv'+field).style.visibility = 'hidden';
}

function set_shadow (val) {
    if (val.checked == true) {
        safe_shadow = FetchElement('ic4').value;
		FetchElement('ic4').disabled = true;
		FetchElement('vc4').style.visibility = 'hidden';
    }
    else {
		FetchElement('ic4').disabled = false;
		FetchElement('vc4').style.visibility = 'visible';
    }
}