var gMouseXY;

YAHOO.util.Event.addListener( window, 'load', function() {
	YAHOO.util.Event.on (document.body, 'mousemove', function(e){
	  gMouseXY = YAHOO.util.Event.getXY(e);
	})
});

function setLayerVisibleXY( LayerName, XPos, YPos )
{
	var Element = document.getElementById( LayerName );
	Element.style.top = YPos + "px";
	Element.style.left = XPos + "px";		
	Element.style.visibility = "visible";	
}

function setLayerHidden( LayerName )
{
	var Element = document.getElementById( LayerName );
	Element.style.visibility = "hidden";
}

function textSearch()
{
	var oSearchForm = document.getElementById( "searchform" );
	var sUrl = oSearchForm.elements["searchurl"].value;
	var sSearch = oSearchForm.elements["searchbox"].value;
	if( window.mytimeout ) 
		window.clearTimeout( window.mytimeout );
						
	window.mytimeout = window.setTimeout(function(){ makeRequest( sUrl + "&s=" + sSearch, "results" ) }, 500 );
}

function showEnhancedLink( 	oElement,
														DetailLink,
														DetailLayer )
{
	if ( DetailLink != "" )
		makeRequest( DetailLink, DetailLayer + "text" );
		
	var aXYPos = YAHOO.util.Dom.getXY( oElement );
	var iHeight = oElement.offsetHeight;
	
	if ( iHeight == 0 )
		iHeight = 12;
	
	setLayerVisibleXY( DetailLayer, aXYPos[0] + 20, aXYPos[1] + iHeight ); 	
}

function hideEnhancedLink( 	oElement,
														oEvent,
														DetailLayer )
{
	if ( IsCurrentTarget( oElement, oEvent ) == false )
		return;

	cancelRequest();
	setLayerHidden( DetailLayer );
}

function showModal(	ModalLink,
										ModalLayer ) 
{	
	if ( ModalLink != "" )
		makeRequest( ModalLink, ModalLayer );	
	
	window.mytimeout = window.setTimeout(function(){ setLayerVisibleXY( "modal", 0, 0 ) }, 50 );
}

function hideModal() 
{
	cancelRequest();
	setLayerHidden( "modal" );
}

function ActivityCalendar()
{
    var Dom = YAHOO.util.Dom,
        Event = YAHOO.util.Event,
        cal1,
        over_cal = false,
        cur_field = '';

	  var setupListeners = function() {
        Event.addListener('cal1Container', 'mouseover', function() {
            over_cal = true;
        });
        Event.addListener('cal1Container', 'mouseout', function() {
            over_cal = false;
        });
    }

    var getDate = function() {
            var calDate = this.getSelectedDates()[0];
            calDate = calDate.getDate() + '-' + (calDate.getMonth() + 1) + '-' + calDate.getFullYear();
            cur_field.value = calDate;            
            over_cal = false;
            hideCal();
    }

    var showCal = function(ev) {
        var tar = Event.getTarget(ev);
        cur_field = tar;
    
        var xy = Dom.getXY(tar),
            date = Dom.get(tar).value;
        if (date) {
            cal1.cfg.setProperty('selected', date );
            cal1.cfg.setProperty('pagedate', date );
        } else {
            cal1.cfg.setProperty('selected', '');
            cal1.cfg.setProperty('pagedate', new Date(), true);
        }
        cal1.render();
        Dom.setStyle('cal1Container', 'display', 'block');
        xy[1] = xy[1] + 20;
        Dom.setXY('cal1Container', xy);
    }

    var hideCal = function() {
        if (!over_cal) {
            Dom.setStyle('cal1Container', 'display', 'none');
        }
    }
    
    cal1 = new YAHOO.widget.Calendar("cal1","cal1Container");
		cal1.cfg.setProperty("DATE_RANGE_DELIMITER", "+");
		cal1.cfg.setProperty("DATE_FIELD_DELIMITER", "-");
		cal1.cfg.setProperty("MDY_DAY_POSITION", 1);
		cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);
		cal1.cfg.setProperty("MDY_YEAR_POSITION", 3);
		cal1.cfg.setProperty("MY_MONTH_POSITION", 2);
		cal1.cfg.setProperty("MY_YEAR_POSITION", 3);

    cal1.selectEvent.subscribe(getDate, cal1, true);
    cal1.renderEvent.subscribe(setupListeners, cal1, true);

		if ( document.getElementById( "DateEnd" ))
		{
	    Event.addListener(['DateStart', 'DateDue', 'DateEnd' ], 'focus', showCal);
	    Event.addListener(['DateStart', 'DateDue', 'DateEnd' ], 'blur', hideCal);
		}
		else
		{
	    Event.addListener(['DateStart', 'DateDue'], 'focus', showCal);
	    Event.addListener(['DateStart', 'DateDue'], 'blur', hideCal);
    }
    cal1.render();   
}

function InitCHSearch()
{
	var Dom = YAHOO.util.Dom,
		Event = YAHOO.util.Event;

	var onTypeFilterSelect = function ( event ) {
		
		var choseOption = this.options[this.selectedIndex];
		var nameSearch = document.getElementById( "namesearch" );
		var Search = nameSearch.value;		
		
		makeRequest( choseOption.value + '&s=' + urlencode( Search ), '' );		
	}

	var onNameSearchKeyUp = function ( event ) {
		var typeFilter = document.getElementById( "typefilter" );
		var choseOption = typeFilter.options[typeFilter.selectedIndex];
		var Search = this.value;
		 
		if( window.mytimeout ) 
			window.clearTimeout( window.mytimeout );
			
		window.mytimeout = window.setTimeout( function(){ 
				makeRequest( choseOption.value + '&s=' + urlencode( Search ), '' ) }, 500 );
	}

	Event.addListener( 'typefilter', 'change', onTypeFilterSelect );
	Event.addListener( 'namesearch', 'keyup', onNameSearchKeyUp );
}

function InitCustomerHome()
{
	var Dom = YAHOO.util.Dom,
		Event = YAHOO.util.Event;

	var onCLUlEnter = function (event, matchedEl, container) {
		if ( matchedEl.className == "line" )
			showEnhancedLink( matchedEl, matchedEl.getAttribute( 'link1' ), 'longlayer' );
	};

	var onCLUlLeave = function (event, matchedEl, container) {
		if ( matchedEl.className == "line" )
		{
			cancelRequest();
			setLayerHidden( 'longlayer' );
		}
	};

	var onCLLiClick = function (event, matchedEl, container) {
		var parentNode = matchedEl.parentNode;
		
		if ( parentNode.className != "line" )
			return;

		switch ( parseInt( matchedEl.getAttribute( 'link' )))
		{
			case 2:
				window.location = parentNode.getAttribute( 'link2' );
				break;
				
			case 3:
				cancelRequest();
				setLayerHidden( 'longlayer' );
				showModal(parentNode.getAttribute( 'link3' ), 'modaltext' )
				break;
				
			case 4:
				cancelRequest();
				setLayerHidden( 'longlayer' );
				if ( confirm( 'Are you sure you want to do this?' ))
					makeRequest( parentNode.getAttribute( 'link4' ), '' );
				break;
		}
	};

//	Event.delegate( 'customerlist', 'mouseenter', onCLUlEnter, 'ul' );
//	Event.delegate( 'customerlist', 'mouseleave', onCLUlLeave, 'ul' );
	Event.delegate( 'customerlist', 'click', onCLLiClick, 'li' );

	InitCHSearch();
}

function InitCVSearch()
{
	var Dom = YAHOO.util.Dom,
		Event = YAHOO.util.Event;

	var onFilterSelect = function ( event ) {
		var fieldName = this.getAttribute( 'fieldname' );
		var choseOption = this.options[this.selectedIndex];
		var nameSearch = document.getElementById( fieldName + "searchfield" );
		var Search = nameSearch.value;		
		
		makeRequest( choseOption.value + '&s=' + urlencode( Search ), '' );		
	}

	var onNameSearchKeyUp = function ( event ) {
		var fieldName = this.getAttribute( 'fieldname' );
		var typeFilter = document.getElementById( fieldName + "filter" );
		var choseOption = typeFilter.options[typeFilter.selectedIndex];
		var Search = this.value;
		 
		if( window.mytimeout ) 
			window.clearTimeout( window.mytimeout );
			
		window.mytimeout = window.setTimeout( function(){ 
				makeRequest( choseOption.value + '&s=' + urlencode( Search ), '' ) }, 500 );
	}	

	Event.addListener( 'activityfilter', 'change', onFilterSelect );
	Event.addListener( 'activitysearchfield', 'keyup', onNameSearchKeyUp );

	Event.addListener( 'eventfilter', 'change', onFilterSelect );
	Event.addListener( 'eventsearchfield', 'keyup', onNameSearchKeyUp );	
}

function InitCustomerView()
{
	var Dom = YAHOO.util.Dom,
		Event = YAHOO.util.Event;
	
	var onELUlEnter = function (event, matchedEl, container) {
		if ( matchedEl.className == "line" )
			showEnhancedLink( matchedEl, matchedEl.getAttribute( 'link1' ), 'longlayer' );
	};

	var onELUlLeave = function (event, matchedEl, container) {
		if ( matchedEl.className == "line" )
		{
			cancelRequest();
			setLayerHidden( 'longlayer' );
		}
	};

	var onELLiClick = function (event, matchedEl, container) {
		var parentNode = matchedEl.parentNode;
		switch ( parseInt( matchedEl.getAttribute( 'link' )))
		{
			case 2:
				cancelRequest();
				setLayerHidden( 'longlayer' );
				showModal(parentNode.getAttribute( 'link2' ), 'modaltext' )
				break;
				
			case 3:
				cancelRequest();
				setLayerHidden( 'longlayer' );
				if ( confirm( 'Are you sure you want to do this?' ))
					makeRequest( parentNode.getAttribute( 'link3' ), '' );
				break;
		}
	};

	var onCLUlEnter = function (event, matchedEl, container) {
		if ( matchedEl.className == "line" )
			showEnhancedLink( matchedEl, matchedEl.getAttribute( 'link1' ), 'shortlayer' );
	};

	var onCLUlLeave = function (event, matchedEl, container) {
		if ( matchedEl.className == "line" )
		{
			cancelRequest();
			setLayerHidden( 'shortlayer' );
		}
	};

	var onCLLiClick = function (event, matchedEl, container) {
		var parentNode = matchedEl.parentNode;
		switch ( parseInt( matchedEl.getAttribute( 'link' )))
		{
			case 2:
				cancelRequest();
				setLayerHidden( 'longlayer' );
				showModal(parentNode.getAttribute( 'link2' ), 'modaltext' )
				break;
				
			case 3:
				cancelRequest();
				setLayerHidden( 'longlayer' );
				if ( confirm( 'Are you sure you want to delete?' ))
					makeRequest( parentNode.getAttribute( 'link3' ), '' );
				break;
		}
	};



	Event.delegate( 'eventlist', 'mouseenter', onELUlEnter, 'ul' );
	Event.delegate( 'eventlist', 'mouseleave', onELUlLeave, 'ul' );
	Event.delegate( 'eventlist', 'click', onELLiClick, 'li' );

	Event.delegate( 'activitylist', 'mouseenter', onELUlEnter, 'ul' );
	Event.delegate( 'activitylist', 'mouseleave', onELUlLeave, 'ul' );
	Event.delegate( 'activitylist', 'click', onELLiClick, 'li' );

	Event.delegate( 'contactlist', 'mouseenter', onCLUlEnter, 'ul' );
	Event.delegate( 'contactlist', 'mouseleave', onCLUlLeave, 'ul' );
	Event.delegate( 'contactlist', 'click', onCLLiClick, 'li' );
	
	InitCVSearch();
}


function InitManageHome()
{
	var Dom = YAHOO.util.Dom,
		Event = YAHOO.util.Event;

	var onUlEnter = function (event, matchedEl, container) {
		if ( matchedEl.className == "line" && matchedEl.getAttribute( "link1" ))
			showEnhancedLink( matchedEl, matchedEl.getAttribute( "link1" ), "longlayer" );
	};

	var onUlLeave = function (event, matchedEl, container) {
		if ( matchedEl.className == "line" && matchedEl.getAttribute( "link1" ))
		{
			cancelRequest();
			setLayerHidden( 'longlayer' );
		}
	};

	var onLiClick = function (event, matchedEl, container) {
		var parentNode = matchedEl.parentNode;
		
		if ( parentNode.className != "line" )
			return;

		switch ( parseInt( matchedEl.getAttribute( 'link' )))
		{
			case 2:
				window.location = parentNode.getAttribute( 'link2' );
				break;
				
			case 3:
				cancelRequest();
				setLayerHidden( 'longlayer' );
				showModal(parentNode.getAttribute( 'link3' ), 'modaltext' )
			break;
				
			case 4:
				cancelRequest();
				setLayerHidden( 'longlayer' );
				if ( confirm( 'Are you sure you want to do this?' ))
					makeRequest( parentNode.getAttribute( 'link4' ), '' );
				break;
		}
	};

	Event.delegate( 'userlist', 'mouseenter', onUlEnter, 'ul' );
	Event.delegate( 'userlist', 'mouseleave', onUlLeave, 'ul' );
	Event.delegate( 'userlist', 'click', onLiClick, 'li' );
}

function DoLogin( RequestedPage )
{
	showModal( '', '' );
}

function submitEnter( myField, myEvent )
{
	var keycode;
	if ( window.event ) 
		keycode = window.event.keyCode;
	else 
		if (myEvent) 
			keycode = myEvent.which;
		else 
			return true;
	
	if (keycode == 13)
	{
		myField.form.submit();
		return false;
	}
	else
	{
		return true;
	}
}

/*********************************************************************
 * No onMouseOut event if the mouse pointer hovers a child element 
 * *** Please do not remove this header. ***
 * This code is working on my IE7, IE6, FireFox, Opera and Safari
 * 
 * Usage: 
 * <div onMouseOut="fixOnMouseOut(this, event, 'JavaScript Code');"> 
 *		So many childs 
 *	</div>
 *
 * @Author Hamid Alipour Codehead @ webmaster-forums.code-head.com		
**/
function is_child_of(parent, child) {
	if( child != null ) {			
		while( child.parentNode ) {
			if( child.parentNode == parent ) {
				return true;
			}
			child = child.parentNode;
		}
	}
	return false;
}

function IsCurrentTarget( element, event ) {
	var current_mouse_target = null;
	var bIsCurrent = false;

	if( event.toElement ) {				
		current_mouse_target 			 = event.toElement;
	} else if( event.relatedTarget ) {				
		current_mouse_target 			 = event.relatedTarget;
	}

	if ( !current_mouse_target )
		return bIsCurrent;

	if ( element == current_mouse_target )
	{
		bIsCurrent = true;		
	}
	else
	{
		if ( is_child_of( element, current_mouse_target ) == true )
			bIsCurrent = false;
		else		
			bIsCurrent = true;		
	}
	
	return bIsCurrent;
}