nav1a	 = new Image;
nav1a.src = "img/de/nav1a.png";
nav2a	 = new Image;
nav2a.src = "img/de/nav2a.png";

var ua = navigator.userAgent.toLowerCase();
var ie = ( (ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1) );
var version = parseFloat(navigator.appVersion);

function popupLink(link, page_id) {
	var url = link.href;	
	var width = 800;
	var height = 600;
	
	var myRef = window.open(url, 'edit_page' + page_id, 'width=' + width + ',height=' + height + ',toolbar=0,resizable=1');
	if (myRef) {
		myRef.focus();
	}

	return false;
}

function correctPNG() {
   var arVersion = navigator.appVersion.split("MSIE");
   var version = parseFloat(arVersion[1]);
   if ((version >= 5.5) && (document.body.filters)) {
      for(var i=0; i<document.images.length; i++)
      {
         var img = document.images[i];
         var imgName = img.src.toLowerCase();
         if (imgName.substring(imgName.length-10, imgName.length) == "_trans.png") {
            var imgID = (img.id) ? "id='" + img.id + "' " : "";
            var imgClass = (img.className) ? "class='" + img.className + "' " : "";
            var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' ";
            var imgStyle = "display:block;" + img.style.cssText;
            if (img.align == "left") imgStyle = "float:left;" + imgStyle;
            if (img.align == "right") imgStyle = "float:right;" + imgStyle;
            if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle;
            var strNewHTML = "<div " + imgID + imgClass + imgTitle + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";" + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader" + "(src=\'" + img.src + "\', sizingMethod='noscale');\"></div>";
            img.outerHTML = strNewHTML;
            i = i-1;
         }
      }
   }
}

/**
	Industriegruppentemplate wurde ausgewaehlt.
*/
function selectIndustriegruppeTemplate(pulldown, prefix) {
	var textfield = $(prefix + 'industriegruppe_sonstige');
	if (textfield != null) {
		if (pulldown.value == 'misc') {
			textfield.value = '';
			textfield.show();
			textfield.focus();
		} else {
			textfield.value = pulldown.value;
			textfield.hide();
		}
	}
}

/**
	Stellt den Zustand des Industriegruppe Pulldowns beim Laden der Seite wieder her.
*/
function initIndustriegruppePulldown(prefix) {
	var pulldown = $(prefix + 'industriegruppe_template');
	var textfield = $(prefix + 'industriegruppe_sonstige');
	
	if (pulldown == null || textfield == null) {
		return;
	}
	
	// Vorauswahl der Selectbox abhaengig vom Textfeld setzen
	for (var i = 0; i < pulldown.options.length; ++i) {
		if (pulldown.options[i].text == textfield.value) {
			pulldown.selectedIndex = i;
			break; 
		} else if (pulldown.options[i].value == 'misc' && textfield.value != '') {
			pulldown.selectedIndex = i;
		}
	}
	
	// Abhaengig vom Wert des Select-Fields wird das Textfeld sichtbar oder auch nicht
	if (pulldown.value == 'misc') {
		textfield.show();
	} else {
		textfield.value = pulldown.value;
		textfield.hide();
	}
}

/**
	Industriegruppentemplate wurde ausgewaehlt.
*/
function selectBrancheTemplate(pulldown, prefix) {
	var textfield = $(prefix + 'branche');
	if (textfield != null) {
		if (pulldown.value == 'misc') {
			console.debug('Setze Textwert auf leer und zeige Textfeld.');
			textfield.value = '';
			textfield.show();
			textfield.focus();
		} else {
			//console.debug('Setze Textwert auf Vorauswahl: ' + pulldown.value + ' und verstecke Textfeld.');
			textfield.value = pulldown.value;
			textfield.hide();
		}
	} else {
		console.error('Textfeld ' + prefix + 'branche nicht gefunden.');
	}
}

function selectFunktionTemplate(pulldown, prefix) {
	var textfield = $(prefix + 'unternehmenstitel');
	if (textfield != null) {
		if (pulldown.value == 'misc') {
			console.debug('Setze Textwert auf leer und zeige Textfeld.');
			textfield.value = '';
			textfield.show();
			textfield.focus();
		} else {
			//console.debug('Setze Textwert auf Vorauswahl: ' + pulldown.value + ' und verstecke Textfeld.');
			textfield.value = pulldown.value;
			textfield.hide();
		}
	} else {
		console.error('Textfeld ' + prefix + 'branche nicht gefunden.');
	}
}

/**
	Stellt den Zustand des Industriegruppe Pulldowns beim Laden der Seite wieder her.
*/
function initBranchePulldown(prefix) {
	console.debug('Initialisiere das Branchen Dropdown mit Prefix ' + prefix);

	var pulldown = $(prefix + 'branche_template');
	var textfield = $(prefix + 'branche');
	
	if (pulldown == null || textfield == null) {
		console.error("Konnte entweder pulldown oder template nicht in der Seite finden.");
		return;
	}
	
	// Vorauswahl der Selectbox abhaengig vom Textfeld setzen
	for (var i = 0; i < pulldown.options.length; ++i) {
		if (pulldown.options[i].text == textfield.value) {
			console.debug("Vorausgewaehltes Element: " + textfield.value + ", Index: " + i);
			pulldown.selectedIndex = i;
			break; 
		} else if (pulldown.options[i].value == 'misc' && textfield.value != '') {
			console.debug('Vorausgewaehltes Element: ' + pulldown.options[i].text + ', Textfeld: ' + textfield.value);
			pulldown.selectedIndex = i;
		}
	}
	
	// Abhaengig vom Wert des Select-Fields wird das Textfeld sichtbar oder auch nicht
	if (pulldown.value == 'misc') {
		console.debug('Sonstiges ausgew�hlt, Textfeld zeigen.');
		textfield.show();
	} else {
		console.debug('Anderer Wert als sonstiges ausgewaehlt, Textfeld verstecken.');
		textfield.value = pulldown.value;
		textfield.hide();
	}
}


/**
Stellt den Zustand des Industriegruppe Pulldowns beim Laden der Seite wieder her.
*/
function initFunktionPulldown(prefix) {
console.debug('Initialisiere das Funktions Dropdown mit Prefix ' + prefix);

var pulldown = $(prefix + 'funktion_template');
var textfield = $(prefix + 'unternehmenstitel');

if (pulldown == null || textfield == null) {
	console.error("Konnte entweder pulldown oder template nicht in der Seite finden.");
	return;
}

// Vorauswahl der Selectbox abhaengig vom Textfeld setzen
for (var i = 0; i < pulldown.options.length; ++i) {
	if (pulldown.options[i].text == textfield.value) {
		console.debug("Vorausgewaehltes Element: " + textfield.value + ", Index: " + i);
		pulldown.selectedIndex = i;
		break; 
	} else if (pulldown.options[i].value == 'misc' && textfield.value != '') {
		console.debug('Vorausgewaehltes Element: ' + pulldown.options[i].text + ', Textfeld: ' + textfield.value);
		pulldown.selectedIndex = i;
	}
}

	// Abhaengig vom Wert des Select-Fields wird das Textfeld sichtbar oder auch nicht
	if (pulldown.value == 'misc') {
		console.debug('Sonstiges ausgew�hlt, Textfeld zeigen.');
		textfield.show();
	} else {
		console.debug('Anderer Wert als sonstiges ausgewaehlt, Textfeld verstecken.');
		textfield.value = pulldown.value;
		textfield.hide();
	}
}

/**
	Textcounter Klasse.
	fields: Array mit Feldnamen
	maxlength: Maximale Laenge in Zeichen
	output: Id des Ausgabeobjekts
*/
var TextCounter = Class.create({
	fields: [],
	
	errorMessage: 'Sie haben mehr Zeichen eingegeben als moeglich. Bitte ueberpruefen Sie Ihre Angaben.',

	initialize: function(fields, maxlength, output) {
		for (var i = 0; i < fields.length; ++i) {
			var field = $( fields[i] );
			this.fields.push(field);

			// Alle relevanten events beachten
			Event.observe(field, 'keypress', this.onKeyPress.bindAsEventListener(this));
			Event.observe(field, 'keyup', this.onKeyUp.bindAsEventListener(this));
			
			// Beim uebergeordneten Formular einen Submit Handler registrieren
			if (i == 0) {
				Event.observe(field.form, 'submit', this.onFormSubmit.bindAsEventListener(this));
			}
		}

		this.output = $$( output );
		
		this.maxlength = maxlength;
		this.refreshOutput();
	},
	
	onFormSubmit: function(event) {
		// Alle Felder werden hier getrimmt, so dass der zum Server geschickte Text der
		// Text ohne leading/trailing Whitespaces ist
		for (var i = 0; i < this.fields.length; ++i) {
			this.fields[i].value = this.trimString(this.fields[i].value);
		}
	
		this.refreshOutput();
		var remaining = this.getRemaining();

		if (remaining < 0) {
			alert(this.errorMessage);
			event.stop();
			return false;
		} else {
			return true;
		}
	},

	onKeyPress: function(event) {
		this.refreshOutput();
		return true;
	},

	onKeyUp: function(event) {
		this.refreshOutput();
	},
	
	/**
		Eine etwas aufwaendigere Art die Zeichen in einem String zu zaehlen
	*/
	getStringLength: function(text) {
		// Die Leerzeichenberechnung beruht auf dem endgueltigen Text. 
		text = this.trimString(text);
		
		var len = 0;

		for (var i = 0; i < text.length; ++i) {
			switch (text.charCodeAt(i)) {
				case 10:
					len += 120; break;
				case 13: break;
				default:
					len++; break;
			}
		}

		return len;
	},
	
	/**
		Entfernt leading/trailing Leerzeichen und Absaetze.
	*/
	trimString: function(text) {
		text = text.replace(/^\s+/, '');
		text = text.replace(/\s+$/, '');
		return text;
	},

	getRemaining: function() {
		var sum = 0;
		for (var i = 0; i < this.fields.length; ++i) {
			sum += this.getStringLength(this.fields[i].value);
		}
		
		return (this.maxlength - sum);
	},
	
	refreshOutput: function() {
		var remaining = this.getRemaining();
		
		this.output.each(function(elem) {
			elem.update(remaining);
		});
	}
});


var IndustriegruppenSelector = Class.create({
	branchen: [],

	topPulldown: null,
	subPulldown: null,
	textfield: null,
	selected : null,

	initialize: function(prefix, branchen, selected) {
		this.branchen = branchen;
		this.prefix = prefix;
		this.selected = selected;
		
		Event.observe(window, 'load', this.onLoad.bindAsEventListener(this));
	},

	onLoad: function(event) {
		// Die drei relevanten Felder sichern
		this.textfield = $(this.prefix + 'industriegruppe_sonstige');
		this.topPulldown = $(this.prefix + 'industriegruppe_branche');
		this.subPulldown = $(this.prefix + 'industriegruppe_id');
		
		// Events anhaengen
		Event.observe(this.topPulldown, 'change', this.refreshState.bindAsEventListener(this));
		
		// Auswahl aus oberem Dropdown wiederherstellen
		var branche = '';

		// Falls das Textfeld einen Wert hat, waere der Standardwert des Dropdowns "sonstiges"
		if (this.textfield.value != '') {
			branche = 'misc';
		}

		if (this.selected != null) {
			for (var i = 0; i < this.branchen.length; ++i) {
				var industriegruppen = this.branchen[i].industriegruppen;
				for (var j = 0; j < industriegruppen.length; ++j) {
					// Auswahl gefunden
					if (industriegruppen[j].id == this.selected) {
						branche = this.branchen[i].id;
						break;
					}
				}
			}
		}
		
		// Jetzt wo die Branche bekannt ist, Index suchen
		for (var i = 0; i < this.topPulldown.options.length; ++i) {
			if (this.topPulldown.options[i].value == branche) {
				this.topPulldown.options.selectedIndex = i;
				break;
			}
		}

		// Initialzustand herstellen
		this.refreshState();
	},

	refreshState: function() {
		// Sublevel Pulldown abhaengig von der Auswahl der oberen Ebene aktualisieren
		if (this.topPulldown.value == 'misc') {
			this.setSubOptions([]); // Optionen leeren, damit beim submitten "null" uebertragen wird
			this.subPulldown.hide();
			this.textfield.show();
		} else if (this.topPulldown.value == '') {
			this.setSubOptions([]);
			this.subPulldown.hide();
			this.textfield.hide();
		} else {
			// Ausgewaehlte Branche suchen
			for (var i = 0; i < this.branchen.length; ++i) {
				if (this.branchen[i].id == this.topPulldown.value) {
					this.setSubOptions(this.branchen[i].industriegruppen);
					break;
				}
			}
			
			this.subPulldown.show();
			this.textfield.hide();			
		}
	},
	
	setSubOptions: function(options) {
		// Alle Optionen loeschen
		for (var i = this.subPulldown.options.length - 1; i >= 0; --i) {
			this.subPulldown.options[i] = null;
		}
		
		// Neue Optionen hinzufuegen
		for (var i = 0; i < options.length; ++i) {
			var isSelected = (options[i].id == this.selected);
			var option = new Option (options[i].name, options[i].id, isSelected, isSelected );
			this.subPulldown.options[i] = option;
		}
	}
});

function convertDateToUtc(date) {
	var result = new Date();
	result.setUTCDate(date.getDate());
	result.setUTCMonth(date.getMonth());
	result.setUTCFullYear(date.getFullYear());
	result.setUTCHours(0);
	result.setUTCMinutes(0);
	result.setUTCSeconds(0);
	result.setUTCMilliseconds(0);
	return result;
}

if (ie && version < 7) window.attachEvent("onload", correctPNG);
