
var dateFields = new Object();
var dateFieldsCounter = 0;

var mandatoryFields = new Object();
var mandatoryFieldsCounter = 0;

var queryFields = new Object();
var queryFieldsCounter = 0;

var regExp = new RegExp("^[*]+$");

function addZero(vNumber){ 
    return ((vNumber < 10) ? "0" : "") + vNumber 
} 

function formatDate(vDate, vFormat){ 
    var vDay              = addZero(vDate.getDate()); 
    var vMonth            = addZero(vDate.getMonth()+1); 
    var vYearLong         = addZero(vDate.getFullYear()); 
    var vYearShort        = addZero(vDate.getFullYear().toString().substring(3,4)); 
    var vYear             = (vFormat.indexOf("yyyy")>-1?vYearLong:vYearShort) 
    var vHour             = addZero(vDate.getHours()); 
    var vMinute           = addZero(vDate.getMinutes()); 
    var vSecond           = addZero(vDate.getSeconds()); 
    var vDateString       = vFormat.replace(/dd/g, vDay).replace(/MM/g, vMonth).replace(/y{1,4}/g, vYear) 
    vDateString           = vDateString.replace(/hh/g, vHour).replace(/mm/g, vMinute).replace(/ss/g, vSecond) 
    return vDateString 
} 

function getDate(today, days){
    return new Date(today.getTime() - days*24*60*60*1000);
}

function setDays(days){
    var f = document.forms["searchform"];
    var to = new Date();
    var from = getDate(to, days);

    f.datefrom.value=formatDate(from, "dd.MM.yyyy");
    f.dateto.value=formatDate(to, "dd.MM.yyyy");
}

/**********************************************************************/ 
/*Function name :isDigit(theDigit) */ 
/*Usage of this function :test for an digit */ 
/*Input parameter required:thedata=string for test whether is digit */ 
/*Return value :if is digit,return true */ 
/* else return false */ 
/**********************************************************************/ 
function isDigit(theDigit) { 
    var digitArray = new Array('0','1','2','3','4','5','6','7','8','9'),j; 

    for (j = 0; j < digitArray.length; j++) {
        if (theDigit == digitArray[j]) 
            return true 
    } 
    return false 

} 
/*************************************************************************/ 
/*Function name :isPositiveInteger(theString) */ 
/*Usage of this function :test for an +ve integer */ 
/*Input parameter required:thedata=string for test whether is +ve integer*/ 
/*Return value :if is +ve integer,return true */ 
/* else return false */ 
/*function require :isDigit */ 
/*************************************************************************/ 
function isPositiveInteger(theString)  { 
    var theData = new String(theString) 

    if (!isDigit(theData.charAt(0))) 
        if (!(theData.charAt(0)== '+')) 
            return false 

    for (var i = 1; i < theData.length; i++) 
        if (!isDigit(theData.charAt(i))) 
            return false 
    return true 
} 
/**********************************************************************/ 
/*Function name :isDate(s,f) */ 
/*Usage of this function :To check s is a valid format */ 
/*Input parameter required:s=input string */ 
/* f=input string format */ 
/* =1,in mm/dd/yyyy format */ 
/* else in dd/mm/yyyy */ 
/*Return value :if is a valid date return 1 */ 
/* else return 0 */ 
/*Function required :isPositiveInteger() */ 
/**********************************************************************/ 
function isDate(s,f) {
    var a1=s.split("."); 
    
    var e=true; 
    if(a1.length!=3) { 
        e=false; 
    } 
    else {
    if (a1.length==3) 
        var na=a1; 
    if (isPositiveInteger(na[0]) && isPositiveInteger(na[1]) && isPositiveInteger(na[2])) { 
        if (f==1) {
            var d=na[1],m=na[0]; 
        } 
        else {
            var d=na[0],m=na[1]; 
        } 
        var y=na[2]; 
        if (((e) && (y<1000)||y.length>4)) {
            e=false 
        }
        if (e) { 
            v=new Date(m+"/"+d+"/"+y); 
            if (v.getMonth()!=m-1) 
                e=false; 
            } 
        } 
        else { 
            e=false; 
        } 
    } 
    return e 
} 

function onSubmitCheck() {
    
    var f = document.forms["searchform"];
    for (var i in mandatoryFields) {
         var fieldname = mandatoryFields[i];
         var fieldvalue = f[fieldname].value;
         if (!checkMandatory(f[fieldname])) return false;
    }
    for (var i in dateFields) {
         var fieldname = dateFields[i];
         var fieldvalue = f[fieldname].value;
         if (fieldvalue!=""&&!checkDate(f[fieldname])) return false;
    }
    for (var i in queryFields) {
         var fieldname = queryFields[i];
         var fieldvalue = f[fieldname].value;
         if (!isValidSearchQuery(f[fieldname])) return false;
    }
    return true;
}

function Trim(TRIM_VALUE){
    if(TRIM_VALUE.length < 1){
        return"";
    }
    TRIM_VALUE = RTrim(TRIM_VALUE);
    TRIM_VALUE = LTrim(TRIM_VALUE);
    if(TRIM_VALUE==""){
        return "";
    }
    else{
        return TRIM_VALUE;
    }
} //End Function

function RTrim(VALUE){
    var w_space = String.fromCharCode(32);
    var v_length = VALUE.length;
    var strTemp = "";
    if(v_length < 0){
        return"";
    }
    var iTemp = v_length -1;

    while(iTemp > -1){
        if(VALUE.charAt(iTemp) == w_space){
    }
    else{
        strTemp = VALUE.substring(0,iTemp +1);
        break;
    }
    iTemp = iTemp-1;

    } //End While
    return strTemp;

} //End Function

function LTrim(VALUE){
    var w_space = String.fromCharCode(32);
    if(v_length < 1){
        return"";
    }
    var v_length = VALUE.length;
    var strTemp = "";

    var iTemp = 0;

    while(iTemp < v_length){
        if(VALUE.charAt(iTemp) == w_space){
        }
        else{
            strTemp = VALUE.substring(iTemp,v_length);
            break;
        }
        iTemp = iTemp + 1;
    } //End While
    return strTemp;
} //End Function

function isValidSearchQuery(d) {
    var splitted = d.value.split(" ");
    var value = true;
    for (var i in splitted) {
        var keyword = splitted[i];
        if(Trim(keyword).length>0){
            var found = regExp.exec(keyword);
            if (found) {
                alert("Suche nicht erlaubt!"); 
                d.focus();
                return false;
            }
            switch (keyword) {
                case "OR": break;
                default: value = value && keyword.length>=3; 
            }
            if (!value) {
                alert("Sucheingabe zu kurz!"); 
                d.focus();
                break; // break on first time the rule is not matching the critera
            }
        }
    }
    return value;
}

function checkMandatory(d) {
    if( d.value=="" ){ 
        alert("Suchbegriff(e) ungültig!"); 
        d.focus();
        return false;
    }
    return true; 
}

function checkDate(d) { 
    if( !isDate(d.value,0) ){ 
        alert("Ungültiges Datum!"); 
        d.focus();
        return false;
    }
    return true; 
}
