/*
	Author  			: Varun Muriyanat
	Property of			: Orchid software
	Date				: 25 June 2007 
	Last modified date  : 25 June 2007
	Modified By			: Varun Muriyanat
*/



/*
Listener wrapper
@param domObject			Dom element for which the listener is for
@param callBackHandler 		Actual handler to be executed
@param eventType			specifies whether its a click, mouseover etc.
*/

function listenerWrapper(domObject, callBackHandler, eventType) {	
	var ieEvent='';
	var nonIeEvent='';
	
	if(returnTrueIfIE()) {
		//handle IE		
		//default event is onclick		
		ieEvent = 'on' + returnEvent(eventType);
		
		//domObject.attachEvent('onclick',callBackHandler);
		domObject.attachEvent(ieEvent,callBackHandler);
		
	} else {
		//handler non-IE	
		
		nonIeEvent=returnEvent(eventType);		
	
		//domObject.addEventListener('click',callBackHandler,false);		
		//domObject.addEventListener(nonIeEvent,callBackHandler,false);		
		domObject.addEventListener(nonIeEvent,callBackHandler,true);	
		//stopBubble(e); 
	}
}


/*
	Returns true if browser is IE else false
*/

function returnTrueIfIE(){
	var browserType = navigator.appName;
		if(browserType.match(/explorer/i) ) {		//IE
			//alert("IE");
			return true;
		} else {			
			//alert("non-IE");
			return false; //non-IE
		}
}

/*
	Returns the event, sets click as default if invalid event type passed
*/
function returnEvent(eventType) {	
	var nonIeEvent='';
	
	switch(eventType) {		
	
		case 'click':				
		case 'mouseover':
		case 'mouseout':	
		case 'focus':
		case 'blur':		
		case 'keypress':
		case 'keydown':
		case 'keyup':
		case 'load':
		case 'unload':
		case 'change':
		case 'submit':
		case 'abort':		
		case 'ondblclick':
		case 'reset':
		case 'select':
		case 'error':
		case 'resize':
			nonIeEvent=eventType;
			break;
		default:			
			nonIeEvent='click';
			break;					
		
	}

	return nonIeEvent;
   		
}



function stopDefault(e) {
	//prevent default browser action
	if(e && e.preventDefault) 
		e.preventDefault(); //w3c standard
	else
		window.event.returnValue=false; //handle IE
		
	return false;	
}

function stopBubble(e) {
	if(e && e.stopPropagation)
		e.stopPropagation(); // stops bubbling
	else
		window.event.cancelBubbling=true;
}




function getEvent(e) {
	return (e || window.event);
}

function getSource(e) {
	//var targ=null;
	var targ;
	
	/*
	if(e.target) {
		targ = e.target;
	} else if(e.srcElement) {
		targ = e.srcElement;
	}
	*/
	
	targ = e.target || e.srcElement;
	
	//var targ = e.target || e.srcElement;
	
	/*
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;
		
		*/
	return targ;
}




