var selectedRow = '0';

var loanArray=new Array();
var stateCheck = false;
var regEdit = / rowDisable/g;

function highlightRow(target) {
	if(((loanArray[target].studentEnabled)&&(loanArray[target].stateEnabled))||(loanArray[target].state[0]=='all')){
		var selectRow = 'row'+target;
		var e=$(selectRow);
		if (e.className != 'selectRow') {
			unhighlight();
			e.className=e.className.replace(/ hightlightRow/g,'');
			e.className+=' highlightRow';
		}
	}
}

function selectRow(target) {
	if((loanArray[target])&&(((loanArray[target].studentEnabled)&&(loanArray[target].stateEnabled))||(loanArray[target].state[0]=='all'))){
		var selectRow = 'row'+target;
		selectedRow = selectRow;
		var thisRow;
		var e=$(selectRow);
		unhighlight();
		e.className='';
		e.className+=' selectRow';
		writeAccord(target);
	}
}


function unhighlight() {
	for(i=0;i<loanArray.length;i++) {
		thisRow = 'row'+i;
		var indexClass=$(thisRow);
		if (thisRow != selectedRow) {
			var classValue = loanArray[i].column;
			indexClass.className=classValue;
		}
	}
}

function tableLoad(target) {
	selectRow(target);
}

function roundBottom(element) {
	Rico.Corner.round(element, {corners:"bottom"});
}

function roundCorners(items) {
	Rico.Corner.round(items);
}

function xmlLoad() {
	var e = $('matrix');
	var items = e.getElementsByTagName('tr');
	var totalLength = items.length;
	for(i=totalLength;i>2;i--){
		Element.remove(items[i-1]);
	}
	callXML("GET","../rss/loans.xml");
}

function callXML(gMethod,url,pars) {
	//fix for local Firefox Priviliges
	/*
	if (window.XMLHttpRequest){
		try {
    		netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
		} catch (e) {
			alert("Permission UniversalBrowserRead denied.");
		}
	}
	*/
	// End Fix
	
	var myAjax = new Ajax.Request(url,
								  {
									  method: gMethod,
									  parameters: pars,
									  onComplete: getDocInfo
								  });
}

function getDocInfo(doc){
	selectedRow='row0';
	if (window.XMLHttpRequest){
		/*
		try {
 		   	netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
		} catch (e) {
			alert("Permission UniversalBrowserRead denied.");
		}
		*/
		var xmlDocument = doc.responseXML;
	} else if (window.ActiveXObject) {
		var xmlDocument = new ActiveXObject("Microsoft.XMLDOM");
		xmlDocument.loadXML(doc.responseText);
	}
	if (xmlDocument) {
		var node = xmlDocument.documentElement;
		var items = node.getElementsByTagName('loan');
		var columnClass='oddRow';
		var info = '';
		for (i=0;i<items.length;i++){
			loanArray[i] = new Object;
			loanArray[i].name=items[i].getElementsByTagName('name').item(0).firstChild.data;
			loanArray[i].borrower=items[i].getElementsByTagName('borrower').item(0).firstChild.data;
			loanArray[i].rate = items[i].getElementsByTagName('rate').item(0).firstChild.data;
			loanArray[i].fees = items[i].getElementsByTagName('fees').item(0).firstChild.data;
			loanArray[i].penalties = items[i].getElementsByTagName('penalties').item(0).firstChild.data;
			loanArray[i].terms = items[i].getElementsByTagName('terms').item(0).firstChild.data;
			loanArray[i].consolidation = items[i].getElementsByTagName('consolidation').item(0).firstChild.data;
			loanArray[i].limits='';
			var interiorItems = items[i].getElementsByTagName('limit');
			var interiorItemsP = interiorItems[0].getElementsByTagName('p');
			for (j=0;j<interiorItemsP.length;j++){
				loanArray[i].limits+='<p>'+interiorItemsP.item(j).firstChild.data+'</p>';
			}
			loanArray[i].links = items[i].getElementsByTagName('link').item(0).firstChild.data;
			loanArray[i].moreinfo = items[i].getElementsByTagName('moreinfolink').item(0).firstChild.data;
			loanArray[i].column = columnClass;
			loanArray[i].advice='';
			var interiorItems = items[i].getElementsByTagName('advice');
			var interiorItemsP = interiorItems[0].getElementsByTagName('p');
			for (j=0;j<interiorItemsP.length;j++){
				loanArray[i].advice+='<p>'+interiorItemsP.item(j).firstChild.data+'</p>';
			}
			loanArray[i].criteria='';
			var interiorItems = items[i].getElementsByTagName('criteria');
			var interiorItemsP = interiorItems[0].getElementsByTagName('p');
			for (j=0;j<interiorItemsP.length;j++){
				loanArray[i].criteria+='<p>'+interiorItemsP.item(j).firstChild.data+'</p>';
			}
			loanArray[i].benefits='';
			var interiorItems = items[i].getElementsByTagName('aesbenefit');
			var interiorItemsP = interiorItems[0].getElementsByTagName('p');
			for (j=0;j<interiorItemsP.length;j++){
				loanArray[i].benefits+='<p>'+interiorItemsP.item(j).firstChild.data+'</p>';
			}
			loanArray[i].student=items[i].getElementsByTagName('studenttype').item(0).firstChild.data;
			loanArray[i].borrowertype=items[i].getElementsByTagName('borrowertype').item(0).firstChild.data;
			loanArray[i].state=new Array;
			var interiorItems = items[i].getElementsByTagName('statetype');
			var interiorItemsP = interiorItems[0].getElementsByTagName('p');
			for (j=0;j<interiorItemsP.length;j++){
				loanArray[i].state[j] = interiorItemsP.item(j).firstChild.data;
			}
			loanArray[i].stateEnabled = true;
			loanArray[i].studentEnabled = true;
			// info+= '<tr  id="row'+i+'" class='+loanArray[i].column+'>\n';
			info+= '<tr  id="row'+i+'">\n';
			info += '<td onmouseover="highlightRow('+i+');" class="right">';
			info += '<strong>'+loanArray[i].name+'</strong></td>\n';
			info += '<td onmouseover="highlightRow('+i+')">'+loanArray[i].borrower+'</td>\n';
			info += '<td onmouseover="highlightRow('+i+')">'+loanArray[i].rate+'</td>\n';
			info += '<td onmouseover="highlightRow('+i+')">'+loanArray[i].fees+'</td>\n';
			info += '<td onmouseover="highlightRow('+i+')">'+loanArray[i].terms+'</td>\n</tr>\n';
			if (columnClass == 'oddRow') {
				columnClass = 'evenRow';
			} else {
				columnClass = 'oddRow';
			}
		}
	} else {
		alert("XML Parsing Error");
	}
	//new Insertion.After('thhead',info);
	new Insertion.Bottom('thhead1',info);
	document.getElementById('accordCell').rowSpan = items.length+1;
	tableLoad(0);
	writeAccord(0);
	document.getElementById('matrix').style.display='block';
	RUZEE.Borders.render();
	rowActive();
}

function writeAccord(index){
	Element.update('panel1Content',loanArray[index].criteria);
	Element.update('panel2Content',loanArray[index].advice);
	Element.update('panel3Content',loanArray[index].limits);
	Element.update('panel4Content',loanArray[index].benefits);
	var applyLink=$('applyButton');
	var applyText = 'Apply for '+loanArray[index].name+'!';
	var moreInfoLink=$('moreInfoButton');
	var loanLink=$('loanDetails');
	var loanText = loanArray[index].name+'<br />Loan Details';
	applyLink.href=loanArray[index].links;
	if (loanArray[index].links=="#"){
		applyLink.className+=" hide";
	} else {
		applyLink.className=applyLink.className.replace(/hide/g,'');
	}
	moreInfoLink.href=loanArray[index].moreinfo;
	if (loanArray[index].moreinfo=="#"){
		moreInfoLink.className+=" hide";
	} else {
		moreInfoLink.className=moreInfoLink.className.replace(/hide/g,'');
	}
	Element.update(loanLink,loanText);
	panelCheck(selectedRow);
}

function accord() { 
	panelAccord = new Rico.Accordion('accordionDiv',{expandedBg:'#CCCCCC',collapsedBg:'#CCCCCC',hoverBg:'#CCCCCC',expandedTextColor:'#333333',hoverTextColor:'#333333',collapsedTextColor:'#333333',borderColor: '#626567',expandedImage:'url(../images/matrix/paneldown.gif)',collapsedImage:'url(../images/matrix/panelup.gif)'}); 
}

function rowActive() {
	if (!document.getElementsByTagName || !document.createTextNode) return;
	var rows = document.getElementById('matrixTable').getElementsByTagName('tbody')[0].getElementsByTagName('tr');
	for (i = 0; i < rows.length; i++) {
		rows[i].onclick = function() {
			var checkRow = this.rowIndex-2;
			if (checkRow >= 0) {
				selectRow(this.rowIndex-2);
			}
		}
	}
}

function formProcess(idNumber) {
	if(idNumber>0){
		var j=$('question'+idNumber);
		if (j.options[0].value=='none'){
			Element.remove(j.options[0]);
		}
	}
}

function resetForm(formName){
	e=document.forms[formName].getElementsByTagName('select');
	for(i=0;i<e.length;i++){
	  	if (e[i].options[0].value != 'none'){
			var elOptNew = document.createElement('option');
			elOptNew.text = '-Please Select-';
			elOptNew.value = 'none';
			var elOptOld = e[i].options[0];  
			try {
				e[i].add(elOptNew, elOptOld); // standards compliant; doesn't work in IE
			}
			catch(ex) {
				e[i].add(elOptNew, 0); // IE only
			}
		}
		e[i].options[0].selected=true;
		e[i].value='none';
	}
	for(j=0;j<loanArray.length;j++){
		loanArray[j].stateEnabled=true;
		loanArray[j].studentEnabled=true;
	}
	formProcess(0);
	for(i=0;i<loanArray.length;i++){
		loanArray[i].column = loanArray[i].column.replace(regEdit,'');
		f=$('row'+i);
		f.className = loanArray[i].column;
	}
	selectRow(0);
}

function dataProcess(formName){
	var totalState=new Array;
	e=document.forms[formName].getElementsByTagName('select');
	if (e[0].value=='none'){
		var borrowerArray = ['undergraduate','parent','graduate'];
	} else {
		var borrowerArray = eval(e[0].value+"Array");
	}
	for(var i=0;i<borrowerArray.length;i++){
		totalState[i] = new Object;
		totalState[i].name = borrowerArray[i];
		totalState[i].value = false;
	}
	if (e[0].value != 'none'){
		var thisStudent = e[0].value;
	} else {
		var thisStudent = false;
	}
	if (e[1].value != 'none'){
		var thisResidence = e[1].value;
	} else {
		var thisResidence = false;
	}
	if (e[2].value != 'none'){
		var thisState = e[2].value;
	} else {
		var thisState = false;
	}
	for(var i=0;i<loanArray.length;i++){
		if(((thisStudent)&&((thisStudent==loanArray[i].student)||(loanArray[i].student=='all')))||(!(thisStudent))){
			loanArray[i].studentEnabled=true;
		} else {
			loanArray[i].studentEnabled=false;
		}
		var j=0;
		while(j<loanArray[i].state.length){
			loanArray[i].stateEnabled=false;
			if ((!(thisState))&&(!(thisResidence))) {
				loanArray[i].stateEnabled = true;
				j=loanArray[i].state.length;
			} else if (loanArray[i].state[j] == 'Other') {
				loanArray[i].stateEnabled = false;
				j=loanArray[i].state.length;
			} else if (((thisState)&&(thisState==loanArray[i].state[j]))||((thisResidence)&&(thisResidence==loanArray[i].state[j]))) {
				loanArray[i].stateEnabled = true;
				for(var z=0;z<totalState.length;z++){
					if(loanArray[i].borrowertype == totalState[z].name){
						totalState[z].value=true;
					}
				}
				j=loanArray[i].state.length;
			}
			j=j+1;
		}
		f=$('row'+i);
		f.className=f.className.replace(regEdit,'');
		loanArray[i].column=loanArray[i].column.replace(regEdit,'');
		if(loanArray[i].state=='all'){
			loanArray[i].stateEnabled=true;
		}
		if((!(loanArray[i].studentEnabled))||(!(loanArray[i].stateEnabled))){
			f.className+=' rowDisable';
			loanArray[i].column+=' rowDisable';
		}
	}
	for(var z=0;z<totalState.length;z++){
		if (!(totalState[z].value)){
			for(i=0;i<loanArray.length;i++){
				if((loanArray[i].studentEnabled)&&(loanArray[i].state[0]=='Other')&&(loanArray[i].borrowertype==totalState[z].name)){
					f=$('row'+i);
					f.className=f.className.replace(regEdit,'');
					loanArray[i].column=loanArray[i].column.replace(regEdit,'');
					loanArray[i].stateEnabled=true;
				}
			}
		}
		totalState[z].value = false;
	}
	panelCheck(selectedRow);
}

function panelCheck(index){
	var rowSearch=/row/g;
	var classSearch=/( )?rowDisable/g;
	indexNumber =  index.replace(rowSearch,'');
	if ((!(loanArray[indexNumber].stateEnabled))||(!(loanArray[indexNumber].studentEnabled))){
		document.getElementById(index).className=loanArray[indexNumber].column;
		var i=0;
		while(i<loanArray.length){
			if((loanArray[i].stateEnabled)&&(loanArray[i].studentEnabled)){
				selectRow(i);
				i=loanArray.length;
			} else {
				i++;
			}
		}
	}
	panelAccord.showTabByIndex(0);
}