

// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()-. ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;
var ZIPCodeDelimiters = "-";
var validZIPCodeChars = digits + ZIPCodeDelimiters
var digitsInZIPCode1 = 5
var digitsInZIPCode2 = 9


function isZIPCode(s)
{  if (isEmpty(s)) 
       if (isZIPCode.arguments.length == 1) return defaultEmptyOK;
       else return (isZIPCode.arguments[1] == true);
   return (isInteger(s) && 
            ((s.length == digitsInZIPCode1) ||
             (s.length == digitsInZIPCode2)))
}

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

/*function checkInternationalPhone(strPhone)
{
	s = stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}*/

// returns true if the string is a US phone number formatted as...
// (000)000-0000, (000) 000-0000, 000-000-0000, 000.000.0000, 000 000 0000, 0000000000
function isphone(str){
	var s = str;
	if (s.charAt(0)=='0'){
		return false;
	}
	if (s.length==13 && isnum(s)){
		return true
	}
	return false;
}

/*function isphone(phonenumber){
	if (checkInternationalPhone(phonenumber)==false){
		return false
	}
	return true
}*/
/*******************/

function isalpha(value)
{              
	
    var charpos = value.search("[^ A-Za-z]"); 
    if(trim(value).length > 0 &&  charpos >= 0) 
    {                                  
        return false; 
    } 
    return true;
}

function isnum(value)
{
    var charpos = value.search("[^0-9]"); 
    if(trim(value).length > 0 &&  charpos >= 0) 
    {                                  
        return false; 
    } 
    return true;
}

function isalphanum(value)
{
 var objectpos = value.search("[^A-Za-z]"); 
  if(objectpos == 0)
  {
    return false; 
  }
  var charpos = value.search("[^A-Za-z0-9]"); 
  if(value.length > 0 &&  charpos >= 0) 
  { 
    return false; 
  } 
  return true;
 }
function is_alpha_and_number(value){
	
	if ((value.search(/[a-zA-Z]+/)>-1) && (value.search(/[0-9]+/) > -1)) {
		return true;
	}
	return false;
}
function check_special_character_for_login(value)
{
	var charpos = value.search("[!@#$%^&*?\'\"\`]"); 
	if(value.length > 0 &&  charpos < 0) 
	{ 
    	return false; 
	}
	return true;
}
function check_special_character(value)
{
	var charpos = value.search(/[\'\"\`]/);
	if(charpos<0)
		return false;
	else
		return true;
}
function isemail(email)
{
    if(email == '')
    {
        return true;
    }
    var splitted = email.match("^(.+)@(.+)$");
    if(splitted == null) return false;
    if(splitted[1] != null )
    {
      var regexp_user=/^\"?[\w-_\.]*\"?$/;
      if(splitted[1].match(regexp_user) == null) return false;
    }
    if(splitted[2] != null)
    {
      var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
      if(splitted[2].match(regexp_domain) == null) 
      {
	    var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
	    if(splitted[2].match(regexp_ip) == null) return false;
      }
      return true;
    }
    return false;
}
function trim(s)
{	
    if((s==null)||(typeof(s)!='string')||!s.length)
        return'';
    return s.replace(/^\s+/,'').replace(/\s+$/,'')
    
}


function truncateText(p, len)
{
    //var p = document.getElementById(eid);
    if (p) {
      var trunc = trim(p.innerHTML);
      p.title = trim(p.innerHTML);
      if (trunc.length > len) {
    
        /* Truncate the content of the P, then go back to the end of the
           previous word to ensure that we don't truncate in the middle of
           a word */
        trunc = trunc.substring(0, len);
        trunc = trunc.replace(/\w+$/, '');
    
        /* Add an ellipses to the end and make it a link that expands
           the paragraph back to its original size */
        trunc += "...";
        /*trunc += '<a href="#" ' +
          'onclick="this.parentNode.innerHTML=' +
          'unescape(\''+escape(p.innerHTML)+'\');return false;">' +
          '...<\/a>';*/
        p.innerHTML = trunc;
      }
    }
}
function open_url(url)
{
    if (confirm("You are opening a new window. Please make sure that any pop-up blocking software is disabled."))
    {
        window.open(url);
    }   
}

function IsUrl(s)
{
	if(s.charAt(s.length-1)=='.'){
		return false
	}else{
		return s.match(/^(ht|f)tps?:\/\/[a-z0-9-\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?$/);		
	}
     
}

function go_to_top()
{
	window.scrollTo(4,4);
}
function focus_first()
{
	document.forms[0].elements[0].focus();
	
}
/////////////////////////////////  used in validation ///////////////

var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x) {return(x<0||x>9?"":"0")+x}

// ------------------------------------------------------------------
// isDate ( date_string, format_string )
// Returns true if date string matches format of format string and
// is a valid date. Else returns false.
// It is recommended that you trim whitespace around the value before
// passing it to this function, as whitespace is NOT ignored!
// ------------------------------------------------------------------
function isDate(val,format) {
	var date=getDateFromFormat(val,format);
	if (date==0) { return false; }
	return true;
	}

// -------------------------------------------------------------------
// compareDates(date1,date1format,date2,date2format)
//   Compare two date strings to see which is greater.
//   Returns:
//   1 if date1 is greater than date2
//   0 if date2 is greater than date1 of if they are the same
//  -1 if either of the dates is in an invalid format
// -------------------------------------------------------------------
function compareDates(date1,dateformat1,date2,dateformat2) {
	var d1=getDateFromFormat(date1,dateformat1);
	var d2=getDateFromFormat(date2,dateformat2);
	if (d1==0 || d2==0) {
		return -1;
		}
	else if (d1 > d2) {
		return 1;
		}
	return 0;
	}

// ------------------------------------------------------------------
// formatDate (date_object, format)
// Returns a date in the output format specified.
// The format string uses the same abbreviations as in getDateFromFormat()
// ------------------------------------------------------------------
function formatDate(date,format) {
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	var y=date.getYear()+"";
	var M=date.getMonth()+1;
	var d=date.getDate();
	var E=date.getDay();
	var H=date.getHours();
	var m=date.getMinutes();
	var s=date.getSeconds();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	// Convert real date parts into formatted versions
	var value=new Object();
	if (y.length < 4) {y=""+(y-0+1900);}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=LZ(M);
	value["MMM"]=MONTH_NAMES[M-1];
	value["NNN"]=MONTH_NAMES[M+11];
	value["d"]=d;
	value["dd"]=LZ(d);
	value["E"]=DAY_NAMES[E+7];
	value["EE"]=DAY_NAMES[E];
	value["H"]=H;
	value["HH"]=LZ(H);
	if (H==0){value["h"]=12;}
	else if (H>12){value["h"]=H-12;}
	else {value["h"]=H;}
	value["hh"]=LZ(value["h"]);
	if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	value["k"]=H+1;
	value["KK"]=LZ(value["K"]);
	value["kk"]=LZ(value["k"]);
	if (H > 11) { value["a"]="PM"; }
	else { value["a"]="AM"; }
	value["m"]=m;
	value["mm"]=LZ(m);
	value["s"]=s;
	value["ss"]=LZ(s);
	while (i_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		if (value[token] != null) { result=result + value[token]; }
		else { result=result + token; }
		}
	return result;
	}
	
// ------------------------------------------------------------------
// Utility functions for parsing in getDateFromFormat()
// ------------------------------------------------------------------
function _isInteger(val) {
	var digits="1234567890";
	for (var i=0; i < val.length; i++) {
		if (digits.indexOf(val.charAt(i))==-1) { return false; }
		}
	return true;
	}
function _getInt(str,i,minlength,maxlength) {
	for (var x=maxlength; x>=minlength; x--) {
		var token=str.substring(i,i+x);
		if (token.length < minlength) { return null; }
		if (_isInteger(token)) { return token; }
		}
	return null;
	}

function isTime(val){
    var a = val.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
    if (a == null) { return false;}
    if (a[1]>24 || a[3]>60 || a[4]>60)
    {
      return false;
    }
    return true;
} 
function show_loading(msg){
	
	document.getElementById('overlay').style.display="block";
	document.getElementById('processing_popup').style.display="block";
	document.getElementById('processing_image').src = "../images/loading_bar.gif";
}