// ----------------------
//  Client information
// ----------------------

var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var clientVer = parseInt(navigator.appVersion); // Get browser version

var isOPERA = (clientPC.indexOf('Opera') != -1)? true : false;
var useIE    = (document.all && !isOPERA)? true : false;
var useDOM   = (document.getElementById && !useIE && !isOPERA)? true : false;

var is_ie = ((clientPC.indexOf("msie") != -1) && !isOPERA);
var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
                && (clientPC.indexOf('compatible') == -1) && !isOPERA
                && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));
var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
var is_mac = (clientPC.indexOf("mac")!=-1);

var weekdays = new Array();
weekdays[0] = "Sonntag";
weekdays[1] = "Montag";
weekdays[2] = "Dienstag";
weekdays[3] = "Mittwoch";
weekdays[4] = "Donnerstag";
weekdays[5] = "Freitag";
weekdays[6] = "Samstag";

var monthstr = new Array();
monthstr[0] = "Januar";
monthstr[1] = "Februar";
monthstr[2] = "M&auml;rz";
monthstr[3] = "April";
monthstr[4] = "Mai";
monthstr[5] = "Juni";
monthstr[6] = "Juli";
monthstr[7] = "August";
monthstr[8] = "September";
monthstr[9] = "Oktober";
monthstr[10] = "November";
monthstr[11] = "Dezember";

function getCharCnt(element,label) {
	var ref = document.getElementById(label);
	var test = element.value;
	ref.childNodes[0].nodeValue=test.length;
}

function incrementDateField(elementid, incvalue) {
	var ref = document.getElementById(elementid);
	var test = Number(ref.value);
	test=test+incvalue;
	if (test < 10) test = '0'+test;
	ref.value=test;
	ref.focus();
	ref.select();
}
function incrementDateFieldLimit(elementid, incvalue, limit) {
	var ref = document.getElementById(elementid);
	var test = Number(ref.value);
	test=test+incvalue;
	if (test > limit) return;
	if (test < 10) test = '0'+test;
	ref.value=test;
	ref.focus();
	ref.select();
}
function decrementDateField(elementid, decvalue) {
	var ref = document.getElementById(elementid);
	var test = Number(ref.value);
	test=test-decvalue;
	if (test < 10) test = '0'+test;
	ref.value=test;
	ref.focus();
	ref.select();
}
function decrementDateFieldLimit(elementid, decvalue, limit) {
	var ref = document.getElementById(elementid);
	var test = Number(ref.value);
	test=test-decvalue;
	if (test < limit) return;
	if (test < 10) test = '0'+test;
	ref.value=test;
	ref.focus();
	ref.select();
}

function incrementField(elementid, incvalue) {
	var ref = document.getElementById(elementid);
	var test = Number(ref.value);
	test=test+incvalue;
	ref.value=test;
	ref.focus();
	ref.select();
}
function incrementFieldLimit(elementid, incvalue, limit) {
	var ref = document.getElementById(elementid);
	var test = Number(ref.value);
	test=test+incvalue;
	if (test > limit) return;
	ref.value=test;
	ref.focus();
	ref.select();
}
function decrementField(elementid, decvalue) {
	var ref = document.getElementById(elementid);
	var test = Number(ref.value);
	test=test-decvalue;
	ref.value=test;
	ref.focus();
	ref.select();
}
function decrementFieldLimit(elementid, decvalue, limit) {
	var ref = document.getElementById(elementid);
	var test = Number(ref.value);
	test=test-decvalue;
	if (test < limit) return;
	ref.value=test;
	ref.focus();
	ref.select();
}
function showSQFDate(elementid) {
	var ref = document.getElementById('sqfDate'+elementid);
	var year = document.getElementById('sqfYear'+elementid);
	var month = document.getElementById('sqfMonth'+elementid);
	var day = document.getElementById('sqfDay'+elementid);
	
	var dt = new Date();
	dt.setDate(day.value);
	dt.setMonth(Number(month.value)-1);
	dt.setYear(year.value);
	ref.innerHTML = weekdays[dt.getDay()]+', den '+Number(day.value)+' '+monthstr[dt.getMonth()]+' '+Number(year.value);
}

var SQF_CHECK_KEY = 0;
var SQF_CHECK_TYPE = 1;
var SQF_CHECK_VALUE = 2;
var SQF_CHECK_MESSAGE = 3;

var SQF_CHECK_NOTEMPTY = 1;
var SQF_CHECK_ISNUM = 2;
var SQF_CHECK_ISEMAIL = 3;
var SQF_CHECK_GREATER = 4;
var SQF_CHECK_LESS = 5;
var SQF_CHECK_EQUAL = 6;
var SQF_CHECK_NOTEQUAL = 7;
var SQF_CHECK_STRLENGREATER = 8;
var SQF_CHECK_STRLENLESS = 9;
var SQF_CHECK_STRLENEQUAL = 10;
var SQF_CHECK_STRLENNOTEQUAL = 11;
var SQF_CHECK_FIELDGREATER = 12;
var SQF_CHECK_FIELDLESS = 13;
var SQF_CHECK_FIELDEQUAL = 14;
var SQF_CHECK_FIELDNOTEQUAL = 15;
var SQF_CHECK_REGEX = 16;


var CheckArr = new Array();

function SQFCheckError( Key, Message ) {
	
	$(Key).removeClassName('sqfsuccess');
	$(Key).addClassName('sqferror');
	$('sqferror_'+Key).innerHTML = Message;
	
}
	
function SQFCheckReset( Key ) {

	$(Key).removeClassName('sqferror');
	$(Key).addClassName('sqfsuccess');
	$('sqferror_'+Key).innerHTML = '';
	
}

function SQFCheck( Key ) {
	
	var ErrorPresent = false;
	
	for ( var i = 0; i < CheckArr.length; i++ ) {
		
		if ( (typeof( Key ) !== 'undefined') && (CheckArr[i][SQF_CHECK_KEY] != Key) ) continue;
		
		SQFCheckReset( CheckArr[i][SQF_CHECK_KEY] );
		
	}
	
	for ( var Check = 0; Check < CheckArr.length; Check++ ) {

		if ( (typeof( Key ) !== 'undefined') && (CheckArr[Check][SQF_CHECK_KEY] != Key) ) continue;
		
		if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_NOTEMPTY ) {
			var regex = /^$/;
			if ( regex.test( $(CheckArr[Check][SQF_CHECK_KEY]).value ) ) {
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		else if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_ISNUM ) {
			var regex = /^[+-]?[0-9]+\.?[0-9]*$/;
			if ( ! regex.test( $(CheckArr[Check][SQF_CHECK_KEY]).value ) ) {									
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		else if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_ISEMAIL ) {
			var regex = /^([a-z0-9öäü])(([-a-z0-9._])*([a-z0-9öäü]))*\@([a-z0-9öäü])(([a-z0-9öäü-])*([a-z0-9öäü]))+(\.([a-z0-9öäü])([-a-z0-9öäü_-])?([a-z0-9öäü])+)+$/i;
			if ( ! regex.test( $(CheckArr[Check][SQF_CHECK_KEY]).value ) ) {									
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		else if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_GREATER ) {
			if ( $(CheckArr[Check][SQF_CHECK_KEY]).value > CheckArr[Check][SQF_CHECK_VALUE] ) {									
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		else if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_LESS ) {
			if ( $(CheckArr[Check][SQF_CHECK_KEY]).value < CheckArr[Check][SQF_CHECK_VALUE] ) {									
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		else if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_EQUAL ) {
			if ( $(CheckArr[Check][SQF_CHECK_KEY]).value != CheckArr[Check][SQF_CHECK_VALUE] ) {									
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		else if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_NOTEQUAL ) {
			if ( $(CheckArr[Check][SQF_CHECK_KEY]).value == CheckArr[Check][SQF_CHECK_VALUE] ) {									
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		else if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_STRLENGREATER ) {
			if ( $(CheckArr[Check][SQF_CHECK_KEY]).value.length() > CheckArr[Check][SQF_CHECK_VALUE] ) {									
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		else if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_STRLENLESS ) {
			if ( $(CheckArr[Check][SQF_CHECK_KEY]).value.length() < CheckArr[Check][SQF_CHECK_VALUE] ) {									
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		else if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_STRLENEQUAL ) {
			if ( $(CheckArr[Check][SQF_CHECK_KEY]).value.length() != CheckArr[Check][SQF_CHECK_VALUE] ) {									
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		else if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_STRLENNOTEQUAL ) {
			if ( $(CheckArr[Check][SQF_CHECK_KEY]).value.length() == CheckArr[Check][SQF_CHECK_VALUE] ) {									
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		else if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_FIELDGREATER ) {
			if ( $(CheckArr[Check][SQF_CHECK_KEY]).value > $(CheckArr[Check][SQF_CHECK_VALUE]).value ) {									
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		else if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_FIELDLESS ) {
			if ( $(CheckArr[Check][SQF_CHECK_KEY]).value < $(CheckArr[Check][SQF_CHECK_VALUE]).value ) {									
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		else if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_FIELDEQUAL ) {
			if ( $(CheckArr[Check][SQF_CHECK_KEY]).value != $(CheckArr[Check][SQF_CHECK_VALUE]).value ) {									
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		else if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_FIELDNOTEQUAL ) {
			if ( $(CheckArr[Check][SQF_CHECK_KEY]).value == $(CheckArr[Check][SQF_CHECK_VALUE]).value ) {									
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		else if ( CheckArr[Check][SQF_CHECK_TYPE] == SQF_CHECK_REGEX ) {
			var regex = new RegExp( CheckArr[Check][SQF_CHECK_VALUE][0], CheckArr[Check][SQF_CHECK_VALUE][1] );
			if ( ! regex.test( $(CheckArr[Check][SQF_CHECK_KEY]).value ) ) {
				ErrorPresent = true;
				SQFCheckError( CheckArr[Check][SQF_CHECK_KEY], CheckArr[Check][SQF_CHECK_MESSAGE] );
			}
		}
		
		
	}
	
	if ( ErrorPresent == true ) return false;
	return true;
	
}


var marked_row = new Array;
var skip_row = new Array;
var pointer_color = '#eaeab4';
var mark_color = '#eaeab4';

function smartlistSkipped(theRowNum) {
	skip_row[theRowNum] = true;
	return true;
}

function smartlistColors(thePointerColor, theMarkColor) {
	pointer_color = thePointerColor;
	mark_color = theMarkColor;
	return true;
}

function smartlistPointer(theRow, theRowNum, theAction, theDefaultColor, thePointerColor)
{
    var theCells = null;

    if (typeof(theRow.style) == 'undefined') {
        return false;
    }
	
	if (typeof(thePointerColor) != 'undefined') {
        pointer_color = thePointerColor;
    }

    if (typeof(document.getElementsByTagName) != 'undefined') {
        theCells = theRow.getElementsByTagName('td');
    }
    else if (typeof(theRow.cells) != 'undefined') {
        theCells = theRow.cells;
    }
    else {
        return false;
    }

    var rowCellsCnt  = theCells.length;
    var newColor     = null;
	
	if (theAction == 'out') {
		if (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum]) {
			newColor = theDefaultColor;
		}
	}
	else if (theAction == 'over') {
		if (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum]) {
			newColor = pointer_color;
		}
	}
	else if (theAction == 'click') {
		if (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum]) {
			newColor = mark_color;
			marked_row[theRowNum] = true;
		}
		else {
			newColor = theDefaultColor;
			marked_row[theRowNum] = null;
		}
	}
	if (newColor != null) {
		var c = null;
	
		for (c = 0; c < rowCellsCnt; c++) {
			if (typeof(skip_row[c]) == 'undefined' || !skip_row[c])
				theCells[c].style.backgroundColor = newColor;
		}
	}
    return true;
}

var Url = {
 
	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},
 
	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (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 utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
}


