// Get base url
url = document.location.href;
xend = url.lastIndexOf("/") + 1;
var base_url = url.substring(0, xend);
var base_url = base_url.replace('_forms/', '');
var base_url = base_url.replace('_ui/', '');
var browser=navigator.appName;
var project_id;
var fid;
var timerID;

function ajax_do (url) 
{
	if (url.substring(0, 4) != 'http') {
		url = base_url + url;
	}
	//window.open(url);
	var jsel = document.createElement('SCRIPT');
	jsel.type = 'text/javascript';
	jsel.src = url;

	document.body.appendChild (jsel);
}

function addEvent(elm, evType, fn, useCapture)
{
	if (typeof useCapture == "undefined") 
	{
		useCapture = false;
	}
	
	if(elm.addEventListener)
	{
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if(elm.attachEvent)
	{
		var r = elm.attachEvent('on' + evType, fn);
		EventCache.add(elm, evType, fn);
		return r;
	}
	else
	{
		elm['on' + evType] = fn;
	}
}

var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();

function cancelClick(e)
{
	if(window.event && window.event.returnValue)
	{
		window.event.returnValue = false;

	}
	if(e && e.preventDefault)
	{
		e.preventDefault();
	}
}

function xmlObject()
{
	var node;
	var nodetype;
	var url;
	var rs = [];
	var xmlDoc;
	var headers;
	var fieldlist;
	var classes;
	var firstOption;
	var noResults;
	
	this.setNode = setNode;
	this.setNodeType = setNodeType;
	this.setUrl = setUrl;
	this.getData = getData;
	this.process = process;
	this.setHeaders = setHeaders;
	this.setFieldlist = setFieldlist;
	this.setClasses = setClasses;
	this.setFirstOption = setFirstOption;
	this.buildDropdown = buildDropdown;
	this.setNoResults = setNoResults;
	
	function setNode(n)
	{
		node = n;
	}
	
	function setNodeType(t)
	{
		nodetype = t;
	}
	
	function setUrl(u)
	{
		url = u;
	}
	
	function setHeaders(h)
	{
		headers = h;
	}
	
	function setFieldlist(f)
	{
		fieldlist = f;
	}
	
	function setClasses(c)
	{
		classes = c;
	}
	
	function setFirstOption(fo)
	{
		firstOption = fo;
	}
	
	function setNoResults(nr)
	{
		noResults = nr;
	}

	function getData()
	{
		document.body.style.cursor = 'wait';
		//window.open(url);
		if(window.ActiveXObject){
			xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async=true;
			xmlDoc.load(url);
			xmlDoc.onreadystatechange=process;
		}
		// code for Mozilla, Firefox, Opera, etc.
		else if (document.implementation && document.implementation.createDocument){
			xmlDoc=document.implementation.createDocument("","",null);
			xmlDoc.load(url);
			xmlDoc.onload=process;
		}
		else
		{
			alert('Your browser cannot handle this script');
		}
	}
	
	function setRs()
	{
		var attrs = xmlDoc.getElementsByTagName("results")[0].attributes;
		for(var i = 0;i < attrs.length; i++)
		{
			rs[attrs[i].name] = attrs[i].value;
		}
		
		for(var r = 0;r < rs['count']; r++)
		{
			var nr = new Array();
			var elements = xmlDoc.getElementsByTagName("results")[0].childNodes[r].childNodes;
			for(var e = 0;e < elements.length;e++)
			{
				var fName = elements[e].nodeName;
				var fValue = elements[e].hasChildNodes() ? elements[e].childNodes[0].nodeValue : '';
				nr[fName] = fValue;
				nr[e] = fValue;
			}
			rs.push(nr);
		}
	}

	function process()
	{
		setRs();
		switch(nodetype)
		{
			case 'dropdown':
				buildDropdown();
			break;
			case 'fields':
				setFields();
			break;
			case 'filelist':
				listFiles();
			break;
			case 'table':
				buildTable();
			break;
			case 'tbody':
				buildTbody();
			break;
		}
		document.body.style.cursor = 'default';
	}
	
	function buildDropdown()
	{
		var el = document.getElementById(node);
		//alert(el.name);
		if(el != null && el.options)
		{
			if(rs['count'] > 0)
			{
				el.length = 0;
				el.options[0] = new Option(firstOption, '');
				for(var i =0;i<rs['count'];i++)
				{
					el.options[i + 1] = new Option(rs[i][1], rs[i][0]);
				}
			}
			else
			{
				el.length = 0;
				el.options[0] = new Option(noResults, '');				
			}
		}
	}

	function buildTable()
	{
		var el = document.getElementById(node);
		if(el != null)
		{
			if(rs['count'] > 0)
			{
				if(fieldlist != null)
				{
					var h = headers.split(',');
					var f = fieldlist.split(',');
					
					var new_tab = document.createElement('table');
					new_tab.id = 'maindatatable';
					new_tab.cellspacing = '0';
					var new_cap = document.createElement('caption');
					new_cap.innerHTML = 'Click on row to list project files to right.';
					new_tab.appendChild(new_cap);
					var new_thead = document.createElement('thead');
					new_thead.id = 'projectheader';
					var new_tr = document.createElement('tr');
					for(var i=0;i<h.length;i++)
					{
						var new_th = document.createElement('th');
						new_th.innerHTML = h[i];
						new_tr.appendChild(new_th);
					}
					new_thead.appendChild(new_tr);
					new_tab.appendChild(new_thead);
							
					var new_tbody = document.createElement('tbody');
					if(rs['count'] > 0)
					{
						for(var i =0;i<rs['count'];i++)
						{
							var new_tr = document.createElement('tr');
							new_tr.id = rs[i]['id'];
							new_tr.className = 'projectrow';
							addEvent(new_tr, 'click', showProjectFiles);
							for(var k=0;k<f.length;k++)
							{
								var new_td = document.createElement('td');
								new_td.innerHTML = rs[i][f[k]];
								new_tr.appendChild(new_td);
							}
							new_tbody.appendChild(new_tr);						
						}
					}
					else
					{
						el.innerHTML = 'No results found for this search.';				
					}
					new_tab.appendChild(new_tbody);
					
					var new_tfoot = document.createElement('tfoot');
					var new_tr = document.createElement('tr');
					var tfoottd = document.createElement('td');
					tfoottd.colSpan = h.length;
					tfoottd.align = 'right';
					tfoottd.innerHTML = rs['count'] + ' records displayed.';
					new_tr.appendChild(tfoottd);
					new_tfoot.appendChild(new_tr);
					new_tab.appendChild(new_tfoot);
					
					el.innerHTML = '';
					el.appendChild(new_tab);				}
				else
				{
					el.innerHTML = 'No fields listed for display';
				}
				
			}
			else
			{
				el.innerHTML = 'No results to display.';				
			}
		}
	}
	
	function buildTbody()
	{
		el = document.getElementById(node);
		el.innerHTML = '';
		if(el != null)
		{
			if(rs['count'] > 0)
			{
				if(fieldlist != null)
				{
					var f = fieldlist.split(',');
					
					for(var i=0;i<rs.length;i++)
					{
						var new_tr = document.createElement('tr');
						new_tr.id = rs[i]['id'];
						for(var k=0;k<f.length;k++)
						{
							var new_td = document.createElement('td');
							new_td.innerHTML = rs[i][f[k]];
							new_tr.appendChild(new_td);
						}
						addEvent(new_tr, 'click', showProjectFiles);
						el.appendChild(new_tr);
					}
				}
				else
				{
					el.innerHTML = 'No fields listed for display';
				}
			}
		}
	}
	
	function setFields()
	{
		var h = headers.split(',');
		var f = fieldlist.split(',');
		for(var i=0;i<h.length;i++)
		{
			setValue(h[i], rs[0][f[i]]);
		}
	}
	
	function listFiles()
	{
		var el = document.getElementById(node);
		if(el != null)
		{
			if(rs['count'] > 0)
			{
				if(window.opener == null)
				{
					var h = headers;				
					var new_h = document.createElement('h3');
					new_h.innerHTML = h;
					el.innerHTML = '';
					el.appendChild(new_h);
				}
				else
				{
					el.innerHTML = '';
				}
				
				for(var i=0;i<rs.length;i++)
				{
					var new_a = document.createElement('a');
					var new_img = document.createElement('img');
					new_img.src = rs[i]['image'];
					new_a.appendChild(new_img);
					new_a.innerHTML += '&nbsp;'+rs[i]['name'];
					new_a.target = '_blank';
					new_a.href = '/open_file.php?download=1&file_name='+rs[i]['link'];
					new_a.id = rs[i]['path']+'/'+rs[i]['name'];
					new_a.name = rs[i]['path']+'/'+rs[i]['name'];

                    if(node == 'ctifiles')
                    {
                      addEvent(new_a, 'contextmenu', grabFile);
                      //addEvent(new_a, 'mouseup', releaseFile);
                    }
                    else
                    {
                        addEvent(new_a, 'contextmenu', popUpMenu);
                    }
					el.appendChild(new_a);
				}
				if(window.opener == null)
				{
					if(rs['fileupload'] == 1)
					{
						var new_a = document.createElement('a');
						new_a.innerHTML = ' Add files to project. ';
						new_a.href = '#'+rs['projectno']+'|'+fid[1];
						new_a.className = 'fileMenuOption';
						addEvent(new_a, 'click', fileManager);
						el.appendChild(new_a);
					}
					if(rs['fileadmin'] == 1)
					{
						var new_a = document.createElement('a');
						new_a.innerHTML = ' Edit project information. ';
						new_a.href = 'project.php?id='+fid[1];
						new_a.className = 'fileMenuOption';
						el.appendChild(new_a);
					}
					//var new_a = document.createElement('a');
					//new_a.innerHTML = ' Close ';
					//new_a.href = 'javascript:hide();';
					//new_a.className = 'fileMenuOption';
					//addEvent(new_a, 'click', hide);
					//el.appendChild(new_a);
            	}
			}
			else
			{				
				if(window.opener == null)
				{
					var h = headers;				
					var new_h = document.createElement('h3');
					new_h.innerHTML = 'There are no files for '+rs['projectno']+'.';
					el.innerHTML = '';
					el.appendChild(new_h);

					if(rs['fileupload'] == 1)
					{
						var new_a = document.createElement('a');
						new_a.innerHTML = ' Add files to project. ';
						new_a.href = '#'+rs['projectno']+'|'+fid[1];
						new_a.className = 'fileMenuOption';
						addEvent(new_a, 'click', fileManager);
						el.appendChild(new_a);
					}
					if(rs['fileadmin'] == 1)
					{
						var new_a = document.createElement('a');
						new_a.innerHTML = ' Edit project information. ';
						new_a.href = 'project.php?id='+fid[1];
						new_a.className = 'fileMenuOption';
						el.appendChild(new_a);
					}
					//var new_a = document.createElement('a');
					//new_a.innerHTML = ' Close ';
					//new_a.href = 'javascript:hide();';
					//new_a.className = 'fileMenuOption';
					//addEvent(new_a, 'click', hide);
					//el.appendChild(new_a);
	}
				else
				{
					el.innerHTML = 'There are no files in this folder.';
				}
			}
			
		}
	}
}

function newWindow(URL,w,h, name) 
{ 
	if(window.showModalDialog)
	{
		w += 80;
		window.showModalDialog(URL, window, "dialogWidth:"+w+"px;dialogHeight:"+h+"px");
	}
	else
	{
		var winl = (screen.width - w) / 2;
		var wint = (screen.height - h) / 2;
		winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+'resizable=0,toolbar=no,menubar=no,location=no,scrollbars=0';
		window.open(URL, name, winprops);
	}
} 

function fileManager(e)
{
	var el = window.event ? window.event.srcElement : e ? e.target : null;
	var project_number = el.href.split('#');
	fid = project_number[1].split('|');
	if(clientName == 'cbrichardellis')
	{
		//var url = 'fileupload/index.php?dir='+fid[0];
        var url = '/filemanager/index.php?project_id='+fid[1]+'&dir='+clientName+'/'+fid[0];
	}
	else
	{
		var url = '/filemanager/index.php?project_id='+fid[1]+'&dir='+document.getElementById('clientName').value+'/'+fid[0];
	}
	newWindow(url,600,600,'FileManager');
}

function popUpMenu(e)
{
	var el = window.event ? window.event.srcElement : e ? e.target: null;
	if(el.id != '')
	{
		if(window.event && window.event.returnValue)
		{
			window.event.returnValue = false;
		}
		if(e && e.preventDefault)
		{
			e.preventDefault();
		}	
		document.getElementById('currentfilename').value = el.id;
		var ary = el.id.split('/');
		var str = el.innerText;
		var els = getElementsByClass('fileinfo', document, 'span');
		for(var i = 0;i < els.length; i++)
		{
			els[i].innerHTML = ary[ary.length - 1];
		}
		//document.getElementById('openFile').href = el.href;
		//document.getElementById('openFile').target = '_blank';
		document.getElementById('downloadFile').href = el.href +'&download=1';
		document.getElementById('downloadFile').target = '_blank';
		var _x = e.pageX ? e.pageX : window.event.clientX ? window.event.clientX + document.body.scrollLeft : null;
		var _y = e.pageY ? e.pageY : window.event.clientY ? window.event.clientY + document.body.scrollTop : null;
		var cordObj = document.getElementById('popUpMenu');
		cordObj.style.top = (_y - 30) + 'px';
		cordObj.style.left = (_x + 15) + 'px';
		document.getElementById('popUpMenu').style.display = 'block';
		e.cancelBubble=true;
		return false;

	}
	else
	{
		document.getElementById('popUpMenu').style.display = 'none';
	}
}

function openFile(e)
{
	var el = window.event ? window.event.srcElement : e ? e.target : null;
	var url = 'open_file.php?file_name='+el.id;
	newWindow(url,400,400, 'File Opener')
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
	node = document;
	if ( tag == null )
	tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function getSelectedText(id)
{
	var objSel = document.getElementById(id);
	var selText = objSel[objSel.selectedIndex].text ;
	return selText;
}

function getSelectedValue(id)
{
	var objSel = document.getElementById(id);
	var selText = objSel[objSel.selectedIndex].value ;
	return selText;
}

function SetSelVal(n, Value)
{
	var SelectObjects = document.getElementsByName(n);
	var SelectObject = SelectObjects[0];
	for(index = 0;index < SelectObject.length;index++)
	{
		if(SelectObject[index].value == Value)
		SelectObject.selectedIndex = index;
	}
}

function setRadioValue(radioObj, newValue) {
	if(!radioObj)
		return;
	var radioLength = radioObj.length;
	if(radioLength == undefined) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}
	for(var i = 0; i < radioLength; i++) {
		radioObj[i].checked = false;
		if(radioObj[i].value == newValue.toString()) {
			radioObj[i].checked = true;
		}
	}
}

function setValue(n, v)
{
	var el = document.getElementsByName(n);
	var eltype = el[0] ? el[0].type : 'none';
	
	switch(eltype)
	{
		case 'text':
			el[0].value = v;
		break;
		case 'textarea':
			el[0].value = v;
		break;
		case 'select':
		case 'select-one':
			SetSelVal(n, v);
		break;
		case 'radio':
			setRadioValue(el[0], v);
		break;
		case 'none':
			alert(n);
		break;
	}
}

function formatPhone(e)
{	
	var obj = window.event ? window.event.srcElement : e ? e.target : null;
	str = obj.value;
	str = str.replace(/\D/g, '');
	if(str.length > 10){str = str.substring(0,3) + '.' + str.substring(3,6) + '.' + str.substring(6,10) + ' x' + str.substring(10,30);}
	if(str.length <= 10 && str.length > 6 && str.length != 7){str = str.substring(0,3) + '.' + str.substring(3,6) + '.' + str.substring(6,10);}
	if(str.length == 7){str = str.substring(0,3) + '.' + str.substring(3,7);}
	obj.value = str;
}

function onlyNumbers(e)
{	
	var obj = window.event ? window.event.srcElement : e ? e.target : null;
	str = obj.value;
	str = str.replace(/\D/g, '');
	obj.value = str;
}

function stripBad(e)
{	
	var obj = window.event ? window.event.srcElement : e ? e.target : null;
	str = obj.value;
	str = str.replace(/#/, '');
	str = str.replace(/&/, ' and ');
	obj.value = str;
}

function ajaxSubmitData(e)
{
	var els = document.getElementById('new_project').elements;
	var str = '';
	for(var i = 0;i < els.length; i++)
	{
		switch(els[i].type)
		{
			case 'hidden':
			case 'text':
			case 'textarea':
			case 'password':
				str += '&'+els[i].name+'='+els[i].value;
			break;
			case 'select-one':
				str += '&'+els[i].name+'='+getSelectedValue(els[i].id);
			break;
		}
		//str += els[i].type + ':' + els[i].name + ':' + els[i].value;
	}
	str = '&'+str;
	str = str.replace(/&&/, "?");
	alert(str);
	var url = 'ajax/save_project.php'+str;
	ajax_do(url);
}

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };

function grabFile(e)
{
		if(window.event && window.event.returnValue)
		{
			window.event.returnValue = false;
		}
		if(e && e.preventDefault)
		{
			e.preventDefault();
		}
        var obj = window.event ? window.event.srcElement : e ? e.target : null;
        var cb = document.getElementById('curbatch');
        if(cb.value == '')
        {
            alert('You must choose a batch first.  Please pick from the list below and add a new batch.');
        }
        else
        {
            var atb = confirm('This file will be added to batch '+cb.value);
            {

                var url = 'ajax/addToBatch.php?batchname='+cb.value+'&filename='+obj.id;
                //alert(url);
                //window.open(url);
                ajax_do(url);
            }
        }
        e.cancelBubble=true;
		return false;
}

function releaseFile(e)
{
}
