/**
 * create url with bvpath and submit form
 */
function createURLAndSubmit(){
 document.forms.application.action = bvpath + "/sendmail/index.jsp";
 document.forms.application.submit();
}

/**
 * is looking for the array mustFields defined in the html page.
 * walks through the array and checks if the fields have a value
 * is also looking for the array choiceFields defined in the html page
 * and checks if one or more fields are chosen
 *
 * if all checks are successfull the form will be submited
 */
function checkForm(formdata) {
  var success= true;
  //first check all must fields
  if( typeof(mustFields)!='undefined'&&mustFields&&success ) {
    success= checkMustFields( formdata );
  }
  else {
    //not checking must fields
  }
  
  //then check all choice fields
  if(typeof(choiceFields)!='undefined'&&choiceFields&&success ) {
    success= checkChoiceFields( formdata );
  }
  else {
    //not checking choice fields
  }
  
  //was everything all right?
  if( success ) {
    formdata.submit();
  }
  else {
    //don't submit of course!
  }
}

/**
 * checks all must fields
 * return true if everything was ok
 */
function checkMustFields( formdata ) {
  var success= true;
  
  //go through the array
  for( var i= 0; (i<mustFields.length)&&(success==true); i++) {
    if (formdata[mustFields[i]].type == "select-one") {
      if( formdata[mustFields[i]].options[formdata[mustFields[i]].selectedIndex].value=="" ) {
  	    alert(mustFieldsMsg);
  		  formdata[mustFields[i]].focus();
   	    success= false;
      }
      else {
        //very good!
      }
    }
    else {
      if( (mustFields[i]=="email")||(mustFields[i]=="$from") ) {
        if( checkEmailAddress( formdata[mustFields[i]].value )==false ) {
          alert( emailMsg );
    	    formdata[mustFields[i]].focus();
    	    success= false;
        }
        else {
          //very good!
        }
      } 
  	  else {
  	    if( checkText( formdata[mustFields[i]].value )==false ) {
  	      alert(mustFieldsMsg);
  		    formdata[mustFields[i]].focus();
   	      success= false;
  	    }
   	    else {
  	      //very good!
  	    }
      }
    }
  }
  
  return success;
}

/**
 * checks all choice fields
 * return true if everything was ok
 */
function checkChoiceFields( formdata ) {
  var success= true;
  var chosen= false;
  
  //check if something is chosen
  for( var i= 0; i<choiceFields.length; i++ ) {
    chosen|= formdata["checkbox_"+choiceFields[i]].checked;
  }
  
  //if nothing is chosen, we will show an alert
  if( !chosen ) {
    alert( choiceFieldsMsg );
    success= false;
  }
  else {
    //we check if every chosen contact possibility has valid values
    for( var i= 0; (i<choiceFields.length)&&(success==true); i++ ) {
      if( formdata["checkbox_"+choiceFields[i]].checked ) {
        if( choiceFields[i].indexOf( "email" )!=-1 ) {
          if( checkEmailAddress( formdata[choiceFields[i]].value )==false ) {
            alert( emailMsg );
            formdata[choiceFields[i]].focus();
            success= false;
          }
          else {
            //very good!
          }
        }
        else {
          if( checkText( formdata[choiceFields[i]].value )==false ) {
            alert( mustFieldsMsg );
            formdata[choiceFields[i]].focus();
            success= false;
          }
          else {
            //very good!
          }
        }
      }
      else {
        //don't care if there's entered something!
      }
    }
  }
  
  return success;
}

/**
 * Will return true if the string represents a valid text field
 */
function checkText( text ) {
  var success;
  
  if( text=="" ) {
    success= false;
  }
  else {
    success= true;
  }
  
  return success;
}


/**
 * Will return true if the string represents a valid email address
 	- note, cannot use regular expressions because of browser incompatibility
 */
function checkEmailAddress( email ) {
  	var emailArray = email.split('@');
  	
  	/*  var filter=/^(\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
          if (filter.test(email))
            return true
	  else
	    return false;
	} */

  	//check if addr has 2 parts
 	 if(emailArray.length == 2) {
 	   var parsed = true; 
 	  // var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-";	
 	  //HBL add _ as valid char in the email address
 		var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";	
 	   for (var i=0; i < email.length; i++) {
             var letter = email.charAt(i).toLowerCase();
               if (validchars.indexOf(letter) != -1)
                continue;
               else
                parsed = false;
           }
           if(parsed){
     	        var AtSym    = email.indexOf('@')
		var Period   = email.lastIndexOf('.')
		var Space    = email.indexOf(' ')
		var Length   = email.length - 1   // Array is from 0 to length-1

		if ((AtSym < 1) ||                     // '@' cannot be in first position
    		(Period <= AtSym+1) ||             // Must be atleast one valid char btwn '@' and '.'
    		(Period == Length ) ||             // Must be atleast one valid char after '.'
    		(Space  != -1)||                    // No empty spaces permitted
    		emailArray[1].indexOf('@')>0) //no @ after the first one
   	          {  
      	            return false
   	          } else {
			return true
		  }
          }
          else 
            return false;
  	}   
  	return false;
  	 
}



/*
 * used for newletter to select all check boxes
 */
function checkSingle(id)
// uncheck all single if 'ALL' is selected
{
  if(!document.subscribe[id + '_ALL'].checked)  
  {
    for(i=0; i<document.subscribe[id].length; i++) document.subscribe[id][i].checked = true;
  }
} 

function uncheckAll(id)
// uncheck 'ALL'-checkbox
{
  document.subscribe[id + '_ALL'].checked=false;
}


/*
 *  used for contact forms
 */

var QueryArray = new Array();
getQueryString();
function getQueryString(){
  if (window.location.search != ""){
    var par_name, par_value, QueryString = window.location.search.substr(1);
    while (QueryString.indexOf("&") > 0){
      parameter = QueryString.substr(0,QueryString.indexOf("&"));
      par_name = parameter.substr(0,parameter.indexOf("=")).replace('%23','#');
      par_value = parameter.substr(parameter.indexOf("=")+1).replace(/\+/g,' ');
      QueryString = QueryString.substr(QueryString.indexOf("&")+1);
      QueryArray[par_name] = par_value;
    }
    par_name = QueryString.substr(0,QueryString.indexOf("=")).replace('%23','#');
    par_value = QueryString.substr(QueryString.indexOf("=")+1).replace(/\+/g,' ');
    QueryArray[par_name] = par_value;
  }
}
function writeQueryValue(par_name){
  if (QueryArray[par_name])
    document.write(QueryArray[par_name]);
}
function writeQueryHidden(par_name){
  if (QueryArray[par_name])
    document.write('<input type="hidden" name="'+par_name+'" value="'+QueryArray[par_name]+'">');
}
