function addfaxoption(textval,valval) {
   var hiddenval = document.send_fax.ccuserlist.value;
   var myoption = new Option(textval,valval,true,true);
   
   document.send_fax.ccuserid.options[document.send_fax.ccuserid.options.length] = myoption;
   if (hiddenval.length) {
      document.send_fax.ccuserlist.value = hiddenval + "," + valval;
   } else {
      document.send_fax.ccuserlist.value = valval;
   }
}
function addemailoption(textval,valval) {
   var hiddenval = document.send_email.ccuserlist.value;
   var myoption = new Option(textval,valval,true,true);
   
   document.send_email.ccuserid.options[document.send_email.ccuserid.options.length] = myoption;
   if (hiddenval.length) {
      document.send_email.ccuserlist.value = hiddenval + "," + valval;
   } else {
      document.send_email.ccuserlist.value = valval;
   }
}
function addoption(formname,field,id,textvalue) {
    var addopt = new Option(textvalue,id,true,false);
    var optlength = eval("document." + formname + "." + field + ".options.length");
    var selfield = eval("document." + formname + "." + field);
    selfield.options[optlength] = addopt;
    selfield.options[optlength].selected = true;
}
function addoptionjs(formname,field){
    var newopt=prompt("Enter your new option (max 30 characters):","");
    if (newopt != null && newopt != "") {
        if (newopt.length > 30) {
            newopt = newopt.substring(0,30);
        }
        var id="userdefined_"+newopt;
        addoption(formname,field,id,newopt);
    }
}
function quickselect(userform,userselect) {
    var strDiv;
    var strItem;
    var strCompany;
    var strLast;
    var tmpval;
    var startindex = 1;
    var selsize = userselect.options.length;
    var results = new Array(selsize);
    var matchoption = 0;
    var matchtotal = 0;

    strDiv = userform.txtDiv.value;
    strItem = userform.txtItem.value;
    strCompany = userform.txtCompany.value;
    strLast = userform.txtLast.value;
    var cmpare = new RegExp();

    for (var x = startindex; x < selsize; x++) {
        tmpval = userselect.options[x].text;

        var tmparr = tmpval.split(/:/);
        var total = 0;


        //userform.txtCompany.value = arrfoo[0];
        if (strDiv.length) {
            cmpare.compile(strDiv);
            if (tmparr[0].match(cmpare)) {
                total += tmparr[0].match(cmpare).length;
            } 

                    
        }
        if (strItem.length) {
            cmpare.compile(strItem);
            if (tmparr[1].match(cmpare)) {
                total += tmparr[1].match(cmpare).length;
            } 
        }
        if (strCompany.length) {
            cmpare.compile(strCompany,"i");
            if (tmparr[2].match(cmpare)) {
                total += tmparr[2].match(cmpare).length;
            } 
            cmpare.compile(strCompany);
            if (tmparr[2].match(cmpare)) {
                total += tmparr[2].match(cmpare).length;
            }         
        }
        if (strLast.length) {
            cmpare.compile(strLast,"i");
            if (tmparr[3]) {
                if (tmparr[3].match(cmpare)) {
                    total += tmparr[3].match(cmpare).length;
                }
            }
//            cmpare.compile(strLast);
//            if (tmparr[3].match(cmpare)) {
//                total += tmparr[3].match(cmpare).length;
//            }         
        }
        if (total > matchtotal) {
            matchtotal = total;
            matchoption = x;
        }
        

    }
    userselect.selectedIndex = matchoption;
}
function openPopup(str,name,w,h) { // GK added (used in Unit Quick View)
    if (!name) {
        var date=new Date();
        name=date.getTime();
    }
    if(!w) w=600;
    if(!h) h=400;
    window.open(str,name,"height="+h+",width="+w+",resizable,scrollbars=yes");
    return false;
}

function fill_info(e,ind,x,y){
    if(!x) x=15;
    if(!y) y=25;
    var name='l_'+ind;
    var obj=new getObj(name);
    showByPosition(obj,15,25,e);
}
function showByPosition(obj,x,y,e) { // GK added (used in Unit Quick View)
    
    if (documentLoaded==true) {

        var posx = 0;
    	var posy = 0;
        //var tempx=x;
        //var tempy=y;
    
        if (!e) var e = window.event;
    	
        if (e.pageX || e.pageY){
    		posx = e.pageX;
    		posy = e.pageY;
    	}else if (e.clientX || e.clientY){
    		posx = e.clientX + document.body.scrollLeft;
    		posy = e.clientY + document.body.scrollTop;
    	}
    
        if (window.innerWidth || window.innerHeight) {

            var winx=(window.pageXOffset + window.innerWidth);
            var winy=(window.pageYOffset + window.innerHeight);

            if ((posx + x + obj.obj.offsetWidth) > window.innerWidth)
                x = winx - obj.obj.offsetWidth - 15;
            else
                x = posx + x;

            if ((posy + y + obj.obj.offsetHeight) > winy)
                y = posy - obj.obj.offsetHeight - 15;
            else
                y = posy + y;

            //alert('Mouse X: \t'+posx+'\nOffset X: \t'+tempx+'\nElem Width: \t'+obj.obj.offsetWidth+'\nWin Width: \t'+window.innerWidth+'\nScroll Width: \t'+window.pageXOffset+'\nTotal Width: \t'+winx+'\nFINAL X: \t'+x+'\n\nMouse Y: \t'+posy+'\nOffset Y: \t'+tempy+'\nElement Height: \t'+obj.obj.offsetHeight+'\nWin Height: \t'+window.innerHeight+'\nScroll Height: \t'+window.pageYOffset+'\nTotal Height: \t'+winy+'\nFINAL Y: \t'+y);

        }else{
            if ((posx + x + obj.obj.clientWidth) > (document.body.clientWidth + document.body.scrollLeft))
                x = (document.body.clientWidth + document.body.scrollLeft) - obj.obj.clientWidth;
            else
                x = posx + x;

            if ((posy + y + obj.obj.clientHeight) > (document.body.clientHeight + document.body.scrollTop))
                y = posy - obj.obj.clientHeight - 15;
            else
                y = posy + y;
        }
        obj.style.top=y;
        obj.style.left=x;
        obj.style.visibility='visible';
    }
}
function hide(name) { // GK added (used in Unit Quick View)
    var obj=new getObj(name);
    obj.style.visibility='hidden';
}
function getObj(name){
  if (document.getElementById){
  	this.obj = document.getElementById(name);
	this.style = document.getElementById(name).style;
  }else if (document.all){
	this.obj = document.all[name];
	this.style = document.all[name].style;
  }else if (document.layers){
   	this.obj = document.layers[name];
   	this.style = document.layers[name];
  }
}
function show_elevation(ind){
    if (gImages[ind] != "") parent.image.document.modelimg.src=gImages[ind];
}
function clear_info(ind){
    var layer='l_'+ind;
    hide(layer);
}
function hide_elevation(){
    parent.image.document.modelimg.src="images/Elevation_None.jpg";
}
function find_target(){
    var targ;
    if (self.opener == null) {
        targ='_self';
    }else if(self.opener.parent.name=='main'){
        //alert("My opener's parent's name is " + self.opener.parent.name);
        targ=self.opener.parent.name;
    }else if (self.opener.name=='main') {
        //alert("My opener's name is " + self.opener.name);
        targ=self.opener.name;
    }else{
        targ='_self';
    }
    return targ;
}
function set_colours (obj, id, prefix){
    var menu=eval("obj.form.control_"+id+"_ColorID");
    menu.options.length=0;

    if (prefix=="mat") {
        var idarr=eval("matmfrids_"+id);
        var mfrmenu=eval("obj.form.control_"+id+"_ManufacturerID");
        var match=0;
        if (obj.options[obj.selectedIndex].value!=0) {
           match=idarr[obj.selectedIndex];
        }
        
        for (var i=0; i<mfrmenu.length; i++) {
            if (mfrmenu.options[i].value==match) {
                mfrmenu.selectedIndex=i;
                break;
            }
        }
    }

    if (obj.options[obj.selectedIndex].value > 0) {
        var mfid=obj.options[obj.selectedIndex].value;
        var idarr=eval(prefix+"clrids_"+id+"_"+mfid);
        if (idarr.length) {
            var namearr=eval(prefix+"clrnames_"+id+"_"+mfid);
            var reset_option=eval("reset_option_"+id);
            for (var i=0; i<idarr.length; i++) {
                var bln=(idarr[i]==reset_option[0])?true:false;
                var newopt = new Option(namearr[i],idarr[i],false,bln);
                menu.options[menu.options.length] = newopt;
            }
        }
    }
    menu.options[menu.options.length] = new Option('- select -',0,false,false);
}
function reset_colours (form){
    form.reset();
    var pattern = /control_(\d+)_ColorID/;
    for (var i=0; i<form.elements.length; i++) {
        var result=pattern.exec(form.elements[i].name);
        if (result != null) {
            form.elements[i].options.length=0;
            var Arr=eval("reset_option_"+result[1]);
            form.elements[i].options[form.elements[i].options.length] = new Option(Arr[1],Arr[0],false,true);
        }
    }
}
function change_text_value (sel,text){
    if (change_text_array.length>0) {
        text.value=change_text_array[sel.selectedIndex];
    }
}
function check_required (f){
    var empties="";
    var focuselement;
    var chk=true;

    for (var i=0; i<f.length; i++) {
        var e=f.elements[i];

        if ((e.type=="text" || e.type=="textarea" || e.type=="password") && e.required) {
            if (is_blank(e.value)) {
               empties += "\n     " + e.label;
               if (chk) {
                   focuselement=e;
                   chk=false;
               }
               continue;
            }
        }
    }
    if (empties) {
        var msg = "You must fill in the following required fields:\n" + empties;
        alert (msg);
        focuselement.focus();
        return false;
    }else{
        return true;
    }
}
function is_blank(s){
    if (s == null) return true;
    if (s == "") return true;

    for (var i=0; i<s.length; i++) {
        var c = s.charAt(i);
        if ((c!=' ') && (c!='\n') && (c!='\t')) return false;
    }
    return true;
}
function MM_preloadImages() { //v3.0
  var d=document; if (d.images) {
      if (!d.MM_p) d.MM_p=new Array();
      var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for (i=0; i<a.length; i++)
          if (a[i].indexOf("#")!=0) {
              d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];
          }
  }
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for (i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if (!d) d=document;if ((p=n.indexOf("?"))>0&&parent.frames.length) {
      d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
  }
  if (!(x=d[n])&&d.all) x=d.all[n];for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for (i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if (!x && document.getElementById) x=document.getElementById(n);return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for (i=0;i<(a.length-2);i+=3)
      if ((x=MM_findObj(a[i]))!=null) {
          document.MM_sr[j++]=x; if (!x.oSrc) x.oSrc=x.src;x.src=a[i+2];
      }
}
function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) {v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v;}
}

// GK added these for arch. controls system...1 Aug 2004
/*function check_chk_one(){
    return true;
}
function check_chk_two(){
    return true;
}
function check_chk_three(){
    return true;
}
function check_val_range(){
    if (obj.value>=low && obj.value<=high) return true 
        else return false;
}*/
function check_val_min(){
    if (isNaN(this.value)) {
        alert (this.label + " is not a number!\nPlease enter only digits (no characters).");
        return false;
    }else{
        var objcomment = eval ("this.form.comment_"+this.name);
        //alert (this.value + " CHECK = " + this.jscheckval);
        var val=parseFloat(this.value);
        var chk=parseFloat(this.jscheckval);
        if (val>=chk || (val<chk && objcomment.value != null && objcomment.value != ""))
            return true;
        else return false;
    }
}
function check_val_max(){
    if (isNaN(this.value)) {
        alert (this.label + " is not a number!\nPlease enter only digits (no characters).");
        return false;
    }else{
        var objcomment = eval ("this.form.comment_"+this.name);
        //alert (this.value + " CHECK < " + this.jscheckval + "? " + (this.value < this.jscheckval));
        var val=parseFloat(this.value);
        var chk=parseFloat(this.jscheckval);
        if (val <= chk || (val>chk && objcomment.value != null && objcomment.value != "")) 
            return true 
        else return false;
    }
}
function check_ratio_min(){
    var objcomment = eval ("this.form.comment_"+this.name);
    var val = new Array(2);
    var check = new Array(2);
    var reg = /^\s*\d+\:\d+\s*$/;
    if (!reg.test(this.value)) {
        alert (this.label + " is not a ratio!\nPlease enter a properly formatted ratio.\ne.g. 7:12");
    }else{
        val = this.value.split(":");
        check = this.jscheckval.split(":");
        //var t1 = ((parseInt(val[0]))/(parseInt(val[1])));
        //var t2 = ((parseInt(check[0]))/(parseInt(check[1])));
        //alert (t1 + ' vs. ' + t2);
        var bool = ((parseInt(val[0])/parseInt(val[1])) >= (parseInt(check[0])/parseInt(check[1])));
        if (bool || (!bool && objcomment.value != null && objcomment.value != ""))
            return true;
        else return false;
    }
}
function check_ratio(){
    var objcomment = eval ("this.form.comment_"+this.name);
    var val = new Array(2);
    var check = new Array(2);
    var reg = /^\s*\d+\:\d+\s*$/;
    if (!reg.test(this.value)) {
        alert (this.label + " is not a ratio!\nPlease enter a properly formatted ratio.\ne.g. 7:12");
    }else{
        val = this.value.split(":");
        check = this.jscheckval.split(":");
        //var t1 = ((parseInt(val[0]))/(parseInt(val[1])));
        //var t2 = ((parseInt(check[0]))/(parseInt(check[1])));
        //alert (t1 + ' vs. ' + t2);
        var bool = ((parseInt(val[0])/parseInt(val[1])) == (parseInt(check[0])/parseInt(check[1])));
        if (bool || (!bool && objcomment.value != null && objcomment.value != ""))
            return true;
        else return false;
    }
}
function check_val_equals(){
    if (isNaN(this.value)) {
        alert (this.label + " is not a number!\nPlease enter only digits (no characters).");
        return false;
    }else{
        var objcomment = eval ("this.form.comment_"+this.name);
        var val=parseFloat(this.value);
        var chk=parseFloat(this.jscheckval);
        if (val==chk || (val!=chk && objcomment.value != null && objcomment.value != "")) 
            return true 
        else return false;
    }
}
function check_controls (f){
    var empties="";
    var focuselement;
    var chk=true;

    for (var i=0; i<f.length; i++) {
        var e=f.elements[i];

        if ((e.type=="text") && e.jscheck) {
            if (!e.jscheck()) {
               empties += "\n     " + e.label;
               if (chk) {
                   focuselement=e;
                   chk=false;
               }
               continue;
            }
        }
    }
    if (empties) {
        var msg = "The following controls do not meet the developer's criteria:\n" + empties + "\n\nPlease alter the control values or enter an explanation in the corresponding comments box.";
        alert (msg);
        focuselement.focus();
        return false;
    }else{
        return true;
    }
}
