//////////////////////////////////////////////////////////////////////////////////////////
//Smart Folding Menu tree- By Dynamic Drive (rewritten 03/03/02)
//For full source code and more DHTML scripts, visit http://www.dynamicdrive.com
//This credit MUST stay intact for use

var head="display:''"
img1=new Image()
img1.src="images/greenplus.gif"
img2=new Image()
img2.src="images/redminus.gif"

var ns6=document.getElementById&&!document.all
var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1

function checkcontained(e){
var iscontained=0
cur=ns6? e.target : event.srcElement
i=0
if (cur.id=="foldheader")
iscontained=1
else
while (ns6&&cur.parentNode||(ie4&&cur.parentElement)){
if (cur.id=="foldheader"||cur.id=="foldinglist"){
iscontained=(cur.id=="foldheader")? 1 : 0
break
}
cur=ns6? cur.parentNode : cur.parentElement
}

if (iscontained){
var foldercontent=ns6? cur.nextSibling.nextSibling : cur.all.tags("UL")[0]
if (foldercontent.style.display=="none"){
foldercontent.style.display=""
cur.style.listStyleImage="url('images/redminus.gif')"
}
else{
foldercontent.style.display="none"
cur.style.listStyleImage="url('images/greenplus.gif')"
}
}
}

if (ie4||ns6){
document.ondblclick=checkcontained
}
///////////////////////////////////////////////////////////////////////////////////////////////


function sh(id1) {
	  if (id1 != '') expMenu(id1);
	}
	
function expMenu(id) {
	  d = document
	  var itm = null;
	  if (d.getElementById) {
		itm = d.getElementById(id);
	  } else if (d.all){
		itm = d.all[id];
	  } else if (d.layers){
		itm = d.layers[id];
	  }
	
	  if (!itm) {
	   return false;
	  }	  else if (itm.style) {
		if (itm.style.display == "none") { itm.style.display = ""; }
		else { itm.style.display = "none"; }
	  } else { itm.visibility = "show"; }
	  	   return true;
}

function isValidFilename(string) {

	var invalids = '?&/\*:;|<>"\'=';

    for (var i=0; i< string.length; i++) {
       if (invalids.indexOf(string.charAt(i)) != -1)
          return false;
    }
    return true;
}




function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}




function toggle_box(form, box)
{

	str = "if (document."+form+"."+box+".checked == true) document."+form+"."+box+".checked = false; else document."+form+"."+box+".checked = true"
	eval(str);

}



//3-state Highlight menu effect script: By Dynamicdrive.com
//For full source, Terms of service, and 100s DTHML scripts
//Visit http://www.dynamicdrive.com

function over_effect(e,state){
if (document.all)
source4=event.srcElement
else if (document.getElementById)
source4=e.target
if (source4.className=="menulines")
source4.style.borderStyle=state
else{
while(source4.tagName!="TABLE"){
source4=document.getElementById? source4.parentNode : source4.parentElement
if (source4.className=="menulines")
source4.style.borderStyle=state
}
}
}

function isEmail(string) {
    if (string.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
        return true;
    else
        return false;
}

function uppercase(value) {
  return value.toUpperCase(value);
}

function lowercase(value) {
  return value.toLowerCase(value);
}



function getExtension(value) {
  return value.substring(value.lastIndexOf('.') + 1,value.length);
}


function datePosition(m1,d1,y1,m2,d2,y2,flag)
{
  if (m1 < 10)
    m1 = "0" + m1;

  if (m2 < 10)
    m2 = "0" + m2;

  if (d1 < 10)
    d1 = "0" + d1;

  if (d2 < 10)
    d2 = "0" + d2;

  /*
     type 5 : 05/29/1997

     'flag' determines if we are comparing date1 with todays date or not
     Returns -1 if the date1 is behind date2
     Returns 0 if the date1 is equal to date2
     Returns 1 if the date1 is ahead of date2

     Added Y2K checking.  (Works for any century cross over)
  */

    //date format needs to be "mm/dd/yyyy"
    dateString1 = m1 + "/" + d1 + "/" + y1;

    var now = new Date();

    if (flag==1)  //compare with given (second) date
      {
        var dateString2 = m2 + "/" + d2 + "/" + y2;
        var date2 = new Date(dateString2.substring(6,10),
                            dateString2.substring(0,2)-1,
                            dateString2.substring(3,5));
      }


    else //compare with today's date
      var date2 = new Date(now.getFullYear(),now.getMonth(),now.getDate());


      var date1 = new Date(dateString1.substring(6,10),
                            dateString1.substring(0,2)-1,
                            dateString1.substring(3,5));

    if (date1 < date2)
       return -1;

    else if (date1 > date2)
       return 1;

    else
      return 0;

}

function y2k(number)
{
  return (number < 1000) ? number + 1900 : number;
}


function isValidDate (day,month,year)
{
  // checks if date passed is valid
 
    var today = new Date();
    year = ((!year) ? y2k(today.getFullYear()):year);
	month = ((!month) ? today.getMonth():month-1);
  

    if (!day) return false


    var test = new Date(year,month,day);
    if ( (y2k(test.getFullYear()) == year) &&
         (month == test.getMonth()) &&
         (day == test.getDate()) )
        return true;
    else
        return false

}




function replaceCarriageReturn(string,text,by) {
// Replaces text with by in string
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replaceCarriageReturn(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}


function trim(strText) { 

    strText = replaceCarriageReturn(replaceCarriageReturn(strText,'\r',''),'\n','');

	// this will get rid of leading spaces 
    while ((strText.substring(0,1) == ' ')||(strText.substring(0,2) == '\r')) 
        strText = strText.substring(1, strText.length);

    // this will get rid of trailing spaces 
    while ((strText.substring(strText.length-1,strText.length) == ' ')||(strText.substring(strText.length-2,strText.length) == '\r'))
        strText = strText.substring(0, strText.length-1);

   return strText;
} 


function is_empty(form, field)
{
  form.field.value = trim(form.field.value);
  if ( (temp_str == null) || (temp_str == " ") || (temp_str == '\t') || (temp_str == "") )
	return true;
  else
	return false;
}


function mOvr(src,clrOver){ 
	if (!src.contains(event.fromElement)){ 
		src.style.cursor = 'hand'; 
		src.bgColor = clrOver; 
	} 
} 
function mOut(src,clrIn){ 
	if (!src.contains(event.toElement)){ 
		src.style.cursor = 'default'; 
		src.bgColor = clrIn; 
	} 
} 
function mClk(src){ 
	if(event.srcElement.tagName=='TD')
		src.children.tags('A')[0].click();
}

 
function changeto(highlightcolor){
source=event.srcElement
if (source.tagName=="TABLE")
return
while(source.tagName!="TR")
source=source.parentElement
if (source.style.backgroundColor!=highlightcolor&&source.id!="ignore")
source.style.backgroundColor=highlightcolor
}
 
function changeback(originalcolor){
if (event.fromElement.contains(event.toElement)||source.contains(event.toElement)||source.id=="ignore")
return
if (event.toElement!=source)
source.style.backgroundColor=originalcolor
}


function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function openWindow(fileName, leftValue, rightValue, widthVal, heightVal) {
	x = leftValue //+ window.event.clientX; 
	y = rightValue //+ window.event.clientY;
	winProp = "toolbar=no, titlebar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no";
	_win = window.open(fileName, "test", winProp + ', width=' + widthVal + ',height=' + heightVal + ',top='+y+',left='+x);
	_win.focus();
	return;
}

function open_mwatch(symbol)
{
	window.open('marketwatch_popup.php?symbol='+symbol,'MWATCH','toolbar=no,location=no,statusbar=no,resizable=no,menubar=no,width=645,height=470,scrollbars=yes');
	
	return;
}

function open_mwatch(symbol)
{
	window.open('marketwatch_popup.php?symbol='+symbol,'MWATCHSYMBOL','toolbar=no,location=no,statusbar=no,resizable=no,menubar=no,width=663,height=470,scrollbars=yes');
	return;
}

function stock_watch()
{
	window.open('stock_watch/stock_watch_setup.php','STOCK','toolbar=no,location=no,statusbar=no,resizable=no,menubar=no,width=529,height=385,scrollbars=yes')
	return;
}

function market_watch()
{
	window.open('market_watch/mwatch.php','MWATCH','toolbar=no,location=no,statusbar=no,resizable=yes,menubar=no,width=645,height=470,scrollbars=yes');
	
	return;
}

function open_access(file)
{
	window.open(file,'ACCESS','toolbar=no,location=no,statusbar=no,resizable=no,menubar=no,width=600,height=470,scrollbars=yes');
	
	return;
}


// Portal Functions
	var url = "change_preference.php?"; // The server-side script
	flowColor();
	var isWorking = false;
	function addPortlet()
	{
		userId = document.getElementById("userId").value;
		document.getElementById("portlet_select").selectedIndex.value;
		http.open("GET", url + "ADD_PORLET" + "=" + "PORTLET_ID" + "&" + "USER_ID" + "=" + userId, true);
		http.onreadystatechange = handleHttpResponse;
		isWorking = true;
		http.send(null);
	}
	
	function minimize(pId ,rowId)
	{	
		hideshow_row = document.getElementById(rowId);
		if (hideshow_row.style.display=='none')
			hideshow_row.style.display='';
		else
			hideshow_row.style.display='none';

		userId = document.getElementById("userId").value;
		
		//alert(pId + ' ' +userId +  ' '+ rowId)
		flowColor();
		updateMinimize(pId, userId, rowId);
	}


	function updateMinimize(pId, userId, row)
	{
		hideshow_row = document.getElementById(row);
		if (hideshow_row.style.display=='none')
			state = 1;
		else
			state = 0;

		http.open("GET", url + "MINIMIZE" + "=" + state + "&" + "PORTLET_ID" + "=" + pId + "&" + "USER_ID" + "=" + userId, true);
		http.onreadystatechange = handleHttpResponse;
		isWorking = true;
		http.send(null);

	}

	function moveUp(current_table)
	{	
		var mainTableObject = document.getElementById('main_table');
		var current;
		var previous;
		var rowPos = 0;
		for(i=0; i<mainTableObject.rows.length; i++)
		{
			if(mainTableObject.rows[i].id == current_table)
			{
				current = mainTableObject.rows[i].id;
				if(i == 0)
					previous = mainTableObject.rows[mainTableObject.rows.length-1].id;
				else
					previous = mainTableObject.rows[i-1].id;				
				rowPos = i;
				break;
			}
		}		
		
		if(rowPos == 0)
		{
			temp = mainTableObject.rows[rowPos].cells[0].innerHTML;
			mainTableObject.rows[rowPos].cells[0].innerHTML = mainTableObject.rows[mainTableObject.rows.length-1].cells[0].innerHTML;
			mainTableObject.rows[mainTableObject.rows.length-1].cells[0].innerHTML = temp;
		
			temp = mainTableObject.rows[rowPos].id;
			mainTableObject.rows[rowPos].id = mainTableObject.rows[mainTableObject.rows.length-1].id;
			mainTableObject.rows[mainTableObject.rows.length-1].id = temp;
		}
		else
		{		
			temp = mainTableObject.rows[rowPos].cells[0].innerHTML;
			mainTableObject.rows[rowPos].cells[0].innerHTML = mainTableObject.rows[rowPos-1].cells[0].innerHTML;
			mainTableObject.rows[rowPos-1].cells[0].innerHTML = temp;
			
			temp = mainTableObject.rows[rowPos].id;
			mainTableObject.rows[rowPos].id = mainTableObject.rows[rowPos-1].id;
			mainTableObject.rows[rowPos-1].id = temp;
		}
		userId = document.getElementById("userId").value;
		updateMoveUp(current_table, userId, previous);
		flowColor();
	}
	
	function moveDown(current_table)
	{
		var mainTableObject = document.getElementById('main_table');
		var current;
		var nextId;
		var rowPos = 0;
		for(i=0; i<mainTableObject.rows.length; i++)
		{
			if(mainTableObject.rows[i].id == current_table)
			{
				current = mainTableObject.rows[i].id;
				if((mainTableObject.rows.length-1) != i)				
					nextId = mainTableObject.rows[i+1].id;
				else
					nextId = mainTableObject.rows[0].id;
				rowPos = i;
				break;
			}
		}
		if((mainTableObject.rows.length-1) == rowPos)
		{
			temp = mainTableObject.rows[0].cells[0].innerHTML;
			mainTableObject.rows[0].cells[0].innerHTML = mainTableObject.rows[rowPos].cells[0].innerHTML;
			mainTableObject.rows[rowPos].cells[0].innerHTML = temp;
			
			temp = mainTableObject.rows[0].id;
			mainTableObject.rows[0].id = mainTableObject.rows[rowPos].id;
			mainTableObject.rows[rowPos].id = temp;
		}		
		else
		{
			temp = mainTableObject.rows[rowPos].cells[0].innerHTML;
			mainTableObject.rows[rowPos].cells[0].innerHTML = mainTableObject.rows[rowPos+1].cells[0].innerHTML;
			mainTableObject.rows[rowPos+1].cells[0].innerHTML = temp;		
			
			temp = mainTableObject.rows[rowPos].id;
			mainTableObject.rows[rowPos].id = mainTableObject.rows[rowPos+1].id;
			mainTableObject.rows[rowPos+1].id = temp;
		}
		
		userId = document.getElementById("userId").value;
		updateMoveDown(current, userId, nextId);
		flowColor();
	}
			
	function closePortlet(rowId)
	{
		var index = 0;
		var portletID = 0;
		for(i=0; i<document.getElementById('main_table').rows.length; i++ )
		{
			if(document.getElementById('main_table').rows[i].id == rowId)
			{
				index = i;
				portletID = document.getElementById('main_table').rows[i].id;
				break;
			}
		}
				
		tableObj = document.getElementById("main_table");		
		tableObj.deleteRow(index);
		userId = document.getElementById("userId").value;
		updateClose(portletID, userId);
		document.location.href = "dynaweb.dti?";
		flowColor();
	}	
	
	function handleHttpResponse() {
	 if (http.readyState == 4) {
		if (http.responseText.indexOf('invalid') == -1) {
	// Use the XML DOM to unpack the city and state data var xmlDocument = http.responseXML; var city = xmlDocument.getElementsByTagName('city').item(0).firstChild.data; var state = xmlDocument.getElementsByTagName('state').item(0).firstChild.data;		 
		  isWorking = false;
		}
	  }
	}

	function updateClose(pId, userId)
	{
	  
		http.open("GET", url + "CLOSE" + "=" + pId + "&" + "USER_ID" + "=" + userId, true);
		http.onreadystatechange = handleHttpResponse;
		isWorking = true;
		http.send(null);
	}
	
	function updateMoveDown(pId, userId, nextId)
	{
	  
		http.open("GET", url + "MOVE_DOWN" + "=" + pId + "&" + "USER_ID" + "=" + userId + "&" + "NEXT" + "=" + nextId, true);		
		http.onreadystatechange = handleHttpResponse;
		isWorking = true;
		http.send(null);
	}
	
	function updateMoveUp(pId, userId, previous)
	{
		http.open("GET", url + "MOVE_UP" + "=" + pId + "&" + "USER_ID" + "=" + userId + "&" + "PREVIOUS" + "=" + previous, true);
		http.onreadystatechange = handleHttpResponse;
		isWorking = true;
		http.send(null);
	}
	
	function getHTTPObject() {
	  var xmlhttp;
	  /*@cc_on
	  @if (@_jscript_version >= 5)
		try {
		  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
		  try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		  } catch (E) {
			xmlhttp = false;
		  }
		}
	  @else
	  xmlhttp = false;
	  @end @*/
	  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
		  xmlhttp = new XMLHttpRequest();
		  xmlhttp.overrideMimeType("text/xml"); 
		} catch (e) {
		  xmlhttp = false;
		}
	  }
	  return xmlhttp;
	}
	var http = getHTTPObject(); // We create the HTTP Object
	
	function flowColor()
	{
		//last_id = document.getElementById('main_table').rows[document.getElementById('main_table').rows.length-1].id;
		//document.getElementById("right_side_background").bgColor = document.getElementById("column"+last_id).bgColor;
	}