/*
 * Script: functions.js 
 */


/**
 * This file contains all scripts which are used by more than one html site. <br>
 * 
 * @author      Daniel Janesch (DJ) 22.07.2003
 * 
 * @version     0.00.0001, 22.07.2003
 */

/**
 * If this set to true error messages are returned by the method rather then only show an alert to the user.
 */
var returnErrorMessages = true;

/**
 * . <br>
 */
function checkMandatory (fieldObj, fieldName)
{
  if(!returnErrorMessages)
    return !isEmpty(fieldObj, fieldName);
  else
    return isEmpty(fieldObj, fieldName);
} // checkMandatory


/**
 * . <br>
 */
function isEmpty (fieldObj, fieldName)
{
  if (fieldObj.value == '')
  {
    //fieldObj.focus();
    var errMsg = lang_field+" '"+fieldName+"':\n"+lang_empty;
    if(!returnErrorMessages) 
    {
      alert (errMsg);
      return true;
    }
    else
    {
      return errMsg;
    }
  } // if
  
  if(!returnErrorMessages)
    return false;
  else
    return "";
} // isEmpty


/**
 * . <br>
 */
function isPosNumber (fieldObj, fieldName)
{
  var strToCheck = new String (fieldObj.value);
  var iBadCharPos = strToCheck.search(/[^0-9]/);
  if (iBadCharPos > -1)
  {
    fieldObj.focus();
    errMsg = lang_field+" '"+fieldName+"':\n"+lang_posnbr;
    if(!returnErrorMessages) 
    {
      alert (errMsg);
      return false;
    }
    else
    {
      return errMsg;
    }
  } // if
  
  if(!returnErrorMessages)
    return true;
  else
    return "";
} // isPosNumber


/**
 * . <br>
 */
function isPosDecimalNumber(fieldObj, fieldName, fractionalDigits)
{
  var strToCheck = new String (fieldObj.value);
  var decimalDotPos = -1;
  for (i = 0; i < strToCheck.length; i++)
  {
  	mychar = strToCheck.charAt(i); 
  	if ((mychar < "0" || mychar > "9"))
    {
      if (decimalDotPos == -1 && (mychar == "," || mychar == "."))
      {
        decimalDotPos = i;
      } // if decimalDotPos == -1 && (mychar == "," || mychar == ".")
  	  else
      {
        fieldObj.focus();
        errMsg = lang_field+" '"+fieldName+"':\n"+lang_char+" '"+strToCheck.substr (i, 1)+"' "+lang_notallowed+"\n"+lang_posdecnbr;
        if(!returnErrorMessages) 
        {
          alert (errMsg);
          return false;
        } // if !returnErrorMessages
        else
        {
          return errMsg;
        } // else if !returnErrorMessages
      } // else if decimalDotPos == -1 && (mychar == "," || mychar == ".")
    } // if (mychar < "0" || mychar > "9")
  } // for i
  
  if(decimalDotPos - strToCheck.length > fractionalDigits)
  {
    fieldObj.focus();
    errMsg = lang_field+" '"+fieldName+"':\n"+lang_fractionaldigits1+" "+fractionalDigits+" "+lang_fractionaldigits2;
    if(!returnErrorMessages) 
    {
      alert (errMsg);
      return false;
    } // if !returnErrorMessages
    else
    {
      return errMsg;
    } // else if !returnErrorMessages
  }
  
  if(!returnErrorMessages)
    return true;
  else
    return "";
} // isPosDecimalNumber


/**
 * . <br>
 */
function isTelNumber (fieldObj, fieldName)
{
  var strToCheck = new String (fieldObj.value);
//  var iBadCharPos = strToCheck.search(/[^0-9|^\\\\|^\\(|^\\)|^\\/|^\\-|^ ]/);
  var iBadCharPos = strToCheck.search(/[^0-9|^\\|^\(|^\)|^\/|^\-|^ ]/);
  if (iBadCharPos > -1)
  {
    fieldObj.focus();
    errMsg = lang_field+" '"+fieldName+"':\n"+lang_char+" '"+strToCheck.substr (iBadCharPos, 1)+"' "+lang_notallowed+"\n"+lang_telnbr;
    if(!returnErrorMessages) 
    {
      alert (errMsg);
      return false;
    }
    else
    {
      return errMsg;
    }
  } // if
  
  if(!returnErrorMessages)
    return true;
  else
    return "";
} // isTelNumber


/**
 * . <br>
 */
function checkDatum(datum,fieldObj,Name)
{
	von=datum;
			
	if(von.indexOf('.') == -1) //neue Datumseingabe ohne Punke also 030503 oder 03052003
	{
		if(von.length<6)
		{
			alert(lang_field+" '"+Name+"':\n"+lang_dateformat);
			fieldObj.focus();
			return null;
		}
		else
		{
			vonTag=von.substring(0,2); //filtert den Tag aus dem Datum
			vonMonat=von.substring(2,4); //filtert das Monat aus dem Datum
			vonJahr=von.substring(4); //gibt den rest des Datums ohne Tag und ohne Monat und ohne den Punkt nach Monat zurueck -> jahr
			if(vonJahr.length==2)
			{
				vonJahr="20"+vonJahr;
				fieldObj.value=vonTag+"."+vonMonat+"."+vonJahr;
			}	
			else if(vonJahr.length<2 || vonJahr.length==3 || vonJahr.length>4)
			{
				alert(lang_field+" '"+Name+"':\n"+lang_wrongyear);	
				fieldObj.focus();
				return null;
			}	
			fieldObj.value=vonTag+"."+vonMonat+"."+vonJahr;
				
			return f_IsDateVal(vonJahr, vonMonat, vonTag, fieldObj);
		}
	}
	else
	{
		if(von.length<8)
		{
			alert(lang_field+" '"+Name+"':\n"+lang_dateformat);
			fieldObj.focus();
			return null;
		}
		else
		{
			pos=von.indexOf("."); //sucht die Position des ersten punktes
			vonTag=von.substring(0,pos); //filtert den Tag aus dem Datum
			rest=von.substring(pos+1); //gibt den rest des Datums ohne Tag zurueck und ohne den Punkt der normal nach dem Tag steht daher pos+1
			pos=rest.indexOf("."); //sucht nach dem Punkt nach dem Monat
			vonMonat=rest.substring(0,pos); //filtert das Monat aus dem Datum
			vonJahr=rest.substring(pos+1); //gibt den rest des Datums ohne Tag und ohne Monat und ohne den Punkt nach Monat zurueck -> jahr
			if(vonJahr.length == 2)
			{
				vonJahr="20"+vonJahr;
				fieldObj.value=vonTag+"."+vonMonat+"."+vonJahr;
			}	
			else if(vonJahr.length <2 || vonJahr.length == 3 || vonJahr.length > 4)
			{
				alert(lang_field+" '"+Name+"':\n"+lang_wrongyear);	
				fieldObj.focus();
				return null;
			}	
			//alert("Datum: "+vonJahr+"."+vonMonat+"."+vonTag);

			//alert("Date-KLasse Inhalat:"+vonDatum);
			return f_IsDateVal(vonJahr, vonMonat, vonTag, fieldObj, Name);
		}
	}	
} // checkDatum


/**
 * . <br>
 */
function f_IsDateVal(vonJahr, vonMonat, vonTag, fieldObj, Name)
{
  var nbrVonJahr = Number(vonJahr);
  if (nbrVonJahr < 1900 || nbrVonJahr > 2078)
  {
    alert (lang_field+" '"+Name+"':\n"+lang_year1+" '"+vonJahr+"' "+lang_year2);
		fieldObj.focus();
    return null;
  }// if
  if (Number(vonMonat) < 1) 
  {
    alert (lang_field+" '"+Name+"':\n"+lang_month1+" '"+vonMonat+"' "+lang_month2);
		fieldObj.focus();
    return null;
  } // if
  if (Number(vonTag) < 1) 
  {
    alert (lang_field+" '"+Name+"':\n"+lang_day1+" '"+vonTag+"' "+lang_day2);
		fieldObj.focus();
    return null;
  } // if
	vonDatum = new Date(vonJahr,vonMonat - 1,vonTag);
	strDatum = vonDatum.getDate() + "." + (vonDatum.getMonth() + 1) + "." + vonDatum.getFullYear();
	strFieldObjBuffer = fieldObj.value;

	//Jeder einzelne Wert des Datums wird getestet.
	spltDatumStr = strDatum.split(".");
	spltDatumField = strFieldObjBuffer.split(".");
	
	for (i=0; i<spltDatumStr.length; i++)
	{	
		if (Number(spltDatumStr[i]) != Number(spltDatumField[i]))
		{
		  alert(lang_field + " '" + Name + "':\n"+lang_wrongdate);	
		  fieldObj.focus();
		  return null;
		} // if
	} // for
			
  return vonDatum;
} // f_IsDateVal


function getDateStr (objDate)
{
  strDate = objDate.getDate() + "." + (objDate.getMonth() + 1) + "." + objDate.getFullYear();
  return strDate;
} // getDateStr


function err(errMsg)
{
  hide_warten(); 
  fillHinweis(errMsg); 
  return false;
} // err

function f_isEmail(email)
{
  if (email == "")
  {
	return false;	
  } //if

  atPos      = email.indexOf("@");
  lastDotPos = email.lastIndexOf("."); 

  if (atPos <= 0 || atPos == (email.length - 1))
  {    
	return false;	
  } //if
  
  if (lastDotPos <= 0 || lastDotPos == (email.length - 1))
  {   
	return false;	
  } //if
  
  if (atPos + 1 == lastDotPos)
  {   
	return false;	
  }  //if  
  
  return true;
} //f_isEmail


function addKatUAZuordnung(option_box, kat_box, ua_box, ua_typ)
{

   var index = option_box.options.length;

   var kat_sel_index = kat_box.selectedIndex;
   var kat_text = kat_box.options[kat_sel_index].text;
   var uatyp_sel_index = ua_typ.selectedIndex;
   var uatyp_text = ua_typ.options[uatyp_sel_index].text;
   if(ua_box.length>0)
   {
	   var ua_sel_index = ua_box.selectedIndex;
	   var ua_text = ua_box.options[ua_sel_index].text;
	   var value = kat_box.value + ";" + ua_box.value + ";" + ua_typ.value;
	   var text = ua_text + " | " + kat_text + " - " + uatyp_text;
	   ua_box.options[ua_sel_index] = null;
	   option_box.options[index] = new Option(text, value, false, false);
	   option_box.selectedIndex = option_box.options[index].index;
   } // if
} // addKatUAZuordnung

function delFromUAZuordnung(option_box, ua_box)
{
   var option_length = option_box.length;

   var ua_length = ua_box.length;
   var ua_oid = "";
   var ua_text = "";

   for(i=0; i<option_length; i++)
   {
      if (option_box.options[i].selected == true)
      {
        var oid_string = option_box.options[i].value;
        var text_string = option_box.options[i].text;
        var startindex = oid_string.indexOf(";");
        var endindex=oid_string.lastIndexOf(";");
        ua_oid = oid_string.substring(startindex+1,endindex);
        index = text_string.indexOf(" | ");
        ua_text = text_string.substring(0,index);
        option_box.options[i] = null;
        ua_box.options[ua_length] = new Option(ua_text, ua_oid, false, false);
        ua_box.selectedIndex = ua_box.options[ua_length].index;
        ua_length = ua_length + 1;
        i=i-1;
        option_length = option_length - 1;
      } // if
   } // for i
} // delFromUAZuordnung

function addZuordnung(option_box, port_box)
{
   var index = option_box.options.length;
   if(port_box.length>0)
   {
	   var port_sel_index = port_box.selectedIndex;
	   var port_text = port_box.options[port_sel_index].text;
	   var value = port_box.value;
	   var text = port_text;
	   port_box.options[port_sel_index] = null;
	   option_box.options[index] = new Option(text, value, false, false);
	   option_box.selectedIndex = option_box.options[index].index;
   } // if
} // addZuordnung

function delFromZuordnung(option_box, port_box)
{
   var option_length = option_box.length;
   var port_length = port_box.length;
   var port_oid = "";
   var port_text = "";
   for(i=0; i<option_length; i++)
   {
      if (option_box.options[i].selected == true)
      {
        var oid_string = option_box.options[i].value;
        var text_string = option_box.options[i].text;
        option_box.options[i] = null;
        port_box.options[port_length] = new Option(text_string, oid_string, false, false);
        port_box.selectedIndex = port_box.options[port_length].index;
        port_length = port_length + 1;
        i=i-1;
        option_length = option_length - 1;
      } // if
   } // for i
} // delFromZuordnung



function addPortalZuordnung(option_box, port_box, org_url)
{
  var index = option_box.options.length;
  if(port_box.length>0)
  {
    var port_sel_index = port_box.selectedIndex;
    var port_text = port_box.options[port_sel_index].text;
    if(org_url.value!="")
    {
      var value = port_box.value + ";" + org_url.value;
      var text = port_text + " | " + org_url.value;
    }
    else
    {
      var value = port_box.value;
      var text = port_text;		   
    }
    port_box.options[port_sel_index] = null;
    option_box.options[index] = new Option(text, value, false, false);
    option_box.selectedIndex = option_box.options[index].index;
    org_url.value="";
  }
} // addPortalZuordnung


function delFromPortalZuordnung(option_box, port_box)
{
  var option_length = option_box.length;
  var port_length = port_box.length;
  var port_oid = "";
  var port_text = "";
  
  for(i=0; i<option_length; i++)
  {
    if (option_box.options[i].selected == true)
    {
      var oid_string = option_box.options[i].value;
      var text_string = option_box.options[i].text;
      var index = oid_string.indexOf(";");
      if(index!=-1)
        port_oid = oid_string.substring(0,index);
      else
        port_oid = oid_string;
      
      index = text_string.indexOf(" | ");
      if(index!=-1)
        port_text = text_string.substring(0,index);
      else
        port_text = text_string;
      option_box.options[i] = null;
      port_box.options[port_length] = new Option(port_text, port_oid, false, false);
      port_box.selectedIndex = port_box.options[port_length].index;
      port_length = port_length + 1;
      i=i-1;
      option_length = option_length - 1;
    }
  }
} // delFromPortalZuordnung
