/********************************************************************************************
 * Project Name: http://www.cdprograms.org/
 * Client Name: Congressional District Programs (CDP)
 * Purpose/Function: CDP common javascript functions
 * Developed By: Shohel Anwar
 * Start Date: 28 Feb 2007
 * End Date: 28 Feb 2007
 * Last Modified By:
 * Last Modified On:
 * Reason For Modification:
 * Last Tested On:
 * Last Test Report:
 *********************************************************************************************/

var ie5 = (document.all && !document.getElementById) ? 1 : 0;
var ie6 = (document.all && document.getElementById) ? 1 : 0;
var mozilla = (!document.all && document.getElementById) ? 1 : 0;
var errFristCtrlStr=''; var errMsg=''; var counter=0;

function getObject(e)
{
	var obj;
	if(ie5)
		obj = eval("document.all." + e);
	if(ie6)
		obj = document.getElementById(e);
	else if(mozilla)
		obj = document.getElementById(e);
	//alert(obj);
	return obj;
}

function errFirstCtrl(str)
{

	if(!errFristCtrlStr) errFristCtrlStr=str;
	counter++;
}

/* *********************************************************************************************************
Written by: Shohel Anwar
Date: 4 Mar 2007
DESCRIPTION: filter valid character for a key press
PARAMS- - stringType            :[type of string]  0   - use custom allowable chars
                                                   , 1 - alphabet
                                                   , 2 - alphabet(Only upper case)
                                                   , 3 - alphabet(Only lower case)
                                                   , 4 - alphanumeric
                                                   , 5 - numeric
                                                   , 6 - integer
        - evnt                  :[event handling] event
        - customAllowableChars  :[allowed character set]
        - alertErrorMsg         :[define whether show error message or not] true/false
RETURN-true/false
USAGE-  onkeypress="javascript: return filterInput(5, event,'',false)";
********************************************************************************************************* */
function filterInput(stringType, evnt, customAllowableChars,alertErrorMsg)
{
    var keyCode, Char, inputField, filter = '';
    var alphaLower	= 'abcdefghijklmnopqrstuvwxyz';
    var alphaUpper	= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    var num			= '0123456789';
    var mLen		= 0;

    //catch which key has been pressed
    if(window.event)
    {
        keyCode = window.event.keyCode;
        evnt = window.event;
    }
    else if (evnt)keyCode = evnt.which;
    else return true;

    // Get the Pressed Character
    Char = String.fromCharCode(keyCode);

    //get the working input box
    inputField = evnt.srcElement ? evnt.srcElement : evnt.target || evnt.currentTarget;

    // If the Key Pressed is a CTRL key like Esc, Enter etc - allow
    if((keyCode==null) || (keyCode==0) || (keyCode==8) || (keyCode==9) || (keyCode==13) || (keyCode==27) )
    {
       return true;
    }

    if(stringType == 0)
    {
        filter = customAllowableChars;
    }
    else if(stringType == 1)
    {
        filter = alphaLower+alphaUpper;

    }
    else if(stringType == 2)
    {
        filter = alphaUpper;

    }
    else if(stringType == 3)
    {
        filter = alphaLower;

    }
    else if(stringType == 4)
    {
        filter = alphaLower+alphaUpper+num;

    }
    else if(stringType == 5)
    {
        filter = num + ".-";
    }
    else if(stringType == 6)
    {
        filter = num + "-";
    }
    
    //if allowed character
    if((filter.indexOf(Char) > -1))
    {        
          return true;       
    }

     if(alertErrorMsg)
     {
            alert('This character is not allowed. Only the following characters are allowed\r\n\r\r\n"'+filter+'"');
     }

     return false;
}

/*************************************************************************************************************************************************
WRITTEN BY: Shohel Anwar

DESCRIPTION: Validates that a string contains only valid numbers.
*************************************************************************************************************************************************/
function  validateNumeric(ctrl,message,keepFocusOnError) 
{
    strValue=ctrl.value;
    if(strValue=='')
    {
        return true;
    }
    
	var objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;
	var valid = objRegExp.test(strValue);
	
	if(message!='' && valid==false)
	{
		alert(message);
	}
	
	if(keepFocusOnError && valid==false)
	{
	    ctrl.focus();
	}
	
	return valid;
}

/*************************************************************************************************************************************************
WRITTEN BY: Shohel Anwar

DESCRIPTION: Validates that a string contains only valid integer number.
*************************************************************************************************************************************************/
function validateInteger( strValue, message ) 
{
	var objRegExp  = /(^-?\d\d*$)/;
	
	var valid=objRegExp.test(strValue);

	if(message!='' && valid==false)
	{
		alert(message);
	}
	
	return valid;
}


/*************************************************************************************************************************************************
ADDED BY: Shohel Anwar

DESCRIPTION: Detect browser

TESTED BROWSER: IE7, FF1.5.0.10
*************************************************************************************************************************************************/
function Browser() {

  var ua, s, i;

  this.isIE    = false;  
  this.isOP    = false;  
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "Opera";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isOP = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }

  s = "MSIE";
  if ((i = ua.indexOf(s))) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }
}
