/**
* Aktualisiert Defaultwerte bei Wechsel sig->minisig zB
*/
function update(frm, arg) {

    // Default: "sig")
    document.getElementById("bordercell").innerHTML = "Rahmen:";
    frm.preWi.value = 180;
    frm.preHe.value = 50;
    frm.preOffX.disabled = false;
    frm.preOffY.disabled = false;
    frm.prePose.disabled = false;
    // foreground
    frm.preFGR.value = 0;
    frm.preFGG.value = 0;
    frm.preFGB.value = 0;
    // outline
    frm.preOG.disabled = false;
    frm.preOGR.disabled = false;
    frm.preOGG.disabled = false;
    frm.preOGB.disabled = false;
            frm.preOG.checked = false;
        frm.preOGR.value = 255;
        frm.preOGG.value = 255;
        frm.preOGB.value = 255;
        //background
    frm.preBG[0].disabled = false;
    frm.preBG[1].disabled = false;
    frm.preBG[2].disabled = false;
    frm.preBG[3].disabled = false;
    frm.preBG[4].disabled = false;
    frm.preBG[5].disabled = false;
    frm.preBG[6].disabled = false;
    frm.preBG[7].disabled = false;
    frm.preBG[8].disabled = false;
    frm.preBG[9].disabled = false;
    frm.preBG[10].disabled = false;
    frm.preBG[11].disabled = false;
    frm.preBG[12].disabled = false;
    frm.preBG[13].disabled = false;
    frm.preBG[14].disabled = false;
    frm.preBG[15].disabled = false;
    frm.preBG[16].disabled = false;
    frm.preBG[17].disabled = false;
    frm.preBG[18].disabled = false;
    frm.preBG[19].disabled = false;
    frm.preBG[01-1].checked = true;
    frm.preBGR.value = Array;
    frm.preBGG.value = Array;
    frm.preBGB.value = Array;
        // border
            frm.preBoR.value = 0;
        frm.preBoG.value = 0;
        frm.preBoB.value = 0;
        // 4 Checkboxen
    frm.preLevel.checked = true;
    frm.preClass.checked = true;
    frm.preGuild.checked = true;
    frm.preTitle.checked = false;
    frm.preGuild.disabled = false;
    frm.preTitle.disabled = false;
    if (arg == "minisig") {
        frm.preWi.value = 200;
        frm.preHe.value = 20;
        frm.preOffX.disabled = true;
        frm.preOffY.disabled = true;
        frm.prePose.disabled = true;
        frm.preFGR.value = 255;
        frm.preFGG.value = 255;
        frm.preFGB.value = 255;
        frm.preBG[17-1].checked = true;
                    frm.preOG.checked = true;
            frm.preOGR.value = 0;
            frm.preOGG.value = 0;
            frm.preOGB.value = 0;
                frm.preLevel.checked = true;
        frm.preClass.checked = true;
        frm.preGuild.disabled = true;
        frm.preTitle.disabled = true;
    } else if (arg == "minisig2") {
        frm.preWi.value = 200;
        frm.preHe.value = 35;
        frm.preOffX.disabled = true;
        frm.preOffY.disabled = true;
        frm.prePose.disabled = true;
        frm.preFGR.value = 255;
        frm.preFGG.value = 255;
        frm.preFGB.value = 255;
        frm.preBG[17-1].checked = true;
                    frm.preOG.checked = true;
            frm.preOGR.value = 0;
            frm.preOGG.value = 0;
            frm.preOGB.value = 0;
                frm.preLevel.checked = true;
        frm.preClass.checked = true;
        frm.preGuild.checked = true;
        frm.preTitle.checked = true;
        frm.preGuild.disabled = false;
        frm.preTitle.disabled = false;
    } else if (arg == "button") {
        document.getElementById("bordercell").innerHTML = "Farbe links:";
        frm.preWi.value = 80;
        frm.preHe.value = 15;
        frm.preOffX.disabled = true;
        frm.preOffY.disabled = true;
        frm.prePose.disabled = true;
        frm.preOG.disabled = true;
        frm.preOGR.disabled = true;
        frm.preOGG.disabled = true;
        frm.preOGB.disabled = true;
        
        frm.preFGR.value = 0;
        frm.preFGG.value = 0;
        frm.preFGB.value = 0;
        
        frm.preBoR.value = 255;
        frm.preBoG.value = 204;
        frm.preBoB.value = 51;
        
        frm.preBG[0].disabled = true;
        frm.preBG[1].disabled = true;
        frm.preBG[2].disabled = true;
        frm.preBG[3].disabled = true;
        frm.preBG[4].disabled = true;
        frm.preBG[5].disabled = true;
        frm.preBG[6].disabled = true;
        frm.preBG[7].disabled = true;
        frm.preBG[8].disabled = true;
        frm.preBG[9].disabled = true;
        frm.preBG[10].disabled = true;
        frm.preBG[11].disabled = true;
        frm.preBG[12].disabled = true;
        frm.preBG[13].disabled = true;
        frm.preBG[14].disabled = true;
        frm.preBG[15].disabled = true;
        frm.preBG[16].disabled = true;
        frm.preBG[17].disabled = true;
        frm.preBG[18].disabled = true;
        frm.preBG[19].disabled = true;
        frm.preBG[20].checked = true;
        frm.preBGR.value = 255;
        frm.preBGG.value = 153;
        frm.preBGB.value = 0;
        
        frm.preTitle.checked = true;
        frm.preLevel.disabled = true;
        frm.preClass.disabled = true;
        frm.preGuild.disabled = true;
        frm.preTitle.disabled = true;
        
    }
}

/**
* Wird bei jedem onChange, onBlur aufgerufen
* meistens ohne Argumente, nur bei Wechsel sig->minisig etc. mit
*/
function Preview() {
    var frm = document.getElementById('frm');

    var argv = Preview.arguments;
    var argc = argv.length;
    
    if (argc > 0) {
        update(frm, argv[0]);
    }

    // Variablen aus Formular
    var name = frm.preCharName.value;
    var server = frm.preServer.value;
    var pose = frm.prePose.value;
    var font = frm.preFont.value;
    
    var preLevel = frm.preLevel.checked;
    var preClass = frm.preClass.checked;
    var preGuild = frm.preGuild.checked;
    var preTitle = frm.preTitle.checked;
    
    var preFormat = checkRadio(frm.preFormat);
    // foreground
    var preFGR = (frm.preFGR.value > 0) ? frm.preFGR.value : 0;
    var preFGG = (frm.preFGG.value > 0) ? frm.preFGG.value : 0;
    var preFGB = (frm.preFGB.value > 0) ? frm.preFGB.value : 0;
    // background
    var preBGR = (frm.preBGR.value > 0) ? frm.preBGR.value : 0;
    var preBGG = (frm.preBGG.value > 0) ? frm.preBGG.value : 0;
    var preBGB = (frm.preBGB.value > 0) ? frm.preBGB.value : 0;
    var preBG = checkRadio(frm.preBG);
    // border
    var preBoR = (frm.preBoR.value > 0) ? frm.preBoR.value : 0;
    var preBoG = (frm.preBoG.value > 0) ? frm.preBoG.value : 0;
    var preBoB = (frm.preBoB.value > 0) ? frm.preBoB.value : 0;
    // outline
    var preOGR = (frm.preOGR.value > 0) ? frm.preOGR.value : 0;
    var preOGG = (frm.preOGG.value > 0) ? frm.preOGG.value : 0;
    var preOGB = (frm.preOGB.value > 0) ? frm.preOGB.value : 0;
    var preOG = frm.preOG.checked;
    
    var defWi;
    var defHe;
    var defOffX = 60;
    var defOffY = -10;
    var defError = "#FD9D96";
    
    // Groesse definieren
    if (preFormat == "minisig") {
        sFormat = preFormat;
        defWi = 200;
        defHe = 20;
    } else if (preFormat == "minisig2") {
        sFormat = preFormat;
        defWi = 200;
        defHe = 35;
    } else if (preFormat == "button") {
        sFormat = preFormat;
        defWi = 80;
        defHe = 15;
    } else {
        sFormat = "sig";
        defWi = 180;
        defHe = 50;
    }
    
    var preWi = (frm.preWi.value > 0) ? frm.preWi.value : defWi;
    var preHe = (frm.preHe.value > 0) ? frm.preHe.value : defHe;
    if (frm.preWi.value > 200 && preFormat == "sig") {
        preWi = 200;
        frm.preWi.value = 200;
    }
    if (frm.preHe.value > 200) {
        preHe = 200;
        frm.preHe.value = 200;
    }
    var ox = parseInt(frm.preOffX.value);
    var oy = parseInt(frm.preOffY.value);
    var preOffX = (ox+0 == ox && ox != defOffX) ? ox : defOffX;
    var preOffY = (oy+0 == oy && ox != defOffY) ? oy : defOffY;
    
    // Teile der URL, default: nichts zusaetzlich anzeigen
    var sSrv = '';
    var sPose = '';
    var sFont = '';
    var sFG = '';
    var sBG = '';
    var sBorder = '';
    var sSize = '';
    var sOutline = '';
    var sLevel = '';
    var sClass = '';
    var sGuild = '';
    var sTitle = '';
    
    if (server == "loki") {
        sSrv = ".loki";
    }
    if (pose == "sta") {
        sPose = ".sta";
    } else if(pose == "fig") {
        sPose = ".fig";
    }
    if (font != "default" && font.length > 0) {
        sFont = ".font-"+font;
    }
    
    /*************************************************************************/
    // foreground color and outline
    /*************************************************************************/
    if (preFGR > 255) {
        preFGR = 255;
        frm.preFGR.value = preFGR;
        setStyle(frm.preFGR,'backgroundColor',defError);
    }
    if (preFGG > 255) {
        preFGG = 255;
        frm.preFGG.value = preFGG;
        setStyle(frm.preFGG,'backgroundColor',defError);
    } 
    if (preFGB > 255) {
        preFGB = 255;
        frm.preFGB.value = preFGB;
        setStyle(frm.preFGB,'backgroundColor',defError);
    }
    if (preOG == true) {
        if (preOGR > 255) {
            preOGR = 255;
            frm.preOGR.value = preOGR;
            setStyle(frm.preOGR,'backgroundColor',defError);
        }
        if (preOGG > 255) {
            preOGG = 255;
            frm.preOGG.value = preOGG;
            setStyle(frm.preOGG,'backgroundColor',defError);
        }
        if (preOGB > 255) {
            preOGB = 255;
            frm.preOGB.value = preOGB;
            setStyle(frm.preOGB,'backgroundColor',defError);
        }
    }
    
    var changeF = false;
    var changeO = false;
    if (preFormat == "sig"){
        if (preFGR != "0") {
            changeF = true;
        }
        if (preFGG != "0") {
            changeF = true;
        }
        if (preFGB != "0") {
            changeF = true;
        }
        if (preOGR != "Array") {
            changeO = true;
        }
        if (preOGG != "Array") {
            changeO = true;
        }
        if (preOGB != "Array") {
            changeO = true;
        }
        if (preLevel == false) {
            sLevel = ".nolevel";
        }
        if (preClass == false) {
            sClass = ".noclass";
        }
        if (preGuild == false) {
            sGuild = ".noguild";
        }
        if (preTitle == true) {
            sTitle = ".title";
        }
    } else if (preFormat == "minisig"){
        if (preFGR != "255") {
            changeF = true;
        }
        if (preFGG != "255") {
            changeF = true;
        }
        if (preFGB != "255") {
            changeF = true;
        }
        if (preOGR != "0") {
            changeO = true;
        }
        if (preOGG != "0") {
            changeO = true;
        }
        if (preOGB != "0") {
            changeO = true;
        }
        if (preLevel == false) {
            sLevel = ".nolevel";
        }
        if (preClass == false) {
            sClass = ".noclass";
        }
    } else if (preFormat == "minisig2"){
        if (preFGR != "255") {
            changeF = true;
        }
        if (preFGG != "255") {
            changeF = true;
        }
        if (preFGB != "255") {
            changeF = true;
        }
        if (preOGR != "0") {
            changeO = true;
        }
        if (preOGG != "0") {
            changeO = true;
        }
        if (preOGB != "0") {
            changeO = true;
        }
        if (preLevel == false) {
            sLevel = ".nolevel";
        }
        if (preClass == false) {
            sClass = ".noclass";
        }
        if (preGuild == false) {
            sGuild = ".noguild";
        }
        if (preTitle == false) {
            sTitle = ".notitle";
        }
    } else if (preFormat == "button"){
        // uninteresting
    }
    
    if (changeF == true) {
        sFG = ".fg-"+tohex(preFGR)+tohex(preFGG)+tohex(preFGB);
    }
    if (preOG == true && changeO == true) {
        sOutline = ".outline-"+tohex(preOGR)+tohex(preOGG)+tohex(preOGB);
    }
    /*************************************************************************/
    
    // Hier farbiger Hintergrund
    if (preBG == "color") {
        if (preBGR > 255) {
            frm.preBGR.value = 255;
            setStyle(frm.preBGR,'backgroundColor',defError);
            sBG = ".bg-"+tohex(255)+tohex(preBGG)+tohex(preBGB);
        } else if (preBGG > 255) {
            frm.preBGG.value = 255;
            setStyle(frm.preBGG,'backgroundColor',defError);
            sBG = ".bg-"+tohex(preBGR)+tohex(255)+tohex(preBGB);
        } else if (preBGB > 255) {
            frm.preBGB.value = 255;
            setStyle(frm.preBGB,'backgroundColor',defError);
            sBG = ".bg-"+tohex(preBGR)+tohex(preBGG)+tohex(255);
        } else {
            setStyle(frm.preBGR,'backgroundColor','#FFFFFF');
            setStyle(frm.preBGG,'backgroundColor','#FFFFFF');
            setStyle(frm.preBGB,'backgroundColor','#FFFFFF');
            sBG = ".bg-"+tohex(preBGR)+tohex(preBGG)+tohex(preBGB);
        }
        
        if (preFormat == "button") {
            var hexBG = tohex(preBGR)+tohex(preBGG)+tohex(preBGB);
            if (hexBG != "FF9900"){
                sBG = ".bg-"+hexBG;
            } else {
                sBG = "";
            }
        }
    } else if (preFormat == "sig" && preBG != "01"){
        sBG = ".bg-"+preBG;
    } else if (preFormat == "minisig" && preBG != "17"){
        sBG = ".bg-"+preBG;
    } else if (preFormat == "minisig2" && preBG != "17"){
        sBG = ".bg-"+preBG;
    }
    
    if (preBoR > 0 || preBoG > 0 || preBoB > 0) {
        if (preBoR > 255) {
            frm.preBoR.value = 255;
            setStyle(frm.preBoR,'backgroundColor',defError);
            sBorder = ".border-"+tohex(255)+tohex(preBoG)+tohex(preBoB);
        } else if (preBoG > 255) {
            frm.preBoG.value = 255;
            setStyle(frm.preBoG,'backgroundColor',defError);
            sBorder = ".border-"+tohex(preBoR)+tohex(255)+tohex(preBoB);
        } else if (preBoB > 255) {
            frm.preBoB.value = 255;
            setStyle(frm.preBoB,'backgroundColor',defError);
            sBorder = ".border-"+tohex(preBoR)+tohex(preBoG)+tohex(255);
        } else {
            setStyle(frm.preBoR,'backgroundColor','#FFFFFF');
            setStyle(frm.preBoG,'backgroundColor','#FFFFFF');
            setStyle(frm.preBoB,'backgroundColor','#FFFFFF');
            sBorder = ".border-"+tohex(preBoR)+tohex(preBoG)+tohex(preBoB);
        }
        // Button: Border == 2. Farbe (links)
        if (preFormat == "button") {
            var hexBo = tohex(preBoR)+tohex(preBoG)+tohex(preBoB);
            if (hexBo != "FFCC33"){
                sBorder = ".border-"+hexBo;
            } else {
                sBorder = "";
            }
        }
    }
    if (preWi != defWi || preHe != defHe || preOffX != defOffX || preOffY != defOffY) {
        var offX;
        if (preOffX >= 0) {
            offX = "+"+preOffX;
        } else {
            offX = preOffX;
        }
        if (preOffY >= 0) {
            offY = "+"+preOffY;
        } else {
            offY = preOffY;
        }
        if (preOffX == defOffX) {
            offX = "";
        }
        if (preOffY == defOffY) {
            offY = "";
        }
        sSize = ".size-"+preWi+offX+"x"+preHe+offY;
    }
    
    var url = "http://izlude.de/"+sFormat+sSrv+sPose+sFont+sFG+sBG+sBorder+sSize+sOutline+sLevel+sClass+sGuild+sTitle+"_"+escape(name)+".png";
    
    if (name.length > 0) {
        frm.preImage.src = url;
        frm.preImage.width = preWi;
        frm.preImage.height = preHe;
        var x = Math.round(url.length / 20);
        frm.preURL1.size = x*20+20;
        frm.preURL2.size = x*20+20;
        frm.preURL3.size = x*20+20;
        frm.preURL1.value = url;
        frm.preURL2.value = '<img src="'+url+'" width="'+preWi+'" height="'+preHe+'" alt="'+name+'" />';
        frm.preURL3.value = '[img]'+url+'[/img]';
        setStyle(frm.preCharName,'backgroundColor','#FFFFFF');
    } else {
        setStyle(frm.preCharName,'backgroundColor','#FD9D96');
    }
}

function checkRadio(feld) {
	for (i=0; i<feld.length; i++){
			if(feld[i].checked == true){
				return feld[i].value;
			}
	}
}

function setStyle(obj,style,value){
    getRef(obj).style[style]= value;
}
	
function getRef(obj){
    return (typeof obj == "string") ? document.getElementById(obj) : obj;
}
    
function tohex(Decimal) {
    var hexChars = "0123456789ABCDEF";
    var a = Decimal % 16;
    var b = (Decimal - a)/16;
    hex = "" + hexChars.charAt(b) + hexChars.charAt(a);
    return hex;
}