function gcon_InitAllInputFieldsForHelpText()
{
    var aInput;

    aInputs = document.getElementsByTagName("input");
    gcon_AttachEvents(aInputs);
    
    aInputs = document.getElementsByTagName("textarea");
    gcon_AttachEvents(aInputs);
    
}

function gcon_OnBlur(evt)
{
    elem = gcon_GetElementFromEvent(evt);
    elem.className = elem.className.replace("gcon_FOCUS", "");
    elem.className = elem.className.replace("gcon_SmartField", "gcon_SmartField gcon_BLUR");
    

}

function gcon_OnFocus(evt)
{
    elem = gcon_GetElementFromEvent(evt);
    elem.className = elem.className.replace("gcon_BLUR", "");
    elem.className = elem.className.replace("gcon_SmartField", "gcon_SmartField gcon_FOCUS");
    
}


function gcon_OnInput(evt)
{
    elem = gcon_GetElementFromEvent(evt);
    gcon_UpdateEmpty(elem);

}

function gcon_OnPaste(evt)
{

    elem = gcon_GetElementFromEvent(evt);
    gcon_hideInstructionText(elem);

}

function gcon_UpdateEmpty(elem)
{
     if (elem.value == "")
       {
           gcon_showInstructionText(elem);
       }
       else
       {
           gcon_hideInstructionText(elem);
       }

}

function gcon_hideInstructionText(elem)
{
    if (elem.className.indexOf("gcon_EMPTY") > -1)
    {
        elem.className = elem.className.replace("gcon_EMPTY", "");
    }
}

function gcon_showInstructionText(elem)
{
   if (elem.className.indexOf("gcon_EMPTY") == -1)
   {
       elem.className = elem.className.replace("gcon_SmartField", "gcon_SmartField gcon_EMPTY");
   }


}

function gcon_UpdateBlur(elem)
{
    if (elem.className.indexOf("gcon_BLUR") == -1)
    {
       if (elem.className.indexOf("gcon_FOCUS") == -1)
       {
            elem.className = elem.className.replace("gcon_SmartField", "gcon_SmartField gcon_BLUR");
       }
    
    }

}


function gcon_GetElementFromEvent(evt)
{

    TempEvt = (evt) ? evt : ((window.event) ? window.event : "");
    return (TempEvt.target) ? TempEvt.target : TempEvt.srcElement;
}

function gcon_AttachEvents(aInputs)
{
    for (var i = 0; i < aInputs.length; i++)
    {
       var strClassName;
       var elem = aInputs[i];
       
       strClassName = elem.className;
       if (strClassName.indexOf("gcon_SmartField") > -1)
       {

           gcon_addEvent(elem, "blur", gcon_OnBlur);
           gcon_addEvent(elem, "focus", gcon_OnFocus);
           
           /* These all handle keystrokes and right-click paste operations in FF and ID */
           gcon_addEvent(elem, "input", gcon_OnInput); 
           gcon_addEvent(elem, "keyup", gcon_OnInput);
           gcon_addEvent(elem, "paste", gcon_OnPaste);
         
           
           gcon_UpdateEmpty(elem);
           gcon_UpdateBlur(elem);
       }    
    }

}


function gcon_addEvent( obj, type, fn )
{
	if (obj.addEventListener)
		obj.addEventListener( type, fn, false );
	else if (obj.attachEvent)
	{
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}
}

function gcon_removeEvent( obj, type, fn )
{
	if (obj.removeEventListener)
		obj.removeEventListener( type, fn, false );
	else if (obj.detachEvent)
	{
		obj.detachEvent( "on"+type, obj[type+fn] );
		obj[type+fn] = null;
		obj["e"+type+fn] = null;
	}
}