window.formElementWithFocus = null;

function createAdScript()
{
	var script = "";
	script = '<script language="javascript1.1" type="text/javascript">document.write(\'<iframe src="{0}adi/{1}/{2}{3};ord={4};" name="" '
	+ 'width="{5}" height="{6}" frameborder="0" border="0" marginwidth="0" marginheight="0" scrolling="no" allowtransparency="true">\');'
	+ 'if (navigator.userAgent.indexOf("Gecko") == -1) { { document.write(\'<script type="text/javascript" src="{0}adj/{1}/{2}{3};abr=!ie;ord={4};">'
	+ '<\\/script>\'); } } document.write(\'</iframe>\');<\/script><noscript> <a href=""{0}jump/{1}/{2}{3};ord={4};">'
	+ '<img src="{0}ad/{1}/{2}{3};ord={4};" width="{5}" height="{6}" border="0" /></a></noscript>';
	
	return script;
}

function vlaunch(vidurl)
{
	if (typeof g_siteid != "undefined"){
		switch (g_siteid) {
			case  "aolpf": case "netscape": case "aol": case "compuserve": case "yhoo": case "myyahoo": case "intuit":
				vidurl = vidurl.replace(/player.asp/g, "playerFull.asp");
				if( vidurl.search(/siteid=/g) == -1) {
					vidurl = vidurl + "&siteid=" + g_siteid;
				}
				document.location = vidurl;
	 			break;
			default :
				defaultPlayer(vidurl);
		}
	}else{
		defaultPlayer(vidurl);
	}
}

function defaultPlayer(vidurl)
{
	if(vidurl.length > 0)
	{
		pop = window.open(vidurl,'vviewer','width=988,height=550,scrollbars=no,resize=no,location=no,status=no');
		pop.focus();
	}
}

window.gotSymbolReply = false;

// ********** HEADER **********
function initInfoComplete()
{
    if (!window.InfoComplete) return;
    
	window.InfoComplete.allowsymboltypes = "-67";
    window.InfoComplete.Setup('QuoteSearchBox','symbolCompleteResults',8,.050,[formatSymbolCompleteResult, formatKeywordCompleteResult]);
    if ((typeof(window.InfoComplete.autoComplete) == 'undefined') || (window.InfoComplete.autoComplete == null))
        return;
    
    if (window.JSON && window.JSON.deserialize)
    {
        window.JSON.parse = window.JSON.deserialize;
    }
    var inputBox = YAHOO.util.Dom.get('QuoteSearchBox');
    var goButton = YAHOO.util.Dom.get('headerGoButton');
    window.InfoComplete.autoComplete.setHeader('');//<a id="symbolCompleteSearchLink" href="http://www.marketwatch.com/search/">Search news on "<span id="symbolCompleteSearchTerm"></span>":</a>');
    window.InfoComplete.autoComplete.setFooter('');//
    window.InfoComplete.autoComplete.setSubHeader('Choose a quote match or "go" to get quote', 0);
    window.InfoComplete.autoComplete.setSubHeader('Choose a topic to search news:', 1);    
    window.InfoComplete.autoComplete.dataReturnEvent.subscribe(updateSearchTerm, this);
    inputBox.setAttribute('onchange', '');
    window.InfoComplete.autoComplete.itemSelectEvent.subscribe(submitSymbolOrSearch, this);
    YAHOO.util.Event.addListener(goButton, 'click', submitSymbolOrSearch);
    var listenEvent = 'keypress';
    if (YAHOO.util.Event.isIE)
    {
		listenEvent = 'keydown';
	}	
	YAHOO.util.Event.addListener(inputBox, listenEvent, 
		function (e) {				
			if (e.keyCode == 13)
			{ 
				submitSymbolOrSearch(e); 
			}
			else
			{
				window.gotSymbolReply = false;
			} 
		});		
    YAHOO.util.Event.addListener('symbolCompleteSearchLink', 'click', searchFromHeaderClick);
}

function updateSearchTerm()
{
	window.gotSymbolReply = true;
    var searchTerm = YAHOO.util.Dom.get('symbolCompleteSearchTerm');
    if (searchTerm)
        searchTerm.innerHTML = YAHOO.util.Dom.get('QuoteSearchBox').value;
}

function searchFromHeaderClick(e)
{
    YAHOO.util.Event.stopEvent(e);
    var searchTerm = YAHOO.util.Dom.get('symbolCompleteSearchTerm');
    if (searchTerm)
        doSearch(searchTerm.innerHTML);
    else
        submitSymbolOrSearch(e);
}
var submittedSymbolOrSearch = false;
function submitSymbolOrSearch(e, args)
{
	YAHOO.util.Event.stopEvent(e);
	if(submittedSymbolOrSearch) return;    
    var searchBox = YAHOO.util.Dom.get('QuoteSearchBox');
    checkUnUsed(searchBox);
    var select = false;
    if (window.InfoComplete.autoComplete._bItemSelected || (e && e == 'itemSelect'))
        select = true;
    var index = 0;
    if (args)
        index = args[1]._nDataSourceIndex;
    if (validateQuoteSearchBox(searchBox))
    {
    	submittedSymbolOrSearch = true;
    	var isOverride = isSearchOverride(searchBox.value);
        if (index == 1 || isOverride)
        {
            doSearch(args ? args[2][0].toLowerCase(): searchBox.value);            
        }        
        else if ((!window.gotSymbolReply && searchBox.value.length <= 5 && !isOverride) ||
            (select && index == 0) || isQuoteInput(searchBox.value))
        {
            doViewQuote(searchBox.value);        
        }
        else
        {
            doSearch(searchBox.value);
        }
    }
}

function isSearchOverride(term)
{
    term = term.replace(/^\s+|\s+$/g,"").toUpperCase(); //Trim
    var match = term.match(/^ABC$|^BAY$|^EGAN$|^AIR$|^ACME$|^GOLD$|^COST$|^KEY$|^GAS$|^CHINA$|^BEER$|^DRUG$|^OIL$|^DOG$|^CPI$|^GDP$|^DNA$|^ETF$|^JAZZ$|^ETFS$|^AUTO$|^FED$/);
    return match != null && match.length > 0 && match[0].length > 0;    
}

function doViewQuote(symbol)
{
    symbol = symbol.replace(/^\s+|\s+$/g,""); //Trim
    symbol = symbol.replace(/ +/gi,",");   //Replace one or more whitespaces with comma.
    symbol = symbol.replace(/,+/gi,",");   //Replace multiple commas with single comma. (Just in case)
    symbol = symbol.toLowerCase();         // force all tickers to lower case for seo
    symbol = symbol.replace(/,$|\.,$/, "");
    if (symbol.match(","))
    {
        // multi - use symb= so the multiquote add symbol works with country codes
        window.location = 'http://' + document.domain + '/quotes/quotes.aspx?symb=' + symbol;
    }
    else
    {
        // single 
        re = /aux$|nul$|prn$|con$/gi; // endings iis won't allow in a url
        if(re.test(symbol))            
        {
             window.location = 'http://' + document.domain + '/quotes/quotes.aspx?symb=' + symbol;
        }
        else
        {
            symbol = symbol.replace(/:/gi,"/"); // friendly
            window.location = 'http://' + document.domain + '/quotes/' + symbol; 
        }
    }
}

function doSearch(query)
{
    query = query.replace(/^\s+|\s+$/g,"").replace(/,$|\.,$/, ""); //Trim and remove trailing periods/commas

    window.location = 'http://' + document.domain + '/search/?value='+query;
}

function formatKeywordCompleteResult(aResultItem, Query, iIndex)
{
    var SCRegExp = new RegExp("\\b(" + Query + ")(.*)\\b", "i"); //Find part to bold
    
    var result = aResultItem[0].toLowerCase();
    aResultItem[0] = result;
    
    if (result.match(SCRegExp))
        result = result.replace(SCRegExp, "<span class=scResultTerm>$1</span>$2");
    return result;    
} 

function formatSymbolCompleteResult(aResultItem, Query, iIndex)
{
    var SelectionValue = new param;
    var CompanyName = aResultItem[1];
    var Symbol = aResultItem[0].toUpperCase();
    var CountryCode = aResultItem[2].toUpperCase();
    
    if (CountryCode != "US" && Symbol.indexOf(":") < 0)
    {
        Symbol = CountryCode + ":" + Symbol;
        aResultItem[0] = Symbol;
    }
                
    //Eliminate Country from query text.
    if (Query.indexOf(':') == 2)
            if(Query.length > 3)
	            Query = Query.substring(3)
	        else
   	            Query=""

    var SCRegExp = new RegExp("\\b(" + Query + ")(.*)\\b", "i"); //Find part to bold
    
    var tickerDisplay = Symbol;    
    if (Symbol.match(SCRegExp))
        tickerDisplay = tickerDisplay.replace(SCRegExp, "<span class=scResultTerm>$1</span>$2");
    else 
        CompanyName = CompanyName.replace(SCRegExp, "<span class=scResultTerm>$1</span>$2");
    var aMarkup = ["<table class=scResultTable><tr><td class=symbolCompleteCol1>",   
           tickerDisplay,
           "</td><td class=symbolCompleteCol2>",   
           CompanyName,   
           "</td></tr></table>"];   
    
    return (aMarkup.join(""));    
}

function validateQuoteSearchBox(el)
{
    var isTextEntered = false;
    
    if(el.value == null || el.value.length == 0)
    {
        alert("Please Enter a Symbol or Keyword.");
    }
    else
    {
        isTextEntered = true;        
    }

    return isTextEntered;
}

function isQuoteInput(textValue)
{    
    if (!window.InfoComplete || !window.InfoComplete.autoComplete)    
        return false;
    else if (window.InfoComplete.autoComplete._bItemSelected)
        return true;
    else
        return window.InfoComplete.isSymbolMatch();
}

function setFocused(elem)
{
	var resolved = YAHOO.util.Dom.get(elem);
	window.formElementWithFocus = resolved;
}

function setUnUsed(searchField) { 
	var defaultValue;	
	switch (searchField.name) 
	{
		case "Symbol": 
			defaultValue = "Symbol(s)"; 
			break; 
		case "KeywordSearch": 
			defaultValue = "Keyword(s)"; 
			break;
	} 
	if (searchField.value == defaultValue) 
	{ 
		searchField.className = searchField.className + " unUsed";
	} 
}

function checkUnUsed(searchField) { 
	if (searchField.className.indexOf("unUsed") >= 0) 
	{ 			
		searchField.value = ""; 
	}
	return true; 
}

function searchFieldOnFocus(searchField) 
{ 
	var index = searchField.className.indexOf("unUsed"); 
	if (index >= 0) 
	{
		searchField.value = ""; 
		if (index == 0) 
		{ 
			if (searchField.className.match("unUsed ")) 
			{ 
				searchField.className = searchField.className.replace("unUsed ", "");
			} 
			else 
			{ 
				searchField.className = searchField.className.replace("unUsed", "");
			} 
		} 
		else 
		{ 
			searchField.className = searchField.className.replace(" unUsed", ""); 
		} 
	} 
}
// ***** END HEADER **********

//if((g_redir2 == 1) && !(aolfam)){
//	redirectWindow = window.open("/notfoundpopup.asp","RedirectWarning","toolbar=no,menubar=no,scrollbars=no,resizable=yes,width=300,height=300");
//	redirectWindow.focus();
//}
		
function aolfam()
{
	switch (g_siteid) {
	case  "aolpf": case "netscape": case "aol":	case "compuserve":
		return true;
		break;
	default :
		return false;
		break;
	}	
}

function launchTracker(param)
{
	var intheight = 730;
	var intwidth = 330;

	var strURL = 'http://www.marketwatch.com/portfolio/track.asp?' + param;
	var strTarget = 'mwtrack';
	var strWindowParam = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=' + intwidth + ',height=' + intheight;
		

	if(!aolfam()){	
			
		trackWindow = window.open(strURL, strTarget, strWindowParam);
		if (trackWindow != null)
		{
			trackWindow.focus();
		}
	}
}

function openWindow(url, name)
{
	if(!aolfam()){
		if (name == 'alertWin')
			popupWin = window.open(url, name, "width=575,height=650,resizable,scrollbars");
		else
			popupWin = window.open(url, name, "width=637,height=610,resizable,scrollbars");
	}	
} 

// StocTrac
function CheckStocTrac() {
	var allcookies = document.cookie;
	var start = allcookies.indexOf('CBSMWQuoteSeen=1');
	if ((start != -1) || (aolfam())) return false;
	return true;
} 


function openTour() {
	quickWindow = window.open('http://www.marketwatch.com/tour/tour_1.htm', 'quickWin', 'toolbar=no,location=no,directories=no,status=no,scrollbars=no,menubar=no,resizable=no,width=766,height=426');
	quickWindow.focus();
}

function openCobrandTour() {
	quickWindow = window.open('http://www.marketwatch.com/tour/cobrand_tours/tour1_aol.asp?siteid=' + g_siteid, 'quickWin', 'toolbar=no,location=no,directories=no,status=no,scrollbars=no,menubar=no,resizable=no,width=766,height=426');
	quickWindow.focus();
}

function checkSearchValue(searchTextId)
{
	var searchBox = YAHOO.util.Dom.get(searchTextId);
	if(searchBox)
	{
		if(searchBox.value != "")
		{
			return true;
		}
	}
	return false;
}

function checkSigninValues()
{	
	var loginBox = YAHOO.util.Dom.get("SignInEmail");
	var loginPass = YAHOO.util.Dom.get("SignInPassword");
	if(loginBox)
	{
		if(loginBox.value != "" && loginPass.value != "")
		{
			return onSignInSubmit();
		}		
	}
	return false;
}

function validateKnownFields()
{
	var quoteSearchField = YAHOO.util.Dom.get("QuoteSearchBox");
	var signInEmailField = YAHOO.util.Dom.get("SignInEmail");
	var signInPasswordField = YAHOO.util.Dom.get("SignInPassword");
	
	if(window.formElementWithFocus != null)
	{
		if(window.formElementWithFocus.id == quoteSearchField.id)
		{
			if (checkUnUsed)
			{
				checkUnUsed(quoteSearchField);
			}
			if (validateQuoteSearchBox(quoteSearchField))
			{
			    var searchType = YAHOO.util.Dom.get('SearchType');
                if (isQuoteInput(quoteSearchField.value))
                    searchType.value = "quote";
                else
                    searchType.value = "search";
			}
			else
			    return false;
		}
		else if(signInEmailField)
		{
			if(window.formElementWithFocus.id == signInEmailField.id || window.formElementWithFocus.id == signInPasswordField.id)
			{
				return onSignInSubmit();
			}
		}
		return true; //if we don't have a match, submit and let the server decide
	}
	else
	{
		//this function should not pop up a bunch of messages if we don't know what 
		//field had focus when submit was called.
		return true;
	}
}