<!-- Hide script
        function bIE() {
            var MSIE = navigator.userAgent.indexOf('MSIE')>=0?true:false;
            //alert('agent: '+navigator.userAgent);
            return MSIE;
        }
        
       function padLeft(pHowmany, pValue, pPadwith) {
		 if (pPadwith == null ) {
	        pPadwith = "0";
         }
         
         var pad = pPadwith;
         while (pad.length < pHowmany) {
			pad = pPadwith + pad;
		 }

		 return String(pad + pValue).slice(-1 * pHowmany)
	   }
	 function AddDays(pHowmany, pValue) {
		var d = new Date(pValue);    
		d.setDate(d.getDate()+pHowmany);
		var dt = d;
		return dt;
	 }
     //Calculates the difference in days between two date elements
       function DateDiffDays(dateElem1, dateElem2) {
            var totalDays = 0;
            var ONE_DAY = 1000 * 60 * 60 * 24;

            // Convert both dates to milliseconds
            var date1_ms = new Date(dateElem1.value);
            var date2_ms = new Date(dateElem2.value);
            try {
                if((date1_ms.toString() == 'Invalid Date') || (date2_ms.toString() == 'Invalid Date')) {
                    throw('Invalid Date');
                }
            } catch (e) {
                return totalDays;
            }

            // Calculate the difference in milliseconds
            var difference_ms = Math.abs(date1_ms - date2_ms);
            totalDays = Math.round(difference_ms / ONE_DAY);
            if (totalDays == 0){totalDays = 1;};    //LEED consider 1 day if START & END dates are the same! 12/15/2010 PL
            return totalDays;
        }



    function _FindControlPopup(id) {
	        if ( typeof(document.getElementById) != "undefined" ) {
	           // alert('running');
		        var Ctl = document.getElementById(id);
		        if ( Ctl != null ) {
			        return Ctl;
		        }
	        }
	        for(var i = 0; i < document.forms.length; i++ ) {
		        var frm = document.forms[i];
		        var ctl = frm[id];
		        if ( ctl != null ) {
			        return ctl;
		        }
	        }
	        return null;
        }
    
	 function popup(strUrl, event){

		var w=470;
		var h=450;
		var x=event.screenX + 10
		var y=event.screenY + 10

		if (x > screen.width/2) { x = x-w }
		if (y > screen.height/2) { y = y-h }

        Y=screen.height/6;
        
		awindow = window.open(strUrl,"Noteshow","left="+x+",top="+y+",width="+w+",height="+h+",resizable=1,toolbar=0,menubar=0,status=0,scrollbars=1");

		//awindow = window.open(strUrl,"Noteshow","resizable=1,toolbar=0,menubar=0,status=0,scrollbars=1");

	}
	 function popuplg(strUrl, event){

		var w=590;
		var h=450;
		var x=event.screenX + 10
		var y=event.screenY + 10

		if (x > screen.width/2) { x = x-w }
		if (y > screen.height/2) { y = y-h }

		awindow = window.open(strUrl,"Noteshow","left="+x+",top="+y+",width="+w+",height="+h+",resizable=1,toolbar=0,menubar=0,status=0,scrollbars=1");

	}
	function popuphw(strUrl,h,w, event){

		var x=event.screenX + 10
		var y=event.screenY + 10

		if (x > screen.width/2) { x = x-w }
		if (y > screen.height/2) { y = y-h }

		awindow = window.open(strUrl,"Noteshow","left="+x+",top="+y+",width="+w+",height="+h+",resizable=1,toolbar=0,menubar=0,status=0,scrollbars=1");

	}
	function closeandrefresh() {
	   window.opener.location.reload(); 
       window.close(); 
	
	}
	function statusbar(msg) {
		self.status=msg;
		return true;
	}
	
	// Call this function from the AJAX Modal Control to force postback
	function fnClickOK(sender, e) { 
	    //alert('fnClickOK');
        __doPostBack(sender,e); 
    }

    // gantt chart scripts
    var aryZooms = ['zoom1','zoom2','zoom3','zoom4','zoom5','zoom6','zoom7','zoom8'];
    var zoomlevel = 4;

    function setStyle(pMode) {

	    var elem = document.getElementById('mytable');

	    if (pMode == 'up') {

		    zoomlevel = zoomlevel + 1;

				    if (zoomlevel>7) {
					    zoomlevel=7;
					    alert('max:'+aryZooms[zoomlevel]);
				    }

		    elem.setAttribute("class", aryZooms[zoomlevel]);
		    elem.setAttribute("className", aryZooms[zoomlevel]);


	    } else {


		    zoomlevel = zoomlevel - 1;


		    if (zoomlevel<0) {
			    zoomlevel=0;
			    alert('min:'+aryZooms[zoomlevel]);
		    }

		    elem.setAttribute("class", aryZooms[zoomlevel]);
		    elem.setAttribute("className", aryZooms[zoomlevel]);
	    }

    }
  
    
    //Docking stuff
    
    function OnClientDock (dockObj, eventArgs)
       {
		    // get Columns
		    var listItems = document.getElementsByTagName('DIV');	// Get array containing all tables
            var sTest
            var iCols = 0
            var my_cols= new Array()
            for(var no=0;no<listItems.length;no++){ // loop thru list items
                    sTest = listItems[no].id
                   if (sTest.indexOf('RDZ1') > 0) {
                        if ( sTest.indexOf('CM4_') < 0) {
                            //alert('Found Zone: '+listItems[no].id);
                            iCols = iCols+1;                            
                            my_cols[listItems[no].id]=iCols;
                        }
		             }
            }
            
            // get item dockObj.id
            var sItemID
            var sItem = dockObj.get_id()
            //alert('Item: '+sItem);
            var sItemPrefix = 'CM4_' // remember to change this if codebehind changes
            sItemID = sItem.substring(sItem.indexOf(sItemPrefix)).replace(sItemPrefix,'')

            var ColObj = document.getElementById(dockObj.get_dockZoneID());
            var sCol = ColObj.getAttribute('_Cm4Col');
            var sReg = ColObj.getAttribute('_Cm4Reg');
            var sPos = dockObj.get_index();
            
            //alert('aDocked to col: '+sCol);
            //alert('Docked to pos: '+sPos);
            
	        // using ajax
            var url = 'members/popups/setColumn.aspx';
            var pars = '?i='+sItemID+'&c='+sCol+'&p='+sPos+'&r='+sReg;
            makeRequest(url,pars);
                  
        }
             
        function makeRequest(url, parameters) {
           
           //alert('making a request '+url+parameters);
             var http_request;
              if (window.XMLHttpRequest) { // Mozilla, Safari,...
                 http_request = new XMLHttpRequest();
                 if (http_request.overrideMimeType) {
         	        // set type accordingly to anticipated content type
                    //http_request.overrideMimeType('text/xml');
                    http_request.overrideMimeType('text/html');
                 }
              } else if (window.ActiveXObject) { // IE
                 try {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                 } catch (e) {
                    try {
                       http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
                 }
              }
              if (!http_request) {
                 alert('Cannot create XMLHTTP instance');
                 return false;
              }
              http_request.onreadystatechange = alertContents;
              http_request.open('GET', url + parameters, true);
              http_request.send(null);
           }

           function alertContents() {
              try {
                  if (http_request.readyState == 4) {
                     if (http_request.status == 200) {
                        //alert(http_request.responseText);
                        //result = http_request.responseText;
                        //document.getElementById('myspan').innerHTML = result;            
                     } else {
                        //alert("status:"+http_request.status);
                        alert('Error Code: '+http_request.status+' - There was a problem processing your request.');
                     }
                  }
              }
              catch(err)
              {
                //alert(err);
              }
              
              
           }
   
   
        // end basic AJAX stuff
        var imgun = false; // to use in the imgswappig-allowing script

        function swapSubImg(x){
        //alert('1:'+x.src);
        x.src = (x.src.indexOf("unsubscribe")> 0)?'images/subscribe.png':'images/unsubscribe.png'
        //alert(x.href);
        //alert('2:'+x.src);
        imgun = (x.src == 'images/subscribe.png')
        }
        
      // Telerik RadWindow Support
      function openRadWindow(url, winname,x,y, modal, behaviors )
             {
             
                var center = true;
                var setsize = true;

                 if ( winname == 'radwin1') {
                   center = false;
                 } 

                 if ( winname == 'radwinmax') {
                   setsize = false;
                 } 
                 if ( !x || x == 0 ) {
                    setsize = false;
                 }
                 if ( !y || y == 0 ) {
                    setsize = false;
                 }
                 
                 var oWnd = radopen(url, winname );

                if ( behaviors ) {
                     
                      var behset = 0 ;
                      if (behaviors.toUpperCase().indexOf('CLOSE') > -1) {                       
                        behset = behset + Telerik.Web.UI.WindowBehaviors.Close;
                      }
                      if (behaviors.toUpperCase().indexOf('MOVE') > -1) {
                        behset = behset + Telerik.Web.UI.WindowBehaviors.Move;
                      }
                      if (behaviors.toUpperCase().indexOf('RESIZE') > -1) {
                        behset = behset + Telerik.Web.UI.WindowBehaviors.Resize;
                      }
                      if (behaviors.toUpperCase().indexOf('RELOAD') > -1) {
                        behset = behset + Telerik.Web.UI.WindowBehaviors.Reload;
                      }
                      if (behaviors.toUpperCase().indexOf('MAXIMIZE') > -1) {
                        behset = behset + Telerik.Web.UI.WindowBehaviors.Maximize;
                      }
                      oWnd.set_behaviors( behset);
                 }
                 
                 if ( modal ) {
                      oWnd.set_modal(true);
                 }
                 
                 if (setsize) {                                 
                    var MSIE = bIE();
                    var hOffset = 0;
                    var wOffset = 0;
                    var w;
                    var h;
                    if(MSIE){ //IE
			            hOffset= 0;
			            wOffset= 0;
		            } else { //FF - needs to be wider for some reason so scroll bars dont appear
			            wOffset= 0;
			            hOffset= 25;
		            }
                     w = x+wOffset;
                     h = y+hOffset; 
                     oWnd.SetSize(w,h);
                 }
                 
                 if (center) {
                    oWnd.Center();
                 }
                 
                 if ( winname == 'radwinmax') {
                   oWnd.maximize();
                 } 
                
                 if ( winname == 'raddialogwin') {
                      oWnd.hide();
                      oWnd.set_behaviors( 
                            Telerik.Web.UI.WindowBehaviors.Close + 
                            Telerik.Web.UI.WindowBehaviors.Maximize +
                            Telerik.Web.UI.WindowBehaviors.Move +
                            Telerik.Web.UI.WindowBehaviors.Reload +
                            Telerik.Web.UI.WindowBehaviors.Resize); 
                      oWnd.set_modal(true);
                      oWnd.show();
                 }
                
            }
             
       function CloseRadToolTip() 
       {
         var tooltip = Telerik.Web.UI.RadToolTip.getCurrent();
               if (tooltip) tooltip.hide();
       }
             
       function GetRadWindow()                 
       {
             var oWindow = null;
             if (window.radWindow)
                oWindow = window.radWindow;     
             else if (window.frameElement.radWindow)
               oWindow = window.frameElement.radWindow;   
             return oWindow;
        }
        function CloseOnReload(newurl)
        {
        //TODO - Rename to CloseRadWindowReload
            RefreshParentPage(newurl);
            GetRadWindow().close();
        }
        function CloseRadWindowWithoutReload()
        {
            GetRadWindow().close();
        }
        function RefreshParentPage(newurl)
        {
          GetRadWindow().BrowserWindow.location.reload();
        }
        function runDockCommandAdmin(dockObj, eventArgs) {         
//	        var url = "members/popups/AdminContent.aspx?" + dockObj.getCommand("iteminfo").get_text();
//	        openRadWindow(url, "raddialogwin",715,715)
 	        var url = "index.aspx?u=Item_Admin&" + dockObj.getCommand("iteminfo").get_text();
            window.location.href = url;
       }
        function runDockCommandHelp(dockObj, eventArgs) {         
	         var url = "members/popups/HelpContent.aspx?" + dockObj.getCommand("iteminfo").get_text();
	        //var url = "custom/lip/help/google.html?" + dockObj.getCommand("iteminfo").get_text();
	        openRadWindow(url, "radwin1",700,550)
        }
        function runDockCommandItem(dockObj, eventArgs) {         
	        var url = "members/popups/Item.aspx?" + dockObj.getCommand("iteminfo").get_text() + "&" + location.search.substring(1,location.search.length);
	        //alert(url);
	        openRadWindow(url, "radwinmax")
        }
        function runDockCommandItemPrint(dockObj, eventArgs) {         
	        var url = "members/popups/Item.aspx?mode=print&" + dockObj.getCommand("iteminfo").get_text() + "&" + location.search.substring(1,location.search.length);
	        openRadWindow(url, "radwinmax")
        }
        function runDockCommandEdit(dockObj, eventArgs) {
                            
	        var url =  dockObj.getCommand("editurl").get_text() + dockObj.getCommand("iteminfo").get_text();
	        
	        //this will all go -- the window supports old method
	        if ( url.indexOf('t=2') + url.indexOf('t=45') > 0) {
	            openRadWindow(url, "raddialogwin",515,515)
	        } else if ( url.indexOf('t=18') > 0 ) {
	            openRadWindow(url, "raddialogwin",715,715)
	        } else {
	            openRadWindow(url, "raddialogwin",515,515)
	        }
	        
        }
        
        function runDockCommandDelete(dockObj, eventArgs) {         
	        var msg = "Are you sure you want to delete this item";
	        var t = dockObj.get_title();
	        if (t) {
	            var newt = removeHTMLTags(t);
	            msg = msg + ": " + newt;
	            }
	        msg = msg + "?";
	        
            var answer = confirm(msg);
            if (answer) {
            
                var url = "members/popups/procDelItem.aspx"
                var parameters = "?passthru=1&" + dockObj.getCommand("iteminfo").get_text();
	          
	            // using ajax
	            makeRequest(url, parameters)
            }
            else {
                dockObj.set_closed(false);
            }
        }
      
    // to use, add OnClientNodeClicked="onClientNodeClickDoExpand"  
    function onClientNodeClickDoExpand(sender, eventArgs) 
    { 
        var node = eventArgs.get_node(); 
        node.toggle(); 
    }  
      
        // Utilities
        
        function removeHTMLTags(str){
 	            var strTagStrippedText = str.replace(/<\/?[^>]+(>|$)/g, "");
 		        return strTagStrippedText;
          
        }
        
    //Yahoo Map Functions
    function magicTrigFunctionX (pointRatio){   return Math.cos(pointRatio*2*Math.PI);} 
    function magicTrigFunctionY (pointRatio){    return Math.sin(pointRatio*2*Math.PI); }
        
    function drawMapCircle(Map, MapSizeX, MapSizeY, miles, sides) { 
     		
            var radius =  miles / ( Map.getUnitsPerPixel(Map.getZoomLevel()).miles ) ;	
            var centerX = MapSizeX / 2;
            var centerY = MapSizeY / 2;
    		var polylinePoints = []; 

       //alert (MapSizeX);
       //alert (radius);
        for(var i=0; i<=sides; i++){			
            
            var pointRatio = i/sides;							
            var xSteps = magicTrigFunctionX(pointRatio);			
            var ySteps = magicTrigFunctionY(pointRatio);			
            var pointX = centerX + xSteps * radius;			
            var pointY = centerY + ySteps * radius;			
            var coord = new YCoordPoint(pointX, pointY);
            var xy = Map.convertXYLatLon(coord);
            polylinePoints.push(xy);	
            Map.addOverlay(new YPolyline(polylinePoints, 'red',1));	          
         }		
    } // end drawMapCircle

    function myMapCallbackDoNothing(_e, _c){	 
        alert('Please enter edit mode to add points to the map.');
    }
     //Yahoo Map Functions - End
     
     
     function FindControlByServerName(pServerName) {
        var el;
        var sTest = "";
        var listItems = document.getElementsByTagName('input')
          
            for(var no=0;no<listItems.length;no++){ // loop thru list items                        
                           el = listItems[no];
                           sTest = listItems[no].id
                           if (sTest.indexOf(pServerName) > 0) {                                                          
                                break;                       
	                       }
            }  
            return el;
        } // FindActualInputID
   
       function FindActualInputID (pCommonName) {
            var sTest = "";
            var listItems = document.getElementsByTagName('input')
              
                for(var no=0;no<listItems.length;no++){ // loop thru list items                        
                                sTest = listItems[no].id
                               if (sTest.indexOf(pCommonName) > 0) {                                                          
                                    break;                       
		                       }
                }  
            return sTest;
        } // FindActualInputID
        
        function containsElement(arr, ele) {
		     var found = false, index = 0;
		     while(!found && index < arr.length)
		     if(arr[index] == ele)
		      {
		      found = true;
		      } else {
		      index++;
		      }
	    return found;
	    } // end containsElement
	 
	
	    function getElementsById(sId)
	     {
	        var outArray = new Array();	
		    if(typeof(sId)!='string' || !sId)
		    {
			    return outArray;
		    };
    		
		    if(document.evaluate)
		    {
			    var xpathString = "//*[@id='" + sId.toString() + "']"
			    var xpathResult = document.evaluate(xpathString, document, null, 0, null);
			    while ((outArray[outArray.length] = xpathResult.iterateNext())) { }
			    outArray.pop();
		 
    			
		    } else if(document.getElementsByTagName)
		    {
    		
			    var aEl = document.getElementsByTagName( '*' );	
			    for(var i=0,j=aEl.length;i<j;i+=1){
    			
				    if(aEl[i].id == sId )
				    {
					    outArray.push(aEl[i]);
				    };
				    
			    };	
   			
		    };
		    
		    // add this junk back in if there are old browser compat probs
		    //}
		    //else if(document.all)
		    //{
    		//	alert(' document.all[sId].length:' + sId + '-' + document.all[sId].length );
			//    for(var i=0,j=document.all[sId].length;i<j;i+=1){
			//    outArray[i] =  document.all[sId][i];}
			//    
			//    alert(' i:' + i );
			
		    return outArray;
	     } // end getElementsbyID
	     
function GetElementPosition(el) {
  var winWidth=document.all?document.body.clientWidth:window.innerWidth; 
  //TODO - need to adjust ie width by a couple pts
  var winHeight =document.all?document.body.clientHeight:window.innerHeight; 
  winWidth = parseInt((winWidth - 960) /2);
    var _3e=null;
    var pos={x:0,y:0};
    var box;
    if(el.getBoundingClientRect){
        box=el.getBoundingClientRect();
        var _41=document.documentElement.scrollTop||document.body.scrollTop;
        var _42=document.documentElement.scrollLeft||document.body.scrollLeft;
       pos.x=box.left + _42 -5 - winWidth;
        pos.y=box.top + _41 ;
        return pos;
    }else{
        if(document.getBoxObjectFor){
            box=document.getBoxObjectFor(el);
            pos.x=box.x-2;
            pos.y=box.y-2;
        }else{
            pos.x=el.offsetLeft;
            pos.y=el.offsetTop;
            _3e=el.offsetParent;
            if(_3e!=el){
                while(_3e){
                    pos.x+=_3e.offsetLeft;
                    pos.y+=_3e.offsetTop;
                    _3e=_3e.offsetParent;
                }
            }
        }
    }
    if(window.opera){
        _3e=el.offsetParent;
        while(_3e&&_3e.tagName!="BODY"&&_3e.tagName!="HTML"){
            pos.x-=_3e.scrollLeft;
            pos.y-=_3e.scrollTop;
            _3e=_3e.offsetParent;
        }
    }else{
        _3e=el.parentNode;
        while(_3e&&_3e.tagName!="BODY"&&_3e.tagName!="HTML"){
            pos.x-=_3e.scrollLeft;
            pos.y-=_3e.scrollTop;
            _3e=_3e.parentNode;
        }
    }
    return pos;
}   	 

    function GetElemPosition(obj){
        var Left = obj.offsetLeft;
        var Top = obj.offsetTop;
        while(obj.offsetParent){
            Left = Left+obj.offsetParent.offsetLeft;
            Top = Top+obj.offsetParent.offsetTop;
            if(obj==document.getElementsByTagName('body')[0]){
                break}
            else{
                obj=obj.offsetParent;
            }
        }
        var pos = new Object();
        pos.x=Left;
        pos.y=Top;
        return pos;
    }

	     function SetSelectElemByVal(elemdd, seltext) {
	        elemdd.selectedIndex = -1;
            for(var i=0; i<=elemdd.length-1; i++){      
                if (elemdd.options[i].value == seltext) {
                    elemdd.selectedIndex = i;
                }
            }
	    }
	 
	     function SetSelectElemNameByVal(elem, seltext) {
	        var elemdd = document.getElementById(elem);
 	        SetSelectElemByVal(elemdd, seltext);
	    }

	     function SetSelectElem(elemdd, seltext) {
	        elemdd.selectedIndex = -1;
            for(var i=0; i<=elemdd.length-1; i++){      
                if (elemdd.options[i].text.toLowerCase() == seltext.toLowerCase()) {
                    elemdd.selectedIndex = i;
                }
            }
	    }
	 
	     function SetSelectElemName(elem, seltext) {
	        var elemdd = document.getElementById(elem);
 	        SetSelectElem(elemdd, seltext);
	    }
	    
        function ClearSelectElemByName(pName)
        {
	        var ctl = document.getElementById(pName);
	        ClearSelectElemByVar(ctl);
        }
	    
        function ClearSelectElemByVar(ctl)
        {
	        ctl.options.length = 0;
        }
    	    	
	    function MakeSelectElem( pName, pValue, pWidth, aryopts, aryvals, pOnchange, pOnchangeFx) {
            var elem;
            elem = document.createElement("select"); 
            elem.name = pName;
            elem.id = pName;
            if (pWidth) { elem.style.width = pWidth; } 
            
            if (pOnchange) {
                if (elem.attachEvent){
                    if (pOnchangeFx) {
			      elem.setAttribute('onchange', pOnchangeFx ); 
			  }
                }
            }


            LoadSelectElem(elem, pValue, pWidth, aryopts, aryvals);
                       
            return elem;
	    } // MakeSelectElem
    	    	
	    function LoadSelectElem(elem, pValue, pWidth, aryopts, aryvals) {

             for(var i=0; i<=aryopts.length-1; i++){
                var opt = document.createElement('option');
                opt.text =aryopts[i];
                if (aryvals) {
                    opt.value = aryvals[i];
                } else {
                    opt.value = aryopts[i];
                }

                try {
                      elem.add(opt, null); // standards compliant; doesn't work in IE

                    }
                    catch(ex) {
                      elem.add(opt); // IE only
                    }
                    
                //alert(pValue + ' - ' + aryopts[i]);
                
             }
             var bFoundValue = false;
              for(var i=0; i<=aryopts.length - 1; i++) {
              
              if (aryvals) {
                    if (pValue == aryvals[i]) {
                       elem.selectedIndex = i;
                       bFoundValue = true;
                       break;
                    }
                } else {
                     if (pValue == aryopts[i]) {
                       elem.selectedIndex = i;
                       bFoundValue = true;
                       break;
                    }
               }

              }
              
              if(!bFoundValue && pValue !== undefined && pValue !== '' && aryopts[aryopts.length - 1].toLowerCase() === 'other') {
           
              elem.options[elem.options.length - 1].text = pValue;
              elem.options[elem.options.length - 1].value = pValue;
              elem.selectedIndex = elem.options.length - 1;
              }
            
            return elem;
	    } // LoadSelectElem
	    
	    function MakeLabel( pName, pValue, pLblFor, pClass) {
                var elem = document.createElement("label");
                elem.innerHTML = pValue;
                if (pName) {
                    elem.name = pName;
                    elem.id = pName;
                }
                if (pLblFor) {elem.setAttribute("for", pLblFor); }
                if (pClass) {setClassByVar(elem, pClass); }
                
                return elem;
	    }

	    function MakeTextElem( pName, pValue, pWidth, pType, pCreateType, pReadOnly, pDisabled, pOnblur) {
            var elem;
            if (pCreateType) { elem = document.createElement(pCreateType); } else { elem = document.createElement("input"); }
            if (pType) { elem.type = pType; } else { elem.type = "text"; }
            elem.name = pName;
            elem.id = pName;
            elem.value = pValue;
            if (pWidth) { elem.style.width = pWidth; } 
            if (pReadOnly) { setReadOnlyByVar(elem, pReadOnly); elem.setAttribute("class","textRO"); } else {elem.setAttribute("class","textEDIT")}
            if (pDisabled) { setDisabledByVar(elem, pDisabled); }
            if (pOnblur) {
                if (elem.attachEvent){
			        elem.attachEvent('onblur', pOnblur); 
		        } else {
			        elem.setAttribute('onblur', '"' + pOnblur + '();"' ); 
		        }  
            }
          return elem;
	    } // MakeTextElem
	    
        function getMaxLength() {
            //TODO: finish this
            var ctl;
        }    
	    
        function setMaxLength(pCtl, pMaxLength) {
            if (pCtl.value.length > pMaxLength + 1) {
                alert('Your entry has been truncated. The maximum length is' + pMaxLength);
                pCtl.value = pCtl.value.substring(0, pMaxLength);
            } 
        }  
          
	    function MakeTextAreaElem( pName, pValue, pWidth, pCols, pRows, pReadOnly, pDisabled, pOnblur, pMaxLength) {
            var elem = document.createElement("textarea"); 
            elem.name = pName;
            elem.id = pName;
            elem.value = pValue;
            if (pWidth) { elem.style.width = pWidth; } 
            if (pCols) { elem.cols = pCols; } 
            if (pRows) { elem.rows = pRows; } else { elem.rows = 2; } 
            if (pReadOnly) { setReadOnlyByVar(elem, pReadOnly); }
            if (pDisabled) { setDisabledByVar(elem, pDisabled); }
            if (pOnblur) {
                if (elem.attachEvent){
			        elem.attachEvent('onblur', pOnblur); 
		        } else {
			        elem.setAttribute('onblur', '"' + pOnblur + '();"' ); 
		        }  
		    }
            if (pMaxLength) {
                if (elem.attachEvent){
			        elem.attachEvent('onkeyup', getMaxLength); 
		        } else {
			        elem.setAttribute('onkeyup', '"setMaxLength(this,' + pMaxLength + ');"' ); 
		        }  
            }
            
            return elem;
	    } // MakeTextAreaElem
	    
	    function MakeLinkElem ( url, pText, pName) {
	    
            var elem = document.createElement('a');
            if (pName) {
                elem.name = pName;
                elem.id = pName;
            }
            elem.setAttribute('href', url);
           
            tn = document.createTextNode(pText);
            elem.appendChild(tn);
            
            return elem;
        }
        // end MakeLinkElem
        
		function MakeEditImgLinkElem ( url, pAtl, pName ) {
	    
            var elem = document.createElement('a');
            if (pName) {
                elem.name = pName;
                elem.id = pName;
            }
            elem.setAttribute('href', url);
           
            var image = MakeImageElem('images/icon-edit.gif', pAtl ) ;
            elem.appendChild(image);
           
            return elem;
        }
        // end MakeImageImgEditElem
        
  	    function MakeImageElem ( pSrc, pAtl, pName ) {
	    
            var elem = document.createElement('img');
            elem.src = pSrc;
            
            if (pName) {
                elem.name = pName;
                elem.id = pName;
            }
            
             if (pAtl) {
                elem.alt = pAtl;
            }
            
           return elem;
        }
        // end MakeEditImgLinkElem
   
	    function MakeTextElemNumeric( pName, pValue, pWidth, pType, pCreateType, pReadOnly, pDisabled) {
            var elem;
            if (pCreateType) { elem = document.createElement(pCreateType); } else { elem = document.createElement("input"); }
            if (pType) { elem.type = pType; } else { elem.type = "text"; }
            elem.name = pName;
            elem.id = pName;
            elem.value = pValue;
            if (pWidth) { elem.style.width = pWidth; } 
            if (pReadOnly) { setReadOnlyByVar(elem, pReadOnly); elem.setAttribute("class","numericRO"); } else {elem.setAttribute("class","numericEDIT")}
            if (pDisabled) { setDisabledByVar(elem, pDisabled); }
         return elem;
	    } // MakeTextElemNumeric
	    
	    function MakeRadioElement( pName, pValue, pChecked, pLabel ) {
           var elem = null;
           var tmpChecked = "";
           if (pChecked == 'Y' || pChecked == 'checked' ) {
                tmpChecked = 'checked';
           }
           
           // Try the IE way; this fails on standards-compliant browsers
           try {
                elem = document.createElement('<input type="radio" name="'+pName+'" id="'+pName+'" value="'+pValue+'" '+tmpChecked+'>');
           } catch (e) {
                //alert('ff:'+pName);
                elem = document.createElement('input');
                  elem.type = "radio";
                  elem.name = pName;
                  elem.id = pName;
                  elem.value = pValue;
                  if (tmpChecked == 'checked') { // todo or 'T'
                        elem.checked = true;
                  } 
           }
 
           return elem;
        }
        
        
        // 1/18 BKR
         function MakeCheckboxElement( pName, pValue, pChecked , pDisabled) {
        
           var elem = null;
           var tmpChecked = "";
           
           if (pChecked) {
               tmpChecked = 'checked';
           } else {
               if (pChecked == 'Y' || pChecked == 'checked' ) {
                    tmpChecked = 'checked';
               }
           }
           
           // Try the IE way; this fails on standards-compliant browsers
           try {
              elem = document.createElement('<input type="checkbox" name="'+pName+'" id="'+pName+'" value="'+pValue+'" '+tmpChecked+'>');
              //alert('IE:'+pName);
           } catch (e) {
                //alert('ff:'+pName);
                elem = document.createElement('input');
                  elem.type = "checkbox";
                  elem.name = pName;
                  elem.id = pName;
                  elem.value = pValue;
                  if (tmpChecked == 'checked') { // todo or 'T'
                        elem.checked = true;
                  } 
           }
             if (pDisabled) { setDisabledByVar(elem, pDisabled); }
           return elem;
        }
        
    function getRadioListSelectedValueByName(rdlName){
        //for asp.net radiolistbuttons
        var rdl = document.getElementById(rdlName);
        return getRadioListSelectedValue(rdl);
   }
        
    function getRadioListSelectedValue(rdl){
        //for asp.net radiolistbuttons
        var options = rdl.getElementsByTagName('input');
        var val = '';
        for(i=0;i<options.length;i++){
            var opt = options[i];
            if(opt.checked){
                val = opt.value;
                break;
            }
        }
        return val;
    }

    function setRadioListSelectedValueByName(rdlName, pValue){
        //for asp.net radiolistbuttons
        var rdl = document.getElementById(rdlName);
        setRadioListSelectedValue(rdl, pValue);
   }
        
    function setRadioListSelectedValue(rdl, pValue){
        //for asp.net radiolistbuttons
        var options = rdl.getElementsByTagName('input');
        var val = '';
        for(i=0;i<options.length;i++){
            var opt = options[i];
            if(opt.value == pValue){
                opt.checked = true ;
                break;
            }
        }
        return val;
    }

    function setRadioCheckedValueByName(rdName, pValue) {
        var rdl = getElementsById(rdName);
        setRadioCheckedValue(rdl, pValue);
    }
    
    function setRadioCheckedValue(rdl, pValue) {
	    var Length = rdl.length;
	    
	    if(Length == undefined) {
		    rdl.checked = (rdl.value == pValue);
	    } else {
	        for(var i = 0; i < Length; i++) {
		        rdl[i].checked = false;
		        if(rdl[i].value == pValue) {
			        rdl[i].checked = true;
		        }
	        }
        }
    }

    function getRadioCheckedValueByName(rdName) {
        var rdl = getElementsById(rdName);
        return getRadioCheckedValue(rdl);
    }
    
    function getRadioCheckedValue(rdl) {
        var val = '';
        for(i=0; i < rdl.length; i++){
            if (rdl[i].checked == true) {
                val = rdl[i].value;
                break;
            }
        }
        return val;
    }
    
     function getCheckboxValuesByName(rdName) {
        var val = '';
         var rdl = getElementsById(rdName);
        for(i=0; i < rdl.length; i++){
            if (rdl[i].checked == true) {
                val += ','+rdl[i].value;
            }
        }
        return val;
    }

    function ShowDivBasedOnCk(ckboxName, dvName, pMatch) {
        var ck = document.getElementById(ckboxName).checked;
        var show =0;        
        if (ck == pMatch) {
            show = 1;
        }
        ShowCtlByName(dvName,show);
    }

    function ShowDivBasedOnRdl(RdlName, dvName, pMatch) {
      
       // alert('RdlName: '+RdlName+';dvName: '+dvName+';pMatch: '+pMatch);
        var docs = getRadioListSelectedValueByName(RdlName);
        var show =0;        
        if (docs == pMatch) {
            show = 1;
        }
        ShowCtlByName(dvName,show);
    }

    
    function DisableDivBasedOnRdl(RdlName, dvName, pMatch) {
        var docs = getRadioListSelectedValueByName(RdlName);
        var dis =0;        
        if (docs == pMatch) {
            dis = 1;
        }
        setDisabledByName(dvName,dis);
    }

    function FixRowObj( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) {
            if (p1) { this.col1 = p1; } else { this.col1 = ""; }
            if (p2) { this.col2 = p2; } else { this.col2 = ""; }
            if (p3) { this.col3 = p3; } else { this.col3 = ""; } 
            if (p4) { this.col4 = p4; } else { this.col4 = ""; }
            if (p5) { this.col5 = p5; } else { this.col5 = ""; }
            if (p6) { this.col6 = p6; } else { this.col6 = ""; }
            if (p7) { this.col7 = p7; } else { this.col7 = ""; }
            if (p8) { this.col8 = p8; } else { this.col8 = ""; }
            if (p9) { this.col9 = p9; } else { this.col9 = ""; }
            if (p10) { this.col10 = p10; } else { this.col10 = ""; }
        } // End FixRowObj
    
    function MakeRow( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20) {
        
        var oRow = document.createElement("tr");
        for(var i=0; i<=arguments.length-1; i++){
        
            var arg = arguments[i];
            //if (arg) { 
                    var oCell = document.createElement("td");
                    oCell.appendChild(arg);
                    oRow.appendChild(oCell); 
            //} 
            
        }
        return oRow;

    } // End MakeRow
    
    
     function ClearTable(tableName) {
    
       var tbl = document.getElementById(tableName);
       if (tbl) {
           var tBody = tbl.getElementsByTagName('tbody')[0];
           var len = tBody.rows.length;
           for (i=1;i<len;i++) {
	           tBody.deleteRow(1);
           }
       }
    }
        
    // table row clear links
    function GetClearTableRow() {
        var row = event.srcElement
        var rowid = row.getAttribute('RowID');
        var tblname = row.getAttribute('DataTableName');
        ClearTableRow(rowid,tblname);
    }
    
    function ClearTableRow(pRow, tableName) {
    
        if (tableName) {
            var tbl = document.getElementById(tableName);
        } else {
            var tbl = document.getElementById("DataTable");
        }
         
        var tBody = tbl.getElementsByTagName('tbody')[0];
        for (i=0;i<tBody.rows.length;i++) {
            if (tBody.rows[i].getAttribute('RowID') == pRow) {
	            tBody.deleteRow(i);
	            break;
            }
        }
       
    }  // end ClearTableRow
        
     function ClearTableRowByRowSequence(pRow, tableName) {
    
        if (tableName) {
            var tbl = document.getElementById(tableName);
        } else {
            var tbl = document.getElementById("DataTable");
        }
         
        var tBody = tbl.getElementsByTagName('tbody')[0];
        tBody.deleteRow(i);
      
       
    }  // end ClearTableRow

    function MakeClearLink ( tablename, pRow) {
   
        var newlink = document.createElement('a');
        newlink.setAttribute('href', 'javascript:void(0)');
        
        var clearRowText = 'ClearTableRow('+ pRow +' , "' + tablename + '" );';          
        if (newlink.attachEvent) {
           newlink.attachEvent('onclick', GetClearTableRow);
        } else {
           newlink.setAttribute('onclick', clearRowText); 
        }
        newlink.setAttribute('DataTableName', tablename);
        newlink.setAttribute('RowID', pRow); 
        
        tn = document.createTextNode('clear');
        newlink.appendChild(tn);
        
        return newlink;
    }
        
    // clear and refresh map
    
    function gfxMakeClearRefreshMapLink ( tablename, pRow ) {
   
        var newlink = document.createElement('a');
        newlink.setAttribute('href', 'javascript:void(0)');
        
        var clearRowText = 'ClearTableRowRefreshMap('+ pRow +' , "' + tablename + '" );';
       
        if (newlink.attachEvent) {
           newlink.attachEvent('onclick', GetClearTableRowRefreshMap);
        } else {
           newlink.setAttribute('onclick', clearRowText); 
        }
        newlink.setAttribute('DataTableName', tablename);
        newlink.setAttribute('RowID', pRow); 
        
        tn = document.createTextNode('clear');
        newlink.appendChild(tn);
        
        return newlink;
    }
        
    function ClearTableRowRefreshMap(pRow, tableName) {
    
        var tbl = document.getElementById(tableName); 
        var tBody = tbl.getElementsByTagName('tbody')[0];
        for (i=0;i<tBody.rows.length;i++) {
            if (tBody.rows[i].getAttribute('RowID') == pRow) {
	            tBody.deleteRow(i);
            }
        }
        
        RefreshMap(pRow);
        
    }  // end ClearTableRowRefreshMap
    
    function GetClearTableRowRefreshMap() {
        var row = event.srcElement
        var rowid = row.getAttribute('RowID');
        var tblname = row.getAttribute('DataTableName');
        ClearTableRowRefreshMap(rowid,tblname);
    } // end GetClearTableRowRefreshMap
    
    
    // clear and Refresh
        
     function gfxMakeClearLink ( tablename, pRow, fxCleanup ) {
   
        var newlink = document.createElement('a');
        newlink.setAttribute('href', 'javascript:void(0)');
        
        var clearRowText = 'ClearTableRow('+ pRow +' , "' + tablename + '" );';
       
        
        addEvent(newlink,'click',GetClearTableRow, false);
       
        //newlink.setAttribute('onclick', clearRowText); 
       
        newlink.setAttribute('DataTableName', tablename);
        newlink.setAttribute('RowID', pRow); 
        
        tn = document.createTextNode('clear');
        newlink.appendChild(tn);
        
        return newlink;
    }
    // end table row clear links	    	    
    	    
    function setDisabledByName (Ctlname, bDisabled) {
       var ctl = document.getElementById(Ctlname);
	   setDisabledByVar (ctl, bDisabled);
    }
    function setDisabledByVar (ctl, bDisabled) {
	   if ( ctl == undefined ) {
	        alert('setDisabledByVar could not find ctl');
	   } else {
          if (bDisabled) { ctl.disabled="disabled"; } else { ctl.removeAttribute('disabled'); }
       }     
    }
    	    
    function setReadOnlyByName (Ctlname, bReadOnly) {
       var ctl = document.getElementById(Ctlname);
	   setReadOnlyByVar (ctl, bReadOnly); 
    }
    function setReadOnlyByVar (ctl, bReadOnly) {
	   if ( ctl == undefined ) {
	        alert('setReadOnlyByVar could not find ctl');
	   } else {
           if (bReadOnly) {ctl.setAttribute('readOnly','readOnly');} else { ctl.removeAttribute('readOnly'); }
       }     
    }

    function setClassByName (Ctlname, pClass) {
       var ctl = document.getElementById(Ctlname);
	   setClassByVar (ctl, pClass);
    }
    function setClassByVar (ctl, pClass) {
	   if ( ctl != undefined ) {
	       ctl.className = pClass;
           //ctl.setAttribute("class", pClass);
       }     
    }
    
    function ShowCtlByName(Ctlname, bShow) {

       // alert('Ctlname: '+Ctlname+';bShow: '+bShow);
       var ctl = document.getElementById(Ctlname);   
       //alert(ctl);
	   ShowCtlByVar(ctl, bShow);
    }
       
    function ShowCtlByToggle(Ctlname) {
      var ctl = document.getElementById(Ctlname);
      
       if (ctl.style.display  != 'none') {
            ShowCtlByVar(ctl, false);
       } else {
            ShowCtlByVar(ctl, true);
       }
    }
    
    function ShowCtlByVar(ctl, bShow, sStyle) {
    
        //alert('ctl: '+ctl+';bShow'+bShow+';sStyle'+sStyle);
    
	   if ( ctl != undefined ) {
	        if ( ctl.style ) {

                var Style;
                if (bShow) {
                    
                    if (sStyle == undefined) {
                        Style = 'inline';
                    } else {
                        Style = sStyle;
                    }
                    
                } else {
                    Style = 'none';
                }
                    
                ctl.style.display = Style;
            
           } else {
               alert("ctl.style is undefined for " + ctl);
           }   
        }
    }
         
    function trim(stringToTrim ) {
        return stringToTrim.replace(/^\s+|\s+$/g,"");
    }
    function ltrim(stringToTrim) {
        return stringToTrim.replace(/^\s+/,"");
    }
    function rtrim(stringToTrim) {
        return stringToTrim.replace(/\s+$/,"");
    }
    
    function groupDigits(nStr){  
        
        nStr += '';  
        x = nStr.split('.');  
        x1 = x[0];  
        x2 = x.length > 1 ? '.' + x[1] : '';  
        var rgx = /(\d+)(\d{3})/;  
        while (rgx.test(x1)) {  
            x1 = x1.replace(rgx, '$1' + ',' + '$2');  
        }
        return x1 + x2;  
    }  
   
    function roundNumber(num, dec) {
        var iDec = 0;
        var result;
        if (dec)  {
            iDec = dec;
            result = Math.round(num*Math.pow(10,iDec)) / Math.pow(10,iDec);
       } else {
            result = Math.round(num);
       }
       
       if (isNaN(result)) result = 0;
       return result;
    }

    function makeNumeric(invar) {
        var ReplacedNumber = trim(invar + '');
        if (invar != parseFloat(invar)) {
            ReplacedNumber = invar.replace(/,/g,'');
            ReplacedNumber = ReplacedNumber.replace(/\$/g,'');
       }
        ReplacedNumber = ReplacedNumber.replace(/^0+/, ''); 
        if (ReplacedNumber == '' || ReplacedNumber == ' ') ReplacedNumber = 0;
        if (isNaN(ReplacedNumber)) ReplacedNumber = 0;
        return ReplacedNumber;
    }
    
    function ValidateInt(ctl) {
        ctl.value = makeInt(ctl.value);
        return v;
    }
    function ValidateRangeInt(ctl, min, max) {
        var v = makeInt(ctl.value);
        ctl.value = ValidateRange(v, min, max);
        return v;
    }
  
    function IsNumeric(strString) {
        //  check for valid numeric strings	
        var strValidChars = "0123456789.-";
        var strChar;
        var blnResult = true;

        if (strString.length == 0) return false;

        //  test strString consists of valid characters listed above
        for (i = 0; i < strString.length && blnResult == true; i++)
          {
          strChar = strString.charAt(i);
          if (strValidChars.indexOf(strChar) == -1)
             {
             blnResult = false;
             }
          }
        return blnResult;
    }



    function makeInt(invar) {
       var ReplacedNumber = makeNumeric(invar);
       return parseInt(ReplacedNumber);
    }

    function ValidateFloat(ctl, roundTo) {
        var v = makeFloat(ctl.value);
        if (roundTo !=-1) {
            v = roundNumber(v,roundTo);
        }
        ctl.value  = v;
        return v;
    }
    function ValidateRangeFloat(ctl, roundTo, min, max) {
        var v = makeFloat(ctl.value);
        if (roundTo !=-1) {
            v = roundNumber(v,roundTo);
        }
        ctl.value = ValidateRange(v, min, max);
        return v;
    }
   
     function ValidateRange(val, min, max) {
        if (val < min) val = min;
        if (val > max) val = max;
        return val;
    }
   
    function makeFloat(invar) {
        var ReplacedNumber =  makeNumeric(invar);
        return parseFloat(ReplacedNumber);
    }
	    
	function do100Pct(ctl1, ctl2, roundTo, bAllowTotalLessThan100) {   
        var v = makeFloat(ctl1.value);
        if (roundTo !=-1) {
            v = roundNumber(v,roundTo);
        }
        var v2 = 0;
        if (v > 100) {
            v=100;
            v2=0;
        } else {   
            if (v < 0) {
                v =0;
                v2 =100;
            } else {
                if (ctl2) {
                    if (bAllowTotalLessThan100) {
                        v2 = makeFloat(ctl2.value);
                        if (roundTo !=-1) {
                            v2 = roundNumber(v2,roundTo);
                        }
                        if ((v + v2) > 100) {
                            v2 = 100-v;
                        }
                    } else {
                        v2 = 100-v;
                    }
                }
            }
        }
        ctl1.value =v;
        if (ctl2) ctl2.value =v2;
    }

         function doAcres(itemSF, itemAcres) {
            //alert('43560 sf in an acres');
            var val = roundNumber(makeInt(itemSF.value) / 43560, 2);
            itemAcres.value = val;
        }
        
        function doAcresVal(invar) {
            // in SF,  returns acres 43560 sf in an acre
            var val = roundNumber(makeInt(invar) / 43560, 2);
            return val;
        }
        
        function doSF(itemSF, itemAcres) {
            // 43560 sf in an acre
            var val = parseInt(makeFloat(itemAcres.value) * 43560);
            itemSF.value = val;
        }
        
        function convSFtoAcres(invar) {
            // in: acres return: sf - 43560 sf in an acre
            var val = roundNumber(makeInt(invar) / 43560, 2);
            return val;
        } 
        function convAcrestoSF(invar) {
            // in SF,  returns acres 43560 sf in an acre
              var val = parseInt(makeFloat(invar) * 43560);
            return val;
        }    
        
        function simulateRadioBtn(CurrCheckedVal, strict, ChkBx1) {
           //this obviously could be expanded to more check boxes 
           // alert('doSimulateRadioBtn');
            if (CurrCheckedVal) {
                ChkBx1.checked = false;
            } else {
                if (strict) {
                    ChkBx1.checked = true;
               }
            }
        }
        
        function showUnivWarning() {
            alert("This field is Universal Data and may affect other credits");
        }
        function showOverride() {
            alert("Warning: You are overriding a calculated value!");
        }
        
        function doPercent( num, denom, dec, allowneg) {

            var tmptotal = (num / denom)*100;
            var total = 0.0;

            if ( isFinite(tmptotal)  ) {
                if (dec) {
                    var places = parseInt(dec * 10);
                    total = Math.round(tmptotal*places)/places;
                } else {
                    total = Math.round(tmptotal);
                }
            } else {
                total = 0;
            }
            
            return total;
	    }
	    
    // Tooltip extensions
    // toggles tooltip when text is clicked
    var gShowSchedule = true; // CM4.UPUtil.AppSettingsTF("ShowSchedule")
    
	function GoCredit(PRID,CRID,COID,PCID,pEdit,pTab) {
	    CloseRadToolTip();
	    var url;
	    if (PCID == '') {
	        url  = 'members/popups/setProjectCredit.aspx?pr=' + PRID + '&cr=' + CRID + '&Edit=' + pEdit;
	    } else {
	        var pPage = 'index.aspx?u=projectcredit';
	        if (pTab == 'calc') {
	            pPage  = pPage + 'calc';
	            pTab = '';
	        } else {
	            if (pTab) {
	                pTab = '&tab103-4411=' + pTab;
	            }
	        }
	        url =  pPage + '&pr=' + PRID + '&cr=' + CRID + '&co=' + COID + '&pc=' + PCID ;
	        
            if (pEdit) {
                url = url  + '&Edit4411=' + pEdit ;
            }
            if (pTab) {
                url = url + pTab;
            }
	    }
        window.location.href = url;
        return true;
    } 
	                                
	function GoGetCredit(PCID, pPage, pEdit) {
	    CloseRadToolTip();
	    var url  = 'members/popups/setProjectCredit.aspx?pc=' + PCID + '&pg=' + pPage + '&Edit=' + pEdit;
        window.location.href = url;
        return true;
    } 
	   
	function GoGetProject(PRID, pPage, pEdit) {
	    CloseRadToolTip();
	    var url  = 'members/popups/setProject.aspx?pr=' + PRID + '&pg=' + pPage + '&Edit=' + pEdit;
        window.location.href = url;
        return true;
    } 
	   
	function GoAddMtl(PRID,MTID,pEdit) {
	    CloseRadToolTip();
	    var url  = 'index.aspx?u=LPTaskAddMtl&pr=' + PRID + '&mt=' + MTID;
        window.location.href = url;
        return true;
    } 
	   
	function GoTeamMbr(PRID,USID) {
	    CloseRadToolTip();
	    var url  = 'index.aspx?u=teammember&pr=' + PRID + '&us=' +USID;
        window.location.href = url;
        return true;
    } 
    
    function GetEmailTag(pEmail, pName)
    {   
        var result = '';
        
        if (pEmail != '') {
            if (pName == '') {pName = pEmail;}
            result = "<a href='mail" + "to:" + pEmail + "'>" + pName +"</a>";
        }
        
        return result;
    }
    
    function GetLinkTag(pUrl, pText, pOnclick)
    {   
        var result = '';
        
        if (pUrl == '') { pUrl = 'javascript:void(0)';}

        if (pText == '') {pText = pUrl;}
        if (pUrl.indexOf('www.') == 0) {
            pUrl = 'http://' + pUrl;
        }    
        
        result = "<a href='" + pUrl + "'";
        
        if (pOnclick != '') {
            result = result = result + ' onclick="' + pOnclick + '"';
        }    
        
        result = result + ">" + pText +"</a>";
        
        return result;
    }

    var gvShowToolTips = false;
    
    function ShowTeamTT(ctl, PRID, USID, pLastLogin, pPhone, pEmail, pCompanyName, pProconnectPage, pType, XRefID) {
    if (gvShowToolTips) { 
        if (ctl) {
        
            var tooltip = $find("rttToolTip"); //tootip on index.aspx 
           
            var msg = '<b>Team Member Quick Menu</b><br />';
            msg = msg + '&nbsp;Click On The Link To Jump To Persons Team Member Page&nbsp;';
            msg = msg + '<div style="margin: 10px 10px 10px 10px;">';
            
            if (pCompanyName != '') {msg = msg + pCompanyName;}
            if (pPhone != '') {msg = msg + '<br />' + pPhone;}
            if (pEmail != '') {msg = msg + '<br />' + GetEmailTag(pEmail,'');}
            
            msg = msg + '<br />';
            if (pLastLogin == '') {
                msg = msg + 'User has not logged in: ' ;
            } else {
                 msg = msg + "<b>Last Login:</b> " + pLastLogin;
            }
            msg = msg + '<br />';
            
            if (pProconnectPage != '') {
                pProconnectPage = pProconnectPage.toLowerCase();
                if (pProconnectPage.indexOf('www.') == -1) {
                    pProconnectPage = 'index.aspx?u=' + pProconnectPage;
                }    
                msg = msg + '<br />' + GetLinkTag(pProconnectPage, 'Jump To User\'s Proconnect Page','') + '<br />';
            }
            
//            if (pType == '1') {
//                var js = "GoGetProject('" + PRID + "', 'pr', '1');";
//                msg = msg + '<br />' + GetLinkTag( '', 'Reassign', js) + '<br />';
//            }
                       
            msg = msg + '</div>';
   
            tooltip.set_content(msg);
            tooltip.set_targetControl(ctl);
            tooltip.show(); 
            window.setTimeout(function(){tooltip.set_targetControl(null);},100);
        }
    }
    }
    
    function ShowProjTT(ctl, PRID, pProconnectPage) {
    if (gvShowToolTips) { 
        if (ctl) {
        
            var tooltip = $find("rttToolTip"); //tootip on index.aspx 
           
            var msg = '<b>Project Quick Menu</b><br />';

            msg = msg + '&nbsp;Click On The Link To Jump To General Info Page&nbsp;<br /><br />';
            msg = msg + '&nbsp;Click On A Link Below To Jump To This Project\'s:&nbsp;';
            msg = msg + '<div style="margin: 0 10px 10px 10px;">';
            
            var BaseUrl  = "GoGetProject('" + PRID + "','" ;
 
            msg = msg + GetLinkTag('','General Info (Edit)', BaseUrl + "pr'" + ",'1');") ;
           if (gShowSchedule) {
                msg = msg + '<br />' + GetLinkTag('','Schedule',BaseUrl + "sc'" + ",'');") ;
           }
            msg = msg + '<br />' + GetLinkTag('','Credit List',BaseUrl + "cr'" + ",'');") ;
            msg = msg + '<br />' + GetLinkTag('','Tasks',BaseUrl + "ta'" + ",'');") ;
            msg = msg + '<br />' + GetLinkTag('','Documents',BaseUrl + "dc'" + ",'');") ;
            msg = msg + '<br />' + GetLinkTag('','Team',BaseUrl + "tm'" + ",'');") ;
            msg = msg + '<br />' + GetLinkTag('','Materials',BaseUrl + "mt'" + ",'');") ;
            msg = msg + '<br />' + GetLinkTag('','Map',BaseUrl + "mp'" + ",'');") ;
            msg = msg + '<br />' + GetLinkTag('','Reports',BaseUrl + "rp'" + ",'');") ;
            msg = msg + '<br />' + GetLinkTag('','White Board',BaseUrl + "wh'" + ",'');") ;

            if (pProconnectPage != '') {
                pProconnectPage = pProconnectPage.toLowerCase();
                if (pProconnectPage.indexOf('www.') == -1) {
                    pProconnectPage = 'index.aspx?u=' + pProconnectPage;
                }    
                msg = msg + '<br />' + GetLinkTag(pProconnectPage, 'Proconnect Page','') + '<br />';
            }
           
            msg = msg + '<br />' + GetLinkTag('members/popups/setDefaultProject.aspx?pr=' + PRID ,'Set as Default Project','') ;
            msg = msg + '<br />' + GetLinkTag( 'index.aspx?u=task&ci=&i=4472&t=34&d=' + PRID + '&pr=' + PRID,'Create a Task for this Project','') + '<br />';;
                   
            msg = msg + '</div>';

            tooltip.set_content(msg);
            tooltip.set_targetControl(ctl);
            tooltip.show(); 
            window.setTimeout(function(){tooltip.set_targetControl(null);},100);
        }
    }
    }
    
    function ShowCredTT(ctl, PRID, CRID, COID, PCID, bCalledFromCreditList) {
    if (gvShowToolTips) { 
        if (ctl) {
        
            var tooltip = $find("rttToolTip"); //tootip on index.aspx 
           
            var msg = '<b>Credit Quick Menu</b><br />';

            msg = msg + '&nbsp;Click On The Link To Jump To Credits Overview Page&nbsp;<br /><br />';
            msg = msg + '&nbsp;Click On A Link Below To Jump To This Credit\'s:&nbsp;';
            msg = msg + '<div style="margin: 0 10px 10px 10px;">';
            
            var BaseUrl  = "GoCredit('" + PRID + "','" + CRID + "','" + COID + "','" + PCID + "'" ;
 
            msg = msg + '<br />' + GetLinkTag('','Credit Overview (Edit)', BaseUrl + ",'1','');") ;
            msg = msg + '<br />' + GetLinkTag('','Credit Data On Seperate Page (Edit)', BaseUrl + ",'1','calc');") ;
          //  msg = msg + '<br />' + GetLinkTag('','Options', BaseUrl + ",'','1');") ;
            msg = msg + '<br />' + GetLinkTag('','Tasks', BaseUrl + ",'','2');") ;
            msg = msg + '<br />' + GetLinkTag('','Credit Data', BaseUrl + ",'','3');") ;
            msg = msg + '<br />' + GetLinkTag('index.aspx?u=documents&pr=' + PRID + '&cr=' + CRID,'Documents','') ;
            msg = msg + '<br />' + GetLinkTag('','Generate LEED Template', BaseUrl + ",'','4');") ;
            msg = msg + '<br />'
            
            if (bCalledFromCreditList != '1') {
                msg = msg + '<br />' + GetLinkTag('index.aspx?u=projectstandards&pr=' + PRID,'Credit List','') ;
            }
            msg = msg + '<br />' + GetLinkTag('index.aspx?u=task&ci=&i=4411&t=103&d=' + PRID + '&pr=' + PRID + '&cr=' + CRID,'Create a Task for this Credit','') + '<br />';;
                   
            msg = msg + '</div>';
                  
            tooltip.set_content(msg);
            tooltip.set_targetControl(ctl);
            tooltip.show(); 
            window.setTimeout(function(){tooltip.set_targetControl(null);},100);
        }
    }
    }
//    function ShowTaskTT(ctl, TaskID) {
//    
//        if (ctl) {
//        
//            var tooltip = $find("rttToolTip"); //tootip on index.aspx 
//           
//            var msg = '<b>Task Quick Menu</b>'
//            msg = msg + '<br /><br />Click On The Link Above To Perform This Task<br />';
//            msg = msg + '<br />Click On a Link Below To Jump To This Project\'s:'
//            
//            var BaseUrl  = "GoGetTask('" + TaskID + "','" ;
// 
//            msg = msg + '<br />' + GetLinkTag('','View', BaseUrl + "'" + ",'1');") ;
//            msg = msg + '<br />' + GetLinkTag('','Edit', BaseUrl + "'" ,'');") ;
//            msg = msg + '<br />' + GetLinkTag('','Delete',BaseUrl + "'" + ",'D');") ;

//            msg = msg + '<br />' + GetLinkTag('','Assign To Me', BaseUrl + "'" + ",'1');") ;
//            msg = msg + '<br />' + GetLinkTag('','Mark Complete', BaseUrl + "'" + ",'1');") ;
////            "View/Assign Team"

//            msg = msg + '<br />';

//            tooltip.set_content(msg);
//            tooltip.set_targetControl(ctl);
//            tooltip.show(); 
//            window.setTimeout(function(){tooltip.set_targetControl(null);},100);
//        }
//    }

 function doSRI(R,E) {
    //var R = numReflectance;
    //var E = numEmittance;

    // Start Main If loop
    if ((R>0) && (E > 0) && (R < 1) && (E < 1)) { 

        var powtcalc = 0;
        var powtsky = 0;
	    var RB = 0.05;
	    var RW = 0.8;
	    var EB = 0.9;
	    var EW = 0.9;
	    var I = 1000;
	    var tsky = 300;
	    var ta = 310;
	    var hc = 12;
	    var threshold = 0.1;
	    var sigma = 0.0000000567;
	    var SRI = 20;
	    var expression;
	    var expressionB;
	    var expressionW;
	    var minsurface = 200;
	    var maxsurface = 500;
	    var tsurface;
	    var tsurfaceB;
	    var tsurfaceW;
	    var maxtries = 50;
	    var tcalc = minsurface;
	    var tries = -1;
	    var f = 0;
	    var f1 = 0;
	    var f2 = 0;
	    var maxf = 0;
	    var testvar = 0;

	    //evaluate expression
	    var x1 = minsurface;
	    var x2 = maxsurface;
    	
	    for (tries=-1;tries<=maxtries;tries++) { 
      		
		    if (tries==-1) { 
  			    tcalc=x1;
  		    }  
  		    if (tries==0) {
  			    tcalc=x2;
  		    }
  		    if (tries > 0) {
  			    tcalc=(x1+x2)/2;
  		    }

  		    tsurface = tcalc;
      		
		    powtcalc = tcalc*tcalc*tcalc*tcalc;
		    powtsky = tsky*tsky*tsky*tsky;
    		
		    f = (1-R)*I-(E*sigma*(powtcalc-powtsky)+hc*(tcalc-ta)) ;
    		
		    if (tries==-1) {
			    f1=f;
  		    }
  		    if (tries==0) {
  			    f2=f;
  		    }
  		    if (tries<=0) {
  			    continue;
  		    }

  		    if (f*f1>0.0) {
  		      f1=f; 
  		      x1=tcalc;
  		    } else {
  		      f2=f; 
  		      x2=tcalc;
  		    }

 	    } // END FOR		
    	  	
	    tsurface = tcalc;
	    maxf = Math.max(Math.abs(f),Math.abs(maxf));

	    x1 = minsurface;
	    x2 = maxsurface;
	    tcalc = minsurface;

	    for (tries=-1;tries<=maxtries;tries++) { 
      		
		    if (tries==-1) { 
  			    tcalc=x1;
  		    }
  		    if (tries==0) {
  			    tcalc=x2;
  		    }
  		    if (tries > 0) {
  			    tcalc=(x1+x2)/2;
  		    }

  		    tsurfaceB= tcalc
      		
		    powtcalc = tcalc*tcalc*tcalc*tcalc
		    powtsky = tsky*tsky*tsky*tsky	
    			
	        f = (1-RB)*I-(EB*sigma*(powtcalc-powtsky)+hc*(tcalc-ta));   
     
		    if (tries==-1) {
			    f1=f;
  		    }
  		    if (tries==0) {
  			    f2=f;
  		    }
  		    if (tries<=0) {
  			    continue;
  		    }
      		     
  		    if (f*f1>0.0) {
  			     f1=f ;
  		 	    x1=tcalc;
  		    } else {          
  			    f2=f; 
  			    x2=tcalc;
  		    }

	    } //end for
    		
	    tsurfaceB = tcalc;
	    maxf = Math.max(Math.abs(f),Math.abs(maxf));

	    x1 = minsurface;
	    x2 = maxsurface;
	    tcalc = minsurface;

	    for (tries=-1;tries<=maxtries;tries++) { 
      		
		    if (tries==-1) { 
  			    tcalc=x1;
  		    }
  		    if (tries==0) {
  			    tcalc=x2;
  		    }
  		    if (tries > 0) {
  			    tcalc=(x1+x2)/2;
  		    }  

		    tsurfaceW = tcalc;
         
		    powtcalc = tcalc*tcalc*tcalc*tcalc;
		    powtsky = tsky*tsky*tsky*tsky;	
    		
   		    f = (1-RW)*I-(EW*sigma*(powtcalc-powtsky)+hc*(tcalc-ta)) ;
         
		    if (tries==-1) {
			    f1=f;
  		    }
  		    if (tries==0) {
  			    f2=f;
  		    }
  		    if (tries<=0) {
  			    continue;
  		    }
      
	        if (f*f1>0.0) {
			    f1=f ;
			    x1=tcalc;
		    } else {          
			    f2=f ;
			    x2=tcalc;
		    }

	    } // end for

	    tsurfaceW = tcalc;
	    maxf = Math.max(Math.abs(f),Math.abs(maxf));

	    var powtsurface ;
	    var powtsurfaceB;
	    var powtsurfaceW;

	    powtsurface = tsurface * tsurface * tsurface * tsurface ;
	    powtsurfaceB = tsurfaceB * tsurfaceB * tsurfaceB * tsurfaceB; 
	    powtsurfaceW = tsurfaceW * tsurfaceW * tsurfaceW * tsurfaceW; 
	    powtsky = tsky * tsky * tsky *tsky;
	    
	    expression = (1-R)*I-(E*sigma*(powtsurface-powtsky)+hc*(tsurface-ta));
	    expressionB = (1-RB)*I-(EB*sigma*(powtsurfaceB-powtsky)+hc*(tsurfaceB-ta));
	    expressionW = (1-RW)*I-(EW*sigma*(powtsurfaceW-powtsky)+hc*(tsurfaceW-ta));

	    if (maxf <= threshold) {
		    SRI = 100*(tsurfaceB-tsurface)/(tsurfaceB-tsurfaceW);
	    } else { 
		    SRI = 0;
	    }
    	
    } else {
        SRI = 0;
	    alert("Please enter values between 0 and 1 for both emittance and reflectance");
    }
    return SRI;
}
 
function EnableTelerikTab(pTabStripName, pTabText, pEnable)
{

    //alert(pTabStripName);

    var tabStrip = $find(pTabStripName);
    if (!tabStrip) {
        //alert("There is no tabstrip with Name \"" + pTabStripName + "\"");
        return false;
   }
    var tab = tabStrip.findTabByValue(pTabText);
    if (!tab) {
        tab = tabStrip.findTabByText(pTabText);
    } 
  
    if (!tab)
    {
        //alert("There is no tab with text \"" + pTabText + "\"");
        return false;
    } else {
       // alert("Setting tab to: " + pEnable);
        
        tab.set_enabled(pEnable); //The same as tab.select();
        return true;
    }
}
function HideTelerikTab(pTabStripName, pTabText, pEnable)
{
    var tabStrip = $find(pTabStripName);
    if (!tabStrip) {
        //alert("There is no tabstrip with Name \"" + pTabStripName + "\"");
        return false;
   }
    var tab = tabStrip.findTabByValue(pTabText);
    if (!tab) {
        tab = tabStrip.findTabByText(pTabText);
    } 
    if (!tab)
    {
        //alert("There is no tab with text \"" + pTabText + "\"");
        return false;
    } else {
        if (pEnable) {
            tab.get_element().style.display = "inline" ;
        } else {
               tab.get_element().style.display = "none" ;
        }
         
        return true;
    }
}
function getTelerikSelectedTab(pTabStripClientID) {
     
      var tabStrip = $find(pTabStripClientID);
      var selectedTab = tabStrip.get_selectedTab().get_index();
      return selectedTab;
                
    }
// End hiding -->

function IsLastRowNull(pCol1, pCol2, pCol3, pCol4, pCol5, pCol6) {
	
	    var ary1 = getElementsById(pCol1);
        var ary2 = getElementsById(pCol2);
        var ary3 = getElementsById(pCol3);
        var ary4 = getElementsById(pCol4);
        var ary5 = getElementsById(pCol5);
        var ary6 = getElementsById(pCol6);

        var iLength = ary1.length-1;
               
        if (iLength>0) {
        
            var sCheck="";
            if (pCol1) {sCheck += ary1[iLength].value}
            if (pCol2) {sCheck += ary2[iLength].value}
            if (pCol3) {sCheck += ary3[iLength].value}
            if (pCol4) {sCheck += ary4[iLength].value}
            if (pCol5) {sCheck += ary5[iLength].value}
            if (pCol6) {sCheck += ary6[iLength].value}
       
            if ( sCheck == '' ) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
        
	}
	
function IsLastRowNullAry(aryCols) {

    var sCheck="";
    for(var i = 0; i < aryCols.length; i++ ) {
        var ary1 = getElementsById(aryCols[i]);
        var iLength = ary1.length-1;
        if (iLength>0) {
            sCheck += ary1[iLength].value;
        }
    }
    
    if ( sCheck == '' ) {
        return true;
    } else {
        return false;
    }
    
}

function trimAll(sString)
    {
    while (sString.substring(0,1) == ' ')
    {
        sString = sString.substring(1, sString.length);
    }
    while (sString.substring(sString.length-1, sString.length) == ' ')
    {
        sString = sString.substring(0,sString.length-1);
    }
    return sString;
} 

// conversions

 function gfxConvToKWH(pUse, pUnit) {
        var nkWh;
        var nUse = makeNumeric(pUse);
        var sUnit = pUnit.toUpperCase().replace("/YR", "");
        switch (sUnit)
            {
             case "KWH":
                nkWh = roundNumber( (nUse * 1) );
                break;
            case "MWH":
                nkWh = roundNumber( (nUse * 1000) );
                break;
            case "KBTU":
                nkWh = roundNumber( (nUse *(1/3.412)) );
                break;
            case "MBTU":
                
                nkWh = roundNumber( (nUse * (1/0.003412)) );
                break;
            case "TON HRS":
                nkWh = roundNumber( (nUse * 3.517) );
                break;
            case "THERMS":
                nkWh = roundNumber( (nUse * 29.307) );
                break;
            default:
                //alert("Conversion Unit Not Found:"+sUnit);
                nkWh = nUse * 1;
                break;
            }
        return nkWh;
    } 
    
/* new ajax functions */

/* <![CDATA[ */

  function setTaskStatus(obj, taskid, status, updControlName)
     {
        
        var url = 'members/popups/AJAXSetTaskStatus.aspx';
        var pars = '?taskid='+taskid+'&statusid='+status;
        //        var elem = document.getElementById(updControlName);
        //        elem.innerHTML = 'Working...';
        //        makeRequest(url,pars);
        //        elem.innerHTML = getTaskStatusDescr(status);
        //        CloseRadToolTip();
        //        showLegendMessageArea('Task Status Updated');
       
        obj.innerHTML = 'Working...';
        makeRequest(url,pars);
        obj.innerHTML = getTaskStatusDescr(status);
        CloseRadToolTip();
        showLegendMessageArea('Task Status Updated');
     }
     
    function setProjectStatus(obj, updControlName, PRID, status)
     {
        var url = 'members/popups/AJAXSetProjectStatus.aspx';
        var pars = '?taskid='+taskid+'&statusid='+status;
        var elem = document.getElementById(updControlName);
        elem.innerHTML = 'Working...';
        makeRequest(url,pars);
        elem.innerHTML = getTaskStatusDescr(status);
        CloseRadToolTip();
        showLegendMessageArea('Project Status Updated');
     }
     
     function setCreditStatus(obj, updControlName, PRID, CRID, status)
     {
        var url = 'members/popups/AJAXSetCreditStatus.aspx';
        var pars = '?prid='+PRID+'&crid='+CRID+'&statusid='+status;
        var elem = document.getElementById(updControlName);
        elem.innerHTML = 'Working...';
        makeRequest(url,pars);
        elem.innerHTML = getTaskStatusDescr(status);
        CloseRadToolTip();

        showLegendMessageArea('Credit Status Updated');
       
     }

     function setCreditStatusWS(obj, updControlName, PRID, CRID, status)
     {


        var serviceUrl = "modules/WebServices/LoraxProWS.asmx/SetCreditStatus";
        var requestParams = "{ 'PRID': '" + PRID + "', 'CRID' : '" + CRID + "', 'StatusId' : '" + status + "'  }";
        var oldStatus = document.getElementById(updControlName).childNodes[0].data;
        var newStatus = getTaskStatusDescr(status);
        var updateElement = document.getElementById(updControlName).childNodes[0];
        function requestSuccess() {

        updateElement.nodeValue = newStatus;
        showLegendMessageArea('Credit Status Updated');
        };
        



        function beginRequest() {
        CloseRadToolTip();
          updateElement.nodeValue = "Working...";
        }

        //requestError will be called both if an ajax called failed (ie not internet connection, or page not found)
        //as well as when the response from the webservice call is failure (ie database error)
        function requestError() {

            updateElement.nodeValue = oldStatus;
            showLegendMessageArea('Error Changing Credit Status');
            alert("There was an error saving your changes");
        }


        makeRequestWS(serviceUrl, requestParams, beginRequest, requestSuccess, requestError);


             
     }

function bUserLoggedInWS() {

        var serviceUrl = "modules/WebServices/LoraxProWS.asmx/UserLoginWS";
        var userObj = { username : '', password : '' };
       var requestParams = "{ username : \"" + userObj.username + "\", password : \"" +  userObj.password + "\"}";
       return(makeRequestWS(serviceUrl, requestParams, null, null, null, true));
         }; 


function UserLoginWS(userObj, fnBeginRequest, fnRequestSuccess, fnRequestError)
     {


        var serviceUrl = "modules/WebServices/LoraxProWS.asmx/UserLoginWS";
        var requestParams = "{ username : \"" + userObj.username + "\", password : \"" +  userObj.password + "\"}";
         makeRequestWS(serviceUrl, requestParams, fnBeginRequest, fnRequestSuccess, fnRequestError);
         }

     function SetUserHashValueWS(fieldName, value, fnBeginRequest, fnRequestSuccess, fnRequestError)
     {


        var serviceUrl = "modules/WebServices/LoraxProWS.asmx/SetUserHashValueWS";
        var requestParams = "{ 'fieldName': '" + fieldName + "', 'value' : '" + value + "'  }";
       
      
            


        makeRequestWS(serviceUrl, requestParams, fnBeginRequest, fnRequestSuccess, fnRequestError);


             
     }

      function SetTaskSchedulePhaseWS(taskID, phaseID, fnBeginRequest, fnRequestSuccess, fnRequestError)
     {


        var serviceUrl = "modules/WebServices/LoraxProWS.asmx/SetTaskSchedulePhaseWS";
        var requestParams = "{ 'taskID': " + taskID + ", 'phaseID' : " + phaseID + "  }";
       
      
            


        makeRequestWS(serviceUrl, requestParams, fnBeginRequest, fnRequestSuccess, fnRequestError);


             
     }
      function GetUserHashValueWS(fieldName, fnBeginRequest, fnRequestSuccess, fnRequestError)
     {


        var serviceUrl = "modules/WebServices/LoraxProWS.asmx/GetUserHashValueWS";
        var requestParams = "{ 'fieldName': '" + fieldName + "'  }";
       
      
            


        makeRequestWS(serviceUrl, requestParams, fnBeginRequest, fnRequestSuccess, fnRequestError);


             
     }

     function showLegendMessageArea(pMsg) {
        // update message area if exists        
        var ctlLeg = document.getElementById('imgLegend');
        if (ctlLeg != undefined) {
            ShowCtlByVar(ctlLeg, true); 
            var ctlSp = document.getElementById('spLegend');
            if (ctlSp != undefined) {
                ctlSp.innerHTML = pMsg;
                ShowCtlByVar(ctlSp, true);
            }
            
        }
     
     }
     
     function setLeadAssigneeTask(taskid, userid, updControlName, updVal)
     {
        
        var url = 'members/popups/AJAXSetTaskLead.aspx';
        var pars = '?taskid='+taskid+'&userid='+userid;
        var elem = document.getElementById(updControlName);
        elem.innerHTML = 'Working...';
        makeRequest(url,pars);
        elem.innerHTML = updVal;
        CloseRadToolTip();
        showLegendMessageArea('Lead Assignee Updated');
     }

     
    
    function setLeadAssigneeCredit(obj, updControlName, prid, crid, usid, username)
     {   
        var url = 'members/popups/AJAXSetLeadAssignee.aspx';
        var pars = '?prid='+prid+'&crid='+crid+'&usid='+usid;
        var elem = document.getElementById(updControlName);
        elem.innerHTML = 'Working...';
        makeRequest(url,pars);
        elem.innerHTML = username;
        CloseRadToolTip();
        showLegendMessageArea('Credit Assignee Updated');
     }
    
     function setCreditOptionWS(obj, updControlName, prid, crid, pcid, coid, optionname,origcoid)
     {   
       
        var serviceUrl = "modules/WebServices/LoraxProWS.asmx/SetCreditOption";
        var requestParams = "{ 'PRID': '" + prid + "','CRID': '" + crid + "','PCID': '" + pcid + "', 'COID' : '" + coid + "', 'ORIGCOID' : '" + origcoid + "'  }";
        var oldOption = document.getElementById(updControlName).innerHTML;
        var newOption = optionname;
        var updateElement = document.getElementById(updControlName);
        
        function requestSuccess() {
            updateElement.innerHTML = newOption;
            showLegendMessageArea('Credit Option Updated');
        };
        
        function beginRequest() {
            CloseRadToolTip();
            updateElement.innerHTML = "Working...";
        }

        //requestError will be called both if an ajax called failed (ie not internet connection, or page not found)
        //as well as when the response from the webservice call is failure (ie database error)
        function requestError() {

            updateElement.innerHTML = oldOption;
            showLegendMessageArea('Error Assigning Credit Option');
            alert("There was an error saving your changes");
        }

        makeRequestWS(serviceUrl, requestParams, beginRequest, requestSuccess, requestError);

    }
    
     function setCreditPointsAttemptingWS(obj, updControlName, prid, crid, pcid, coid, ptsy ,ptsym,ptsnm,ptsn)
     {   
       
        var serviceUrl = "modules/WebServices/LoraxProWS.asmx/SetCreditPoints";
        var requestParams = "{ 'PRID': '" + prid + "','CRID': '" + crid + "','PCID': '" + pcid + "', 'COID' : '" + coid + "', 'PTSY' : '" + ptsy + "', 'PTSYM' : '" + ptsym + "', 'PTSNM' : '" + ptsnm + "', 'PTSN' : '" + ptsn + "'  }";
       
        function requestSuccess() {
            showLegendMessageArea('Credit Points Updated');
        };
        
        function beginRequest() {
            CloseRadToolTip();
        }

        //requestError will be called both if an ajax called failed (ie not internet connection, or page not found)
        //as well as when the response from the webservice call is failure (ie database error)
        function requestError() {

            //updateElement.innerHTML = oldOption;
            showLegendMessageArea('Error Assigning Credit Points');
            alert("There was an error saving your changes");
        }

        makeRequestWS(serviceUrl, requestParams, beginRequest, requestSuccess, requestError);

    }

     function SetRPPointWS(obj, element)
     {   
       
        var serviceUrl = "modules/WebServices/LoraxProWS.asmx/SetRPPointWS";
        var requestJSON = "{ \"PRID\":\"" + obj.PRID + "\", \"CRID\":\"" + obj.CRID + "\", \"RPPoint\": \"" + obj.RPPoint +"\"}";
       
        function requestSuccess() {
            showLegendMessageArea('Credit Points Updated');
            
        };
        
        function beginRequest() {
            CloseRadToolTip();
        }

        //requestError will be called both if an ajax called failed (ie not internet connection, or page not found)
        //as well as when the response from the webservice call is failure (ie database error)
        function requestError() {

        element.checked = !element.checked;

            //updateElement.innerHTML = oldOption;
            showLegendMessageArea('Error Assigning Credit Points');
            alert("There was an error saving your changes");
        }

        makeRequestWS(serviceUrl, requestJSON, beginRequest, requestSuccess, requestError);

    }


   
    function setLeadAssigneeTaskWS(elem, updControlName, PRID, TaskID, USID, userName)
     {   
       
        var serviceUrl = "modules/WebServices/LoraxProWS.asmx/SetLeadAssigneeScheduleTaskWS";
        var requestParams = "{ 'PRID': '" + PRID + "', 'taskID' : '" + TaskID + "', 'USID' : '" + USID + "'  }";
        var updControl = document.getElementById(updControlName);
        var oldUser = updControl.innerHTML;
        var newUser = userName;
       
        
        function requestSuccess() {
            updControl.innerHTML = newUser;
        };
        
        function beginRequest() {
            CloseRadToolTip();
            updControl.innerHTML = "Working...";
        }

        //requestError will be called both if an ajax called failed (ie not internet connection, or page not found)
        //as well as when the response from the webservice call is failure (ie database error)
        function requestError() {

            updControl.innerHTML = oldUser;
            alert("There was an error saving your changes");
        }

        makeRequestWS(serviceUrl, requestParams, beginRequest, requestSuccess, requestError);

    }

     function setStatusTaskWS(elem, updControlName, PRID, TaskID, Status)
     {   
       
        var serviceUrl = "modules/WebServices/LoraxProWS.asmx/SetStatusScheduleTaskWS";
        var requestParams = "{ 'PRID': '" + PRID + "', 'taskID' : '" + TaskID + "', 'Status' : '" + Status + "'  }";
        var updControl = document.getElementById(updControlName);
        var oldStatus = updControl.innerHTML;
        var newStatus = elem.innerHTML;
       
        
        function requestSuccess() {
            updControl.innerHTML = newStatus;
        };
        
        function beginRequest() {
            CloseRadToolTip();
            updControl.innerHTML = "Working...";
        }

        //requestError will be called both if an ajax called failed (ie not internet connection, or page not found)
        //as well as when the response from the webservice call is failure (ie database error)
        function requestError() {

            updControl.innerHTML = oldStatus;
            alert("There was an error saving your changes");
        }

        makeRequestWS(serviceUrl, requestParams, beginRequest, requestSuccess, requestError);

    }
     
     
    function setLeadAssigneeCreditWS(obj, updControlName, prid, crid, usid, username)
     {   
       
        var serviceUrl = "modules/WebServices/LoraxProWS.asmx/SetLeadAssignee";
        var requestParams = "{ 'PRID': '" + prid + "', 'CRID' : '" + crid + "', 'USID' : '" + usid + "'  }";
        var oldUser = document.getElementById(updControlName).childNodes[0].data;
        var newUser = username;
        var updateElement = document.getElementById(updControlName).childNodes[0];
        
        function requestSuccess() {
            updateElement.nodeValue = newUser;
            showLegendMessageArea('Credit Assignee Updated');
        };
        
        function beginRequest() {
            CloseRadToolTip();
            updateElement.nodeValue = "Working...";
        }

        //requestError will be called both if an ajax called failed (ie not internet connection, or page not found)
        //as well as when the response from the webservice call is failure (ie database error)
        function requestError() {

            updateElement.nodeValue = oldUser;
            showLegendMessageArea('Error Assigning Credit');
            alert("There was an error saving your changes");
        }

        makeRequestWS(serviceUrl, requestParams, beginRequest, requestSuccess, requestError);

    }
    
     function setCreditNoteWS(obj, updControlName, prid, crid)
     {   
     
       
        
        var serviceUrl = "modules/WebServices/LoraxProWS.asmx/SetCreditNote";
       
        var value = document.getElementById(obj).value ;     
        
        
        var requestParams = "{ 'PRID': '" + prid + "', 'CRID' : '" + crid + "', 'NOTES' : '" + value + "' }";
        //var oldUser = document.getElementById(updControlName).childNodes[0].data;
        //var newUser = username;
        var updateElement = document.getElementById(updControlName);
        
        function requestSuccess() {
            updateElement.innerHTML = value + '<br />';
            showLegendMessageArea('Credit Notes Updated');
        }
        
        function beginRequest() {
            CloseRadToolTip();
            updateElement.innerHTML = "Working...";
        }

        //requestError will be called both if an ajax called failed (ie not internet connection, or page not found)
        //as well as when the response from the webservice call is failure (ie database error)
        function requestError() {

            updateElement.innerHTML = 'Error Updating Notes';
            showLegendMessageArea('Error Updating Notes');
            alert("There was an error saving your changes");
        }
       
        makeRequestWS(serviceUrl, requestParams, beginRequest, requestSuccess, requestError);

    }
 
    
     
// Reference

  function getTaskStatusDescr(StatusID) {

          var sReturn ="";
          switch(StatusID)
            {
            case 1:
                sReturn = 'Needs Assignments';
                break;
            case 2:
                sReturn = 'Assigned';
                break;
            case 3:
                sReturn = 'In Process';
                break;
            case 4:
                sReturn = 'On Hold';
                break;        
            case 5:
                sReturn = 'Being Researched';
                break;
            case 6:
                sReturn = 'Completed';
                break;
            case 8:
                sReturn = 'Completed - Reviewed';
                break;
            case 7:
                sReturn = 'Can Not Complete';
                break;
            default:
              sReturn ="";
            }
            return sReturn;
        }


// Cookie support
 
    function setCookie(c_name, value, expiredays, optionalPath) {    
        var exdate = new Date();    
        exdate.setDate(exdate.getDate() + expiredays);    
        document.cookie = c_name + "=" + escape(value) +        
            ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString()) + ((optionalPath == null) ? "" : ";path=" + escape(optionalPath)) ;
    }
    
    function getCookie(c_name) {    
        try { 
            if (document.cookie.length > 0) { 
                c_start = document.cookie.indexOf(c_name + "=");            
                if (c_start != -1) { 
                    c_start = c_start + c_name.length + 1;                
                    c_end = document.cookie.indexOf(";", c_start);                
                    if (c_end == -1) c_end = document.cookie.length;                
                    return unescape(document.cookie.substring(c_start, c_end));            
                }        
            }    
        } catch (err) { }    
        
        //If there is an error or no cookie 
        //return an empty string 
        return "";
    }
    
    // Telerik Tab Support
    // Primary Tab
    function gfxOnClientTabSelected(sender, args) {   
         
        var tabText = args.get_tab().get_value();     
        saveTabIndex(tabText);
        //alert('gfxOnClientTabSelected  selected: '+tabText);
    }
     function saveTabIndex(tabText) {  
        // alert('');
        setCookie(tabCookieName, tabText, 1);
        //alert('set cookie tabCookieName: '+tabCookieName); 
    }
    
     function gfxOnClientTabLoad(sender) {
        tabstrip = sender;
        //alert('ran gfxOnClientTabLoad set tabstrip to sender');
    }
    
    
    function loadTabIndex(tabstrip) { 
 
        //var currentURL = ;
        var bNotATask = ( window.location.toString().toLowerCase().indexOf("taskitem") == -1);

        //alert('loadTabIndex: have a tabstrip: ' + tabstrip);
        //alert("loadTabIndex: tabCookieName: " + tabCookieName); 
        //alert('bNotATask: '+bNotATask);
        //alert( (tabstrip != "undefined") );
        
        if ( (tabstrip != "undefined") && bNotATask) {      
            
            var tabText = getCookie(tabCookieName);
            
            if (tabText != "" || tabText != null) {            
                var tab = tabstrip.findTabByValue(tabText); 
                if (tab != null) {                
                    tab.select(); //Select tab            
                }           
            }
        }
        
    }
    
    // Sub Tabs
    function gfxOnClientSubTabSelected(sender, args) {    
        var tabText = args.get_tab().get_value();     
        saveSubTabIndex(tabText);
        //alert('gfxOnClientTabSelected:'+tabText);
    }
     function saveSubTabIndex(tabText) {  
        // alert('');
        //alert("save subtabCookieName: "+subtabCookieName+" - tabText: "+tabText); 
        setCookie(subtabCookieName, tabText, 1);
    }
     function gfxOnClientSubTabLoad(sender) {
       
        subtabstrip = sender;
        //alert('gfxOnClientTabLoad:'+subtabstrip);
    }

     function loadSubTabIndex(subtabstrip) {  
        //alert('loading... should be two subtabCookieName: '+subtabCookieName); 
        //alert("subtabstrip "+subtabstrip); 
        if (subtabstrip != null) {  
            //alert(" 2 loadSubTabIndex subtabCookieName: "+subtabCookieName);      
            var tabText = getCookie(subtabCookieName);
            
            if (tabText != "" || tabText != null) {            
                var tab = subtabstrip.findTabByValue(tabText); 
                if (tab != null) {                
                    tab.select(); //Select tab            
                }           
            }
            
        }
    }
    
    
    
    function cancelEvent(e) {
        if (!e) e = window.event;
        if (e.preventDefault) {
            e.preventDefault();
        } else {
            e.returnValue = false;
        }
    }

    function makeRequestWS(serviceUrl, requestParams, onBeginRequest, onSuccess, onError, sync) {
    
        if (!window.$) {
        $ = $telerik.$;
        };
        var async = (sync === true) ? false : true;
        var emptyFunc = function() {

        return;
        }
        if(typeof onBeginRequest !== 'function') { onBeginRequest = emptyFunc };
        if(typeof onSuccess !== 'function') { onSuccess = emptyFunc };
        if(typeof onError !== 'function') { onError = emptyFunc };
    
        return $.ajax({
            type: "POST",
            url: serviceUrl,
            data: requestParams,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async : async, 
            success: function(ServerResponse, AJAXCallStatus) {

            
            if (AJAXCallStatus.toLowerCase() == "success") { //Succesful ajax call - now check server result

                if (ServerResponse.Result == "Success") {
                    onSuccess(ServerResponse);
                    return;
                } else if (ServerResponse.d.Result == "Success") {

                   onSuccess(ServerResponse.d);
                   return;
                } else {
                    onError();
                }
                
            }

            else {
                onError();
            }
            
            
            },
            beforeSend: onBeginRequest,
            error: onError
        });


    }

     
/* ]]> */

// Grids

  function StyleRowBasedOnCol(col, val, gridid) {

            var grid = $find(gridid);
            var tables = grid.get_detailTables();

            for (var i = 0; i < tables.length; i++) {
                var rows = tables[i].get_dataItems();
                for (var i2 = 0; i2 < rows.length; i2++) {
                    if (rows[i2].getDataKeyValue(col) == val) {
                        var oldClass = rows[i2].get_element().className.replace(' highlight', '');
                        rows[i2].get_element().className = oldClass + ' highlight';
                    } else {
                        var oldClass = rows[i2].get_element().className.replace(' highlight', '');
                        rows[i2].get_element().className = oldClass;
                    }
                }
            }
        }

        


        
           function CheckBoxBasedOnCol(col, val,gridid) {

            var grid = $find(gridid);
            var tables = grid.get_detailTables();

            for (var i = 0; i < tables.length; i++) {
                var rows = tables[i].get_dataItems();
                for (var i2 = 0; i2 < rows.length; i2++) {
                    if (rows[i2].getDataKeyValue(col) == val) {
                    
                        var cbx = rows[i2]._element;
                        
                         var checks = cbx.getElementsByTagName('input');
                
                                for(z=0;z<checks.length;z++){
                                    var opt = checks[z];
                                    if (opt.type == 'checkbox') {
                                        
                                        if (opt.disabled) {
                                        } else {
                                                opt.checked = true;
                                        }
                                             
                                        
                                    }
                                }
                        
                        var oldClass = rows[i2].get_element().className.replace(' highlight', '');
                        rows[i2].get_element().className = oldClass + ' highlight';
                        
                    } else {
                        var oldClass = rows[i2].get_element().className.replace(' highlight', '');
                        rows[i2].get_element().className = oldClass;
                    }
                }
            }
            EnableSubmit();
        }
        
        var oldhoverval = '';
        function addArrow(obj) { 
            oldhoverval = obj.innerHTML;
            obj.innerHTML = obj.innerHTML + '&#9660;'; 
            }
        function remArrow(obj) { 
            //var str = '';
            //str = obj.innerHTML;
            //alert(str);
            //str = str.replace('&#9660;','');
            obj.innerHTML = oldhoverval; 
        }
        
        function scrubJS(pIn) {
        
            return pIn.replace(',',' ');
        
        }
        
      function getRatingSystemColor(RS, ptsGoal) {

           var sGoal ="";
            
           if (RS.indexOf("V3") != -1) {
           
              if (ptsGoal >= 80) {
                    sGoal = "Platinum";
              } else if  (ptsGoal >= 60) {
                    sGoal = "Gold";
              } else if (ptsGoal >= 50) {
                    sGoal = "Silver";
              } else if (ptsGoal >= 40) {
                    sGoal = "Certified";
              } else { sGoal = ""; }
          }
          
          return sGoal;

       } // getRatingSystemColor


       function modalBox(modalElement) {

        var modalMask = $('<div id="modalMask"> </div>');
        var closeButton = $('<div style="position: absolute; top: 0pt; right: 10px; font-size: 150%; font-weight: bold"><a href="javascript:void(0)">x</a></div>').find('a').click(function () { closeLogin(); }).end().prependTo(modalElement);
        modalMask.css({ height: $(document).height(), width: $(document).width() });
          modalMask.prependTo($('body')).after(modalElement);
            // var modalElementPositionLeft = ($(window).width() - 250) / 2;
              modalElement.addClass('modalElement');
              modalElement.css({ 'width': '95%', 'margin' : '10px'}).show();
                //modalElement.css({  'left': modalElementPositionLeft });
                modalMask.prependTo($('body')).after(modalElement);
                window.scroll(0,0);


       }

       function modalLogin() {

            var modalMask = $('<div id="modalMask"> </div>');
            var loginForm = $('<div id="loginForm">Please Login<input type="text" /><input type="password" />Username: <br/>Password: <button type="button">Submit </button><div style="color:red; font-weight:bold; display:none">Invalid credentials.</div></div>');
            var closeButton = $('<div style="position: absolute; top: 0pt; right: 10px; font-size: 150%; font-weight: bold"><a href="javascript:void(0)">x</a></div>').find('a').click(function () { closeLogin(); }).end().prependTo(loginForm);
            modalMask.css({ height: $(document).height(), width: $(document).width() });
            var loginFormPositionLeft = ($(window).width() - 250) / 2;
            loginForm.find('input').css({ 'float': 'right', 'margin-bottom' : '1px' });
            loginForm.css({  'left': loginFormPositionLeft });
            modalMask.prependTo($('body')).after(loginForm);
            window.scroll(0,0);
            loginForm.find('button').click(function () {
                var userObj = { username: loginForm.find('input').eq(0).val(), password: loginForm.find('input').eq(1).val() };
                UserLoginWS(userObj, null,
                function (d) {
                    if (d.Result.toLowerCase() == 'success') {
                        loginForm.find('div:last').html('Succesfully logged in.').show();
                        window.setTimeout(closeLogin, 800);
                    }
                }, function () {
                    loginForm.find('div:last').show();
                });
            });

        };

        function closeLogin() {
            $('#modalMask').next().fadeOut('slow',
            function () {
             $('#modalMask').remove();  $(this).remove();
            });
        };
            
        // experimental
            
        function setColValFromLookup(pColFrom, pColTo, pLookupTable) {

            var aryFrom = document.getElementsByName(pColFrom);
            var aryTo = document.getElementsByName(pColTo);
            var length = aryFrom.length;

            var e = "";
            for (var i = 0; i < length; i++) {
                e = aryFrom[i].options[aryFrom[i].selectedIndex].text;
                if (e) {
                    aryTo[i].value = pLookupTable[e];
                }        
            }
            
        }
            
            // 
        
        
        function setJSTextFieldnames() {

            var formitems = new Array();
            
            var el;
            var sServerSideID = "";
            var listItems = document.getElementsByTagName('input');

            for (var no = 0; no < listItems.length; no++) { // loop thru list items

                el = listItems[no];
                sServerSideID = listItems[no].id;
                var iIndex = sServerSideID.toLowerCase().indexOf("txt_data_");
                if (iIndex > 0) {

                    var fieldname = sServerSideID.substring(iIndex, sServerSideID.length);
                    var oTemp = document.getElementById(sServerSideID);
                    // get the name somehow
                    eval("var " + fieldname);
                    eval(fieldname = oTemp);
                   
                }
            }

            listItems = document.getElementsByTagName('textarea');

            for (var no = 0; no < listItems.length; no++) { // loop thru list items                        

                el = listItems[no];
                sServerSideID = listItems[no].id;
                var iIndex = sServerSideID.toLowerCase().indexOf("txt_data_");
                if (iIndex > 0) {

                    var fieldname = sServerSideID.substring(iIndex, sServerSideID.length);
                    var oTemp = document.getElementById(sServerSideID);
                    // get the name somehow
                    alert(fieldname);
                   // eval("var " + fieldname + " = 'asdf';");
                    formitems[fieldname] = oTemp;
                    //eval(fieldname = oTemp);
                   
                }
            }

            return formitems;

            // and heres how you use it
            //var formitems = setJSTextFieldnames();
            //alert(formitems["txt_data_RelativeHumidityAndIAQPlanManagement"].value);
  
        } // FindActualInputID
        
    function updSelect(fieldID, newOptions, newValues) {
        selectField = document.getElementById(fieldID);
        selectField.options.length = 0;
        for (i = 0; i < newOptions.length; i++) {
            selectField.options[selectField.length] = new Option(newOptions[i], newValues[i]);
        }
        if (CurrentStateSelected != '') {
            selectField.value = CurrentStateSelected;
        }
    }
