/*
   eCoinInterface.js Version: 0.8
*/  
function fireTokenGetAtrributesEvent() {
    var id = " ";
    var currency = 0;
    var balance = 0;
        
    //Create Element, which will be the events source
    var element = document.createElement("eCoinDataElement");
    element.setAttribute("TokenIDAttrib", "0000 0000 0000 0000");
    element.setAttribute("CurrencyCodeAttrib", "0");
    element.setAttribute("BalanceAttrib", "0000.00");
    element.setAttribute("VersionAttrib", "0");
    document.documentElement.appendChild(element);
    
    //Trigger the event    
    var browserName=navigator.appName; 
    if (browserName=="Netscape"){ 
    
        var evtObj = document.createEvent("Events");
        evtObj.initEvent("ECprintBalance", true, false);
        
        element.dispatchEvent(evtObj);
        
    } else if (browserName=="Microsoft Internet Explorer"){
    
        var evtObj = document.createEventObject();
        var fired = element.fireEvent("onclick", evtObj);
        
        evtObj.cancelBubble = true;
        evtObj.ctrlKey = true;
        evtObj.keyCode = 43;
                        
        var fired = element.fireEvent("onkeydown", evtObj);
        
    } else {
        alert("Unknown Browser");
    }
            
    // Get the new values and return
    id = element.getAttribute("TokenIDAttrib");
    currency = element.getAttribute("CurrencyCodeAttrib");
    balance = element.getAttribute("BalanceAttrib");
    version = element.getAttribute("VersionAttrib");
    
    if(version == "1"){
        version = "0";
    } else if(version == "2") {
        version = "1.1";
    }
    
    return {id : id, currency : currency, balance : balance, version : version};
}

function fireTokenCreateEvent(PayeeID, Currency, Value, Challenge, DateTime, MerchantName, ItemName) {
    
    var message = "";

    /////////Added for backwards compatibility - Section To be Removed soon
    var myInput = document.createElement("input");
    myInput.setAttribute("type", "hidden");
    myInput.setAttribute("name", "transMsg");
    myInput.setAttribute("id", "transMsg");
    myInput.setAttribute("value", "");  
    document.documentElement.appendChild(myInput);
    //////////////////////////////////////////////////////////////////////
    
    //Create Element, which will be the events source
    var element = document.createElement("MyExtensionDataElement");
    element.setAttribute("attribute1", PayeeID);
    element.setAttribute("attribute2", Currency);
    element.setAttribute("attribute3", Value);
    element.setAttribute("attribute4", Challenge);
    element.setAttribute("attribute5", MerchantName); // These are required for the Payment Dialog
    element.setAttribute("attribute6", ItemName); // These are required for the Payment Dialog
    element.setAttribute("attribute7", DateTime); // Result is returned within this attribute
    document.documentElement.appendChild(element);
    
    //alert(Value);
    //Trigger the event  
    var browserName=navigator.appName; 
    if (browserName=="Netscape"){     // This should probably be specific to each browser & version
        //var evt = document.createEvent("Events"); // Blackberry OS 4.6 fails here
        var evt = document.createEvent("UIEvents"); 
        evt.initEvent("MyExtensionEvent", true, false);
        element.dispatchEvent(evt);
        
    } else if (browserName=="Microsoft Internet Explorer"){
        var evtObj = document.createEventObject();
        var fired = element.fireEvent("onclick", evtObj);
        evtObj.cancelBubble = true;
        evtObj.ctrlKey = true;
        evtObj.keyCode = 44;               
        var fired = element.fireEvent("onkeydown", evtObj);
    } else {
        alert("Unknown Browser");
    }
    
    //IF Added for backwards compatibility
    message = document.getElementById("transMsg").value;    
    if(message == ""){         
        message = element.getAttribute("attribute7");
        if(!isNaN(message)){ //DateTime is currently being placed within attribute7
            message = "";
        }
    } else {
        alert("You eCoin Addon will be superseded soon, and may not operate in the future");     
    }
    //Clean Up
    document.documentElement.removeChild(myInput);
    document.documentElement.removeChild(element);
      
    return message;             
}

function fireTokenLoadEvent(ValueMessage) {
    ValueMessage = ValueMessage.replace( /[\r\n\t]/g, '' );
    //Create Element, which will be the events source
    var element = document.createElement("eCoinLoadElement");
    element.setAttribute("ValueMsgAttrib", ValueMessage);
    document.documentElement.appendChild(element);
    
    //Trigger the event  
    var browserName=navigator.appName; 
    if (browserName=="Netscape"){     // This should probably be specific to each browser & version
        //var evt = document.createEvent("Events"); // Blackberry OS 4.6 fails here
        var evt = document.createEvent("UIEvents"); 
        evt.initEvent("ECLoad", true, false);
        element.dispatchEvent(evt);
        
    } else if (browserName=="Microsoft Internet Explorer"){
        var evtObj = document.createEventObject();
        var fired = element.fireEvent("onclick", evtObj);
        evtObj.cancelBubble = true;
        evtObj.ctrlKey = true;
        evtObj.keyCode = 42;               
        var fired = element.fireEvent("onkeydown", evtObj);
    } else {
        alert("Unknown Browser");
    }
    
    message = element.getAttribute("ValueMsgAttrib");    
    
    if(message == "SUCCESS") {
        return true;
    } else {
        return false;
    }            
}

function isHWTokenPresent(){
    try {
        ret = fireTokenGetAtrributesEvent();
        
        if((ret['id']) && (ret['id']!="0000 0000 0000 0000")){
            return true;
        }
    } catch(err) {
        return false;
    }
    return false;
}

function eCoinPay(PayeeID, Currency, Value, Challenge, DateTime, MerchantName, ItemName, ItemID) {
    
    var destAddress = "https://www.avrobroker.com/cloud_account2.php";
    var userAgent = navigator.userAgent;
    if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i)) {
        destAddress = "https://apple.avrobroker.com/cloud_account2.php";
    }
    
    msg = fireTokenCreateEvent(PayeeID, Currency, Value, Challenge, DateTime, MerchantName, ItemName);
    
    // No Token Present - POST to SSL Broker 
    if(msg == "CANCELLED") {
        //need to refresh the page
        var myForm = document.createElement("form");
        myForm.setAttribute("name", "data");
        myForm.setAttribute("method", "post");
        myForm.setAttribute("action", "");
        document.body.appendChild(myForm);
                            
        myForm.submit();          
    } else if(msg == "" || !msg){
            var myForm = document.createElement("form");
            myForm.setAttribute("name", "data");
            myForm.setAttribute("method", "post");
            myForm.setAttribute("action", destAddress);
                            
            var myInput = document.createElement("input");
            myInput.setAttribute("type", "hidden");
            myInput.setAttribute("name", "MerchantID");
            myInput.setAttribute("id", "MerchantID");
            myInput.setAttribute("value", PayeeID);  
            myForm.appendChild(myInput);
                            
            var myInput = document.createElement("input");
            myInput.setAttribute("type", "hidden");
            myInput.setAttribute("name", "Challenge");
            myInput.setAttribute("id", "Challenge");
            myInput.setAttribute("value", Challenge);  
            myForm.appendChild(myInput);
                            
            var myInput = document.createElement("input");
            myInput.setAttribute("type", "hidden");
            myInput.setAttribute("name", "ItemCode");
            myInput.setAttribute("id", "ItemCode");
            myInput.setAttribute("value", ItemID);  
            myForm.appendChild(myInput);
                            
            var myInput = document.createElement("input");
            myInput.setAttribute("type", "hidden");
            myInput.setAttribute("name", "Value");
            myInput.setAttribute("id", "Value");
            myInput.setAttribute("value", Value);  
            myForm.appendChild(myInput);
                            
            var myInput = document.createElement("input");
            myInput.setAttribute("type", "hidden");
            myInput.setAttribute("name", "ExitURL");
            myInput.setAttribute("id", "ExitURL");
            myInput.setAttribute("value", "http://www.vibuca.com/ecoinpro.php");  
            myForm.appendChild(myInput);
                            
            document.body.appendChild(myForm);
                            
            myForm.submit(); 
    } else {
        //POST to Merchant
        var myForm = document.createElement("form");
        myForm.setAttribute("name", "data");
        myForm.setAttribute("method", "post");
        myForm.setAttribute("action", "ecoinpro.php");
                      
        var myInput = document.createElement("input");
        myInput.setAttribute("type", "hidden");
        myInput.setAttribute("name", "ItemID");
        myInput.setAttribute("id", "ItemID");
        myInput.setAttribute("value", ItemID);  
        myForm.appendChild(myInput);
        
        var myInput = document.createElement("input");
        myInput.setAttribute("type", "hidden");
        myInput.setAttribute("name", "transMsg");
        myInput.setAttribute("id", "transMsg");
        myInput.setAttribute("value", msg);  
        myForm.appendChild(myInput);          
        document.body.appendChild(myForm);
        //alert(document.getElementById("transMsg").value); 
        myForm.submit();
    }
}














    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
