/// <reference path="LanxerLibrary.js" />

var ChangePage_Reg_CSS_I = 0;
var _Page = '';
var SoundObject = null;
var keyCurrent = null;

var p_ExploreAndSearch =    'ExploreAndSearch';
var p_Profile_My =          'Profile_My';
var p_Profile_WebCamVideoManage = 'Profile_WebCamVideoManage';
var p_Profile_View =        'Profile_View';
var p_Explore_Blogs =       'ExploreBlogs';
var p_TutorsTM_Search =     'Partner_TutorsTM_Search';
var p_Profile_Exam_Take =   'Profile_Exam_Take';
var p_Profile_TestCreate_EditAnswers = 'Profile_TestCreate_EditAnswers';
var p_Oppertunity_ApplyOnline =        'Oppertunity_ApplyOnline';

function IsLocal()
{   
    return g('IsLocal').value != 'False'
}

function trc_RegEvent(category, action, optional_value)
{
    try
    {
//        pageTracker._trackEvent(name, action, g('__CURENTUSER') ? g('__CURENTUSER').value : '-1', optional_value);
    }
    catch(err)
    {
     //   if(IsLocal())
       //     throw err;
    }
}

function trc_RegisterHit(targetID, param) // the object ID
{
    MakeGlobalAJAXRequest('hitRegister=' + targetID + '&param=' + param);
}

function historyStateChanged (newLocation) 
{
    ChangePage(newLocation,false,false,false);
}

function addHistory(key)
{
     dojo.back.addToHistory({
                        back: function(){ historyStateChanged(key); },
                        forward: function(){ historyStateChanged(key); },
                        changeUrl: true
                    });
}

function GlobalLoad()
{
    if(g('__CURENTPAGE'))
    {
        dojo.back.setInitialState({
                        back: function(){ historyStateChanged(g('__CURENTPAGE').value); },
                        forward: function(){ historyStateChanged(g('__CURENTPAGE').value); },
                        changeUrl: true
                    });
                    
        trc_RegEvent('Global Load', g('__CURENTPAGE').value);
    }
    else
        trc_RegEvent('Global Load');
    
    //  History_Register('changePage:' + g('__CURENTPAGE').value);

    // if(g('IsLocal').value == 'False')
    //	c_BackgroundListner_Start();
	// You need to tell Mozilla to start listening:

    if(window.Event && document.captureEvents)
        document.captureEvents(Event.MOUSEMOVE);

    // Then assign the mouse handler

    document.onmousemove = getMousePos;
	// SoundObject = g("SoundIFrame");
    
    document.onkeydown = gKeyDown;    
    document.onkeyup = gKeyUp;   

    if(g('__CURENTPAGE'))
        rawPageQuery = ExtractPageString(g('__CURENTPAGE').value);
	
	// Handle_PageScroll(); global resize calls Handle_PageScroll
	GlobalResize();
	
	switch(rawPageQuery)
	{
		case p_ExploreAndSearch : // People search
		case p_Explore_Blogs :
			ps_OnAJAXLoaded();
		break;
		case p_Profile_My :
		case p_Profile_View :
			mp_Load();
		break;
	}
}
    
function gKeyUp(e)
{
    if(!e)
    {
        if(keyCurrent == event.keyCode)
            keyCurrent = null; 
    }
    else
    {
       if(keyCurrent == e.keyCode)
            keyCurrent = null; 
    }
}

function gKeyDown(e)
{
    if(!e)
        keyCurrent = event.keyCode;
    else
        keyCurrent = e.keyCode;
}

function IsControlKeyDown()
{
    return keyCurrent == 17;
}

function Nav_ChangeCompanyDD()
{
	var selCompaines = g('Nav_ChangeCompanyDropDown');
	var companyID = selCompaines.options[selCompaines.selectedIndex].value;
	
	g('NavigationControl').innerHTML = MakeGlobalAJAXRequest('GetNav=' + companyID);
	ChangePage(companyID + 'dsh');
}

var mainnavLink = null;
var p = '';

function ExtractPageString(p)
{
    var startOfActualPageStr = 0;

    if(IsNumber(p.charAt(0)))
	{
	    startOfActualPageStr = 1;
		for(var i = 1; i < p.length; i++)
		{	
			if(IsNumber(p.charAt(i)))
				startOfActualPageStr++;
			else
				break;
		}		
	}
	
	var indeOfAmp = p.indexOf('&');
	var endStrg = indeOfAmp == -1 ? p.length : indeOfAmp;
    return p.substring(startOfActualPageStr , endStrg);
	
	return p;
}

function RefreshPage()
{
    ChangePage(rawPageQuery, true, true);
}

var rawPageQuery = ''; // have function that gets data by reading in input varible

function ChangePage(page , setChangePage, fromRefresh, submitFormValues, insertInto) // submit form values is depricated 
{
    var inputElesParts = new Array();
    inputElesParts.push(g('main').getElementsByTagName('input')); 
    inputElesParts.push(g('ABOVEDIV').getElementsByTagName('input'));
    
    if(g('TOPNAV_AREA'))
        inputElesParts.push(g('TOPNAV_AREA').getElementsByTagName('input'));
    
    var textAreaEles = g('main').getElementsByTagName('textarea'); 
    var textAreaElesAbv = g('ABOVEDIV').getElementsByTagName('textarea');
    var ddlEles = document.getElementsByTagName('select'); 
    
    var inputQueryStrg = '';
    var trace = '';
    var cbIS = '';
    
    for(var a = 0; a < inputElesParts.length; a++)
        for(var i = 0; i < inputElesParts[a].length; i++)
        {   
            trace += inputElesParts[a][i].type + ' ';
            
            switch(inputElesParts[a][i].type)
            {
                case 'hidden' :
                case 'text' :
                case 'password' :
                    inputQueryStrg += IsEmptyText(inputElesParts[a][i].id) ? '' : '&' + inputElesParts[a][i].id + '=' + lescape(inputElesParts[a][i].value);
                break;
                case 'checkbox' :
                
                if(!IsEmptyText(inputElesParts[a][i].id))
                    inputQueryStrg += '&' + inputElesParts[a][i].id + '=' + (inputElesParts[a][i].checked ? 'true' : 'false');
                
                break;
                case 'radio' :
                    inputQueryStrg += inputElesParts[a][i].checked && inputElesParts[a][i].name ? '&' + inputElesParts[a][i].name + '=' + lescape(inputElesParts[a][i].value) : '';
                break;
            }
        }
    
    for(var i = 0; i < ddlEles.length; i++)
        if(!IsEmptyText(ddlEles[i].id))
        {
            if(!ddlEles[i].multiple)
                inputQueryStrg += '&' + ddlEles[i].id + '=' + lescape(ddlEles[i].value);
            else
            {
                var valsStrg = '';
                var opArr = ddlEles[i].options;
                var didFirst = false;
                for(var oi = 0; oi < opArr.length; oi++)
                {
                    if(opArr[oi].selected)
                    {
                        valsStrg += (didFirst ? ',' : '') +  opArr[oi].value;
                        didFirst =true;
                    }
                }
                
                if(!IsEmptyText(valsStrg))
                    inputQueryStrg += '&' + ddlEles[i].id + '=' + valsStrg;
            }
        }
        
    for(var i = 0; i < textAreaEles.length; i++)
        if(!IsEmptyText(textAreaEles[i].id))
            inputQueryStrg += '&' + textAreaEles[i].id + '=' + lescape(textAreaEles[i].value);
    
    for(var i = 0; i < textAreaElesAbv.length; i++)
        if(!IsEmptyText(textAreaElesAbv[i].id))
            inputQueryStrg += '&' + textAreaElesAbv[i].id + '=' + lescape(textAreaElesAbv[i].value);

    document.oncontextmenu = null;
    document.onmousedown = null;

    rawPageQuery = page;
    
  //  mp_Exit();
    
	if(setChangePage && !fromRefresh)
	    addHistory(page);
    
	var mainTR = g('mainTR');
	var main = g('main');
	if(mainTR)
	    mainTR.style.display = '';

	if(!insertInto)
	    FlyInDivClose();
	
	p = page;
	_Page = page;
	
	var pageForLink = page;
	
	if(IsNumber(p.charAt(0)))
	{
		var startOfActualPageStr = 1;
		for(var i = 1; i < p.length; i++)
		{	
			if(IsNumber(p.charAt(i)))
				startOfActualPageStr++;
			else
				break;
		}		
		
		var indeOfAmp = p.indexOf('&');
		var endStrg = indeOfAmp == -1 ? p.length : indeOfAmp;
		pageForLink = pageForLink.substring(0 , endStrg);
		p = p.substring(startOfActualPageStr , endStrg);
	}
	
    if(g('__CURENTPAGE'))
	    g('__CURENTPAGE').value = pageForLink;
	
	trc_RegEvent('Page Change', pageForLink);
	
	// SEND OVER A TOP NAV -------- // VARIBLE HAVE BASE CLASS OUTPUT A VARIBLE THAT WILL  INDICATE WHAT TOP NAV IS BEING USED
	var response = MakeGlobalAJAXRequest('ctopnav=' + (g('CTopNavType') ? g('CTopNavType').value : '')  + '&p=' + page + inputQueryStrg);
	
	if(response == '#INPUT OVERLOAD#')
	{
	    alert('You have surpassed the maximum allowed input for a field, which is currently set at 4000 characters per a field with exceptions for longer fields. If you feel you received this message in error, please report it in the Contact Us.');
	    return;
	}
	
	if(insertInto)
	{
	    g(insertInto).innerHTML = response;
	}
	else
	{
	    var mainPlane = g('main');
	    mainPlane.innerHTML =  response;
	}
	
	if(!fromRefresh)
	{
	    mainPlane.scrollTop = 0;
	    g('SHELL_BODY').scrollTop = 0;
    }
	
    HandleTopNav(); 
    window.onresize = GlobalResize;
    Handle_PageScroll();
	
	switch(ExtractPageString(pageForLink.toUpperCase()))
	{
	    case p_Explore_Blogs.toUpperCase() :
		case p_ExploreAndSearch.toUpperCase() : // People search
		case p_TutorsTM_Search.toUpperCase() :
			ps_OnAJAXLoaded();
		break;
		case p_Profile_My.toUpperCase() :
		case p_Profile_View.toUpperCase() :
			mp_Load();
		break;
	}
	
	if(g('TitleOverride'))
	    document.title = g('TitleOverride').value;
	    
    if(!insertInto)
	    CloseFlyingDivs();
    else
	    PositionGlobalFloatingElements();
}

function CloseFlyingDivs()
{
    var toClose = new Array();
    toClose.push('ProfilePreview'); 
    toClose.push('Shell_OpenConversations'); 
    toClose.push('CHATAREA'); 
    toClose.push('TOOLTIPAREA'); 
    toClose.push('ABOVEDIV'); 
    toClose.push('ABOVEDIV2'); 
    toClose.push('CHATAREA_PARTIALDATA2'); 
    toClose.push('NAVNODE_PREVIEW');
    toClose.push('EDITSKILLSMOREOPPS');
    toClose.push('SELECTLOCATION');
               
    for(var i = 0; i < toClose.length; i++)
        g(toClose[i]).style.display = 'none';
}

var count = 0;
var count_ISVShell = 0;

function Handle_PageScroll()
{
    try
    {
        ++count;
        
	    var main = g('main');

        if( g('IsSkimmedShell'))
        {
        
        }
        else if(g('IsVGoogoShell'))
        {
	        ++count_ISVShell;
	        
	        var topNavHeight = g('TOPNAV_AREA').clientHeight +  1;
	        
	        var mainHeight = document.body.clientHeight - topNavHeight;
	        
	        main.style.height = mainHeight;
            main.style.width = document.body.clientWidth - 0;
            
            var treeMainPageOffset = 0;
            var treeMainPageHeight = 0;
            var typesMainPageHeight = 0;
            
            if(g('vGog_SelectionToolBox'))
                treeMainPageOffset += g('vGog_SelectionToolBox').clientHeight;
               
            treeMainPageHeight = mainHeight - treeMainPageOffset;
            
            if(g('vGogTypesTitleArea'))
                typesMainPageHeight = mainHeight - g('vGogTypesTitleArea').clientHeight;
                
            // SEARCH
            
            
            if(g('vGoogo_SearchResults'))
                g('vGoogo_SearchResults').style.height = treeMainPageHeight;
            
            // TREE MAIN PAGE
            
            if(g('VGoogoNav_Left'))
                g('VGoogoNav_Left').style.height = treeMainPageHeight;
            
            if(g('VGoogoNav_Middle'))
                g('VGoogoNav_Middle').style.height = treeMainPageHeight - (52 + (g('vGogTrePaging') ? g('vGogTrePaging').clientHeight : 0) + (g('vGQueryDisplay') ? g('vGQueryDisplay').clientHeight: 0));
            
            if(g('VGoogoNav_Filter'))
                g('VGoogoNav_Filter').style.height = treeMainPageHeight - 52;
            
            
            if(g('vGogTree_FilterCategories') && g('vGogTree_FilterValues'))
            {
                var treeMainHeight = treeMainPageHeight - (52 + (g('vGogTrePaging') ? g('vGogTrePaging').clientHeight : 0) + (g('vGQueryDisplay') ? g('vGQueryDisplay').clientHeight: 0));
                g('vGogTree_FilterCategories').style.height = treeMainHeight;
                g('vGogTree_FilterValues').style.height = treeMainHeight;
            } 
            
        //    document.title = treeMainPageHeight + ' ' + count + ' - ' + count_ISVShell + ' : ' + IsLocal();
            
            // TYPES PAGE
            
            
            
            if(g('vGog_Types_TypeEdit'))
                g('vGog_Types_TypeEdit').style.height = typesMainPageHeight;
            
            if(g('vGog_Types_IconSelection'))
                g('vGog_Types_IconSelection').style.height = typesMainPageHeight;
            
            // DEFINE NAV ELEMENTS
            
        }
	    else
	    {
	        main.style.overflow = 'auto';
            main.style.height = document.body.clientHeight - 87;
            main.style.width = document.body.clientWidth - 18;
        }
    }
    catch(exx)
    {
        if(IsLocal())
            alert(exx + ' @ Handle_PageScroll');
    }
}

function HandleTopNav()
{
    // SkillsTM 
	var phExtraItems = g('PH_ItemExtra' + p_Profile_My);
	var phmajTabs = g('PH_MajorTabs');
	
    if(g('MajorTabs'))
	    g('MajorTabs').innerHTML = phmajTabs.innerHTML;
    
    if(g('nav_ItemExtra' + p_Profile_My))
        g('nav_ItemExtra' + p_Profile_My).innerHTML = phExtraItems.innerHTML;

    if(phmajTabs)
	    phmajTabs.innerHTML = '';
    
    if(phExtraItems)
	    phExtraItems.innerHTML = '';

    // vGoogo 
    if(g('vGoogo_TopNav_C'))
    {
        g('TOPNAV_AREA').innerHTML = g('vGoogo_TopNav_C').innerHTML;
        g('vGoogo_TopNav_C').innerHTML = '';
        
       // g('vGoogo_TopNav_S').id = '';
        g('vGoogo_TopNav_C').id = '';
    }
}

function HideZIndexHaters() // hides items that allways apear on top
{
    var SkillsTM_Conference = g('SkillsTM_Conference');
    var SkillsTM_Conference_Outline = g('SkillsTM_Conference_Outline');
 
    if(SkillsTM_Conference)
        SkillsTM_Conference.style.display = 'none';
    
    if(SkillsTM_Conference_Outline)
        SkillsTM_Conference_Outline.style.display = 'block';
        
    if(g('EmbeddedPDF'))
        g('EmbeddedPDF').style.display = 'none';
}

function ShowZIndexHaters() // hides items that allways apear on top
{
    var SkillsTM_Conference = g('SkillsTM_Conference');
    var SkillsTM_Conference_Outline = g('SkillsTM_Conference_Outline');
    
    if(SkillsTM_Conference)
        SkillsTM_Conference.style.display = 'block';
    
    if(SkillsTM_Conference_Outline)
        SkillsTM_Conference_Outline.style.display = 'none';
    
    if(g('EmbeddedPDF'))
        g('EmbeddedPDF').style.display = 'block';
}

// FINISH HIDEING / SHOWING THINGS