function getClientCallbackURLS()
{
    $ClientURLS = new RequestRecipientTokenClientURLs();
    $ClientURLs->OnViewingComplete = getCallbackURL("pop.html?id=2");
    $ClientURLs->OnCancel = getCallbackURL("pop.html?id=3");
    $ClientURLs->OnDecline = getCallbackURL("pop.html?id=4");
    $ClientURLs->OnSessionTimeout = getCallbackURL("pop.html?id=5");
    $ClientURLs->OnTTLExpired = getCallbackURL("pop.html?id=6");
    $ClientURLs->OnException = getCallbackURL("pop.html?id=7");
    $ClientURLs->OnAccessCodeFailed = getCallbackURL("pop.html?id=8");
    $ClientURLs->OnSigningComplete = getCallbackURL("pop.html?id=9");
    $ClientURLs->OnIdCheckFailed = getCallbackURL("pop.html?id=1");
    return $ClientURLs;
}
function makeRequestRecipientToken($Recipient)
{
    $RequestRecipientTokenparam = new RequestRecipientToken();
    $RequestRecipientTokenparam->EnvelopeID = $_SESSION["EnvelopeID"];
    $RequestRecipientTokenparam->ClientUserID = "1";
    $RequestRecipientTokenparam->Username = $Recipient->UserName;
    $RequestRecipientTokenparam->Email = $Recipient->Email;
    $RequestRecipientTokenparam->AuthenticationAssertion->AssertionID = time();
    $m = date("m");
    $d = date("Y") . "-" . $m . "-" . date("d") . "T00:00:00.00";
    $RequestRecipientTokenparam->AuthenticationAssertion->AuthenticationInstant = $d;
    $RequestRecipientTokenparam->AuthenticationAssertion->AuthenticationMethod = "Password";
    $RequestRecipientTokenparam->AuthenticationAssertion->SecurityDomain = $_SERVER['HTTP_HOST'];
    $RequestRecipientTokenparam->ClientURLs->OnViewingComplete = getCallbackURL("pop.html") . "?id=2";
    $RequestRecipientTokenparam->ClientURLs->OnCancel = getCallbackURL("pop.html") . "?id=3";
    $RequestRecipientTokenparam->ClientURLs->OnDecline = getCallbackURL("pop.html") . "?id=4";
    $RequestRecipientTokenparam->ClientURLs->OnSessionTimeout = getCallbackURL("pop.html") . "?id=5";
    $RequestRecipientTokenparam->ClientURLs->OnTTLExpired = getCallbackURL("pop.html") . "?id=6";
    $RequestRecipientTokenparam->ClientURLs->OnException = getCallbackURL("pop.html") . "?id=7";
    $RequestRecipientTokenparam->ClientURLs->OnAccessCodeFailed = getCallbackURL("pop.html") . "?id=8";
    $RequestRecipientTokenparam->ClientURLs->OnSigningComplete = getCallbackURL("pop.html") . "?id=9";
    $RequestRecipientTokenparam->ClientURLs->OnIdCheckFailed = getCallbackURL("pop.html") . "?id=1";
    return $RequestRecipientTokenparam;
}
function embedSending($templateReferences, $envelopeInfo, $recipients)
{
    $api = getAPI();
    $ceParams = new CreateEnvelopeFromTemplates();
    $ceParams->EnvelopeInformation = $envelopeInfo;
    $ceParams->Recipients = $recipients;
    $ceParams->TemplateReferences = $templateReferences;
    $ceParams->ActivateEnvelope = false;
    try {
        $status = $api->CreateEnvelopeFromTemplates($ceParams)->CreateEnvelopeFromTemplatesResult;
        if ($status->Status == EnvelopeStatusCode::Created) {
            $rstParam = new RequestSenderToken();
            $rstParam->AccountID = $envelopeInfo->AccountId;
            $rstParam->EnvelopeID = $status->EnvelopeID;
            $rstParam->ReturnURL = getCallbackURL("getstatusanddocs.php");
            addEnvelopeID($status->EnvelopeID);
            $_SESSION["embedToken"] = $api->RequestSenderToken($rstParam)->RequestSenderTokenResult;
            header("Location: embedsending.php?envelopid=" . $status->EnvelopeID . "&accountID=" . $envelope->AccountId . "&source=Document");
        }
    } catch (SoapFault $e) {
        $_SESSION["errorMessage"] = $e;
        header("Location: error.php");
    }
}
function embedSending($envelope)
{
    $api = getAPI();
    $ceParams = new CreateEnvelope();
    $ceParams->Envelope = $envelope;
    try {
        $status = $api->CreateEnvelope($ceParams)->CreateEnvelopeResult;
        if ($status->Status == EnvelopeStatusCode::Created) {
            $rstParam = new RequestSenderToken();
            $rstParam->AccountID = $envelope->AccountId;
            $rstParam->EnvelopeID = $status->EnvelopeID;
            $rstParam->ReturnURL = getCallbackURL("getstatusanddocs.php");
            addEnvelopeID($status->EnvelopeID);
            $_SESSION["embedToken"] = $api->RequestSenderToken($rstParam)->RequestSenderTokenResult;
            header("Location: embedsending.php?envelopid=" . $status->EnvelopeID . "&accountID=" . $envelope->AccountId . "&source=Document");
        }
    } catch (SoapFault $e) {
        $_SESSION["errorMessage"] = $e;
        header("Location: error.php");
    }
}
function getToken($status, $clientID)
{
    global $_oneSigner;
    $token = null;
    $_SESSION["embedToken"];
    // get recipient token
    $assertion = new RequestRecipientTokenAuthenticationAssertion();
    $assertion->AssertionID = guid();
    $assertion->AuthenticationInstant = todayXsdDate();
    $assertion->AuthenticationMethod = RequestRecipientTokenAuthenticationAssertionAuthenticationMethod::Password;
    $assertion->SecurityDomain = "DocuSign2011Q1Sample";
    // Get Recipient fro ClientID
    $recipient = false;
    foreach ($status->RecipientStatuses->RecipientStatus as $rs) {
        if ($rs->ClientUserId == $clientID) {
            $recipient = $rs;
        }
    }
    if ($recipient == false) {
        $_SESSION["errorMessage"] = "Unable to find Recipient";
        header("Location: error.php");
    }
    $urls = new RequestRecipientTokenClientURLs();
    $urlbase = getCallbackURL("pop.html") . "?source=Embedded";
    $urls->OnAccessCodeFailed = $urlbase . "&event=AccessCodeFailed&uname=" . $recipient->UserName;
    $urls->OnCancel = $urlbase . "&event=Cancel&uname=" . $recipient->UserName;
    $urls->OnDecline = $urlbase . "&event=Decline&uname=" . $recipient->UserName;
    $urls->OnException = $urlbase . "&event=Exception&uname=" . $recipient->UserName;
    $urls->OnFaxPending = $urlbase . "&event=FaxPending&uname=" . $recipient->UserName;
    $urls->OnIdCheckFailed = $urlbase . "&event=IdCheckFailed&uname=" . $recipient->UserName;
    $urls->OnSessionTimeout = $urlbase . "&event=SessionTimeout&uname=" . $recipient->UserName;
    $urls->OnTTLExpired = $urlbase . "&event=TTLExpired&uname=" . $recipient->UserName;
    $urls->OnViewingComplete = $urlbase . "&event=ViewingComplete&uname=" . $recipient->UserName;
    if ($_oneSigner) {
        $urls->OnSigningComplete = $urlbase . "&event=SigningComplete&uname=" . $recipient->UserName;
    } else {
        $urls->OnSigningComplete = getCallbackURL("pop2.html") . "?envelopeID=" . $status->EnvelopeID;
    }
    $api = getAPI();
    $rrtParams = new RequestRecipientToken();
    $rrtParams->AuthenticationAssertion = $assertion;
    $rrtParams->ClientURLs = $urls;
    $rrtParams->ClientUserID = $recipient->ClientUserId;
    $rrtParams->Email = $recipient->Email;
    $rrtParams->EnvelopeID = $status->EnvelopeID;
    $rrtParams->Username = $recipient->UserName;
    try {
        $token = $api->RequestRecipientToken($rrtParams)->RequestRecipientTokenResult;
    } catch (SoapFault $e) {
        $_SESSION["errorMessage"] = $e;
        header("Location: error.php");
    }
    $_SESSION["embedToken"] = $token;
}