function checkform(of)
{
  if(!document.getElementById || !document.createTextNode){return;}
  if(!document.getElementById('required')){return;}

  var errorID='errormsg';
  var errorClass='error'
  var errorMsg='Please enter or change the fields marked with a ';
  var errorImg='images/warning.gif';
  var errorAlt='Error';
  var errorTitle='This field has an error!';
  var reqfields=document.getElementById('required').value.split(',');
 
  // Cleanup old mess
  // if there is an old errormessage field, delete it
  if(document.getElementById(errorID))
  {
    var em=document.getElementById(errorID);
    em.parentNode.removeChild(em);
  }
  // remove old images and classes from the required fields
  for(var i=0;i<reqfields.length;i++)
  {
    var f=document.getElementById(reqfields[i]);
    if(!f){continue;}
    if(f.previousSibling && /img/i.test(f.previousSibling.nodeName))
    {
      f.parentNode.removeChild(f.previousSibling);
    }
    f.className='';
  }

  // loop over required fields
  for(var i=0;i<reqfields.length;i++)
  {
  // check if required field is there
    var f=document.getElementById(reqfields[i]);
    if(!f){continue;}
  // test if the required field has an error, 
  // according to its type
    switch(f.type.toLowerCase())
    {
      case 'text':
        if(f.value=='' && f.id!='email'){cf_adderr(f)}              
  // email is a special field and needs checking
        if(f.id=='email' && 
        !cf_isEmailAddr(f.value)){cf_adderr(f)}              
      break;
      case 'textarea':
        if(f.value==''){cf_adderr(f)}              
      break;
      case 'checkbox':
        if(!f.checked){cf_adderr(f)}              
      break;
      case 'select-one':
        if(!f.selectedIndex && f.selectedIndex==0){cf_adderr(f)}              
      break;
    }
  }
return !document.getElementById(errorID);


  /* Tool methods */
  function cf_adderr(o)
  {
  // create image, add to and colourise the error fields
    var errorIndicator=document.createElement('img');
    errorIndicator.alt=errorAlt;
    errorIndicator.src=errorImg;
    errorIndicator.title=errorTitle;
    o.className=errorClass;
insertAfter( o, errorIndicator );

    //o.parentNode.insertBefore(errorIndicator,o);

    // Check if there is no error message
    if(!document.getElementById(errorID))
    {

    // create errormessage and insert before submit button
      var em=document.createElement('div');
      em.id=errorID;
      var newp=document.createElement('p');
      newp.appendChild(document.createTextNode(errorMsg))
      // clone and insert the error image
      newp.appendChild(errorIndicator.cloneNode(true));
      em.appendChild(newp);
      // find the submit button 
      for(var i=0;i<of.getElementsByTagName('input').length;i++)
      {
        if(/button/i.test(of.getElementsByTagName('input')[i].type))
        {
          var sb=of.getElementsByTagName('input')[i];
          break;
        }
      }
      if(sb)
      {
        sb.parentNode.insertBefore(em,sb);
      }
    }

  }


  function cf_isEmailAddr(str) 
  {
      return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
  }

// This function inserts newNode after referenceNode
function insertAfter( referenceNode, newNode )
{
    referenceNode.parentNode.insertBefore( newNode, referenceNode.nextSibling );
}

}

function sendmessage(frm){

var result=checkform(frm);
if (result==true) {
  var name=document.getElementById('name').value;
  var email=document.getElementById('email').value;
  var type=document.getElementById('type').value;
  var msg=document.getElementById('msg').value;

  $.post("sendmessage_script.php",{name:$('#name').val(),email:$('#email').val(),type:$('#type').val(),msg:$('#msg').val()},function(data)
  {
	document.getElementById("popup_content").innerHTML=data;
  });
} return false;

} //end func

   
function checkEmail(myForm) {
  if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(myForm.value)){
  return (true)
  }
  alert('Please enter a valid E-mail Address.');
  return (false)
}//end func


function chooseone(str){
  if (str.name=='borough' && !str.value=='') {
	document.getElementById("address").value='';
  }
  if (str.name=='address' && !str.value=='') {
	document.getElementById("borough").value='';
  }
}//end func

function CheckBrowser(){

if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits);
 var ffversion=new Number(RegExp.$1) // capture x.x portion and store as a number
 if (ffversion>=3) {
   userbrowser="FF3";
   testedbrowser="Y";
 }else if (ffversion>=2){ 
   userbrowser="FF2";
   testedbrowser="N";
 }else if (ffversion>=1){
   userbrowser="FF1";
   testedbrowser="N";
 }
}
else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x;
 var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number
 if (ieversion>=8){
  userbrowser="IE8";
  testedbrowser="Y";
 }else if (ieversion>=7){
  userbrowser="IE7";
  testedbrowser="Y";
 }else if (ieversion>=6){
  userbrowser="IE6";
  testedbrowser="Y";
 }else if (ieversion>=5){
  userbrowser="IE5";
  testedbrowser="N";
 }
}else if (/Safari/i.test(navigator.userAgent)){ //test for Safari;
  userbrowser="Safari";
  testedbrowser="Y";
}else if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Opera/x.x or Opera x.x (ignoring remaining decimal places);
 var oprversion=new Number(RegExp.$1) // capture x.x portion and store as a number
 if (oprversion>=10){
   userbrowser="OP10";
   testedbrowser="N";
 }else if (oprversion>=9){
   userbrowser="OP9";
   testedbrowser="N";
 }else if (oprversion>=8){
   userbrowser="OP8";
   testedbrowser="N";
 }else if (oprversion>=7){
   userbrowser="OP7";
   testedbrowser="N";
 }else {
   userbrowser="UNK";
   testedbrowser="N";
 }
} else {
   userbrowser="UNK";
   testedbrowser="N";
}

return userbrowser;

} //End of CheckBrowser

function checkifspecial(obj){


if(obj.value.substring(0,2) == 'r_') { //if report

	populateReportDateList(obj.value.substring(2,obj.value.length));

        document.getElementById("label_rad").style.visibility="hidden";
        document.getElementById("label_showmap").style.visibility="hidden";

	document.getElementById("label_addr").innerHTML='Date';
	document.getElementById("addressbox").style.display="none";
        document.getElementById("showgraphdatebox").style.display="block";

	document.getElementById("radiusbox").style.visibility="hidden";
	document.getElementById("radius").style.visibility="hidden";
	document.getElementById("showmap").checked=false;
	document.getElementById("showmapbox").style.visibility="hidden";
	document.getElementById("showmap").style.visibility="hidden";

  }else {

        document.getElementById("label_rad").style.visibility="visible";
        document.getElementById("label_showmap").style.visibility="visible";

	document.getElementById("label_addr").innerHTML='Or  Address: ';
        document.getElementById("showgraphdatebox").style.display="none";
	document.getElementById("addressbox").style.display="block"; 
  
	document.getElementById("radiusbox").style.visibility="visible";
	document.getElementById("showmapbox").style.visibility="visible";
	document.getElementById("radius").style.visibility="visible";

        document.getElementById("showmap").checked=true;
	document.getElementById("showmap").style.visibility="visible";


}

}//end func

/*
function genGraph(facilityleveltype,boro,date){
alert(facilityleveltype+'-'+boro+'-'+date);
  $.get("processChart.php",{facilityleveltype:facilityleveltype,boro:boro},function(data)
  {
alert(data);
	//document.getElementById("popup_content").innerHTML=data;
	//alert(data);
data="diversion_1.png";
	var html='<b>DSNY Recycling Diversion in Manhattan Graph</b><br><img src="graphs/'+ data + '" border=0 />';
	document.getElementById('map').innerHTML=html;
  });
} //end func


*/
