<!--
 var typingTimer;
    var typingCheckPeriod=4000;
    var typing = 0;
 function emailCheck (emailStr, alertflag) {
var filter=/^([\w-]+(?:['\w\.\d-_]*[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
  
//  var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
    if (!filter.test(emailStr)) {
      if (alertflag)
       alert("The email address is invalid.")
	 return false
	 }
  return true;
}
var tempIP = "132.174.19.17";
var anonym = 0;
   
   function isEmpty(str)
{
  if (str==null) { return true;}
  else if(str == "") { return true;}
  else
    {
      for(j=0; j<str.length; j++)
	{
	  if(str.charAt(j) != " ")
	    // make sure to put a space between those quotes!
	    {
	      return false;
	    }
	}
    }
  return true;
}

function getDesc(formElement) {
   if(formElement.length != null) var type = formElement[0].type;
   if((typeof(type) == 'undefined') || (type == 0)) var type = formElement.type;
   
   switch(type)
     {
     case 'undefined': return'';
       
     case 'radio':
     case 'checkbox':  
       if (formElement.length>0) {
	 return formElement[0].getAttribute("desc");
       }
       else {
	 return '';
       }          
     default: return formElement.getAttribute("desc");
     }
 }
 function getElementValue(formElement) {
   if(formElement.length != null) var type = formElement[0].type;
   if((typeof(type) == 'undefined') || (type == 0)) var type = formElement.type;
   
   switch(type)
     {
     case 'undefined': return;
       
     case 'radio':
       
       for(var x=0; x < formElement.length; x++) 
	 if(formElement[x].checked == true)
	   return formElement[x].value;
       
     case 'select-multiple':
       var myArray = new Array();
       for(var x=0; x < formElement.length; x++) 
	 if(formElement[x].selected == true)
	   myArray[myArray.length] = formElement[x].value;
       return myArray;
     case 'select-one': 
       if (formElement.selectedIndex<0) {
	 return "";
       }
       return formElement.options[formElement.selectedIndex].value;
     case 'checkbox': 
        var myArray = new Array();
       for(var x=0; x < formElement.length; x++) 
	 if(formElement[x].checked == true)
	   myArray[myArray.length] = formElement[x].value;
       return myArray;
       //return formElement.checked;
       
     default: return formElement.value;
     }
 }
   
function submitForm(form) {
  if (checkIt(form)) {
    truncateLabels(form);
    form.submit();
  }
}

var labelRegExp=/label\d+/g;

function truncateLabels(form) {
  for (var i=0; i<form.elements.length;i++) {
    var ename=form.elements[i].name;
    if (ename != null && ename.match(labelRegExp)) {      
      //alert("truncate "+form.elements[i].value);
      var evalue=truncate(form.elements[i].value, 50);
      form.elements[i].value=evalue;
      // alert("truncated "+form.elements[i].value);
    }
  }
}
function arrayEmpty( ar) {
  for (var i=0; i<ar.length;i++) {
    if (ar[i]!=null && !isEmpty(ar[i])) {
      return false;
    }
  }
  return true;
}

function intArrayEmpty(ar) {
  for (var i=0; i<ar.length;i++) {
    if (ar[i]!=null && !isEmpty(ar[i])) {
       var val=ar[i];
       var pos=val.indexOf("_");
       if (pos>=0) {
	 val=val.substring(0,pos);
       }
	   // alert(tmp);
       if (isNumeric(val) || parseInt(tmp)>0) {
	 return false;
       }
    }
   }
   return true;
}
function checkIt(form) {
  var email = '';
  if (form.email != null && form.email!='undefined') {
	email=form.email.value;
  }
  //else alert("form.email =" +form.email);     
  var missing = '';
  var error = '';
  var desc;
  // check for library id 
  if (isEmpty(getElementValue(form.library))) {
    error += "\n-"+message.missinglib;
  }
  // check for other customized required fields:
  var tmp = form.requiredfields.value;
  if (tmp != null && !isEmpty(tmp)) {
    var reqfields=tmp.split(' ');
    for(var i=0;i<reqfields.length;i++) {
      var ele = reqfields[i];
      // alert(ele);
      if (!isEmpty(ele)) {
	ele=trim(ele);
	ele='form.'+ele;
	var e = eval(ele);
	if (e != null && e != "undefined") {
	  tmp=getElementValue(e);
	  desc=getDesc(e);	 
	  if (tmp instanceof Array ) {
	    if (arrayEmpty(tmp)) {
	     missing += "\n   --"+desc;
	    }
	  }
	  else if (tmp==null || isEmpty(tmp)) {	      
	    missing += "\n   --"+desc;
	  }
	}
      }
    }
  }
  // check for other customized required int fields:
  var tmp = form.requiredintfields.value;
  if (tmp != null && !isEmpty(tmp)) {
    var reqfields=tmp.split(' ');
    for(var i=0;i<reqfields.length;i++) {
      var ele = reqfields[i];
      // alert(ele);
      if (!isEmpty(ele)) {
	ele=trim(ele);
	ele='form.'+ele;
	var e = eval(ele);
	if (e != null && e != "undefined") {
	  tmp=getElementValue(e);
	  //alert(tmp);
	  desc=getDesc(e);
	  if (tmp instanceof Array ) {
	    if (intArrayEmpty(tmp)) {
	      missing += "\n   --"+desc;
	    }
	  }	    
	  else if (tmp==null || isEmpty(tmp)) {	      
	    missing += "\n   --"+desc;
	  }
	  else {
	   var val=tmp;
	   var pos=val.indexOf("_");
	   if (pos>=0) {
	     tmp=val.substring(0,pos);
	   }
	   // alert(tmp);
	   if (!isNumeric(tmp) || parseInt(tmp)<=0)
	     missing += "\n   --"+desc;
	 }
	}
      }
    }
  }
  // if email is not empty, validate email
  // and if validateemail==true;
  if ( anonym == 1) {
            for ( var i = 0; i < document.forms[0].elements.length; i++)
                {
                   if (document.forms[0].elements[i].name == "IPaddress" ||
                              document.forms[0].elements[i].name == "confirm_email" ||
                              document.forms[0].elements[i].name == "name" ||
                              document.forms[0].elements[i].name == "email" )
                         {
                             document.forms[0].elements[i].value = "anonymous";
                         }
                }
  }
  else {
     var ele=document.getElementById("validateemail");
     var valEmail="false";
     if (ele != null && ele != "undefined") {
        valEmail=ele.value;
     }
     
     if (!isEmpty(email) && "true"==valEmail) {
       if (!emailCheck(email, false)) {
         error += "\n-"+message.invalidemail;
       }   
     }
     if (form.confirm_email != null && form.confirm_email != "undefined") {
       confirm_email = form.confirm_email.value;
       if (confirm_email != email) {
         error += "\n-"+message.emailnomatch;
       }
     }    
  }
  if(missing.length > 0 || error.length>0) {
    var msg = message.missingmsg+"\n";
    if (missing.length>0) {
      msg += "\n-"+message.missingmsg2+missing+"\n";
    }
    if (error.length>0) {
      msg += error+"\n";;
    }
    
    alert(msg);
    return false;
  }
  if(form.formtype.value == 2) {
     if (form.name.value != null && form.name.value != "undefined") {
        form.chat_name.value = form.name.value;
     }
     if (form.email)
     {
       if (form.email.value != null && form.email.value != "undefined") {
          form.chat_email.value = form.email.value;
       }
       else form.chat_email.value = '';
    }
    else form.chat_email.value = '';
  }
  return true;
}
function trim(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;
}

function isNumeric(sText) {
var ValidChars = "0123456789."; 
   var Char;
   for (i = 0; i < sText.length; i++) {
       Char = sText.charAt(i);
       if (ValidChars.indexOf(Char) == -1) {
          return false;
       }
    }
   return true;

}
function makeAnonimity()
{
    if (document.forms[0].anonymity.checked)
    {   //if anonym == 1 customer email address will not be checked
	    anonym = 1;
	    for ( var i = 0; i < document.forms[0].elements.length; i++)
		{    
                   if (document.forms[0].elements[i].type == "text" && 
                             (document.forms[0].elements[i].name == "IPaddress" ||
		              document.forms[0].elements[i].name == "confirm_email" ||
		              document.forms[0].elements[i].name == "name" ||
		              document.forms[0].elements[i].name == "email") ) 
			 {
			     document.forms[0].elements[i].value = "anonymous";
			 }
		}
	}
	else
	{   anonym = 0;
	    for ( var i = 0; i < document.forms[0].elements.length; i++)
		{    if (document.forms[0].elements[i].name == "IPaddress" ||
                              document.forms[0].elements[i].name == "confirm_email" ||
                              document.forms[0].elements[i].name == "name" ||
                              document.forms[0].elements[i].name == "email")
			 {
			 	 document.forms[0].elements[i].value = "";
			 }
			 else if (document.forms[0].elements[i].name == "IPaddress")
			 {
			     document.forms[0].elements[i].value = tempIP;
			 }
		}
	}
}
function limit(field, chars) {
        if (field.value.length > chars) {
             field.value = field.value.substr(0, chars);
             var msg = message.toolong + " "+ chars +"!\n";
             alert(msg);
        }
}

function get_byte_length (str) {
  return encodeURIComponent(str).replace(/%../g, 'x').length;
}
function truncate(str, limit) {
  if (str == null) {
    return str;
  }
  if (str.length>limit) {
    str=str.substr(0,limit);
  }
  while (get_byte_length(str) > limit) {
    str = str.substr(0, (str.length-1));
  }
 
  return str;
 
}

function interceptPatronTyping(e)
{
   clearTimeout(typingTimer);
   e = e || window.event;

   if ((e.which || e.keyCode) == 13) {
      stoppedTyping(false);
      displayMsg(document.form1.text.value);
      document.form1.submit();
   }
   else {
      if (typing != 1){
         typing=1;
         sendTypingNotification(1);
      }
   }
   typingTimer=setTimeout('stoppedTyping(true)', typingCheckPeriod);
}

function stoppedTyping(requestflag) {
    typing=2;
    if (requestflag) {
      sendTypingNotification(2);
    }
}

function sendTypingNotification(typingValue){

    //This is the url to call for updating the value in the database
    var url = document.form1.qpbaseurl.value +
                   '/crs/servlet/org.oclc.chat.UpdateTypingStatus;jsessionid=' +
                  document.form1.chatsessionid.value + '?qphost=' + document.form1.qphost.value;
    var param = '&agent_type=patron';
        param += '&chatsessionid=' + document.form1.chatsessionid.value;
        param += '&question_id='+document.form1.qid.value;
        param += '&status='+typingValue;
        param += '&dummy='+new Date().getTime(); //this time stamp is just to avoid caching of ajax get request by IE.
    $.get(url+param);

}

// -->

