/** 
 * Allgemeine Funktionen
 * NICHT KOMPRIMIEREN! wegen exp.match();
 *
 * @autor TS JM-EDV
 * @date 09.01.2009
 * @version: 0.3
 *
*/


if (!Utils) var Utils = {};

Utils.waitDialogOn = function(nodisable) {
	
	if (!document.waitDialog) {
		
//		Spry.Effect.DoFade("pleasewait", {duration:0, from:100, to:100, toggle:false});	
		Spry.Effect.setStyleProp(Spry.Effect.getElement("pleasewait"),"display","block");
	
		document.waitDialog=true;

		Utils.dialogMask(true);
	

		var mybuttons = Utils.Form.getRegistredButtons();
		for (var i in mybuttons) {
			if (!nodisable) {
				mybuttons[i].disabled=true;
			}
			Spry.Utils.addClassName(mybuttons[i], 'disabled'); 
		}
	
	}

};

Utils.waitDialogOff = function() {
	
	
	
	if (document.waitDialog == true) {
	
//		Spry.Effect.DoFade("pleasewait", {duration:500, from:100, to:0, toggle:false});
		window.setTimeout('Spry.Effect.setStyleProp(Spry.Effect.getElement("pleasewait"),"display","none")',500);
		document.waitDialog=false;
 
		var myButtons = Utils.Form.getRegistredButtons();
		for (var i in myButtons) {
			myButtons[i].disabled=false;
			Spry.Utils.removeClassName(myButtons[i], 'disabled'); 
		}
 
	}

	Utils.dialogMask(false);

};


Utils.addLoadListener = function (handler) {
	if (typeof window.addEventListener != 'undefined')
		window.addEventListener('load', handler, false);
	else if (typeof document.addEventListener != 'undefined')
		document.addEventListener('load', handler, false);
	else if (typeof window.attachEvent != 'undefined')
		window.attachEvent('onload', handler);

return true;
};
 
Utils.addEventListener = function (element, eventType, handler, capture) {
	try
	{
		//element = $(element);
		element = Utils.getElementById(element);
		if (element.addEventListener)
			element.addEventListener(eventType, handler, capture);
		else if (element.attachEvent)
			element.attachEvent("on" + eventType, handler);
	}
	catch (e) {
		 alert(e);
	}

return true;
};
 
 


Utils.fireEvent = function (eventType, element) { 
	try {
		var o = null;
		if (typeof element == 'string') {
			o = document.getElementById(element);
		} else {
			o = element;
		}
		if (!o) {
			return;
		}
		
		// wir wollen evts auch bei disabled setzen!
		var disabled = o.disabled;
		var readOnly = o.readOnly;
		o.disabled=false;
		o.readOnly=false;
		
		
		if (document.createEvent) { 
			var evt = document.createEvent("Events"); 
			evt.initEvent(eventType, true, true); 
			o.dispatchEvent(evt); 
		} else if (document.createEventObject) { 
			var evt = document.createEventObject(); 
			o.fireEvent('on' + eventType, evt); 
		} 
		
		o.disabled = disabled;
		o.readOnly = readOnly;
		
	}
	catch (e) {
 
	}

};



Utils.getEvtObject = function(e) {
	var obj = (e.srcElement) ? e.srcElement : e.target;
	return obj;
};


if (!Utils.Form) Utils.Form = {};

Utils.Form.addDisabledItems = function(form)  {

	if (typeof form == 'string') {
		form = document.getElementById(form);
	}
	
	hiddendiv=document.getElementById('mydivElements');
	if (hiddendiv) {
		form.removeChild(hiddendiv);
	}

	var newdiv = document.createElement('div');
	newdiv.setAttribute('id', 'disableditems');
	form.appendChild(newdiv);
	
	var obj = document.getElementsByTagName('input');
	for (isel=0; isel < obj.length; ++isel) {
		if (obj[isel].disabled && 
			(obj[isel].type == "text" || 
			 ((obj[isel].type == "checkbox" || obj[isel].type == "radio") &&  obj[isel].checked)
			)) {
			Utils.Form.addInput(newdiv, obj[isel].name, 	obj[isel].value);
		}
	}


	var obj = document.getElementsByTagName('select');
	for (var isel=0; isel < obj.length; ++isel) {
		if (obj[isel].disabled) {
			value=Utils.Form.getSelectByValue(obj[isel]);
			Utils.Form.addInput(newdiv, obj[isel].name, value);
		}
	}


};

Utils.Form.addInput = function(parentelement, name, value){
	
	if (typeof parentelement == 'string') {
		parentelement = document.getElementById(parentelement);
	}
	
	if (!parentelement) {
		return;
	}

	var newdiv = document.createElement('div');
	var newinput = document.createElement('input');
	newinput.setAttribute('type','hidden');
	newinput.setAttribute('name',name);
	newinput.setAttribute('value',value);
	parentelement.appendChild(newdiv);
	newdiv.appendChild(newinput);
	
	

	
};


// --------------------------------------------------
Utils.Form.setSelectByValue = function(obj, value, fireevent) {
	
	try {
		var objname='';
	if (typeof obj == 'string') {
		objname = obj;
		var obj = document.getElementById(obj);
	}

	for (i=0; i < obj.length; ++i) {
		if (obj.options[i].value == value) {
			

			
		  obj.options[i].selected = true;
			if (fireevent) {Utils.fireEvent('change', obj);}
		  break;
		}
	}

	} catch (e) {alert('Objekt ' + objname + ' nicht gefunden')}
		
};

// --------------------------------------------------
Utils.Form.getSelectByValue = function(obj) {
	
	if (typeof obj == 'string') {
		obj = document.getElementById(obj);
	}

	for (i=0; i < obj.length; ++i) {
		if (obj.options[i].selected == true) {
		  return obj.options[i].value;
		}
	}

	return '';		
};

// --------------------------------------------------
Utils.Form.getSelectValue = function(obj) {
	return Utils.Form.getSelectByValue(obj);
};

// --------------------------------------------------
Utils.Form.getSelectValueInt = function(obj) {
	return parseInt(Utils.Form.getSelectByValue(obj), 10);
};

// --------------------------------------------------
Utils.Form.getRadioValue = function(name) {

	var items = document.getElementsByName(name);

	for (var i=0; i<items.length;i++) {
		var it = items[i];
		if (it && it.checked) {
			return it.value;
		}
	}
	
	return null;

};

// --------------------------------------------------
Utils.Form.setRadioValue = function(name, value) {

	var items = document.getElementsByName(name);

	for (var i=0; i<items.length;i++) {
		var it = items[i];
		if (it && it.value == value) {
			it.checked = true;
		}
	}
	
	return null;

};

// --------------------------------------------------
// 
Utils.Form.getValue = function (obj) {
	if (typeof obj == 'string') {
		obj = document.getElementById(obj);
	}
	if (!obj) {
		return;
	}
	

	// Für IE8!
	var value = obj.value; 
	if (value == "null") {
		value = "";
	}
		
	
	return value;
};

// --------------------------------------------------
// Setzt ein value in einem Objekt und l�st dann ein evt aus
Utils.Form.getValueInt = function (obj) {
	
	value = Utils.Form.getValue(obj);
	value = (!value) ? '0':value;
	
	
	return parseInt(value, 10);
};



// --------------------------------------------------
//  
Utils.Form.getValueFloat = function (obj, nk) {
	
	value = Utils.Form.getValue(obj);
	value = (!value) ? '0':value; 
	nk = (!nk) ? 2:nk;


	if (typeof value == "string" && value.indexOf(',') >= 0) {
		//tausendertrennung raus
		value = value.replace(/\./g, '');	
		// komma zu punkt
		value = value.replace(/,/g, '.');
	}
	
	
	
	return parseFloat(value,2);
};



// Setzt ein value in einem Objekt und l�st dann ein evt aus
Utils.Form.getValueBool = function (obj) {
	
	value = Utils.Form.getValueInt(obj);
	return (value == 1);
};



// --------------------------------------------------
// Setzt ein value in einem Objekt und l�st dann ein evt aus
Utils.Form.setValue = function (obj, value, fireEvent) {

	if (typeof obj == 'string') {
		obj = document.getElementById(obj);
	}
	
	if (!obj) {
		return;
	}


	if (obj.nodeName == 'DIV') {
		obj.innerHTML = value;
	}  else {
		obj.value = value;
	}
	
	if (fireEvent) {
		Utils.fireEvent('change', obj);
	}
};

// --------------------------------------------------
// Setzt ein value in einem Objekt und l�st dann ein evt aus
Utils.Form.setValueInt = function (obj, value, fireEvent) {
	Utils.Form.setValue(obj, value, fireEvent);
};



// --------------------------------------------------
// Setzt ein value in einem Objekt und l�st dann ein evt aus
Utils.Form.setValueFloat = function (obj, value, fireEvent, nozero, nk) {

	var value = Utils.formatFloat(value, nozero, nk);
	Utils.Form.setValue(obj, value, fireEvent);
};


Utils.Form.registerButton = function(abutton) {

	if (!document.registerButtonItems) {
		document.registerButtonItems = new Array();
	}
	
	var buttonobj = Utils.getElementById(abutton);
	document.registerButtonItems.push(buttonobj);
	
};

Utils.Form.getRegistredButtons = function() {
	if (!document.registerButtonItems) {
		document.registerButtonItems = new Array();
	}
	
	return document.registerButtonItems;
};



Utils.Form.setFocus = function(aobj,selectit) {
	
	try {
		
	
		var obj = Utils.getElementById(aobj);
		
		
		
		
		// Der ie mag es garnicht wenn man den Focus auf ein disabled-feld setzt
		if (!obj || obj.disabled==true) {
			return;
		}

 		obj.focus();
		
		// Merken dass wir f�r diese Seite einen Focus aktiviert haben
		document.focusAttached=true;
		
		if (selectit) {
			
			// keine Buttons selectieren
			if (obj.type) {
				switch (obj.type) {
					case 'button' :
					case 'submit' :
					case 'reset' : return;
				}
			}
			
			
			obj.select();
		}
	 

	}
	catch (e) {
	}
	

};

Utils.Form.setFocusNext = function(obj, select) {
	

	var obj = Utils.getElementById(obj);
	var myform = obj.form;
	var next=false;
	if (!obj) {
		return;
	}
	
	var allelements = myform.elements;
	for (var i in allelements) {
		var el = allelements[i];
		// Warum auch immer im Internetexplorer 7 kaputte Objekte im elements-array sind.....
		if (el && el.id == obj.id) {
			next=true;
			continue;
		}
		// readOnly kann auch undefined sein
		if (next && el.disabled != true && el.readOnly != true && el.type!='hidden') {
			Utils.Form.setFocus(el, select);
			break;
		}
		
	}

}

 
// Focus aufs erste Element
Utils.Form.setFocusFirst = function(myform) {
 

	// Nur Focus aufs erste Feld, wenn noch kein Focus gesetzt wurde
	if (document.focusAttached==true) {
		return;
	}
	
	if (!myform) {
		myform = document.getElementById('form1');
	}
	
	if (!myform) {
		return;
	}
	
	var allelements1 = myform.elements;
	
	// IE streikt hier. sein problem
	
	for (var i in allelements1) {
		var el = allelements1[i];
		if (el && el.disabled != true && el.readOnly != true && el.type!='hidden') {
			Utils.Form.setFocus(el, true);
			var f=true;
			break;
		}
		
	}

}


Utils.Form.setDisabled = function(aObj, disabled, clear) {
	
	var obj = Utils.getElementById(aObj);
	
	try {
		if (disabled && clear) {
			
			if (obj.type == 'radio') {
				obj.checked = false;
			} else {
				obj.value = '';
			}
			
			
		}
	}
	catch (e) {
	}
	
	
	// M�ssen wir �berhaupt was �ndern?
	if (obj.disabled == disabled) {
		return;
	}

	obj.disabled = disabled
	
	if (obj.disabled) {
		Spry.Utils.addClassName(obj, 'disabled'); 
	} else {
		Spry.Utils.removeClassName(obj, 'disabled'); 
	}
	
	
}

// Integerwert in String mit f�hrenden 0 Umwandeln
Utils.int2Str = function IntToStr(A_INT,A_FNULL) {
	
	V_ALPHA = A_INT.toString();
	
	for (V_LOOP=V_ALPHA.length;V_LOOP<A_FNULL;V_LOOP++)  {
		V_ALPHA = '0' + V_ALPHA;
	}
	
	return V_ALPHA;
};

Utils.getElementById = function(obj) {

if (typeof obj == 'string') {
		
		objname=obj;
		
		obj = document.getElementById(obj);
	}
	
	if (!obj) {
		alert('Element nicht gefunden! '+ objname);
	}
		
	return obj;
}





// --------------------------------------------------
//  
Utils.toFloat = function (stringorfloat) {
	try {
		
		if (typeof stringorfloat == "string" && stringorfloat.indexOf(',') >= 0) {
			//tausendertrennung raus
			stringorfloat = stringorfloat.replace(/\./g, '');	
			// komma zu punkt
			stringorfloat = stringorfloat.replace(/,/g, '.');
		}
	} catch (e) {
		alert('toFloat Konvertierungsfehler ' + e);
	}
	
	return parseFloat(stringorfloat,2);
};
 
// --------------------------------------------------
//  
Utils.formatFloat = function (value, fmtNoZero, nk) {
	
	try {
	
		if (typeof value == "string") {
	
			if (value.indexOf(',') >= 0) {
				//tausendertrennung raus
				value = value.replace(/\./g, '');	
				
				// komma zu punkt
				value = value.replace(/,/g, '.');
			}
			
			value = parseFloat(value, 2);
	
		}
		
		if (isNaN(value)) {
			value=0.0;
		}
		
		nk = (!nk) ? 2:nk;
		 
		value = value.toFixed(nk);

		
		if (fmtNoZero && value == 0.0) {
			value = '';
		} else {
			value = value.toString();
			value = value.replace(/\./g, ',');
		}
 
		 
		var komma = value.lastIndexOf(',');
		var nachkomma = '';
		if (komma > 0) {
			nachkomma = value.substr(komma, value.length);
			value = value.substr(0, komma);
		}

		if (value.length > 3) {
			
			var mod = value.length % 3;
			var output = (mod > 0 ? (value.substring(0,mod)) : '');	
			for (var i=0 ; i < Math.floor(value.length / 3); i++) {
		
				if ((mod == 0) && (i == 0)) {
					output += value.substring(mod+ 3 * i, mod + 3 * i + 3);
				} else {
					// hier wird das Trennzeichen festgelegt mit '.'
					output+= '.' + value.substring(mod + 3 * i, mod + 3 * i + 3);
				}
			}
				
			value = output+nachkomma;
			
		} else {
			value = value+nachkomma; 
		}
		
		// FIX bei Minuszahlen kommt -.345,00
		value = value.replace(/\-\./,'-');

	} catch (e) {
		alert('Floatformat Fehler ' + e);
	}
	
	 
	
	return value;
};



Utils.Accordeon = {};

Utils.Accordeon.getCurrentPanelTabId = function(accordion) {
	 
	var tabElement = accordion.getPanelTab(accordion.getCurrentPanel());
	return tabElement.id;
}



Utils.ProgressBar = {};

Utils.ProgressBar.start = function() {

	Spry.Effect.setStyleProp(Spry.Effect.getElement("progress1"),"display","block");
}

Utils.ProgressBar.setPos = function(id, value) {
	 
	var barproz = Utils.getElementById('progressbarproz1');
	if (barproz) {
		barproz.innerHTML = value + '%';
	}

	var bar = Utils.getElementById('progressbarbackground1');
	if (bar) {
		bar.style.width=parseInt(value, 10) + '%';
		
	}


}
Utils.ProgressBar.setMessage = function(id, message) {
	var bar = Utils.getElementById('progressbartext1');
	if (bar) {
		bar.innerHTML = message;
	}
}

Utils.ProgressBar.stop = function() {

	window.setTimeout(function() {
					   Spry.Effect.DoFade("progress1", {duration:500, from:100, to:0, toggle:false});
					   window.setTimeout('Spry.Effect.setStyleProp(Spry.Effect.getElement("progress1"),"display","none");', 600);
						}, 800);		
		
}

 
// --------------------------------------------------------------------------------------------------- 
Utils.Calendar = function (id, inputField) {

	var self = this;
	this.id = id;
	this.calendarId = 'ca'+id;
	this.inputField = Utils.getElementById(inputField);
	this.active = false;
	
	Spry.Utils.addLoadListener(function() {self.myListener()});	
 
	this.ca = new tcal ({
		// form name
		'formname': 'form1',
		// input name
		'controlname': this.inputField.id
	});


};

Utils.Calendar.prototype.myListener  = function() {
	var self=this;
	Spry.Utils.addEventListener(this.inputField.id, 'blur', function(e) {self.onBlur(e)} );	
};

Utils.Calendar.prototype.onBlur = function() {
	if (this.inputField.value == '') {
		return;
	}
	if (!this.ca.f_parseDate(this.inputField.value)) {
		Utils.Form.setValue(this.inputField, '');
		this.ca.f_show();	
	}

};


Utils.dialogMask = function(show, art) {
	
	if (!art) {
		art='';
	}
	dialogmask = document.getElementById('dialog-mask'+art);
			
	if (!dialogmask) {
		dialogmask = document.createElement('div');
		dialogmask.id = 'dialog-mask'+art;
		
		document.body.appendChild(dialogmask);
	}	
		
	if (show) {
		dialogmask.style['display'] = 'block';	
	} else {
		dialogmask.style['display'] = 'none';	
	}
	
}


Utils.setVisible = function(obj, visible, type) {

	var obj = Utils.getElementById(obj);
	
	if (visible) {
		obj.style['display'] = (type) ? type:'block';
		
		obj.style['visibility'] = 'visible';
	} else {
		
		obj.displaysave = obj.style['display'];
		
		obj.style['display'] = 'none';
		obj.style['visibility'] = 'hidden';
	}



}






function findeFlash (flash) {
    if (document.all) {
      if (document.all[flash]) {
        return document.all[flash];
      }
      if (window.opera) {
        var movie = eval(window.document + flash);
        if (movie.SetVariable) {
          return movie;
        }
      }
      return;
    }
    if(document.layers) {
      if(document.embeds[flash]) {
        var movie = document.embeds[flash];
        if (movie.SetVariable) {
          return movie;
        }
      }
      return;
    }
    if (!document.getElementById) {
      return;
    }
    var movie = document.getElementById(flash);
    if (movie.SetVariable) {
      return movie;
    }
    var movies = movie.getElementsByTagName('embed');
    if (!movies || !movies.length) {
      return;
    }
    movie = movies[0];
    if (movie.SetVariable) {
      return movie;
    }
    return;
  }
