function send_to(object) //posts a mailto link with the innerHtml of the calling object
{
    document.location.href="mailto:"+object.innerHTML;
}

//fills in all values to the form field specified by the
//fieldvalues (-array [fieldname, fieldvalue])
function fill_form_fields(formname, fieldvalues)   //fills in edit form when receiving data from ajax
{
    fieldvalues=fieldvalues.split(";");
    for(var i=0;i<fieldvalues.length;i+=2)
    {
        var actField=fieldvalues[i];
        var actValue=fieldvalues[i+1];


        //if field exists
        if(document.forms[formname].elements[actField])
        {
            //if is array of fields
            if(document.forms[formname].elements[actField].length)
            {
                //for each field in array
                for(var j=0;j<document.forms[formname].elements[actField].length;j++)
                {
                    if(document.forms[formname].elements[actField][j].tagName.toLowerCase()=="input" && (document.forms[formname].elements[actField][j].type.toLowerCase()=="field" || document.forms[formname].elements[actField][j].type.toLowerCase()=="hidden"))
                        document.forms[formname].elements[actField][j].value=actValue;
                    if(document.forms[formname].elements[actField][j].value==actValue)
                    {
                        switch(document.forms[formname].elements[actField][j].tagName.toLowerCase())
                        {
                            case "input":
                                document.forms[formname].elements[actField][j].checked=1;
                                break;
                            case "option":
                                document.forms[formname].elements[actField][j].selected=1;
                                break;
                        }
                    }
                }
            }
            else
            {
                 if(document.forms[formname].elements[actField].tagName.toLowerCase()=="input")
                {
                    switch(document.forms[formname].elements[actField].type.toLowerCase())
                    {
                        case "checkbox":
                            if(actValue==document.forms[formname].elements[actField].value)
                                document.forms[formname].elements[actField].checked=1;
                            break;
                        default:
                            document.forms[formname].elements[actField].value=actValue;
                    }
                }
                else
                    document.forms[formname].elements[actField].value=actValue;                
            }
        }
    }
}

//clears all form fields delivered by the fieldnames (-array [fieldname])
function clear_form_fields(formname, fieldnames)
{
    fieldnames=fieldnames.split(";");
    for(var i=0;i<fieldnames.length;i++)
    {
        var actField=fieldnames[i];
        if(document.forms[formname].elements[actField])
        {
     
            //if is array of fields
            if(document.forms[formname].elements[actField].length)
            {
                //for each field in array
                for(var j=0;j<document.forms[formname].elements[actField].length;j++)
                {
                    switch(document.forms[formname].elements[actField][j].tagName.toLowerCase())
                    {
                        case "input":
                            document.forms[formname].elements[actField][j].checked=0;
                            break;
                        case "option":
                            document.forms[formname].elements[actField][j].selected=0;
                            break;
                    }
                }
            }
            else
            {
                switch(document.forms[formname].elements[actField].type.toLowerCase())
                {
                    case "checkbox":
                        document.forms[formname].elements[actField].checked="";
                        break;
                    default:
                        document.forms[formname].elements[actField].value="";
                        break;
                }
            }
        }
    }
}


//  checks the fielddefaults (-array [fieldname, s=string/n=numeric/N=numeric not 0/sel=selection/date not NULL/Date])
//  returns 1 if everything matches
//  throws a mb_confirm alert and returns 0 else
function check_form_fields(formname, fielddefaults, language)
{
    var messages = {
        //name                     eng                                         ger
        "msgEmptyField":           ['This field must not be empty!',           'Dieses Feld darf nicht leer sein!'],
        "msgNumericField":         ['This field must contain a number!',       'Dieses Feld muss eine Zahl enthalten!'],
        "msgNumericFieldNotNull":  ['This field must contain a not-0 number!', 'Dieses Feld muss eine Zahl enthalten und darf nicht 0 sein!'],
    	"msgNoSelection":          ['You must select an entry!',               'Sie müssen einen Eintrag auswählen!'],
    	"msgNoDate":               ['This ias not a date! (e.g. 12.05.2000)',  'Das ist kein Datum! (z.B. 12.05.2000)']
    }
    
    var language_index=0;
    if(language=="ger")
        language_index=1;
        
    var fielddefaults=fielddefaults.split(";");
    var message="";
    for(var i=0;i<fielddefaults.length;i+=2)
    {
        if(document.forms[formname].elements[fielddefaults[i]])
        {
            if(fielddefaults[i+1]=="s" && document.forms[formname].elements[fielddefaults[i]].value=="")
                message=messages["msgEmptyField"][language_index];
            if(fielddefaults[i+1]=="n" && (isNaN(document.forms[formname].elements[fielddefaults[i]].value) || document.forms[formname].elements[fielddefaults[i]].value==""))
                message=messages["msgNumericField"][language_index];
            if(fielddefaults[i+1]=="N" && (isNaN(document.forms[formname].elements[fielddefaults[i]].value) || document.forms[formname].elements[fielddefaults[i]].value==0 || document.forms[formname].elements[fielddefaults[i]].value==""))
                message=messages["msgNumericFieldNotNull"][language_index];
            if(fielddefaults[i+1]=="sel" && document.forms[formname].elements[fielddefaults[i]].value=="")
                message=messages["msgNoSelection"][language_index];
            if(fielddefaults[i+1]=="date" && check_date_value(document.forms[formname].elements[fielddefaults[i]].value,1)==0)            
                message=messages["msgNoDate"][language_index];
            if(fielddefaults[i+1]=="Date" && check_date_value(document.forms[formname].elements[fielddefaults[i]].value,0)==0)
                message=messages["msgNoDate"][language_index];                
            if(message!="")
            {
                document.forms[formname].elements[fielddefaults[i]].focus();
                document.forms[formname].elements[fielddefaults[i]].style.border="2px solid red";
                mb_confirm_show("mosaic:builder!", message, new Array("OK", ""));
                return 0;
            }
        }
    }
    return 1;
}

//checks if given string is a date
function check_date_value(date_string, not_null)
{
    var check=1;
    var remaining="";
    if(date_string=="" && not_null==1)
        check=0;
    else if(date_string=="" && not_null==0)
    	check=1;
    else
    {
        if(date_string.indexOf(".")==-1)
            check=0;
        else
        {
            var day=date_string.slice(0, date_string.indexOf("."));
            if(day.indexOf("0")==0 && day.length==2)
                day=day.slice(1);
            remaining=date_string.slice(date_string.indexOf(".")+1);
            if(remaining.indexOf(".")==-1)
                check=0;
            else
            {
                var month=remaining.slice(0, remaining.indexOf("."));
                if(month.indexOf("0")==0 && month.length==2)
                    month=month.slice(1);
                var year=remaining.slice(remaining.indexOf(".")+1);
            }
            var check_date=new Date(year, parseInt(month)-1, parseInt(day));

            if(parseInt(day)==check_date.getDate() && parseInt(month)-1==check_date.getMonth() && parseInt(year)==check_date.getFullYear())
                check=1;
            else
                check=0;
        }
    }
    return check;
}


