//Adobe/MacroMedia image rollover functions for buttons
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
/*************************************************************************/

function loadData (url, page_area, post_vars)
{
	function successHandler (obj) 
	{
		// Use the response, parsing Smart Tags first
		if (obj.responseText.indexOf ("%!%") != -1) // send a JavaScript !alert!
		{
			if (page_area)
			{
				YAHOO.util.Dom.get (page_area).innerHTML = obj.responseText.substring (0, obj.responseText.indexOf ("%!%"));
			}
			alert (obj.responseText.substring (obj.responseText.indexOf ("%!%") + 3));
		}
		else if (obj.responseText.indexOf ("%U%") != -1) // go to a URL
		{
			self.location.replace (obj.responseText.substring (obj.responseText.indexOf ("%U%") + 3));			
		}
		else if (page_area) // replace the inner HTML of the page area with the PHP script's response
		{
			YAHOO.util.Dom.get (page_area).innerHTML = obj.responseText;
		}
    }
	
	var oObj = YAHOO.util.Connect.asyncRequest ("POST", url,
		{
			success:successHandler,
			failure:successHandler
		},
		post_vars	);
}

var RecaptchaOptions = 
{
    theme : 'clean'
 };

function preloadImages () 
 {
  	var d = document; 
	if (d.images)
	{ 
		if	(!d.MM_p) 
		{
			d.MM_p = new Array ();
    		var i, j = d.MM_p.length, a = preloadImages.arguments; 
			for (i = 0; i < a.length; i++)
			{
				if (a[i].indexOf ("#") != 0)
				{ 
					d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];
				}
			}
		}
	}
 }
	
function validate_data (data, data_type, inChar)
{
	// data : String value which need to validate
	// data_type : String value of data type ie. email, xipCode, int, float, alpha ....
	// inChar : String value (can be blank) of special characters will be allowed. ie. if we want to allow _,-,. in alpha data type then we will use inChar = "_-.", this do not need with data types under "check pattern"
	
	
	// Check patern
	if (data_type == "email")   //matches email
	{
		var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if (filter.test (data))
		{
			return (true);
		}
		else
		{
			return (false);
		}
	}
	else if (data_type == "zipCode")  // Matches a US zip Code (ie: 12345 or 12345-1234) 
	{
		var filter = /\d{5}(-\d{4})?/;
		if (filter.test (data))
		{
			return (true);
		}
		else
		{
			return (false);
		}
	}
	else if (data_type == "Currency")  // matches $17.23 or $14,281,545.45 or ...
	{
		var filter = /\$\d{1,3}(,\d{3})*\.\d{2}/;
		if (filter.test (data))
		{
			return (true);
		}
		else
		{
			return (false);
		}
	}
	else if (data_type == "Time")  // matches 5:04 or 12:34 but not 75:83
	{
		var filter = /^([1-9]|1[0-2]):[0-5]\d$/;
		if (filter.test (data))
		{
			return (true);
		}
		else
		{
			return (false);
		}
	}
	else if (data_type == "Date")  // Date xx/xx/xxxx
	{
		var filter = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;
		if (filter.test (data))
		{
			return (true);
		}
		else
		{
			return (false);
		}
	}
	else if (data_type == "phoneNumber")  // matches phone ###-###-####Matches US phone (###-###-#### or (###) ###-####) 
	{
		var filter = /^\(?\d{3}\)?\s|-\d{3}-\d{4}$/;
		if (filter.test (data))
		{
			return (true);
		}
		else
		{
			return (false);
		}
	}
	else if (data_type == "phoneNumberInternational")  // International Phone Number
	{
		var filter = /^\d(\d|-){7,20}/;
		if (filter.test (data))
		{
			return (true);
		}
		else
		{
			return (false);
		}
	}
	else if (data_type == "State")   // State Abbreviation
	{
		var filter = /^(AK|AL|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL|IN|KS|KY|LA|MA|MD|ME|MI|MN|MO|MS|MT|NB|NC|ND|NH|NJ|NM|NV|NY|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VA|VT|WA|WI|WV|WY)$/i;
		if (filter.test (data))
		{
			return (true);
		}
		else
		{
			return (false);
		}
	}	
	
	// Check one by one character	
	for (var i = 0; i < data.length; i++)
	{
		var ch = data.substring(i, i + 1);
		if ((data_type == "int" && (ch < "0" || "9" < ch) && ! InCheck(ch,inChar)) || (data_type == "float" && (ch < "0" || "9" < ch) && ch!="." && ! InCheck(ch,inChar)) || (data_type == "alpha" && (ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch) && ! InCheck(ch,inChar)) || (data_type == "alpha_numeric" && (ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch) && (ch < "0" || "9" < ch) && ! InCheck(ch,inChar)) || (data_type == "name" && (ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch) && ch!=" " && ch!="." && ! InCheck(ch,inChar)))
		{
			return (false);
		}
	}
	return (true);
}

function InCheck (sText, ValidChars)
{
	if (ValidChars != "") 
	{ 
		var validate=true;
		var Char;
		
		for (i = 0; i < sText.length && validate == true; i++) 
		{ 
			Char = sText.charAt (i); 
			if (ValidChars.indexOf (Char) == -1) 
			validate = false;
		}
		return (validate);
	}
	else
	{
		return (false);
	}
}

function validate (form_name, form_type)
{
	if (form_type == 'saveAs')
	{
		if (form_name.new_port_id.value == '')
		{
			alert ('Please enter a new portfolio name.');
			form_name.new_port_id.focus ();
			return (false); 
		}
	}	
	else if (form_type == 'addETF')
	{
		if (form_name.ticker.value == '')
		{
			alert ('Please enter the ETF name.');
			form_name.ticker.focus ();
			return (false); 
		}
		if (form_name.weight.disabled == false)
		{
			IsNumber = validate_data (form_name.weight.value, 'int', '');
			if(IsNumber)
			{
				if (form_name.weight.value<=0)
				{
					alert("Weight should be greater than 0!");
					return (false);
				}
				if (form_name.weight.value>100)
				{
					alert("Weight should be no more than 100!");
					return (false);
				}
			}
			else
			{
				alert("Please enter only numeric values.");	
				return (false);
			}
		}
	}
	else if (form_type == 'login')
	{
       	if (YAHOO.util.Dom.get ('LoginTextField').value == '')
      	{
        	alert ('Please enter user name.');
           	YAHOO.util.Dom.get ('LoginTextField').focus ();
			return (false);
      	}
        else	if (!validate_data (YAHOO.util.Dom.get ('LoginTextField').value, 'email', ''))
        {
        	alert ('User name must be a valid email address.');
           	YAHOO.util.Dom.get ('LoginTextField').focus ();
			return (false);
      	}
        else if (YAHOO.util.Dom.get ('PasswordTextField').value == '')
       	{
        	alert ('Please enter password.');
            YAHOO.util.Dom.get ('PasswordTextField').focus ();
			return (false);
       	}
	}
	else if (form_type == 'forgotpassword')
	{
       	if (YAHOO.util.Dom.get ('LoginTextField').value == '')
      	{
        	alert ('Please enter your email ID.');
           	YAHOO.util.Dom.get ('LoginTextField').focus ();
			return (false);
      	}
		if (!validate_data (YAHOO.util.Dom.get ('LoginTextField').value, 'email', ''))
		{
			alert ('Please enter a valid email ID.');
           	YAHOO.util.Dom.get ('LoginTextField').focus ();
			return (false);
		}
	}
	else if (form_type == 'emailarticle')
	{
		if (YAHOO.util.Dom.get ('SenderName').value == '')
      	{
        	alert ('Please enter your name.');
           	YAHOO.util.Dom.get ('SenderName').focus ();
			return (false);
      	}
		if (YAHOO.util.Dom.get ('SenderEmail').value == '')
      	{
        	alert ('Please enter your email address.');
           	YAHOO.util.Dom.get ('SenderEmail').focus ();
			return (false);
      	}
		if (!validate_data (YAHOO.util.Dom.get ('SenderEmail').value, 'email', ''))
		{
			alert ('Please enter a valid sender email address.');
           	YAHOO.util.Dom.get ('SenderEmail').focus ();
			return (false);
		}
		if (YAHOO.util.Dom.get ('RecipientName').value == '')
      	{
        	alert ('Please enter the name of the recipient.');
           	YAHOO.util.Dom.get ('RecipientName').focus ();
			return (false);
      	}
		if (YAHOO.util.Dom.get ('RecipientEmail').value == '')
      	{
        	alert ('Please enter the email address of the recipient.');
           	YAHOO.util.Dom.get ('RecipientEmail').focus ();
			return (false);
      	}
		if (!validate_data (YAHOO.util.Dom.get ('RecipientEmail').value, 'email', ''))
		{
			alert ('Please enter a valid recipient email address.');
           	YAHOO.util.Dom.get ('RecipientEmail').focus ();
			return (false);
		}
		if (YAHOO.util.Dom.get ('recaptcha_response_field').value == '')
		{
			alert ('Please enter the two words.');
			YAHOO.util.Dom.get ('recaptcha_response_field').focus ();
			return (false);
		}
	}

	return (true); 
}

// prototype dollar function
// Sample Usage:
//var obj1 = document.getElementById('element1');
//var obj2 = document.getElementById('element2');
//  var elements = $('a','b','c',obj1,obj2,'d','e');

function $ () 
{
	var elements = new Array ();
	for (var i = 0; i < arguments.length; i++) 
	{
		var element = arguments[i];
		if (typeof element == 'string')
		{
			element = document.getElementById(element);
		}
		if (arguments.length == 1)
		{
			return element;
		}
		elements.push(element);
	}
	return elements;
}

function inArray (value) 
{
	var i;
	for (i = 0; i < this.length; i++) 
	{
		if (this[i] === value) 
		{
			return true;
		}
	} 
	return false;
};

function insertAfter (parent, node, referenceNode)
{
	parent.insertBefore (node, referenceNode.nextSibling);
}


function refreshWelcomeContainer (user_id, template)
{
	if (user_id)
	{
		loadData ('includes/widgets/welcome.wid.php', 'WelcomeContainer', 'user_id=' + user_id + '&template=' + template);
	}
	else 
	{
		loadData ('includes/widgets/login.wid.php', 'WelcomeContainer', 'template=' + template);
	}
}

function refreshSidebars (user_id, portfolio_id)
{
	if (user_id)
	{
		loadData ('includes/widgets/myportfolios_sidebar.wid.php', 'MyPortfolios', "user_id=" + user_id + "&portfolio_id=" + portfolio_id);
	}
	else 
	{
		loadData ('includes/ajax/session.ajax.php', 'MyPortfolios', '');
	}
	loadData ('includes/widgets/relatednews_sidebar.wid.php', 'RelatedNews', "user_id=" + user_id + "&portfolio_id=" + portfolio_id);
}

function refreshMenus (user_id, template)
{
	loadData ('includes/widgets/menu.wid.php', 'PortfoliosMenu', "user_id=" + user_id + "&template=" + template + "&menu=main");
	loadData ('includes/widgets/menu.wid.php', 'BottomMenu', "user_id=" + user_id + "&template=" + template + "&menu=bottom");
}

function deleteSidebarPortfolio (userID, portfolioID, template, currentPortfolio)
{

	function successHandler (obj) 
   	{ 
		if (((template == 'editportfolio') || (template == 'viewportfolio')) && (portfolioID == currentPortfolio))
		{
			self.location.replace ('index.php');
		}
		else
     	{
		   refreshSidebars (userID, portfolioID);
		}	
   	}
       
   	function failureHandler (obj) 
   	{ 
   	}
	
    var cObj = YAHOO.util.Connect.asyncRequest ('POST', 'includes/ajax/portfolio.ajax.php', {
			success:successHandler,
			failure:failureHandler
			}, 'form_action=delete_portfolio&user_id=' + userID + '&portfolio_id=' + portfolioID);
}

function clean_cash_value (cash)
{
	cash = cash.replace (/,/g, "");
	cash = cash.replace (/\s/g, "");
	cash = cash.replace (/$/g, "");
	
	if (cash > 8191 && cash < 10485) 
	{
		cash -= 5000;
		cash = Math.round (cash * Math.pow (10, 2)) / Math.pow (10, 2);
		cash += 5000;
	} 
	else if ((cash < 8191 && cash < 0)  || (cash > 10485))
	{
		cash = Math.round (cash * Math.pow (10, 2)) / Math.pow (10, 2);
	}
	else
	{
		cash = 0;
	}
	
	return cash;
}

function setStyle (id, name, value)
{
	YAHOO.util.Dom.setStyle (id, name, value);
}

function formatCurrency (num) 
{
	num = num.toString ().replace (/\$|\,/g,'');
	if (isNaN (num))
	{
		num = "0";
	}
	sign = (num == (num = Math.abs (num)));
	num = Math.floor (num*100+0.50000000001);
	cents = num % 100;
	num = Math.floor (num / 100).toString ();
	if (cents<10)
	{
		cents = "0" + cents;
	}
	for (var i = 0; i < Math.floor ((num.length - (1 + i)) / 3); i++)
	{
		num = num.substring (0,num.length - (4 * i + 3)) + ',' + num.substring (num.length - (4 * i + 3));
	}
	return (((sign) ? '' : '-') + '$' + num + '.' + cents);
}