var lastRowID = 0;
var timeStamp = new Date().getTime();

var addressDirtyInputs = new Array();
addressDirtyInputs["#firstName"] = "Vorname";
addressDirtyInputs["#lastName"] = "Nachname";
addressDirtyInputs["#street"] = "Straße + Nr.";
addressDirtyInputs["#zip"] = "PLZ";
addressDirtyInputs["#town"] = "Stadt";
addressDirtyInputs["#email"] = "eMail";

var addressRegexInputs = new Array();
addressRegexInputs["#firstName"] = "^[a-zA-ZöüäÖÜÄ\\- \\.]{2,}$";
addressRegexInputs["#lastName"]  = "^[a-zA-ZöäüÖÄÜ\\- ]{2,}$";
addressRegexInputs["#street"]    = "^[a-zA-ZöäüÖÄÜ\\- \\.]{2,}\\s*[0-9]+\\s*[a-zA-Z]*$";
addressRegexInputs["#zip"]       = "^[0-9]{5,5}$";
addressRegexInputs["#town"]      = "^[a-zA-ZöäüÖÄÜ\\- \\.]{2,}$";
//addressRegexInputs["#email"]     = "^[a-zA-Z0-9\\._%\\-]+@[a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,4}$";
addressRegexInputs["#email"]     =   "^[a-zA-Z0-9\\._%\\-+=]+@[a-zA-Z0-9\\.\\-+]+\\.[a-zA-Z0-9]{2,4}$";



var SUBMIT_ADDRESS_INCORRECT = "Adresse nicht korrekt angegeben!";
var SUBMIT_ALL_OK            = "Bestellen...";
var SUBMIT_NO_SHIRT          = "Kein Shirt ausgewählt!";

function addRow() {
    var newRow    = cloneRow(getTemplateRow(), lastRowID++);
    var tableNode = getTableNode();
    newRow        = tableNode.insertBefore(newRow, document.getElementById("#editRow"));
    newRow.style.display = "";
    validate();
}

function deleteRow() {
    var deleteTicks = document.getElementsByName("delete");
    for (var i=1;i<deleteTicks.length;i++){
        if (deleteTicks[i].checked){
            var id = getIDFromInput(deleteTicks[i]);
            getTableNode().removeChild(getRowNode(id));
            validate();
            return;
        }
    }
}

function getTableNode (){
    return document.getElementById("tsTable");
}

function getRowNode(id){
    return document.getElementById("#row_" + id);
}

function getIDFromInput(node){
    return node.id.split("_")[1];
}

function getLastRow (){
    var tsTable = getTableNode();
    var length  = tsTable.rows.length;
    if (length >=5){
        return tsTable.rows[tsTable.rows.length-3];
    }
    else {
        return null;
    }
}

function tickLastDelete (){
    var lastRow = getLastRow();
    var deleteBtn = document.getElementById("removeButton");

    if (lastRow != null){
        document.getElementById("#delete_" + getIDFromInput(lastRow)).checked = true;
        deleteBtn.disabled = false;
    }
    else {
        deleteBtn.disabled = true;
    }
}

function getTemplateRow (){
    var tsTable = getTableNode();
    var first   = tsTable.rows[1];
    return (first);
}

function cloneRow (row, id){
        row             = row.cloneNode(true);
        row.id          = "#row_"+id;
        var allChildren = row.getElementsByTagName('*');

        for (var i=0; i<allChildren.length; i++){
            if (allChildren[i].id.match("#")){
                allChildren[i].id = "#" + allChildren[i].name + "_" +id;
            }
        }
        return (row);
}

function validate() {
    var tsTable = getTableNode();

    var shirts     = new Array();
    var shirtTexts = new Array();
    var sizeTexts  = new Array();
    var allCount   = 0;
    var addrValid  = true;

    for (var k in addressDirtyInputs) {
        if (validateAddressField(document.getElementById(k)) != 0){
            addrValid = false;
            break;
        }
    }

    for (var i=2; i<tsTable.rows.length-2; i++){
        var row = tsTable.rows[i];
        var id = getIDFromInput(row);

        var shirtType = document.getElementById("#shirt_"+id).value;
        var shirtSize = document.getElementById("#size_"+id).value;
        var amount = parseInt(document.getElementById("#amount_"+id).value);
        var k = shirtType + '_'+shirtSize;

        shirts[k]     = (shirts[k] == null) ? 0 : shirts[k];
        shirts[k]     = shirts[k] + amount;
        allCount       += amount;
        shirtTexts[k] = shirtType.split('_')[1];
        sizeTexts[k]  = shirtSize.split('_')[1];
    }

    var betreff = "" + buildBetreffPart() + allCount;
    var sum     = (allCount * 19.95 + 2.9).toFixed(2);

    if ((allCount > 0)){
        var txt = "Liebes So-fies-ist-Brandenburg-Team,\n\n";
        txt += "Ich möchte hiermit verbindlich bei Ihnen bestellen:";
        for (var k in shirts) {
        	txt += "\n\t* " + shirts[k] + "x '" + shirtTexts[k] + "', Größe: " + sizeTexts[k];
        }

        txt += "\n\nBitte senden Sie mir die Ware an die folgende Adresse:";
        txt += "\n" + buildAddress();
        txt += "\n\nDen Gesamtpreis von €" + sum + " (inkl. €2,90 Versand & MwSt.) überweise ich auf das Konto:";
        txt += "\n\t\"Fieses Land\"";
        txt += "\n\tKonto   : 011521200";
        txt += "\n\tBLZ     : 120 400 00";
        txt += "\n\tInstitut: Commerzbank Berlin";
        if ((allCount > 0) && addrValid){
            txt += "\n\tVerwendungszweck: " + betreff;
        }
        txt += "\n\nErst anschließend bekomme ich die Ware zugesandt.";
        txt += "\n\nVielen Dank.";
        txt += "\n" + document.getElementById("#lastName").value;

        document.getElementById("#betreff").value = "";
        document.getElementById("#mailtext").value = txt;
        document.getElementById("#cc").value = document.getElementById("#email").value;
        document.getElementById("#sum").innerHTML = "&euro;" + sum;
    }
    if (!addrValid){
        document.getElementById("#betreff").value = "";
        enableSubmit(false, SUBMIT_ADDRESS_INCORRECT);
    }
    if (allCount <= 0){
        document.getElementById("#betreff").value = "";
        document.getElementById("#mailtext").value = "Ich möchte kein T-Shirt bei Euch bestellen :-(";
        document.getElementById("#sum").innerHTML = "";
        enableSubmit(false, SUBMIT_NO_SHIRT);
    }

    if ((allCount > 0) && addrValid){
            document.getElementById("#betreff").value = betreff;
            enableSubmit(true, SUBMIT_ALL_OK);
    }

    tickLastDelete();
}

function enableSubmit(bool, strReason){
        document.getElementById("#submitButton").disabled = !bool;
        document.getElementById("#submitButton").value = strReason;
}

function addressFieldChanged(inputField){
    var dirtyText = addressDirtyInputs[inputField.id];
    var regex = addressRegexInputs[inputField.id];
    var str = inputField.value;

    var valid = validateAddressField(inputField);

    if (valid == -1){
        enableSubmit(false, SUBMIT_ADDRESS_INCORRECT);
        inputField.style.background="#FF9966";
        inputField.value = dirtyText;
    }
    else if (valid == -2) {
        enableSubmit(false, SUBMIT_ADDRESS_INCORRECT);
        inputField.style.background="#FF9966";
        alert ("Bitte " + dirtyText + " richtig eingeben!");
    }
    else {
        inputField.style.background="#FFFFFF";
        validate();
    }
}

function validateAddressField(inputField){
    var dirtyText = addressDirtyInputs[inputField.id];
    var regex = addressRegexInputs[inputField.id];
    var str = inputField.value;

    if ((str == null) || (str == "") || (str == dirtyText)){
        return -1;
    }
    else if (!str.trim().match(regex)) {
        return -2;
    }
    else {
        return 0;
    }
}

function addressFieldClicked(inputField){
    var str       = inputField.value;
    var dirtyText = addressDirtyInputs[inputField.id];
    if (dirtyText == str){
        inputField.value = "";
    }
}

function buildBetreffPart (){
    var str  = document.getElementById("#lastName").value;
    str     += "/" + timeStamp;
    str     += "/" ;
    return str;
}


function buildAddress (){
    var adr = "\t" + document.getElementById("#firstName").value + " " + document.getElementById("#lastName").value;
    adr    += "\n\t" + document.getElementById("#street").value;
    adr    += "\n\tD-" + document.getElementById("#zip").value + " " + document.getElementById("#town").value;
    return adr;
}

String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}




/*************************************************************
Button Funktionen
**************************************************************/
var browserVer    = getBrowserVersion();
var buttonImgages = new Array();

function getBrowserVersion (){
    var browserName = navigator.appName;   // detect browser
    var browserVer = parseInt(navigator.appVersion);
    if (browserName == "Netscape" && browserVer >= 3){
        browserVer = "1";
    }
    else if (browserName == "Microsoft Internet Explorer" && browserVer == 4){
        browserVer = "1";
    }
    else {
        browserVer = "2";
    }
    return browserVer;
}

function hiLite(img, index) {
    if (browserVer == 1) {
        img.src = buttonImgages[img.name][index].src;
    }
}

function newButtonImage (name, src0, src1){
    if (browserVer == 1) {
        var images = new Array();
        images[0]  = new Image(150,0);
        images[1]  = new Image(150,0);
        images[0].src = src0;
        images[1].src = src1;
        buttonImgages[name] = images;
    }
}

function initButtons(){
    newButtonImage('a', "pics/button/footer/bestellung_grau.gif", "pics/button/footer/bestellung_rot.gif");
    newButtonImage('b', "pics/button/footer/coming_soon_grau.gif", "pics/button/footer/coming_soon_rot.gif");
    newButtonImage('c', "pics/button/footer/anwendungshilfe_grau.gif", "pics/button/footer/anwendungshilfe_rot.gif");
    newButtonImage('d', "pics/button/footer/multimedia_grau.gif", "pics/button/footer/multimedia_rot.gif");
}

/*************************************************************
SlideShow Funktionen
**************************************************************/
var isIE  = (document.all) ? true : false;
var fotos = new Array();

// editiere hier das grosse bild
var exakt=false;		//false = runterskalieren | true = die exakte angegebene groeße
var height=300;		//bei exakt=false sollte die width sehr hoch gesetzt werden!
var width=900;

var preview=5;	//anzahl der thumbnails in der manual-navi-leiste
var time=3500	//'slide'Zeit wie lange ein einzelnes Bild angezeigt wird in ms

var thumb_height=height/preview;
var thumb_width=100000;
var thumb_exakt=false;

var nav=0;
var NAV=-1;
var Timer;
var running=false;

function neu(url,text,alternative) {
	Neu = fotos.length;
	fotos[Neu] = new Array();
	fotos[Neu]["text"]=text;
	fotos[Neu]["alt"]=alternative;
	fotos[Neu]["pic"]=new Image()
	fotos[Neu]["pic"].src=url;
}


function skalieren(x,h,w,e) {
	H=fotos[x]["pic"].height;
	W=fotos[x]["pic"].width;
	W1=W;
	H1=H;
	if(!e){
		if(H>h){
			W1=W*h/H;
			H1=h;
		}
		if(W>w){
			H1=H*w/W;
			W1=w;
		}
	}
	else {
		H1=h;
		W1=w;
	}
	var re = new Array();
	re["w"]=W1;
	re["h"]=H1;
	return(re); W1=""; H1=""; W=""; H="";
}

function thumb_table(offset) {
	table="<table width=100% height=100%>";
	for(var x=offset; x<=offset+preview-1; x++){
		if(fotos[x]){
			var Size = skalieren(x,thumb_height,thumb_width,thumb_exakt);
			size="width="+Size["w"]+" height="+Size["h"];
			table+="<tr><th><img "+size+" onclick=\"show('"+x+"',true)\" class='thumb' "+size+" src='"+fotos[x]["pic"].src+"' alt=\""+fotos[x]["text"]+"\"></th></tr>"
		}
	}
	table+="</table>";
	return(table);
}



function navi(v){
	v=Number(v);
	if(nav+v>fotos.length-preview){
			V=fotos.length-preview;
	}
	else{
		if(nav+v<0){
			V=0;
		}
		else{
			V=nav+v;
		}
	}
	nav=V;
	if(isIE)	document.getElementById("thumbs").filters.blendTrans.Apply();  //elseif(FIREFOX)
	document.getElementById("thumbs").innerHTML=thumb_table(V);
	if(isIE)	document.getElementById("thumbs").filters.blendTrans.Play();    //elseif(FIREFOX)
}

function show(x,fs){
	x=Number(x);
	if(fotos[x]){
		var Size = skalieren(x,height,width,exakt);
		if(fs){size="width="+Size["w"]+" height="+Size["h"]; alt="alt=\"[show fullsize]\""; was=false} else {size=""; alt="alt=\"[show scaled size]\""; was=true}
		if(isIE)	document.getElementById("inhalt").filters.blendTrans.Apply();   //elseif(FIREFOX)
		document.getElementById("inhalt").innerHTML="<table height=\"100%\" width=\"100%\"><tr><th><a href=\"" + fotos[x]['alt'] + "\" rel=\"lightbox\" title=\"" + fotos[x]['text'] + "\"><img height=\"600px\" width=\"400px\" src=\""+ fotos[x]['pic'].src +"\"></a></th></tr></table>";
		if(isIE)	document.getElementById("inhalt").filters.blendTrans.Play();  //elseif(FIREFOX)
		document.getElementById("name").innerHTML=fotos[x]["text"];
		document.getElementById("status").innerHTML=(x+1)+"/"+fotos.length;
	}
	NAV=x
}

function slideshow(){
		NAV++;
		if(NAV>=fotos.length)NAV=0;
		show(NAV,true);
		Timer = setTimeout("slideshow()",time);
		document.getElementById("status2").innerHTML="[an]";
}

function startKill() {
	if(!running){
	    start();
	}
    else {
        kill();
    }
}

function start() {
	if(!running){
		slideshow();
		running=true;
	}
}

function kill(){
	running=false
	document.getElementById("status2").innerHTML="[aus]";
	if(Timer)clearTimeout(Timer);
}

function initSlideShow() {
    neu("pics/motive/modell/rechts.jpg",					"Springerstiefel mit Eichel"                , "pics/motive/rechts.jpg");
    neu("pics/motive/modell/asozial.jpg",					"Ausgebrannte Platte"                       , "pics/motive/asozial.jpg");
    neu("pics/motive/modell/arbeitslos.jpg",			    "Kippe auf dem Arbeitsamt"                  , "pics/motive/arbeitslos.jpg");
    neu("pics/motive/modell/verroht_1.jpg",				    "Babys im Blumenkasten (Gruppen-Bild)"      , "pics/motive/verroht_1.jpg");
    neu("pics/motive/modell/verroht_2.jpg",				    "Babys im Blumenkasten (Portrait)"          , "pics/motive/verroht_2.jpg");
    neu("pics/motive/modell/pervers.jpg",					"Blutige BHs im Wald"                       , "pics/motive/pervers.jpg");
    neu("pics/motive/modell/tot.jpg",						"Tot am Straßenrand"                        , "pics/motive/tot.jpg");

	document.getElementById("thumbs").style.height=10+height;
	setTimeout("document.getElementById('thumbs').innerHTML=thumb_table(0)",500);
}


