<!--

var prev_fld = '';

function chkChrs(frm, fld, txt, searchfor, how) {
    var string = document.forms[frm].elements[fld].value;
    var stopit;
    if (how) {
        var proof = searchfor.exec(string);
        stopit = (proof != string);
    }
    else {
        stopit = searchfor.test(string);
    }
    if (stopit && (fld == prev_fld || prev_fld == '')) {
        alert(txt);
        prev_fld = fld;
        document.forms[frm].elements[fld].focus();
        return
    }
    else prev_fld = '';
}

function reg_exp(frm, fld, txt, searchfor) {
    string = document.forms[frm].elements[fld].value;
    if (string != '' && string != searchfor.exec(string)) {
        alert(txt);
        return false;
    }
}

function chkISODate(frm, fld, txt) {
    var string = document.forms[frm].elements[fld].value;
    if (string != "") {
        var searchfor = /^\d\d\d\d-\d\d-\d\d$/;
        var result = searchfor.test(string);
        if(result == false) {
            alert(txt);
            document.forms[frm].elements[fld].focus();
             return false;
        }
        if (chkISODate.arguments.length == 4) {
            var x = "";
            var i = -1;
            while (x != fld) {
                i++;
                x = document.forms[frm].elements[i].name;
            }
            i--;
            if (document.forms[frm].elements[i].value > document.forms[frm].elements[fld].value) {
                txt = chkISODate.arguments[3];
                alert(txt);
                document.forms[frm].elements[i].focus();
                return false;
            }
        }
    }
     return true;
}
function chkNumbers(frm, fld, txt) {
	 var string = document.forms[frm].elements[fld].value;
    if (string != "") {
        var searchfor = /^\d+$/
        var result = searchfor.test(string);
        if(result==false) {
            alert(txt);
            document.forms[frm].elements[fld].focus();
            return false;
        }
    }
    return true;
    
}

function chkForm(frm) {
    for (var i=1; i<chkForm.arguments.length; i++){
        var fld=chkForm.arguments[i];
        i++;
        var txt=chkForm.arguments[i];
        if (document.forms[frm].elements[fld].value == "") {
            alert(txt);
            document.forms[frm].elements[fld].focus();
            return false;
        }
    }
    return true;
}

function show(sessid) {
    // sessid is deprecated -> FIXME
    var x = document.frm.contact.value;
    if (x > 0) {
        var path=self.location.href;
        path = path.replace(/filemanager\/filemanager\.php.+/,'');
        path = path.replace(/todo\/todo\.php.+/,'');
        path = path.replace(/projects\/projects\.php.+/,'');
        path = path.replace(/notes\/notes\.php.+/,'');
        // add 'replaces' for further modules ^^here^^

        var y = path + 'misc/print.php?module=contacts&amp;contact_ID=' + x + '&' + SID;
        window.open(y);
    }
}

// Marker and pointer for list view
var marked  = new Array();
var allRows = new Array();

function hiliOn(tr, i) {
    if (typeof(marked[i]) == 'undefined' || !marked[i]) {
        tr.style.backgroundColor = hiliColor;
    }
}

function hiliOff(tr, i) {
    if (typeof(marked[i]) == 'undefined' || !marked[i]) {
        tr.style.backgroundColor = allRows[i][0];
    }
}

function marker(tr, i) {
    if (typeof(marked[i]) == 'undefined' || !marked[i]) {
        marked[i] = true;
        tr.style.backgroundColor = markColor;
    }
    else {
        marked[i] = false;
        tr.style.backgroundColor = allRows[i][0];
    }
}

function selectAll() {
    for (var i in allRows) {
        marked[i] = true;
        document.getElementById(i).style.backgroundColor = markColor;
    }
}

function deselectAll() {
    marked = new Array;
    for (var i in allRows) {
        document.getElementById(i).style.backgroundColor = allRows[i][0];
    }
}


// Context menu
var recID;
var menuName;
var column;
var menuStatus
var menuWidth = new Array();

function startMenu(m,i,c) {
	ie5=(document.getElementById && document.all && document.styleSheets)?1:0;                                                                      
	nn6=(document.getElementById && !document.all)?1:0;
	if(menuStatus == 1)doHide();
	menuName = m;
	recID = i;
	column = c;
    var mWid = 200;
    if(m == 'menu2'){
        mWid = 150;
    }
    menuWidth[m] = mWid;
	menuHeight=90;
	menuStatus=0; 
	document.oncontextmenu=showMenu; 
	document.onmouseup=hideMenu;
	if(typeof(allRows[i]) != 'undefined') document.getElementById('recname').firstChild.data = allRows[i][1];
}  


function showMenu(e) {

    var xPos;
    var yPos;
    if (ie5) {
        if (event.clientX<document.body.offsetWidth-menuWidth[menuName]) xPos=event.clientX+document.body.scrollLeft;
        else xPos=event.clientX+document.body.scrollLeft-menuWidth[menuName];
        if (event.clientY>document.body.offsetHeight-menuHeight) yPos=event.clientY+document.body.scrollTop-menuHeight;
        else yPos=event.clientY+document.body.scrollTop;

    }
    else {
        if (e.pageX>window.screen.width-menuWidth[menuName] - 20) {
            xPos=e.pageX-menuWidth[menuName];
        }
        else xPos=e.pageX;
        if (e.pageY + 550>window.screen.height){

            yPos=e.pageY - 100;
        }
        else yPos=e.pageY;
    }

    cMenu = document.getElementById(menuName);
    cMenu.style.left = xPos + "px";
    cMenu.style.top  = yPos + "px";
    menuStatus = 1;
    return false;

}

function hideMenu(e) {
    if (menuStatus==1 && ((ie5 && event.button==1) || (nn6 && e.which==1))) setTimeout("doHide()",250);
}

function doHide() {
    document.getElementById(menuName).style.top = -750+"px";
    menuStatus = 0;
    document.oncontextmenu = nop;
}

function doLink(url, target, msg) { 
    if (msg) {
        if (!confirm(msg)) return
    }
    //    url = url + recID + sessid; Johann 20.4.2005 - i dont see why the name of the last initialized context menu has to be added to the url, at least it works again now :-)
    url = url + recID + '&' + SID; //Ich habe es wieder rein, weil sonst das sortieren usw. nicht mehr funktioniert
    switch (target) {
        case "_blank":
        window.open(url,'new','left=5px,top=5px,height=540px,width=760px,scrollbars=1,resizable');
        break;
    case "_top":
    	window.open(url,'new','left=5px,top=5px,width=760px,height=540px,scrollbars=1,resizable');
        break;
    default:
        location.href = url;
        break;
    }
}

function proc_marked(url, target, msg) {
	var list = "";
    for (var i in marked) {
        var is = i.split('xxx');
        var i1 = i;
        if (is[1]>0) {
            i1 = is[1];
        }
        if (marked[i]) {
            list = list + i1 + ",";
        }
    }
    if (list != "") {
    	if(msg) {
            if (!confirm(msg)) return;
        }
        url = url + list.replace(/,$/,"") + '&' + SID;
        switch (target) {
            case "_blank":
                window.open(url,'new','left=5px,top=5px,height=540px,width=760px,scrollbars=1,resizable');
                break;
            case "_top":
                window.open(url,'new','left=5px,top=5px,height=540px,width=760px,scrollbars=1,resizable');
                break;
            default:
                location.href = url;
                break;
        }
    }
}

function show_help(lnk) {
    var helpwin = window.open(lnk, 'helpwin', '');
}

function go_web() {
 x = document.frm.url.value;
 if (x.substr(0,4) != "http") x = "http://" + x;
 window.open(x,"_blank");
}

function mailto(field,adress,sessID,quickmail, subject) {
  // sessid is deprecated -> FIXME
  if(field != 0) adress = document.frm[field].value;
  if (quickmail != 0){
    x = '&' + SID;
    path = self.location.href;
    path = path.replace(/[^\/]+\/[^\/]+\.php.*/,'');
    location.href = path + "mail/mail.php?mode=send_form&amp;form=email&amp;recipient=" + adress + x;
  }
  else {
    if (subject == undefined)
        query = "";
    else
        // assume subject already urlencoded; be sure to use
        // rawurlencode rather than urlencode (in PHP)
        query = "?subject=" + subject;
    location.href = "mailto:" + adress + query; 
  }
}


function show_map() {
   // display msn map of current address
   st = document.frm['strasse'].value;
   city = document.frm['stadt'].value;
   state = document.frm['state'].value;
       
   st =    "strt1=" + escape(st);
   city =  "city1=" + escape(city);
   state = "stnm1=" + escape(state);
   query = st + "&" + city + "&" + state
   
   href = "http://maps.msn.com/home.aspx?" + query;
   // alert(href);
   // location.href = href;
   window.open (href);
}

function google_search() {
    // put quoted "first last" into google for searching
    // could do middle initial also but...

    first = document.frm['vorname'].value;
    last  = document.frm['nachname'].value;
    search = '"' + first + " " + last + '"';
    query = "q=" + escape(search);
    href = "http://www.google.com/custom?" + query;
    window.open (href);
}

function callto(fieldName) {
    number = document.frm[fieldName].value;
    if (number == "") return;
    // alert ("callto");
    href = "callto:+1" + number;
    window.location = "callto:+1" + number;
}


function go_phone(phonetype,phonenumber) {
  window.open("../misc/cti_" + phonetype + ".inc.php?phonenumber=" + phonenumber,"_blank","toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,left=200,top=200,width=400,height=150,resizable=1")
}

function nop() {}

function cleanField(field) {
    // Here for onfocus on column headers (filters).
    //
    // Solves a problem with autofill where the input box bg color
    // is set to yellow, which has almost no contrast with the normal fg
    // color (white). 

    field.value = '';                        // clear the field
    var thElement = document.getElementById("nachname_contacts");
    if (thElement == null)
        return;                             // something wrong

    var thStyle;        // enclosing TH element style
    var thisStyle;      // this input field element style
    if ("getComputedStyle" in window) {
        // for Mozilla
        thStyle =   window.getComputedStyle(thElement, ""); 
        thisStyle = window.getComputedStyle(field, ""); 
    }
    else if ("currentStyle" in thElement) {
        // for IE
        thStyle =   thElement.currentStyle;
        thisStyle = field.currentStyle;
    }
    else {
        return;         // can't fix the problem (if any) on this browser
    }
    if (thStyle.backgroundColor != thisStyle.backgroundColor) {
        // the bg color is probably yellow as set by autofill;
        // we could calculate a foreground color guaranteed to
        // have contrast but black should do the job:
        field.style.color = "#000000"; 
    }
    return;
}


//-->
