
/*
<td>
	<a href="{/Page/@URI}?Realm=Inventory&amp;Action=Detail&amp;InventoryID={Inventory/@ID}" title="Check me out.">
		<xsl:value-of select="Inventory/Manufacturer"/>
		<xsl:text> </xsl:text>
		<xsl:value-of select="Inventory/Name"/>
	</a>
</td>
<td id="Numeric">
	$ <xsl:value-of select="Price"/>
</td>

Ok, process:

	ajax add the inventory to deal - have it set some kinda var and check for true.
		if true
	ajax read deal contents - function that gets deal info and redoes the table
		if getElementById(ActiveDeal@ID).something - skip

*/

function checkSerial(InventoryID,SerialNumber){
	var UL=document.getElementById('SerialStatus');
	UL.style.display="block";
	UL.removeChild(UL.childNodes[1]);
	UL.appendChild(document.createElement("LI"));
	UL.childNodes[1].appendChild(document.createTextNode('Checking...'));
	var URL='/index.php?Realm=Inventory&Action=CheckSerial&InventoryID=' + InventoryID + '&SerialNumber=' + SerialNumber;
	loadXML(URL, updateSerialCheck);
}

function updateSerialCheck(XML){
	var UL=document.getElementById('SerialStatus');
	var Status=XML.getElementsByTagName('SerialStatus')[0].firstChild.data;
	UL.childNodes[1].appendChild(document.createTextNode(Status));
	if(Status!='OK'){
		var List=XML.getElementsByTagName('Conflict');
		for(var i=0;i<List.length;i++){
			Model=List[i].getElementsByTagName('Model')[0].firstChild.data;
			MFG=List[i].getElementsByTagName('MFG')[0].firstChild.data;
			Status=List[i].getElementsByTagName('Status')[0].firstChild.data;
			Name=Model + " - " + MFG + " :: " + Status;
			InventoryID=List[i].getAttribute("ID");
			var Break=document.createElement("BR");
			var Link=document.createElement("A");
			Link.appendChild(document.createTextNode(Name));
			var LinkTo='self.opener.location="/index.php?Realm=Inventory&Action=Detail&InventoryID=' + InventoryID;
			 if(window.ActiveXObject){
				Link.setAttribute('href','javascript: ' + LinkTo + '; self.close(); ');
			} else {
				Link.setAttribute('href','javascript: void(0);');
				Link.setAttribute('onClick',LinkTo + '"; self.close();');
				Link.setAttribute('id','Collision');
			}
			UL.childNodes[1].appendChild(Break);
			UL.childNodes[1].appendChild(Link);
			self.opener.focus();
			self.opener.location='/index.php?Realm=Inventory&Action=Detail&InventoryID=' + InventoryID;
			self.close();
		}
	}
	document.getElementById('isChecked').value=1;
}


/*
 *
processSearchBySerialNumber
 */


function searchSerial(InventoryID, SerialNumber){
	var URL='/index.php?Realm=Inventory&Action=SearchSerial&SerialNumber=' + SerialNumber + '&InventoryID=' + InventoryID;
	loadXML(URL, updateSerialSearch);
}

function updateSerialSearch(XML){
	var AccessoryID=XML.getElementsByTagName('SearchID')[0].firstChild.data;
	var Serial=XML.getElementsByTagName('SearchSerial')[0].firstChild.data;
	var ResultsSpan=document.getElementById('Results-' + AccessoryID);
	if(Messages=ResultsSpan.getElementsByTagName('H1')){
		for(var i=0;i<Messages.length;i++){
			ResultsSpan.removeChild(Messages[i]);
		}
	}

/*
	if(XML.getElementsByTagName("Result")[0].firstChild.data=="DeActivated"){
		document.getElementById('Panel').removeChild(document.getElementById('ActiveDealPanel'));
		return true;
	}
*/
	var List=XML.getElementsByTagName('Inventory');

	if(List.length>0){
		for(var i=0;i<List.length;i++){
			var Model=List[i].getElementsByTagName('Model')[0].firstChild.data;
			var MFG=List[i].getElementsByTagName('MFG')[0].firstChild.data;
			var Status=List[i].getElementsByTagName('Status')[0].firstChild.data;
			var InventoryID=List[i].getAttribute("ID");
			var Name=Model + " - " + MFG + " :: " + Status;
			var NewSpan=document.createElement("SPAN");
			var AttachLink=document.createElement("A");
			var DetailLink=document.createElement("A");

			AttachLink.appendChild(document.createTextNode("Move to this machine"));
			/*
			http://ice/index.php?Realm=Inventory&Action=MoveAccessory&InventoryID=101064
			*/
			AttachLink.setAttribute("href","/index.php?Realm=Inventory&Action=MoveAccessory&InventoryID=" + InventoryID + "&AccessoryID=" + AccessoryID);
			AttachLink.setAttribute("title","Attach the selected accessory to this machine");

			DetailLink.appendChild(document.createTextNode(Name));
			DetailLink.setAttribute("href","/index.php?Realm=Inventory&Action=Detail&InventoryID=" + InventoryID);
			DetailLink.setAttribute("title","View this machines details");

			NewSpan.appendChild(DetailLink);
			NewSpan.appendChild(document.createTextNode(" | "));
			NewSpan.appendChild(AttachLink);
			ResultsSpan.appendChild(NewSpan);
			ResultsSpan.appendChild(document.createElement("BR"));
		}
	}else{
		var Message=document.createElement("H3");
		Message.setAttribute("style","color: red; ");
		Message.setAttribute("id","Message");
		Message.appendChild(document.createTextNode("Unable to find machine with serial number - " + Serial));
		ResultsSpan.appendChild(Message);
	}

}
/*****************/

/*
 *		Model List pulldown population
 */

function populateModels(ManufacturerID){
	if(!ManufacturerID){
		return void(0);
	}
	var CurModelID=document.getElementById('ModelID').value;
	var URL='/index.php?Realm=Product&Action=ModelList&ManufacturerID=' + ManufacturerID;
	$.get(URL,'',function(data){
		var Models=data.getElementsByTagName("Model");
		document.getElementById('ModelList').options.length=0;
		for(var i=0;i<Models.length;i++){
			if(CurModelID==Models[i].getAttribute('ID')){
				document.getElementById('ModelList').options[i] = new Option(Models[i].firstChild.data,Models[i].getAttribute('ID'),true,true);
			}else{
				document.getElementById('ModelList').options[i] = new Option(Models[i].firstChild.data,Models[i].getAttribute('ID'));
			}
		}
	});
}

function populateMakes(ElementID){
	if(!ElementID){
		var ElementID='MakeList';
	}
	var URL="/?Realm=Product&Action=ManufacturerList";
	$.get(URL,'',function(data){
		var Makes=data.getElementsByTagName("Option");
		$("#" + ElementID).empty();
		for(var i=0;i<Makes.length;i++){
			document.getElementById(ElementID).options[i] = new Option(Makes[i].getElementsByTagName('Name')[0].firstChild.data,Makes[i].getAttribute('ID'));
		}
	});
}


function processAddInventoryToDeal(DealID,InventoryID){
	isInventoryIn = null;
	var URL='/index.php?Realm=Deal&Action=AddInventoryList&InventoryID=' + InventoryID + '&DealID=' + DealID;
//	alert(URL);
	loadXML(URL, checkInventoryDealThingy);
}

var isInventoryIn = 0;

function checkInventoryDealThingy(XML){
	var Vals=XML.getElementsByTagName('Value');
	if(Vals[0].firstChild.data){
		isInventoryIn=Vals[0].firstChild.data;
		return;
	}
	isInventoryIn=null;
}

/*
 *	Deal controller
 *
 */
function AddInventoryToDeal(InventoryID,DealID,PageLink){
	if(isInDeal(InventoryID)){
		return false;
	}

	processAddInventoryToDeal(DealID,InventoryID);

	if(!isInventoryIn){
//		alert('Yoinks! Unable to add to active deal');
	}
	var URL=PageLink + '?Realm=Deal&Action=RawDetail&DealID=' + DealID;
	loadXML(URL, redrawActiveDeal);
}

function isInDeal(InventoryID){
	var MyTBody=document.getElementById('EriksKewlTBody');
	RowList=MyTBody.getElementsByTagName('TR');

	for(var i=0;i<RowList.length;i++){
		if(RowList[i].getElementsByTagName('TD')[0].id=='ActiveDeal-' + InventoryID){
			alert('Already in this deal!');
			return true;
		}
	}
}

function checkActiveDealPanel(DealID, PageLink){
	var URL=PageLink + '?Realm=Deal&Action=RawDetail&DealID=' + DealID;
	loadXML(URL, redrawActiveDeal);
}

function redrawActiveDeal(XML){
	/*
	 *	erik@rifftone.com	20060106
	 *	If result is DeActivated, remove the deal panel
	 */
	if(XML.getElementsByTagName("Result").length > 0){
		if(XML.getElementsByTagName("Result")[0].firstChild.data=="DeActivated"){
			document.getElementById('Panel').removeChild(document.getElementById('ActiveDealPanel').parentNode);
			return true;
		}
	}


	var TBodyID="ActiveDealContents";

	var Old=document.getElementById(TBodyID).getElementsByTagName("TR");
	var Top = Old.length - 1;
	for(var x=Top;x>=0;x--){
		document.getElementById(TBodyID).removeChild(Old[x]);
	}
	var TotalPrice=0;
	var InventoryList=XML.getElementsByTagName('Inventory');

	for(var i=0;i<InventoryList.length;i++){

		var row=document.getElementById(TBodyID).insertRow(i);

		var Link=document.createElement("A");
		var CurName=InventoryList[i].getElementsByTagName("Manufacturer")[0].firstChild.data
				+ ' '
				+ InventoryList[i].getElementsByTagName("Name")[0].firstChild.data;
		var CurSerialNumber=InventoryList[i].getElementsByTagName("SerialNumber")[0].firstChild.data;
		var CurPrice=InventoryList[i].parentNode.getElementsByTagName("Price")[0].firstChild.data;
		Link.appendChild(document.createTextNode(CurName));
		Link.setAttribute('href','/index.php?Realm=Inventory&Action=Detail&InventoryID=' + InventoryList[i].getAttribute("ID"));
		Link.setAttribute("title","Serial number - " + CurSerialNumber);

		row.insertCell(0).appendChild(Link);
		row.insertCell(1).appendChild(document.createTextNode('$ ' + CurPrice));

		TotalPrice+=CurPrice;
	}
	document.getElementById('ActiveDealPrice').getElementsByTagName('TD')[1].firstChild.data="$ " + CurPrice;

}

/*
 *		erik@rifftone.com	20051228
 *
 *		Grants / Revoke access RealmAction to ActiveRole
 *
 */

function revokeRealmAction(ObjectType,ObjectID,RealmActionID){
	var URL='/index.php?Realm=Admin&Action=RevokeRealmActionPrivilege&RealmActionID=' + RealmActionID
				+ '&ObjectType=' + ObjectType
				+ '&ObjectID=' + ObjectID;
//	alert(URL);
	loadXML(URL, update_RoleActionList);
}

function grantRoleAction(Button){
	if(!document.getElementById('ActiveRolePanel')){
		alert("Please activate a role first.");
		return;
	}
	var URL='/index.php?Realm=Admin&Action=AddAction&RealmActionID=' + Button.id;
//	alert(URL);
	loadXML(URL, update_RoleActionList);
}


function update_RoleActionList(XML){
	var MyID=XML.getElementsByTagName("GrantList")[0].getAttribute("ActionID");
	var Grants=XML.getElementsByTagName("Grant");
	var MyDiv=document.getElementById("RealmActionGrants-" + MyID);
	var Links=MyDiv.getElementsByTagName("SPAN");
	var Breaks=MyDiv.getElementsByTagName("BR");
	var Count=Links.length-1;
	for(var x=Count;x>=0;x--){
		MyDiv.removeChild(Links[x]);
		MyDiv.removeChild(Breaks[x]);
	}


	for(var i=0;i<Grants.length;i++){
		// Setup some vars
		var CurGrantID=Grants[i].getAttribute("ID");
		var CurTargetType=Grants[i].getAttribute("TargetType");
		var CurTargetID=Grants[i].getAttribute("TargetID");

		// Create the container span. We use a span cause its easier to
		// delete the children later if they are in a container....
		var NewSpan=document.createElement("SPAN");

		// this little image shows the type. It should really switch based on
		// target type like it does in the XSL, but so far it doesnt
		var NewTypeIMG=document.createElement("IMG");
		NewTypeIMG.setAttribute("src","/assets/images/Roles.png");
		NewSpan.appendChild(NewTypeIMG);

		// this probably doesnt really need to be a link, but its handy
		var NewLink=document.createElement("A");
		NewLink.setAttribute("href","/?Realm=Admin&Action=RoleDetail&RoleID=" + CurTargetID);
		NewLink.setAttribute("id",CurGrantID);
		NewLink.setAttribute("title","Get more info about " + Grants[i].getElementsByTagName("Name")[0].firstChild.data);
		NewLink.appendChild(document.createTextNode(Grants[i].getElementsByTagName("Name")[0].firstChild.data));
		NewSpan.appendChild(NewLink);

		// This is the remove access image.
		var NewRevokeIMG=document.createElement("IMG");
		NewRevokeIMG.setAttribute("src","/assets/images/Revoke-Icon.png");
		NewRevokeIMG.setAttribute("title","Revoke Access to " + Grants[i].getElementsByTagName("Name")[0].firstChild.data);
		NewRevokeIMG.setAttribute("onClick","revokeRealmAction('" + CurTargetType +"','" + CurTargetID +"','" + CurGrantID +"')");
		NewSpan.appendChild(NewRevokeIMG);

		// Append the container to the Parent DIV
		MyDiv.appendChild(NewSpan);
		NewSpan=null;
		MyDiv.appendChild(document.createElement("BR"));
	}
	return true;
}

function deActivateDeal(){
	var URL='/index.php?Realm=Deal&Action=DeActivate';
//	alert(URL);
	loadXML(URL, redrawActiveDeal);
}

function deActivateRole(){
	var URL='/index.php?Realm=Admin&Action=DeActivateRole';
//	alert(URL);
	loadXML(URL, redrawRolePanel);
}

function redrawRolePanel(XML){
	/*
	 *	erik@rifftone.com	20060106
	 *	If result is DeActivated, remove the deal panel
	 */
	if(XML.getElementsByTagName("Result")[0].firstChild.data=="DeActivated"){
		document.getElementById('Panel').removeChild(document.getElementById('ActiveRolePanel'));
		return true;
	}
}

function processMoveAllInventory(Button){
	var MyTable=Button.parentNode.parentNode.parentNode.parentNode;
	var ButtonList=$(MyTable).find('.MoveToActiveDealButton');
	if(!ButtonList.length){
		alert('You haven\'t selected any items to move!');
		return;
	}
	if(!confirm('Are you sure you want to move all ' + ButtonList.length + ' items to the Active Deal?')){
		return 0;
	}
	for(var i=0;i<ButtonList.length;i++){
		ButtonList[i].click();
	}
}


function processMoveInventory(ItemID,CartID){
	var URL='/index.php?Realm=Deal&Action=MoveInventoryToActiveDeal&ItemID=' + ItemID + '&CartID=' + CartID;
//	alert(URL);
	loadXML(URL, redrawMoveItem);
}


function redrawMoveItem(XML){
	var ItemID=XML.getElementsByTagName('Result')[0].firstChild.data;
	if(ItemID=="Failure" || !ItemID>0){
		alert(XML.getElementsByTagName('Message')[0].firstChild.data);
		return false;
	}
	var DealID=XML.getElementsByTagName('DealID')[0].firstChild.data;
	var ItemRow=document.getElementById('ItemRow_' + ItemID);
	ItemRow.className+=" Selected";
	document.getElementById('Cart').getElementsByTagName('TBODY')[0].removeChild(ItemRow);

	return checkActiveDealPanel(DealID,'/index.php');
}

function toggleShareSelectOptionStatus(MemberID,Status){
	var StatusList=document.getElementById('ShareListSelect').getElementsByTagName("option");
	if(MemberID){
		for(var i=0;i<StatusList.length;i++){
			if(StatusList[i].getAttribute("value")==MemberID){
				if(Status=="Enabled"){
					StatusList[i].removeAttribute("disabled");
				}else if(Status=="Disabled"){
					StatusList[i].setAttribute("disabled","true");
				}
			}
		}
	}
}

function showMessage(XML){
	var Message=XML.getElementsByTagName('Message')[0].firstChild.data;
	alert(Message);
}


function GrantDealAccess(MemberID,DealID){
	var URL='/index.php?Realm=Deal&Action=ShareMyDeal&DealID=' + DealID + '&GrantToID=' + MemberID;
	loadXML(URL, drawGrantDealAccess);
}

function drawGrantDealAccess(XML){
	var Status=XML.getElementsByTagName('Result')[0].firstChild.data;
	if(Status=="Failure"){
		alert(XML.getElementsByTagName('Message')[0].firstChild.data);
		return false;
	}
	var MemberID=XML.getElementsByTagName('MemberID')[0].firstChild.data;
	var DealID=XML.getElementsByTagName('DealID')[0].firstChild.data;
	var NodeID="ShareRow" + MemberID;
	if(document.getElementById(NodeID)){
		return toggleShareSelectOptionStatus(MemberID,"Disabled");
	}
	var ShareList=document.getElementById('ShareListUL');
	var Options=document.getElementById('ShareListSelect').getElementsByTagName("option");
	for(var i=0;i<Options.length;i++){
		if(Options[i].getAttribute('value')==MemberID){
			var MemberName=Options[i].firstChild.data;
			break;
		}
	}

	var LI=document.createElement("LI");

	var ActionLink=document.createElement("A");
	var ActionIMG=document.createElement("IMG");
	LI.setAttribute("id",NodeID);
	ActionLink.setAttribute("href","javascript:void(0);");
	ActionLink.setAttribute("onClick","DenyDealAccess('" + MemberID + "','" + DealID + "')");
	ActionLink.setAttribute("title","This will remove access to this member");

	ActionIMG.setAttribute("src","/assets/images/action-Scrub.gif");

	ActionLink.appendChild(ActionIMG);
	LI.appendChild(ActionLink)
	LI.appendChild(document.createTextNode('  ' + MemberName));

	ShareList.appendChild(LI);
	return toggleShareSelectOptionStatus(MemberID,"Disabled");
}

function DenyDealAccess(MemberID,DealID){
	var URL='/index.php?Realm=Deal&Action=UnShareMyDeal&DealID=' + DealID + '&RevokeToID=' + MemberID;
	loadXML(URL, drawDenyDealAccess);
}

function drawDenyDealAccess(XML){
	var Status=XML.getElementsByTagName('Result')[0].firstChild.data;
	if(Status=="Failure"){
		alert(XML.getElementsByTagName('Message')[0].firstChild.data);
		return false;
	}
	var MemberID=XML.getElementsByTagName('MemberID')[0].firstChild.data;
	var NodeID="ShareRow" + MemberID;
	document.getElementById('ShareListUL').removeChild(document.getElementById(NodeID));
	return toggleShareSelectOptionStatus(MemberID,"Enabled");
}

function populateShareList(ElementID){
	if(!ElementID){
		var ElementID='ShareListSelect';
	}
	var URL="/?Realm=Deal&Action=showRepList";
	$.get(URL,'',function(data){
		var Reps=data.getElementsByTagName("Option");
		$("#" + ElementID).empty();
		for(var i=0;i<Reps.length;i++){
			document.getElementById(ElementID).options[i] = new Option(Reps[i].getElementsByTagName('Name')[0].firstChild.data,Reps[i].getAttribute('ID'));
		}
	});
}


/*
**	Report AJAX
*/


function GrantReportAccess(MemberID,ReportID){
	var URL='/index.php?Realm=Report&Action=GrantReportAccess&ReportID=' + ReportID + '&GrantToID=' + MemberID;
	loadXML(URL, drawGrantReportAccess);
}

/*
<tr>
<td>Erik Riffel</td>
<td>11/02/2006 12:28 PM</td>
<td><a onclick="alert('Revoke Access');" href="javascript:void(0);">Revoke Access</a></td>
</tr>
*/
function drawGrantReportAccess(XML){
	var Status=XML.getElementsByTagName('Result')[0].firstChild.data;
	if(Status=="Failure"){
		alert(XML.getElementsByTagName('Message')[0].firstChild.data);
		return false;
	}
	var MemberID=XML.getElementsByTagName('MemberID')[0].firstChild.data;
	var ReportID=XML.getElementsByTagName('ReportID')[0].firstChild.data;
	var MemberName=XML.getElementsByTagName('MemberName')[0].firstChild.data;
//	var TStamp=XML.getElementsByTagName("Page")[0].getAttribute("TimeStamp");
	var NodeID="ReportAccess-" + MemberID;

	var ShareList=document.getElementById('ReportAccessList');
	var LI=document.createElement("LI");

	var ActionLink=document.createElement("A");
	ActionLink.setAttribute("href","javascript:void(0);");
	ActionLink.setAttribute("onClick","DenyReportAccess('" + MemberID + "','" + ReportID + "')");
	ActionLink.setAttribute("title","This will remove access to this member");
	ActionLink.appendChild(document.createTextNode('Revoke Access'));

	var MyRow=document.createElement("tr");
	MyRow.setAttribute("id","ReportAccess-" + MemberID);
	var Cell1=document.createElement('td');
	Cell1.appendChild(document.createTextNode(MemberName));
	var Cell2=document.createElement('td');
	Cell2.appendChild(document.createTextNode('Right Now ;-)'));
	var Cell3=document.createElement('td');
	Cell3.appendChild(ActionLink);

	MyRow.appendChild(Cell1);
	MyRow.appendChild(Cell2);
	MyRow.appendChild(Cell3);
	ShareList.appendChild(MyRow);
}

function DenyReportAccess(MemberID,ReportID){
	var URL='/index.php?Realm=Report&Action=RevokeReportAccess&ReportID=' + ReportID + '&RevokeToID=' + MemberID;
	loadXML(URL, drawDenyReportAccess);
}

function drawDenyReportAccess(XML){
	var Status=XML.getElementsByTagName('Result')[0].firstChild.data;
	if(Status=="Failure"){
		alert(XML.getElementsByTagName('Message')[0].firstChild.data);
		return false;
	}
	var MemberID=XML.getElementsByTagName('MemberID')[0].firstChild.data;
	var NodeID="ReportAccess-" + MemberID;
	document.getElementById('ReportAccessList').removeChild(document.getElementById(NodeID));
}

/*
**	End Report AJAX
*/

function isDealStale(DealID){
	var URL="/index.php?Realm=Deal&Action=isDealStale&DealID=" + DealID;
//	loadXML(URL, processIsDealStale);
	$.get(URL,'',function(data){
		var Status=data.getElementsByTagName('Result')[0].firstChild.data;
		if(Status=='Failure'){
			showMessage(XML);
			return false;
		}
		if(Status=='True'){
			document.getElementById(data.getElementsByTagName('DealID')[0].firstChild.data).parentNode.style.backgroundColor="red";
		}
	});
}


function processIsDealStale(XML){
	var Status=XML.getElementsByTagName('Result')[0].firstChild.data;
	if(Status=='Failure'){
		showMessage(XML);
		return false;
	}
	if(Status=='True'){
		return drawStaleDeal(XML.getElementsByTagName('DealID')[0].firstChild.data,1);
	}
}

/*
 *	w00t o'reilly
 *
 */

function loadXML(URL, handler){

   var xmlObj = false;
   try {
     xmlObj = new XMLHttpRequest();
   } catch (trymicrosoft) {
     try {
       xmlObj = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (othermicrosoft) {
       try {
         xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
       } catch (failed) {
         xmlObj = false;
       }
     }
   }

	if (!xmlObj){
		alert("Error initializing XMLHttpRequest!");
		return;
	}
	xmlObj.onreadystatechange = function() {
		if(xmlObj.readyState == 4 && xmlObj.status == 200) handler(xmlObj.responseXML);
	}
	xmlObj.open ('GET', URL, true);
	xmlObj.send ('');
}

/* when we dont want the XML back */

function tossXML(XML){
	return true;
}

