// Functions for the Rares Database
var startURL;
var searchValid;

// Filter vars
var quickFilterMode;
var quickFilterGroup;
var superFilterMode;
var superFilterGroup;

// Down all link clicked
function dn()
{
	// JSON object
	var partsList = new Array(arguments.length);
	
	for (var i=0; i<arguments.length; i++)
	{
		// Update the element
		var id=arguments[i];
		var element = document.getElementById(id);
		var num=parseInt(element.value);
		if (num>0)
		{
			num--;	
		}
		element.value=num;
		element.className="edited";

		// Get the sequence number
		var element = document.getElementById("sequence");
		seq=parseInt(element.value);
		seq++;
		element.value=seq;

		// Build the JSON object up
		partsList[i]={ "part" : id, "qty" : num, "seq" : seq };

	}
	var myJSONText = partsList.toJSONString();
	// alert(myJSONText);
	xajax_Ajax_UpdateQty(myJSONText);

}

// up link clicked
function up()
{
	// JSON object
	var partsList = new Array(arguments.length);
	
	for (var i=0; i<arguments.length; i++)
	{
		// Update the element
		var id=arguments[i];
		var element = document.getElementById(id);
		var num=parseInt(element.value);
		if (num<999)
		{
			num++;	
		}
		element.value=num;
		element.className="edited";

		// Get the sequence number
		var element = document.getElementById("sequence");
		seq=parseInt(element.value);
		seq++;
		element.value=seq;

		// Build the JSON object up
		partsList[i]={ "part" : id, "qty" : num, "seq" : seq };

	}
	var myJSONText = partsList.toJSONString();
	// alert(myJSONText);
	xajax_Ajax_UpdateQty(myJSONText);
}

// Blurr event
function be(id)
{
	var element = document.getElementById(id);
	if (element.value=="")
	{
		element.value=0;
	}
	var num=parseInt(element.value);
	if (isNaN(num))
	{
		element.value=0;
		var num=parseInt(element.value);
	}
	//element.className="edited";
	ajaxSendQty(id,num);

}

// Keyboard event
function nk(id,e)
{
	var inputKey
	var returnCode = true;
	var element = document.getElementById(id);

	if(window.event)
	{
		inputKey = window.event.keyCode;     //IE
	}
	else
	{
		inputKey = e.which;     //firefox
 	}
 	
 	// alert(inputKey);
	if ( inputKey > 47 && inputKey < 58) // numbers
	{
		element.className="edited";
 		returnCode=true;
	}
	else
	{
		if (inputKey==8)
		{
  			element.className="edited";
  			returnCode=true;
  		}
  		else
  		{
			returnCode = false;
			if(window.event)
			{
	  			window.event.keyCode = 0;
	  		}
  		}
	}
	return returnCode;
}


function highLite(id)
{
	var element = document.getElementById(id);
	element.className="mainmenu-edit-hover";
}

function noHighLite(id)
{
	var element = document.getElementById(id);
	element.className="mainmenu-edit";
}

function FilterHighLite(group,id)
{
	if (group!=superFilterGroup)
	{
		var element = document.getElementById(id);
		element.className="filter-button-hover";
	}
}

function noFilterHighLite(group,id)
{
	if (group!=superFilterGroup)
	{
		var element = document.getElementById(id);
		element.className="filter-button";
	}
}

function saveData(url)
{
	var element = document.getElementById("url");
	element.value=url;
	var element = document.getElementById("action");
	element.value="save";
	document.rares.submit();
}

function changeServer(server)
{
	var element = document.getElementById("server");
	element.value=server;
	var element = document.getElementById("action");
	element.value="server";
	document.rares.submit();
}

// Global MM functions

function MM_displayStatusMsg(msgStr)  { //v3.0
	status=msgStr; document.MM_returnValue = true;
}

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 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];}}
}

// Functions for read access form

function readAccessForm()
{
	var formenabled = document.getElementById("read");

	// Password box
	var element = document.getElementById("protect");
	element.disabled=!formenabled.checked;
	readPasswordProtect();

	// Blue pages box
	var element = document.getElementById("directorylist");
	element.disabled=!formenabled.checked;
	
	// Directory listing info
	var element = document.getElementById("directorynotes");
	element.disabled=!formenabled.checked;
	element.readOnly=!formenabled.checked;

	// Title box
	var element = document.getElementById("title");
	element.disabled=!formenabled.checked;
	element.readOnly=!formenabled.checked;
	if (formenabled.checked==false)
	{
		element.className="disabled";
	}
	else
	{
		element.className="";	
	}

	// URL Box
	var element = document.getElementById("url");
	element.disabled=!formenabled.checked;
	element.readOnly=!formenabled.checked;
	if (formenabled.checked==false)
	{
		element.className="disabled";
	}
	else
	{
		element.className="";	
	}	

	// Server list
	var x= document.form.server;
	
	for (var b = 0; b < x.length; b++)
	{
		x[b].disabled=!formenabled.checked;
		x[b].readOnly=!formenabled.checked;
	}

	// Server ACL list
	var x= document.getElementsByName('acl[]');
	
	for (var b = 0; b < x.length; b++)
	{
		x[b].disabled=!formenabled.checked;
		x[b].readOnly=!formenabled.checked;
	}	
	
	// PM box
	var element = document.getElementById("pm");
	element.disabled=!formenabled.checked;

	// Xfire box
	var element = document.getElementById("xfire");
	element.disabled=!formenabled.checked;
}

function readPasswordProtect()
{
	var formenabled = document.getElementById("read");
	var enabled = document.getElementById("protect");

	var element = document.getElementById("password");
	if (formenabled.checked==true)
	{
		element.disabled=!enabled.checked;
		element.readOnly=!enabled.checked;
		if (enabled.checked==false)
		{
			element.className="disabled";
		}
		else
		{
			element.className="";	
		}
	}
	else
	{
		element.disabled=true;	
		element.readOnly=true;
		element.className="disabled";
	}
	

	
}

function readPost()
{
	// Turn off read only attributes otherwise we cant post the data
	var element = document.getElementById("read");
	element.disabled=false;
	element.readOnly=false;
	var element = document.getElementById("protect");
	element.disabled=false;
	element.readOnly=false;
	var element = document.getElementById("password");
	element.disabled=false;
	element.readOnly=false;
	var element = document.getElementById("url");
	element.disabled=false;
	element.readOnly=false;
	var element = document.getElementById("directorylist");
	element.disabled=false;
	element.readOnly=false;
	var element = document.getElementById("directorynotes");
	element.disabled=false;
	element.readOnly=false;
	var element = document.getElementById("pm");
	element.disabled=false;
	element.readOnly=false;
	var element = document.getElementById("title");
	element.disabled=false;
	element.readOnly=false;
	var element = document.getElementById("xfire");
	element.disabled=false;
	element.readOnly=false;
	
	// Server list
	var x= document.form.server;
	
	for (var b = 0; b < x.length; b++)
	{
		x[b].disabled=false;
		x[b].readOnly=false;
	}

	// Server ACL list
	var x= document.getElementsByName('acl[]');
	
	for (var b = 0; b < x.length; b++)
	{
		x[b].disabled=false;
		x[b].readOnly=false;
	}	
	

}

function readURL()
{
	var data = document.getElementById("url");
	var element = document.getElementById("urlprint");
	outdata=startURL+data.value;
	element.innerHTML = outdata;
}

function setupAccessForm(url)
{
	startURL=url;
	readURL();
}

function uf(id)
{
	var element = document.getElementById(id);
	element.checked=false;
}

function fi(id)
{
	var element = document.getElementById(id);
	element.checked=true;
}

function filter(group)
{
	toggleFilterIcons(group,true);
	clearFilter(group);
	applyFilterToTable();
	highLightfilterGroup(superFilterGroup,-99);
}

function unfilter(group)
{
	toggleFilterIcons(group,false);
	applyGroupFilter(superFilterGroup);
	applyFilterToTable();
	highLightfilterGroup(-99,superFilterGroup);
}

function toggleFilterIcons(group,mode)
{
	var icon1 = document.getElementById("filter_"+group);
	var icon2 = document.getElementById("unfilter_"+group);
	if (mode==true)
	{
		icon1.className="click_none";
		icon1.style.display="none";
		icon2.className="click";
		icon2.style.display="inline";
	}
	else
	{
		icon1.className="click";
		icon1.style.display="inline";
		icon2.className="click_none";
		icon2.style.display="none";
	}
	quickFilterMode=mode;
	quickFilterGroup=group;
}

function clearFilter(group)
{
	//console.log(masterList);
	for(var groupList in masterList) 
	{
		// console.log(masterList[groupList]);
		if (!isNaN(groupList))
		{
			for(var item in masterList[groupList]) 
			{
				//console.log(masterList[groupList][item]);
				if (typeof(masterList[groupList][item].id)!= "undefined")
				{
					//console.log(masterList[groupList][item].id);
					if ((groupList==group.toString())  || (group==0))
					{
						masterList[groupList][item].filter=false;
					}
					else
					{
						masterList[groupList][item].filter=true;
					}
				}
				else
				{	
					//console.log('Skipped');
				}	
			}
		}
	}
}

function applyGroupFilter(group)
{
	for(var groupList in masterList) 
	{
		// console.log(masterList[groupList]);
		if (!isNaN(groupList))
		{
			for(var item in masterList[groupList]) 
			{
				//console.log(masterList[groupList][item]);
				if (typeof(masterList[groupList][item].id)!= "undefined")
				{
					// Group zero is for all parts - no point checking the
					// Group filter list
					if (group==0)
					{
						masterList[groupList][item].filter=false;
					}
						else
						{
						if (superGroups[group].inArray(masterList[groupList][item].id))
						{
							masterList[groupList][item].filter=false;
						}
						else
						{
							masterList[groupList][item].filter=true;
						}
					}
				}
			}
		}
	}
}

function applyFilterToTable()
{
	for(var groupList in masterList) 
	{

		if (!isNaN(groupList))
		{
			//console.log(groupList);
			var group_filter=true;
			for(var item in masterList[groupList]) 
			{
				// console.log(masterList[groupList][item]);
				if (typeof(masterList[groupList][item].id)!= "undefined")
				{
					filterRow("item_"+masterList[groupList][item].id,masterList[groupList][item].filter);
					if (masterList[groupList][item].filter==false)
					{
						group_filter=false;
					}
	            }
			}
           	filterRow("group_"+groupList,group_filter);
           	filterRow("heading_group_"+groupList,group_filter);
           	filterRow("heading_group2_"+groupList,group_filter);
		}
	}
}



function filterRow(id,filter)
{
	//console.log(id);
	//console.log(filter);

	var row = document.getElementById(id);
	if (row !== null)
	{	
		if (filter==false)
		{
	     	try
	       	{
	        	row.style.display='table-row';
	        }
			catch(e)
			{
				row.style.display = 'block';
			}
		}
	    else
	    {
			row.style.display = 'none';
		}
	}
}

function filterGroup(group,id)
{
	highLightfilterGroup(superFilterGroup,group);
	// Toggle the quick filter icons
	if (quickFilterMode==true)
	{
		toggleFilterIcons(quickFilterGroup,false);
	}
	// Now do the filtering!
	applyGroupFilter(group);
	applyFilterToTable();
	superFilterGroup=group;
}

function highLightfilterGroup(oldgroup,newgroup)
{
	if (oldgroup!=-99)
	{
		var oldbox = document.getElementById('mf'+oldgroup);
		oldbox.className="filter-button";
	}
	if (newgroup!=-99)
	{	
		var newbox = document.getElementById('mf'+newgroup);
		newbox.className="filter-button-select";
		superFilterMode=true;
		superFilterGroup=newgroup;
	}
}

function setupQuickFilters(mode)
{
	quickFilterMode=false;
	quickFilterGroup=0;
	superFilterMode=true;
	superFilterGroup=0;
	highLightfilterGroup(0,0);
	filterRow('filterline',false);
	if (mode==true)
	{
		var rareform = document.getElementById('rareform');
		rareform.style.display="inline";
	}

}

Array.prototype.inArray = function(valeur)
{
	for (var i in this)
	{
		if (this[i] === valeur)
		return true;
	}
	return false;
}

// Open link in popup window
function THNitemPopup(url)
{
	window.open(url,"","scrollbars=yes,width=500,height=500");
	return false;
}

// Search functions
function UpdateStock()
{
	var element = document.getElementById('server');
	var server=parseInt(element.value);
	var element = document.getElementById('item');
	var item=parseInt(element.value);

	xajax_Ajax_UpdateStock(item,server);
}

function CheckSearch()
{
	var element = document.getElementById('server');
	var server=parseInt(element.value);
	searchValid=true;
	
	var element = document.getElementById('item');
	var item=parseInt(element.value);

	if (item==-1)
	{
		alert('Please select the item you want to find parts for.');
		searchValid=false;
		return false;
	}
	
	if (server==-1)
	{
		alert('Please select a server to search.');
		searchValid=false;
		return false;
	}

	var selected=false;	
	for (var i=0; i<arguments.length; i++)
	{
		var id=arguments[i];
		var element = document.getElementById('qtybox_'+id);
		if (element.disabled==false)
		{
			if (element.checked==true)
			{
				selected=true;
			}	
		}
	}
	
	if (selected==false)
	{
		alert('Please select a part to search for.');
		searchValid=false;
		return false;
	}
	
	
}

function SearchSubmit()
{
	return searchValid;
}


