// JScript source code
var eventModel;
function characterManger()
{         
              //declare all events here for this object - any event is allowed to be cheked
              this.objToCheck=[];   
              this.eventToCheck=[];	                             
}

 var newtracer=null;
 characterManger.prototype.appendEvents= function(objToTrack,eventName)
{       
          //publish the objects actions to its container, and hold the events in an array to fire on checking each seperate model 
          this.objToCheck.push(document.getElementById(objToTrack));   
          this.eventToCheck.push(eventName);           
}; 

function initializeTrackingDevice(e)
{
                    //check the event model for this browser
                eventModel= document.all  ?   window.event : e;	       
                    //instantiate a new model - generic type of event to be checked on screen
            	newtracer = new  characterManger();
                    //this tracer only checks the keyevents on this speciffic object - can be any event/object [generic encapsulation]   
              //       newtracer.appendEvents("g_keywords","onkeydown");
	//	 newtracer.appendEvents("keywords2","onkeydown");  
		 newtracer.appendEvents("g_keywords","onkeyup");
		 newtracer.appendEvents("c_keywords","onkeyup");
		 newtracer.appendEvents("keywords2","onkeyup");   
                     //add some more events
 	//	 newtracer.appendEvents("g_keywords","onchange");
	//	 newtracer.appendEvents("keywords2","onchange"); 
                    newtracer.appendEvents("submit_g_search","onclick");          
                    newtracer.appendEvents("submit_c_search","onclick");   
                     newtracer.appendEvents("submit","onclick");      
                     if (newtracer.objToCheck.length>0)
                    {
                              //start tracing!                               
                              if(newtracer.objToCheck.length>0)
                             {
                                        var xfunc=0;
                                        for (var func in newtracer.objToCheck)
                                        {             
                                                try
                                                {                                               
                                                           var theType=newtracer.objToCheck[xfunc].getAttribute("type").toLowerCase();  						                                                                                        
                                                           if (newtracer.objToCheck[xfunc].nodeName=="INPUT" &&
								           theType=="text")
                                                           {
							      if (document.all)
							      {
                                                            	          newtracer.objToCheck[xfunc].setAttribute(newtracer.eventToCheck[xfunc],
                                                                                                                                  function _callBackEventHanlder()
                                                                                                                                 {         
								                                                            preKeyPress=this.value;																							   
                                                                                                                                            checkEvent(this,event);                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                                 }    );
							               }
					                         else
					                         {					                         
						                    newtracer.objToCheck[xfunc].setAttribute(newtracer.eventToCheck[xfunc].toString(),
						                                                                                                              "javascript:checkEvent(this,event);");
					                         }
          							   
                                                             } 
                                                                                                              
						 if (newtracer.objToCheck[xfunc].nodeName=="INPUT" &&
								 theType=="submit")
						 {						
    
						          document.getElementById("wlcsearch").setAttribute("onsubmit",
						                                                                                               function _checkSubmit()
				                                                                                                                             {
				                                                                                                                                         return ensureCheck();
				                                                                                                                             });  
							newtracer.objToCheck[xfunc].setAttribute(newtracer.eventToCheck[xfunc],
                                                                                                                        function _callBackEventHanlder()
                                                                                                                       {  	                                                                                                                         																																				   
                                                                                                                           issubmitAllowed(this,event);                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                       }    );
					         }	                                                     
                                                     }
                                                    catch(objNotOnPage)
                                                   {
                                                            //this speciffic object is not on this page -resume next
                                                   }      
                                                     xfunc=xfunc+1;    
                                        }  
                             }   
                    }  
}


var preKeyPress="";
var submitAllowed=false;
function checkEvent(obj,e)
{         	    	                            
	var objChanging=obj;
	eventModel= (window.event) ? window.event : e;	 
	var charTyped=document.all ? eventModel.keyCode : eventModel.which;
	if ((charTyped!=192 && charTyped!=189) )
	{
		//ALLOW
		submitAllowed=true;		
	}
	else
	{
		submitAllowed=true;
		objChanging.value=preKeyPress.replace("'",""); 
		//eventModel.preventDefault();		
		window.CancelBubble=true;	
	}
		
	objChanging.value=objChanging.value.replace("'","");
	objChanging.value=objChanging.value.replace("\"","");		
	objChanging.value=objChanging.value.replace("/","");
	objChanging.value=objChanging.value.replace("\\","");
}

function issubmitAllowed(objSubmit)
{              
	return ensureCheck();
}

function ensureCheck()
{	
	if (newtracer.objToCheck.length>0)
	{         
	          submitAllowed=true;	
		var xtracers=0;	
		for (var traceElement in newtracer.objToCheck)
		{		   		       
		                           if (newtracer.objToCheck[xtracers]!=null)
		                           {      
			                              if (newtracer.objToCheck[xtracers].getAttribute("type")=="text")
			                              {             
				                              if (newtracer.objToCheck[xtracers].value.indexOf("'" )>=0)
				                              {             
					                              newtracer.objToCheck[xtracers].value=
					                                         newtracer.objToCheck[xtracers].value.replace("'","");					                        
					                              submitAllowed=true;   					
				                              }
                    				            
				                              if (newtracer.objToCheck[xtracers].value.indexOf("\"")>=0)
				                              {
				                                         newtracer.objToCheck[xtracers].value   =
					                                             newtracer.objToCheck[xtracers].value.replace("\"","");
					                             submitAllowed=true;   							
				                              }
				                              if (newtracer.objToCheck[xtracers].value.indexOf("/","")>=0)
				                              {				                                  
					                           newtracer.objToCheck[xtracers].value=  
					                              newtracer.objToCheck[xtracers].value.replace("/","");
					                             submitAllowed=true;   						
				                              }
			                              }
			                  }  			
		          	xtracers=xtracers+1;
		}			
	          return submitAllowed;
	}
	else
	{        //when page objects not initialized dont refresh
		submitAllowed=false;
		return false;	
	}
}

function leakCheck(e)
{                 
         var eventChar= (document.all) ? window.event.keyCode : e.which; 
          if (eventChar==13)
         {                                             
                    //always return false,except if no rogue chars found 
                    var isallowed =ensureCheck();                           
                    return isallowed;              
          } 
          else
          {       //action allowed
                    return true;
          }                 	 
}

function checkSubmit(e)
{                	
	if(document.documentMode){}
	else{
		if(ensureCheck())
		document.forms[0].submit();	
	}
}

$(document).ready(function()
{
//initializer
if(document.documentMode){}
else{initializeTrackingDevice(); 
	$(document).keypress( function(e){ leakCheck(e); });
}
});

