Option Explicit

Dim strCompanySessionTicket
Dim strCompanyPersistentTicket
Dim strCompanyResourceTicket
Dim strCompanyTrackingTicket
Dim strFault
Dim strCAT

strCAT = WScript.Arguments(0)

If Not AuthenticateByCompanyAccessTicket(strCompanySessionTicket, strCompanyPersistentTicket, strCompanyResourceTicket, strCompanyTrackingTicket, strFault, strCAT) Then
	WScript.Echo strFault
Else
	WScript.Echo "strCompanySessionTicket: " & strCompanySessionTicket & vbCRLF & vbCRLF & "strCompanyPersistentTicket: " & strCompanyPersistentTicket & vbCRLF & vbCRLF & "strCompanyResourceTicket: " & strCompanyResourceTicket & vbCRLF & vbCRLF & "strCompanyTrackingTicket: " & strCompanyTrackingTicket
End If

Function AuthenticateByCompanyAccessTicket(strCompanySessionTicket, strCompanyPersistentTicket, strCompanyResourceTicket, strCompanyTrackingTicket, strFault, strCAT)

	'Declare variables
	Dim objXML
	Dim nodTemp
	Dim objHTTP

	'This can be cached or read from the file each time
	Set objXML = CreateObject("MSXML2.DOMDocument.4.0")
	If Not objXML.load("AuthenticateByCompanyAccessTicket.xml") Then
		strFault = "<html><head /><body>Fatal Error Loading AuthenticateByCompanyAccessTicket.xml<br />" & objXML.parseError.reason & "<br /></body></html>"
		AuthenticateByCompanyAccessTicket = False
		Exit Function
	End If

	objXML.setProperty "SelectionNamespaces", "xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:mp='http://webservices.monster.com/MonsterPortal'"
	objXML.documentElement.selectSingleNode("soap:Header/mp:CompanyAuthHeader/mp:CompanyAccessTicket").text = strCAT

	'Webservice call to AuthenticateByCompanyAccessTicket
	Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP.4.0")
	objHTTP.Open "POST", "https://webservices.monster.com/Authenticator.asmx?op=AuthenticateByCompanyAccessTicket"
	objHTTP.setRequestHeader "Content-Type", "text/xml"
	objHTTP.setRequestHeader "SOAPAction", "http://webservices.monster.com/MonsterPortal/AuthenticateByCompanyAccessTicket"
	objHTTP.setRequestHeader "confidentialoverride", "true"
	objHTTP.Send objXML

	'Get the response back
	If Not objXML.load(objHTTP.ResponseXML) Then
		AuthenticateByCompanyAccessTicket = False
		strFault = "<html><head /><body>Fatal Error loading XML response<br />" & objXML.parseError.reason & "<br /><textarea rows='30' cols='100' id='textarea1' name='textarea1'>" & objHTTP.ResponseText & "</textarea></body></html>"
		AuthenticateByCompanyAccessTicket = False
		Exit Function
	End If

	'Check for success
	Set nodTemp = objXML.documentElement.selectSingleNode("soap:Body/soap:Fault/faultstring")
	If Not nodTemp Is Nothing Then
		strFault = objXML.xml
		AuthenticateByCompanyAccessTicket = False
		Exit Function
	End If

	'Get the values back from the webservice call
	strCompanySessionTicket = objXML.documentElement.selectSingleNode("soap:Header/mp:CompanyAuthHeader/mp:SessionTicket").text
	strCompanyPersistentTicket = objXML.documentElement.selectSingleNode("soap:Header/mp:CompanyAuthHeader/mp:PersistentTicket").text
	strCompanyResourceTicket = objXML.documentElement.selectSingleNode("soap:Header/mp:CompanyAuthHeader/mp:ResourceTicket").text
	strCompanyTrackingTicket = objXML.documentElement.selectSingleNode("soap:Header/mp:CompanyAuthHeader/mp:TrackingTicket").text
	AuthenticateByCompanyAccessTicket = True

	Set objXML = Nothing
	Set nodTemp = Nothing

End Function
