
/*Added By Ajit*/

//global date functions
var dtCh= "/";
var minYear=1900;
var maxYear=2100;
var flagAnyError = false;
var errorMessages=new Array('Required', 'Invalid Email', 'Invalid Date', 'Invalid Value', 'Value is too long', 'Password doesn\'t match', 'e-mail address doesn\'t match');
var imgExtArray = new Array(".jpg", ".jpeg", ".png", ".gif", ".bmp");
var docExtArray = new Array(".txt", ".doc", ".rtf", ".pdf", ".docx");
    
// filter the files before Uploading for text file only  
function CheckForTestFile(file, type) 
{
    var fileName=file.value;        

    if (fileName != "")
    {

        //getting the file name
        while (fileName.indexOf("\\") != -1)
            fileName = fileName.slice(fileName.indexOf("\\") + 1);

        //Getting the file extension                     
        var ext = fileName.slice(fileName.indexOf(".")).toLowerCase();

        //matching extension with our given extensions.
        for (var i = 0; i < extArray.length; i++) 
        {
            if (extArray[i] == ext) 
            { 
                return true;
            }
        }  
    }
    file.focus();
    return false;
                
}    

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++)
    {   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year)
{
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) 
{
	for (var i = 1; i <= n; i++) 
	{
		this[i] = 31;
		if (i==4 || i==6 || i==9 || i==11) 
		{
		    this[i] = 30;
		}
		if (i==2) 
		{
		    this[i] = 29;
		}
   } 
   return this
}

function isDate(dtStr)
{
	var daysInMonth = DaysArray(12);
	var pos1=dtStr.indexOf(dtCh);
	var pos2=dtStr.indexOf(dtCh,pos1+1);
	var strMonth=dtStr.substring(0,pos1);
	var strDay=dtStr.substring(pos1+1,pos2);
	var strYear=dtStr.substring(pos2+1);
	strYr=strYear;
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
	}
	month=parseInt(strMonth);
	day=parseInt(strDay);
	year=parseInt(strYr);
	if (pos1==-1 || pos2==-1)
	{
		//alert("The date format should be : mm/dd/yyyy");
		return false;
	}
	if (strMonth.length<1 || month<1 || month>12)
	{
		//alert("Please enter a valid month");
		return false;
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month])
	{
		//alert("Please enter a valid day");
		return false;
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		//alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear);
		return false;
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false)
	{
		//alert("Please enter a valid date");
		return false;
	}
    return true;
}

function isValidDate(cDate)
{
	var dt=cDate;
	if (isDate(dt.value)==false)
	{
		return false;
	}
    return true;
 }
 
function RemoveRequired()
{
    if (!NotErrorMessage(this.value))
    {
        this.value = '';
        if (this.getAttribute('oldval') != null && NotErrorMessage(this.getAttribute('oldval')))
        {
            this.value = this.getAttribute('oldval');

            if (this.createTextRange)
            {
                var FieldRange = this.createTextRange();
                FieldRange.moveStart('character', this.value.length);
                FieldRange.collapse();
                FieldRange.select();
            }
        }
    }
    else
    {
        
    }
    

    if (this.className.match('invalid') && this.type != 'textarea' && this.type != 'select-one')
    {
        this.className = 'input-field';
    }
    
    if (this.type == 'textarea')
    {
        this.className = 'input-textarea';
    }
    
    if (this.type == 'select-one')
    {
        this.className = '';
    }
    
    changeTextBox2Password(this);
    
    return true;
}

function changeTextBox2Password(element)
{
    var validateType = element.getAttribute('alt');
    
	if (validateType != null)
	{
		if (validateType.toLowerCase() == 'password')
		{
            _pwd = document.getElementById(element.id.replace('hidden_',''));
            
            if (_pwd != null)
            {
                _pwd.style.display = '';
                _pwd.focus();
                element.style.display = 'none';
            }
		}
    }
}

function changePassword2TextBox(elementId,message) 
{ 
    var _el = document.getElementById(elementId); 
    
    var _parent = _el.parentNode; 
    
    var iWidth = '150px';
    
    // we remove the element from the DOM (optional as seen below...) 
    //_parent.removeChild( _el ); 
    

    // property is read-only so we replace the element 
    if ( _el.type == 'password' && _el.style.display != 'none') 
    { 
        _el.style.display = 'none';
        
        iWidth = _el.style.width;
        
        var newInput = document.createElement('input');
        newInput.type = 'text';
        
        newInput.id = 'hidden_' + _el.id;
        newInput.value = message;
        newInput.className = 'invalid';
        newInput.style.width = iWidth;
        newInput.setAttribute('alt','password');
        
        newInput.onfocus = RemoveRequired;
        
        _parent.insertBefore(newInput, _el);
    } 

    _el = null; // remove any reference to the old element 
} 


function ValidateControl(control)
{
    var obj;

    if (control == null || control.toString().toLowerCase() == '[object event]')
    {
        obj = this;
    }
    else
    {
        obj = control;
    }
    

    var flagElement = false;
    
    validateType = obj.getAttribute('alt');
    
    if (validateType != null)
	{
	
		params = validateType.split("|");
		
		
		if (params[0] == "req") 
		{	
		
		    if (obj.type == "text" || obj.type == "textarea")
			{
			
			    if (obj.type == "textarea" && (obj.value == "" || obj.value == "Required"))
			    {
			        iCols = obj.cols;
			        obj.className = 'invalid-textarea';
			        obj.value='Required';
			        flagElement = true;
			    }
			    else if (obj.value == "" || obj.value == "Required")
			    {
                    obj.className = 'invalid';
			        obj.value='Required';
			        
			        flagElement = true;
			    }
			    else if (obj.type == "textarea")
			    {
			        obj.className = 'input-textarea';
			    }
			    else
			    {
			        obj.className = 'input-field';
			    }
			    
			}
			
			if (obj.type == 'password')
			{
			    if (obj.value == "")
			    {
                    obj.className = 'invalid';
			        flagElement = true;
			        changePassword2TextBox(obj.id,'Required');
			    }
			    else
			    {
			        obj.className = 'input-field';
			        obj.type = 'password';
			    }
			}
			
			if (obj.type == "radio")
			{
			
				var radio = document.getElementsByName(obj.name);// get the whole set of radio buttons.
				itemchecked = false;
				
				for(var j = 0 ; j < radio.length ; j++) 
				{
					if(radio[j].checked) 
					{
 						itemchecked = true;
 						break;
					}
				}
				
				if (!itemchecked)
				{
				    obj.className = 'invalid noclass';
			        flagElement = true;
					return false;
				}
			}	
			
			if (obj.type == "checkbox")
			{
				
				
				var check = document.getElementsByName(obj.name);// get the whole set of radio buttons.
				itemchecked = false;
				
				for(var j = 0 ; j < check.length ; j++) 
				{
					if(check[j].checked) 
					{
 						itemchecked = true;
 						break;
					}
				}
				
				if (!itemchecked)
				{
					obj.className = 'invalid noclass';
					flagElement = true;
					return false;
				}
			
				
			}	
			
			if (params[1] == "dropdown")
		    {	
			    if (obj.selectedIndex == -1 || obj.selectedIndex == 0)
			    {
				    obj.className = 'invalid';
				    
				    flagElement = true;
				    return false;
			    }
		    }
		}
		
		if (params[1] == "date" && this.value != null && this.value != "" && this.value != "Required") 
		{
			if ((!flagElement) && !isValidDate(obj))
			{
			    if(NotErrorMessage(obj.value))
			        obj.setAttribute('oldval',obj.value)
			        
			    obj.value='Invalid Date';
			    obj.className = 'invalid';
			    flagElement = true;
			    
			}
		}
		
		if (params[1] == "num" && obj.value != null && obj.value != "") 
		{	
			if ((!flagElement) && (!IsDecimal(obj.value)))
			{
			    if(NotErrorMessage(obj.value))
			        obj.setAttribute('oldval',obj.value)
			        
			    obj.value='Invalid Value';
			    obj.className = 'invalid';
			    flagElement = true;
			}
		}

        if (params[1] == "email" && obj.value != null && obj.value != "" && obj.value != "Required") 
		{
			if ((!flagElement) && !validateEmail(obj))
			{
			    if(NotErrorMessage(obj.value))
			        obj.setAttribute('oldval',obj.value)
			        
			    obj.value='Invalid Email';
			    obj.className = 'invalid';
			    flagElement = true;
			}
		}
			
		
		if (params[2] != null && params[2] != '' && isNaN(params[2]) && params[2] > 0) 
		{
			var lenstr = params[2];
			if ((!flagElement) && (obj.type == "textarea" || obj.type == "text") && obj.value.length > lenstr)
			{
				if(NotErrorMessage(obj.value))
			        obj.setAttribute('oldval',obj.value)
			        
			    obj.value='Value is too long';
			    obj.className = 'invalid';
			    flagElement = true;
			}				
		}
		
		
		if (params[1] == "confirm")
		{
		    // pass client id of the control which is to be compared with this control
		    var objCompare = document.getElementById(params[3]);
		    if ((!flagElement) && objCompare != null && objCompare.value != obj.value)
		    {
		        
		        obj.className = 'invalid';
		        if (obj.type == 'password')
		        {
		            obj.value = '';
		            changePassword2TextBox(obj.id,'Password doesn\'t match');
		        }
		        else
		        {
		            if(NotErrorMessage(obj.value))
			            obj.setAttribute('oldval',obj.value)
			        
			        obj.value = "e-mail address doesn\'t match";
		        }
		            
		        flagElement = true;
		    }
		}
		
	}
		
	if (flagElement)
	    return false;
	else
	{
	
	    if (obj.getAttribute('oldval') != null)
	        obj.removeAttribute('oldval');
	        
	    return true;
	}
		
}


function ValidateAllFormFields(btnClicked)
{
	//var numberForms = document.forms.length;
	
	var flagElement = false;
	var buttonGroup = '';
	var firstInvalid;
	
	if (btnClicked != null && btnClicked.getAttribute('group') != null && btnClicked.getAttribute('group') != '')
	        buttonGroup = btnClicked.getAttribute('group');
	        
	firstInvalid = -1;
	
	Frm = document.forms[0];
	
	var validateType = '';
	var params = '';
	
	var controlGroup;
	
	for (var i=0; i<Frm.elements.length; i++) // Loops through all the form's elements		
	{
	    controlGroup = '';
	
	            
	    if (Frm.elements[i].getAttribute('group') != null && Frm.elements[i].getAttribute('group') != '')
	        controlGroup = Frm.elements[i].getAttribute('group');
	        
	    if (buttonGroup == controlGroup)
	    {
	        retval = ValidateControl(Frm.elements[i]);
	
	        if ((!retval) && (firstInvalid == -1))
		        firstInvalid =  i;
	    }
	    
	}		
	

    if (firstInvalid > -1)
    {
        Frm.elements[firstInvalid].scrollIntoView(true);
        return false;
    }
    else
    {
        return true;    
    }
    

}

function findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  }

  function findPosY(obj)
  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }


function isvalidNumber(formObj, type) 
{
	var objName = formatName(formObj);
	var num = formObj.value;
	if (isNaN(num)) {
		return false;
		}
	//num = (parseInt(type) == 1) ? parseFloat(num) : parseInt(num) ;
	return true;
	}

    function IsDecimal(sText)
    {
        var ValidChars = "0123456789.";
        var IsNumber=true;
        var Char;


        for (i = 0; i < sText.length && IsNumber == true; i++) 
        { 
            Char = sText.charAt(i); 
            if (ValidChars.indexOf(Char) == -1) 
            {
                IsNumber = false;
            }
        }
        return IsNumber;

    }

function formatName(o) 
{
	var wStr = (o.name) ? o.name : o.id;
	wStr = wStr.replace(/tb_/g,"");
	wStr = wStr.replace(/rd_/g,"");
	wStr = wStr.replace(/cb_/g,"");
	wStr = wStr.replace(/_/g," ");
	return wStr;
}
	
function formatPhone(phone)
{ 
  var _return=false;
  /*
   * 7181238748 to (718)123-8748
   */ 
  num = phone.value;
  //alert(num);	
  if(num.length != 10)
  { 
    /* 
     * if user did not enter 10 digit phone number then simply print whatever user entered 
     */ 
	//_return=_OUTPUT?num:false;
	_return=num;
  } 
  else
  { 
    /* formating phone number here */ 
	_return="(";
	var ini = num.substring(0,3);
	_return+=ini+")";
	var st = num.substring(3,6);
	_return+=st+"-";
	var end = num.substring(6,10);
	_return+=end;
  }
  phone.value = _return 
}

function validateEmail(formObj)	
{	
    var emailStr = formObj.value;
	//var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
	var emailValReg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/i;
	
   var regex = new RegExp(emailValReg);
   if(!regex.test(emailStr))
   {
   		return false
   	}
   	return true
}

//following function restricts special char
// date :August 21, 2008 
//created by : kinjal 
function IsSpecialChar(e)
{
    var unicode=e.charCode? e.charCode : e.keyCode;

    if(((unicode>=33 && unicode<=47) || (unicode>=58 && unicode<=64) || (unicode>=91 && unicode<=96) || (unicode>=123 && unicode<=153)))
    { 
      return false;
    }
    else
    {
      return true;
    }
}

function setAttributes()
{
    var Frm = document.forms[0];
    
    for (var i=0; i<Frm.elements.length; i++) // Loops through all the form's elements		
	{
		validateType = Frm.elements[i].getAttribute('alt');
		
				
		if (validateType != null)
		{
		
			params = validateType.split("|");
			
			
			if (params[0] == "req") 
			{	
			
			    if (Frm.elements[i].type == "text" || Frm.elements[i].type == "textarea" || Frm.elements[i].type == "textarea" || Frm.elements[i].type == "password" || Frm.elements[i].type == 'select-one' )
				{
				    Frm.elements[i].onfocus = RemoveRequired;
				    if (params[2] != null && params[2] != '' && isNaN(params[2]) && params[2] > 0) 
			        {        			
    				    //Frm.elements[i].maxLength = params[2];
    				    
			        }
				}
				
				Frm.elements[i].onblur = ValidateControl;
			}
		}
	}
}

function NotErrorMessage(strValue)
{
    var strErrorMessages = errorMessages.toString();

    if (strValue == '' || strErrorMessages == '')
        return false;
        
    if (strErrorMessages.indexOf(strValue) == -1)
        return true;
    else
        return false;
}

function setURLForLocal()
{
    if (location.href.match('abc'))
    {
         setCookie('localurl', location.href, 2);
    }
    else
    {
        setCookie('localurl', '', -1);
    }
}

function getCookie(c_name)
{
    if (document.cookie.length>0)
    {
        c_start=document.cookie.indexOf(c_name + "=");
        if (c_start!=-1)
        { 
            c_start=c_start + c_name.length+1; 
            c_end=document.cookie.indexOf(";",c_start);
            if (c_end==-1) 
                c_end=document.cookie.length;
            return unescape(document.cookie.substring(c_start,c_end));
        } 
    }
    return "";
}

function CalculateFeePerHour(c, b, errorId) 
{
    var flag = false;
    res = new Number(c.value);
    if (isNaN(res)) {
        b.innerHTML = "0"
        c.value = "0"
    } else {
    
        if (res < 0.25)
        {
            document.getElementById(errorId).style.color = '#f00';
        }
        else
        {
            document.getElementById(errorId).style.color = '#333';       
            flag = true;
        }
        
        res = res * 60;
        var a = Math.round(res * 100) / 100;
        b.innerHTML = a 
        
        if (flag)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

function CheckFeePerMinute(c, b, errorId) 
{
    var c = document.getElementById(c);
    var b = document.getElementById(b);
    var a = c.value;
    if (CalculateFeePerHour(c, b, errorId))
        return true;
    else
        return false;
}

function ValidateNumber(event)
{
    var isNS4 = (navigator.appName=="Netscape")?1:0;
            	
    if(!isNS4)
    {
        if((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode == 8) || (event.keyCode == 0 || (event.keyCode == 46)))
        {
            event.returnValue = true;      
        }
        else
        {
            event.returnValue = false;
        }
    }
    else
    {
	    
        if((event.which >= 48 && event.which <= 57) || (event.which == 8) || (event.which == 0 || (event.which == 46)))
        {		
            event.returnValue = true;
            return true;
        }
        else
        {
            return false;
        }	
    }
}
function setCookie(c_name,value,expiredays)
{
    var exdate=new Date();
    exdate.setDate(exdate.getDate()+expiredays);
    document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}



    function Message()
    {
        var msg = "Please turn off your browser\'s pop-up blocker off. If you have done so, click on \'OK\' else \'Cancel\'.";
        
        if(confirm(msg))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    
    function showVideo()
    {
         var ifrm = document.getElementById('frmPlay');
         ifrm.src='http://www.gosavant.com/socialmedia/coach/coach.html';
         $find('MPECoach').show();      
    }
    
    function removeSrc()
    {
        var ifrm = document.getElementById('frmPlay');
        var tempSrc = ifrm.src;
        ifrm.src='';
        ifrm.src=tempSrc;
    }
    
function blink(elId){
  var html = '';
  if(document.all){
    
    if(document.getElementById('Text') != null)
    {        
        html += 'var bl = document.all.' + elId + ';';
    }
    
  }
  else if(document.getElementById){
    
    if(document.getElementById('Text') != null)
    {        
        html += 'var bl = document.getElementById("' + elId + '");';
    }        
  }
  
  if(document.all || document.getElementById){
    if(document.getElementById('Text') != null)
    { 
        html += 'bl.style.visibility = ' + 'bl.style.visibility == "hidden" ? "visible" : "hidden"';
        setInterval(html, 550);
    }
  }
}


if (!window.SI) { var SI = {}; };
SI.Files =
{
	htmlClass : 'SI-FILES-STYLIZED',
	fileClass : 'file',
	wrapClass : 'cabinet',
	
	fini : false,
	able : false,
	init : function()
	{
		this.fini = true;
		
		var ie = 0 //@cc_on + @_jscript_version
		if (window.opera || (ie && ie < 5.5) || !document.getElementsByTagName) { return; } // no support for opacity or the DOM
		this.able = true;
		
		var html = document.getElementsByTagName('html')[0];
		html.className += (html.className != '' ? ' ' : '') + this.htmlClass;
	},
	
	stylize : function(elem)
	{
		if (!this.fini) { this.init(); };
		if (!this.able) { return; };
		
		elem.parentNode.file = elem;
		elem.parentNode.onmousemove = function(e)
		{
			if (typeof e == 'undefined') e = window.event;
			if (typeof e.pageY == 'undefined' &&  typeof e.clientX == 'number' && document.documentElement)
			{
				e.pageX = e.clientX + document.documentElement.scrollLeft;
				e.pageY = e.clientY + document.documentElement.scrollTop;
			};

			var ox = oy = 0;
			var elem = this;
			if (elem.offsetParent)
			{
				ox = elem.offsetLeft;
				oy = elem.offsetTop;
				while (elem = elem.offsetParent)
				{
					ox += elem.offsetLeft;
					oy += elem.offsetTop;
				};
			};

			var x = e.pageX - ox;
			var y = e.pageY - oy;
			var w = this.file.offsetWidth;
			var h = this.file.offsetHeight;

			this.file.style.top		= y - (h / 2)  + 'px';
			this.file.style.left	= x - (w - 30) + 'px';
		};
	},
	
	stylizeById : function(id)
	{
		this.stylize(document.getElementById(id));
	},
	
	stylizeAll : function()
	{
		if (!this.fini) { this.init(); };
		if (!this.able) { return; };
		
		var inputs = document.getElementsByTagName('input');
		for (var i = 0; i < inputs.length; i++)
		{
			var input = inputs[i];
			if (input.type == 'file' && input.className.indexOf(this.fileClass) != -1 && input.parentNode.className.indexOf(this.wrapClass) != -1)
			{
				this.stylize(input);
			};
		};
	}
};

