function hideTabLi(num)
{
	gebi('tabber').tabber.tabs[num].li.style.display='none';
}

function showCloseButton(num)
{
	gebi('tabber').tabber.tabs[num].showCloseButton = true;
}

function showTabLi(num)
{
	gebi('tabber').tabber.tabs[num].li.style.display='';
}

function currentTabIndex()
{
	return document.getElementsByClassName('tabberactive')[0].getElementsByTagName('a')[0].tabberIndex;
}

function currentTabReference()
{
	return gebi('tabber').tabber.tabs[currentTabIndex()];
}

function loadTabContent(index, forceRefresh, orderby, get)
{
	var a, div, i, inputs, url, img;

	if(!orderby)
		orderby='';

	a=new Ajax(true, 'txt');
	switch(index)
	{
		case TAB_USERS:
			div='users';
			url='modules/users/view.php';
		break;
		case TAB_DOCUMENTS:
			div='documents';
			url='modules/documents/view.php';
		break;
		case TAB_CATEGORIES:
			div='categories';
			url='modules/categories/view.php';
		break;
		case TAB_LOGINS:
			div='logins';
			url='modules/logins/view.php';
		break;
		case TAB_LOCATIONS:
			div='locations';
			url='modules/locations/view.php';
		break;
		case TAB_PARTNERS:
			div='partners';
			url='modules/partners/view.php';
		break;
		
	}
	
	if(!!get)
		url+='?'+get;

	if(!!gebi(div))
	{
		gebi('tabber').tabber.tabs[index].showLoader();
		
		inputs=gebi(div).getElementsByTagName('input');
		checked=false;
		if(forceRefresh!==true)
		{
			for(i=0; i<inputs.length; i++)
			{
				if(inputs[i].type=='checkbox' && inputs[i].checked)
					return;
			}
		}
		
		if(gebi('tabber').tabber.tabs[index].querystring!=url)
			gebi('tabber').tabber.tabs[index].querystring = url;
		
		a.get(gebi('tabber').tabber.tabs[index].querystring, function()
		{
			if(a.ready())
			{				
				gebi('tabber').tabber.tabs[index].hideLoader();
				
				if(a.status()==200)
				{
					gebi(div).innerHTML=a.response();
					appendTooltips();
				}
				else if(a.status() != 0)
					alert('Couldn\'t load page: HTTP Error '+a.status()+'\n\n'+a.response());
			}
		});
	}
}

function orderBy(order)
{
	loadTabContent(currentTab(), true, order);
}

function loadFormTab(id, tab, editable, editAsNew, clearForm, parameters)
{
	var a, ele, elements, formOpen, i, j, opt, opts;
	
	if(!!tab)
	{
		formOpen=gebi('tabber').tabber.tabs[tab].li.style.display!='none';
		showTabLi(tab);
		gebi('tabber').tabber.tabShow(tab);
		
		if(formOpen)

		{
			if(!confirm('There is a form already open. Are you sure you want to load another one over it? Any changes you have made will be lost.'))
				return;
		}
	}
	
	if(tab==TAB_ADD_USERS)
	{
		elements=gebi('add_users_form').elements;
		module='users';
	}
	else if(tab==TAB_ADD_DOCUMENTS)
	{
		elements=gebi('add_documents_form').elements;
		module='documents';
	}
	else if(tab==TAB_ADD_LOCATIONS)
	{
		elements=gebi('add_locations_form').elements;
		module='locations';
	}
	else if(tab==TAB_ADD_PARTNERS)
	{
		elements=gebi('add_partners_form').elements;
		module='partners';
	}
	else if(tab==TAB_ADD_CATEGORIES)
	{
		elements=gebi('add_categories_form').elements;
		module='categories';
	}
	
	url='modules/'+ module +'/ajax.php?Action=load_form&'+parameters;
	for(i=0; i<elements.length; i++)
	{
		ele=elements[i];
		
		if(editable===false || ele.className=='disabled')
			ele.disabled=true;
		else
			ele.disabled=false;
		
		if(clearForm!==false)
		{
			if(ele.tagName.toLowerCase()=='textarea' || (ele.tagName.toLowerCase()=='input' && (ele.type=='hidden' || ele.type=='text' || ele.type=='password' || ele.type=='file')))
				ele.value='';
			else if(ele.tagName.toLowerCase()=='input' && ele.type=='checkbox')
				ele.checked=false;
			else if(ele.tagName.toLowerCase()=='select')
			{
				if(ele.type=='select-multiple')
				{
					for(j=0; j<ele.options.length; j++)
						ele.options[j].selected=false;
				}
				else
					ele.selectedIndex=0;
			}
		}
	}
	
	a=new Ajax(true, 'txt');
	if(!isNaN(parseInt(id)))
		url=url+ (url.indexOf('?')==-1? '?' : '&') +'id='+id;
	a.get(url, function()
	{
		if(a.ready())
		{
			if(a.status()==200)
			{
				//alert(a.response());
				try
				{
					resp=JSON.parse(a.response());
				}
				catch(err)
				{
					alert('Error Parsing JSON: '+a.response());	
				}
				if(resp.success)
				{
					for(i in resp.form_fields)
					{
						if(!!resp.form_fields[i])
						{
							ele=elements[i];
							if(!!ele)
							{
								if(resp.form_fields[i].disabled)
									ele.disabled=true;
								if(ele.tagName.toLowerCase()=='textarea' || (ele.tagName.toLowerCase()=='input' && (ele.type=='hidden' || ele.type=='text' || ele.type=='password')))
									ele.value=resp.form_fields[i].value;
								else if(ele.tagName.toLowerCase()=='input' && ele.type=='checkbox')
									ele.checked=resp.form_fields[i].value? true : false;
								else if(ele.tagName.toLowerCase()=='select')
								{
									if(!!resp.form_fields[i].options)
									{
										while(ele.options.length > 0)
											ele.remove(0);
										
										opts=resp.form_fields[i].options;
										for(j=0; j<opts.length; j++)
										{
											opt = document.createElement('option');
											opt.innerHTML = opts[j].text;
											opt.value = opts[j].value;
											try
											{
												ele.add(opt, null); // Everything but IE
											}
											catch(err)
											{
												ele.appendChild(opt); // You-Know-Who
											}
										}
									}
									
									for(j=0; j<ele.options.length; j++)
									{
										if(ele.type=='select-multiple')
										{
											for(k=0; k<resp.form_fields[i].value.length; k++)
											{
												if(ele.options[j].value==resp.form_fields[i].value[k])
													ele.options[j].selected=true;
											}
										}
										else
										{
											if(ele.options[j].value==resp.form_fields[i].value)
												ele.selectedIndex=j;
										}
									}
								}
							}
						}
					}
					//if(editAsNew===true)
					//	elements['id'].value='';
				}
				else
					alert('The form could not be displayed: '+resp.error);
			}
			else if(a.status() != 0)
				alert('Couldn\'t load form: HTTP Error '+a.status()+'\n\n'+a.response());
		}
	});
}

function newUser(id) //if id is present, populate form with current user
{
	loadFormTab(id, TAB_ADD_USERS);
	
	if(!!id)
	{
		gebi('add_users_form').elements['Action'].value = 'update';
		gebi('add_users_form').elements['users_id'].value = id;
	}
	else
	{
		gebi('add_users_form').elements['Action'].value = 'add';
		gebi('add_users_form').elements['users_id'].value = '';
	}
}

function newDocument(id, categories_id) //if id is present, populate form with current document
{										//if catefories_id is present, populate form with category pre-selected
	var j;
	
	loadFormTab(id, TAB_ADD_DOCUMENTS, true, false, false, 'categories_id='+categories_id);
	if(!!id)
	{
		gebi('add_documents_form').elements['Action'].value = 'update';
		gebi('add_documents_form').elements['documents_id'].value = id;
	}
	else
	{
		gebi('add_documents_form').elements['Action'].value = 'add';
		gebi('add_documents_form').elements['documents_id'].value = '';
		gebi('add_documents_form').elements['filename'].value = '';
	}
}

function newLocation(id) //if id is present, populate form with current company
{
	loadFormTab(id, TAB_ADD_LOCATIONS);
	
	if(!!id)
	{
		gebi('add_locations_form').elements['Action'].value = 'update';
		gebi('add_locations_form').elements['locations_id'].value = id;
	}
	else
	{
		gebi('add_locations_form').elements['Action'].value = 'add';
		gebi('add_locations_form').elements['locations_id'].value = '';
	}
}

function newPartner(id) //if id is present, populate form with current company
{
	loadFormTab(id, TAB_ADD_PARTNERS);
	
	if(!!id)
	{
		gebi('add_partners_form').elements['Action'].value = 'update';
		gebi('add_partners_form').elements['partners_id'].value = id;
	}
	else
	{
		gebi('add_partners_form').elements['Action'].value = 'add';
		gebi('add_partners_form').elements['partners_id'].value = '';
	}
}

function newCategory(id) //if id is present, populate form with current company
{
	loadFormTab(id, TAB_ADD_CATEGORIES);
	
	if(!!id)
	{
		gebi('add_categories_form').elements['Action'].value = 'update';
		gebi('add_categories_form').elements['categories_id'].value = id;
	}
	else
	{
		gebi('add_categories_form').elements['Action'].value = 'add';
		gebi('add_categories_form').elements['categories_id'].value = '';
	}
}
/*
function deleteUser(id) //if id is present, populate form with current user
{
	loadFormTab(id, TAB_ADD_USERS);
	gebi('add_users_form').elements['Action'].value = 'edit';
	gebi('add_users_form').elements['users_id'].value = id;
}
*/
function blurTr(trID)
{	
	gebi(trID).style.backgroundColor = '#777777';
}

function unblurTr(trID)
{	
	gebi(trID).style.backgroundColor = '';
}

function removeTr(trID)
{
	var tr = gebi(trID);
	tr.style.display = "none";
	//table.removeChild(tr);
}

function showDocuments(categories_id, tab_title)
{
	var tab;
	
	refreshTab = false;
	
	tab=gebi('tabber').tabber.tabs[TAB_DOCUMENTS];
	
	tab.a.innerHTML=tab.a.innerHTML.replace(tab.headingText, tab_title);
	tab.a.title=tab_title;
	tab.headingText = tab_title;
	
	gebi('tabber').tabber.tabShow(TAB_DOCUMENTS);
	loadTabContent(TAB_DOCUMENTS, false, '', 'categories_id='+categories_id);
	showTabLi(TAB_DOCUMENTS);
}

function viewLogins(id)
{
	refreshTab = false;
	gebi('tabber').tabber.tabShow(TAB_LOGINS);
	loadTabContent(TAB_LOGINS, false, '', 'id='+id);
	showTabLi(TAB_LOGINS);
}


addEvent(window, 'load', function(){if(!!gebi('locationSuggestContainer')) gebi('locationSuggestContainer').style.display='none';})
function suggestLocation(value)
{
	if(value=='')
	{
		gebi('locationSuggestContainer').style.display="none";
		return;
	}
	
	var a, json, i, locationSuggest, resp, err, option, options;
	
	a=new Ajax(true, 'txt');
	
	a.get('modules/locations/ajax.php?Action=suggest&q='+value, function()
	{
		if(a.ready())
		{
			if(a.status()==200)
			{
				resp = a.response();
				//alert(resp);
				try
				{
					json = JSON.parse(resp);
				}
				catch(err)
				{
					alert('Error parsing JSON: '+resp);
					return;
				}
				
					locationSuggest = gebi('locationSuggest');
					
					while(locationSuggest.options.length > 0)
						locationSuggest.remove(0);
					
					locationSuggest.size = 10;//(json.length > 1 ? json.length : 2);
					query = json['query'];
					if(query!=value)
						return;

					for(i in json)
					{
						if(i=='query') continue;
						option = document.createElement('option');
						option.appendChild(document.createTextNode(json[i].address));
						option.value = json[i].address;
						
						
						try
						{
							locationSuggest.add(option);
						}
						catch(err)
						{
							locationSuggest.appendChild(option);
						}
						
					}
					locationSuggest.onchange = function(addressObj)
					{
						addressObj = addressObj[this.selectedIndex+1];
						gebi('add_locations_form').elements['address'].value = addressObj.street;
						gebi('add_locations_form').elements['city'].value = addressObj.city;
						gebi('add_locations_form').elements['state'].value = addressObj.state;
						gebi('add_locations_form').elements['zip'].value = addressObj.zip;
						gebi('add_locations_form').elements['lat'].value = addressObj.latitude;
						gebi('add_locations_form').elements['lng'].value = addressObj.longitude;
						gebi('locationSuggestContainer').style.display='none';
					}.partial(json);
					
					if(locationSuggest.options.length==0)
					{
						option = document.createElement('option');
						option.appendChild(document.createTextNode('Could not find address'));
						try
						{
							locationSuggest.add(option);
						}
						catch(err)
						{
							locationSuggest.appendChild(option);
						}
					}
						
					gebi('locationSuggestContainer').style.display='';
				
				
			}
			else if(a.status()!=0)
				alert('HTTP Error: '+a.status()+' -- '+a.response());
		}
	});
	
	
}

function validZip(zip)
{
	if(zip.match(/^\d{5}$/))
		return true;	
	else
		return false;
	
}

function htmlentities(garbage)
{
	return garbage.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, "&apos;");
}

document.getElementsByClassName = function(className)
{
	var classes = className.split(' ');
	var classesToCheck = '';
	var returnElements = [];
	var match, node, elements;
	
	if (document.evaluate)
	{    
		var xhtmlNamespace = 'http://www.w3.org/1999/xhtml';
		var namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace:null;
		
		for(var j=0, jl=classes.length; j<jl;j+=1)
			classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]"; 
		
		try
		{
			elements = document.evaluate(".//*" + classesToCheck, document, namespaceResolver, 0, null);
		}
		catch(err)
		{
			elements = document.evaluate(".//*" + classesToCheck, document, null, 0, null);
		}

		while((match = elements.iterateNext()))
			returnElements.push(match);
	}
	else
	{
		classesToCheck = [];
		elements = (document.all) ? document.all : document.getElementsByTagName("*");

		for (var k=0, kl=classes.length; k<kl; k+=1)
			classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));

		for (var l=0, ll=elements.length; l<ll;l+=1)
		{
			node = elements[l];
			match = false;
			for (var m=0, ml=classesToCheck.length; m<ml; m+=1)
			{
				match = classesToCheck[m].test(node.className);
				if (!match) break;
			}
			if (match) returnElements.push(node);
		} 
	}
	return returnElements;
}


function appendTooltips()
{
	var action_buttons, button, span, ie6;
	
	action_buttons=document.getElementsByClassName('action_button');
	for(var i=0; i<action_buttons.length; i++)
	{
		button = action_buttons[i];
		if(button.childNodes.length > 0 && button.title.length > 0)
		{
			button.className+=' tool';
			
			span = document.createElement('span');
			span.className='tip';
			span.innerHTML=button.title;
			button.appendChild(span);
			
			ie6=('\v'=='v' && navigator.appVersion.match(/MSIE [56]\./));
			if(ie6)
			{
				button.onmouseover=function(tip)
				{
					tip.className='tip_hover';
				}.partial(span);
				
				button.onmouseout=function(tip)
				{
					tip.className='tip';
				}.partial(span);
			}
		}
		
		button.title='';
	}
}