var dirty = false;
var lastLink = "";

/* [ITanase 09/01/2005]-fixed 934 */
var theCount=0;

/**
 Sets the search button's default text.
 If there isn't anything in there, add the word "Search"
*/
function setDefaultSearchText()
{
	var searchObj = document.getElementById("searchText");

	if(searchObj)
	{
		if(searchObj.value == "")
		{
			searchObj.value = str_btnSearch;
		}else
		{
			searchObj.className = "searchTextHighlight";
		}

		searchObj.onclick = function() {
			if(this.value == str_btnSearch)
			{
				this.value = "";
			}
		}
	}
}

function checkSubmit()
{
 if (theCount == 0)
 {
          theCount++;
          return true;
 }
 else
 {
         return false;
 }

}

function setDirtyTrue(){
 dirty = true;
}

function setDirtyFalse(){
 dirty = false;
}

function verifyDirty (){
 var Obj;
 var lengthObj;
 try{
 lengthObj = document.forms["dataForm"].elements.length;
 strDoYouWant = strDoYouWant;
 }
 catch( e ){  return true; };

 /*[ITanase 08/24/2005] fixed G#934 */
 if (lastLink == "addgroup2.php")
 {
          return true;
 }

 if ( dirty )
 {
	 setDirtyFalse();
   if(window.confirm(strDoYouWant))
	 {
     for ( i = ( lengthObj - 1 ); i >= 0; i--)
     {
        Obj = document.forms["dataForm"].elements[i];
        if( ( Obj.disabled == false	) &&
      			( Obj.type.indexOf("submit") >= 0 ) &&
						( Obj.name.indexOf("Delete") < 0 )
      		 )
      	{
					 createCookie( "lastLink", lastLink)
      	   document.forms["dataForm"].elements[i].click()
					 return false;
      	}
      }
	 }
 }
 return true;
}

//window.onbeforeunload = verifyDirty;
function getLastLink()
{
  lastLink = this;
}

function setEvents(){
 var i, tmp, Obj, lengthObj, setFocusState = true;


 try{
 lengthObj = document.forms["dataForm"].elements.length;
 }
 catch( e ){ return; };

 if ( document.forms["dataForm"].name == "login" )
 {
  return;
 }


 if ( document.forms["dataForm"].name == "change_security" )
 {
  return;
 }
 if ( document.forms["dataForm"].name == "message_form" )
 {
  return;
 }
 if ( document.forms["dataForm"].name == "searchForm" )
 {
  return;
 }
// [EB] // document.forms["dataForm"].onsubmit = setDirtyFalse
 for ( i = 0; i < lengthObj; i++)
 {
  Obj = document.forms["dataForm"].elements[i];

  if( ( Obj.disabled == false	) &&
	    (( Obj.type.indexOf("select") >= 0 ) ||
			 ( Obj.type.indexOf("checkbox") >= 0 ) ||
			 ( Obj.type.indexOf("radio") >= 0 ) ||
			 ( Obj.type.indexOf("text") >= 0 ) ||
			 ( Obj.type.indexOf("password") >= 0 )
		  )
		)
	{
	 if ( setFocusState )
	 {
	   try{
	    document.forms["dataForm"].elements[i].focus();
		 }catch(e){}
		 setFocusState = false;
	 }
	 if ( ( Obj.name.indexOf("text") < 0 ) && ( Obj.name.indexOf("password") < 0 ) )
	 {
	  if ( Obj.onclick == null )
		{
	   Obj.onclick = setDirtyTrue;
		}
		else
		{
		   Obj.onchange = setDirtyTrue;
		}
   }
	 Obj.onkeyup = setDirtyTrue;
	}
 }
 for ( i = 0; i < document.links.length; i++)
 {
	try {
	 tmp = document.links[ i ].toString();
	 if ( tmp.indexOf("#") < 0 )
	 {
	    document.links[ i ].onclick = getLastLink;
	 }
	}
	catch(e){};
 }
}

function disableAll(){
 var nameObj;
 var lengthObj;
 try{
 lengthObj = document.forms["dataForm"].elements.length;
 }
 catch( e ){ return; };

 for ( i = 0; i < lengthObj; i++)
 {
  nameObj = document.forms["dataForm"].elements[i].name;
  if( (( nameObj.indexOf("btn") >= 0 ) && ( nameObj.indexOf("Submit") >= 0 ))
			|| (( nameObj.indexOf("btn") >= 0 ) && ( nameObj.indexOf("Create") >= 0 ))
			|| (( nameObj.indexOf("btn") >= 0 ) && ( nameObj.indexOf("Delete") >= 0 ))
			|| (( nameObj.indexOf("btn") >= 0 ) && ( nameObj.indexOf("AddNewGroup") >= 0 ))
		)
	{
  	document.forms["dataForm"].elements[i].disabled = true;
	}
 }
}

function openWindow(path, wSize, hSize) {
 try{ win.close();} catch(e) {};
 w=(screen.width - wSize)/2;h=(screen.height - hSize)/2;
 win = window.open( path, 'win', 'scrollbars=no,resize=1,left='+w+',top='+h+',width='+wSize+',height='+hSize+',menubar=no,toolbar=no,location=no');
}


// BEGIN functions used to validate fields

function isEmailAddr(email){
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0) {
     var pindex = theStr.indexOf(".",index);
     if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

function validRequired(formField,fieldLabel,verbose){
  var result = true;

  if (formField.value == "")
     result = false;

  if ((verbose) && (!result)) {
     alert(fieldLabel + ' ' + str_jFieldRequired);
     formField.focus();
  }

  return result;
}

function allAlphaNum(str){
  return inValidCharSet(str,"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-+_, ");
}

function allDigits(str){
  return inValidCharSet(str,"0123456789");
}

function allDialChars(str){
//[ITanase 07/12/2005]-fixed G#805-WMM: Spaces are not allowed in the notification phone number fields

	  return inValidCharSet(str,"0123456789!@#%&*()\ |,;:Q");
}

function inValidCharSet(str,charset){
  var result = true;

  for (var i=0;i<str.length;i++)
      if (charset.indexOf(str.substr(i,1))<0){
         result = false;
         break;
      }

  return result;
}

function validEmail(formField,fieldLabel,required){
  var result = true;

  if (required && !validRequired(formField,fieldLabel,true))
     result = false;

  if (result && formField.value)
     if (!isEmailAddr(formField.value)) {
        alert(str_jValidEmail);
        formField.focus();
        result = false;
     }

  return result;
}

function validText(formField,num,fieldLabel,required){
  var result = true;

  if (required && !validRequired(formField,fieldLabel,true))
     result = false;

  if (result && (!allAlphaNum(formField.value))){
     alert(fieldLabel + ' ' + str_jAlphaNumeric);
     formField.focus();
     return false;
  }

  if (result && ((num != 0) && (formField.value.length != num))) {
     alert(num + ' ' + str_jMaxChars + ' ' + fieldLabel + '.');
     formField.focus();
     return false;
  }

  return result;
}

function validInt(formField,num,fieldLabel,required){
  var result = true;

  if (required && !validRequired(formField,fieldLabel,true))
     result = false;

  if (result && (!allDigits(formField.value))){
     alert(fieldLabel + ' ' + str_jNumeric);
     formField.focus();
     return false;
  }

  if ((num != 0) && (formField.value.length != num)) {
     alert(num + ' ' + str_jMaxDigit);
     formField.focus();
     return false;
  }

  return result;
}

function validTime(formField,fieldLabel,required){
  var result = true;

  if (required && !validRequired(formField,fieldLabel,false))
     result = false;

  if (result){
     var elems = formField.value.split(":");

     if((elems.length != 1) && (elems.length != 2))
        result = false;

     if(result){
       var hour = parseInt(elems[0],10);
       result = allDigits(elems[0]) && (hour >= 0) && (hour <= 23)
     }

     if(result)
        if(elems.length == 2){
           var minute = parseInt(elems[1],10);
           result = allDigits(elems[1]) && (minute >= 0) && (minute <= 59)
        } else {
	   if(hour<10)
	      var str_hour = '0' + elems[0];
	   formField.value = str_hour + ':00';
	}
  }

  if (!result) {
     alert(str_jTimeRange);
     formField.focus();
  }

  return result;
}

function validDate(formField,fieldLabel,required){
  var result = true;

  if (required && !validRequired(formField,fieldLabel,false))
     result = false;

  if (result){
     var elems = formField.value.split("/");

     result = (elems.length == 3);

     if (result){
	var month = parseInt(elems[0],10);
	var day = parseInt(elems[1],10);
	var year = parseInt(elems[2],10);
	result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
	allDigits(elems[1]) && (day > 0) && (day < 32) &&
	allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));
     }

     if (!result) {
        alert(str_jDate);
        formField.focus();
     }
  }

  return result;
}

function validPhone(formField,num,fieldLabel,required) 
{
  var result = true;
  // LBarbulescu ULP-7089 : Notification edits will not throw error message when subscriber fails to enter a phone number 
  if (formField.value.length == 0 )
  {
	  alert(fieldLabel + ' ' + 'field cannot be blank ');
	  formField.focus();
	  return false;
  }
  	
  if (required && !validRequired(formField,fieldLabel,true))
     result = false;

  if (result && (!allDialChars(formField.value)))
  {
     alert(fieldLabel + ' ' + str_jDialChar);
     formField.focus();
     return false;
  }

  if ((num != 0) && (formField.value.length > num)) 
  {
     alert(num + ' ' + str_jMaxChars + ' '+ fieldLabel);
     formField.focus();
     return false;
  }

  return result;
}

function validateForm_ChangeSecurity(theForm){
// [CConstantin 05/18/2005] Fix for GForge #482. Allow blank old / new security codes.
  if (!validInt(theForm.pwdChangeCode_old,0,str_jCurrentSecurityCode,false))
      return false;

  if (!validInt(theForm.pwdChangeCode_new,0,str_jNewSecurityCode,false) )
      return false;

  if (!validInt(theForm.pwdChangeCode_verifyNew,0,str_jVerifySecurityCode,false))
      return false;

  setDirtyFalse();
  theForm.submit();
  return true;
}

function validateForm_ChangeEmail(theForm){
// [JMuliawan 03/01/2005] We should allow a blank old email password (e.g. the first time
// 	the user tries to change email password via WMM)
//   if (!validRequired(theForm.pwdChangeCode_old,str_jCurrentEmailPassword,false))
//       return false;

   if (!validRequired(theForm.pwdChangeCode_new,str_jNewEmailPassword,true))
       return false;

   if (!validRequired(theForm.pwdChangeCode_verifyNew,str_jVerifyEmailPassword,true))
       return false;

   setDirtyFalse();
   theForm.submit();
   return true;
}

function validateForm_TransferScreening(theForm){
  if (theForm.rbTransferCallsToThisNumber.checked){
     if (!validPhone(theForm.txtTransferToNumber,40,str_jPhone,true))
     return false;
  }
  setDirtyFalse();
  theForm.submit();
  return true;
}

function validateForm_PhoneNotification(theForm){
  if (!validPhone(theForm.txtPhoneNumber,40,str_jPhone,false))
  return false;

//  [MD - 9-14-04] Need to rebuild the time validation
//
//  if (!validTime(theForm.txtPhoneScheduleFrom,str_jTime,true))
//  return false;
//
//  if (!validTime(theForm.txtPhoneScheduleTo,str_jTime,true))
//  return false;

  if (!validInt(theForm.txtPhoneInitialDelay,0,str_jDelay,true))
  return false;

  if (!validInt(theForm.txtPhoneRings,0,str_jRings,true))
  return false;

  if (!validInt(theForm.txtPhoneDeliveryInterval,0,str_jInterval,true))
  return false;

  setDirtyFalse();
  theForm.submit();
  return true;
}

function validateForm_EmailNotification(theForm){
  if (!validEmail(theForm.txtEmailAddress,str_jEmail,false))
  return false;

  setDirtyFalse();
  theForm.submit();
  return true;
}

function validateForm_DefaultGroups(theForm){
  if (!theForm.txtNewGroupName.value.match(/^[^\\]{1,120}$/)) {
	alert(str_jGroupName+ ' ' + str_jAlphaNumeric);
	return false;
}
  setDirtyFalse();

/* [ITanase 09/01/2005] fixed G#934 */
  if (checkSubmit() == true)
  {
   theForm.submit();
   return true;
  }
  else
  {
   return false;
  }

}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function showModal_Dialog(path_link, width, height)
{

 //IE
    if (window.showModalDialog)
    {
        var sFeatures = "scrollbars: no; resize: 0; dialogWidth: " + width + "px; " + " dialogHeight: "+ height + "px;" + " menubar: no; toolbar: no; location: no; scroll: no; center: yes";
        win = window.showModalDialog(path_link,'REC', sFeatures);
//mozilla/firefox
    }
    else
    {
        var pos_left = (screen.width - width)/2;
        var pos_top = (screen.height - height)/2;

        var sFeatures = "scrollbars=no, resize=0, left=" + pos_left + ", top=" + pos_top + ", width="+ width + ", height=" + height + ", menubar=no, toolbar=no, scroll=no, location=no, modal=yes";
        win = window.open(path_link,'REC', sFeatures);
        win.focus();
    }

 }

//END functions used to validate fields
