// Including js files to be used in the web pages
// Add your js source code reference here, rather than in the HTML files

// Find path to Helper.js
var scripts = document.getElementsByTagName('SCRIPT');
var path = '';

if(scripts && scripts.length>0) {
    for(var i in scripts) {
        if(scripts[i].src && scripts[i].src.match(/Helper\.js$/)) {
            path = scripts[i].src.replace(/(.*)Helper\.js$/, '$1');
        }
    }
}
console.log(path);

document.write('<script type="text/javascript" src="' + path + 'WebSocketTransport.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'util/CCNProtocolDTags.js"></script>');
	
document.write('<script type="text/javascript" src="' + path + 'util/CCNTime.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'Name.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'ContentObject.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'encoding/DateFormat.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'Interest.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'Key.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'PublisherID.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'PublisherPublicKeyDigest.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'FaceInstance.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'ForwardingEntry.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'Closure.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'encoding/DynamicUint8Array.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'encoding/BinaryXMLEncoder.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'encoding/BinaryXMLDecoder.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'encoding/BinaryXMLStructureDecoder.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'encoding/DataUtils.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'encoding/EncodingUtils.js"></script>');
                
document.write('<script type="text/javascript" src="' + path + 'security/KeyManager.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'NDN.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'securityLib/jsbn.js"></script>');
document.write('<script type="text/javascript" src="' + path + 'securityLib/jsbn2.js"></script>');
document.write('<script type="text/javascript" src="' + path + 'securityLib/rsa.js"></script>');
document.write('<script type="text/javascript" src="' + path + 'securityLib/rsa2.js"></script>');

//document.write('<script type="text/javascript" src="' + path + 'securityLib/sha1.js"></script>');
document.write('<script type="text/javascript" src="' + path + 'securityLib/sha256.js"></script>');
//document.write('<script type="text/javascript" src="' + path + 'securityLib/sha512.js"></script>');
//document.write('<script type="text/javascript" src="' + path + 'securityLib/md5.js"></script>');
//document.write('<script type="text/javascript" src="' + path + 'securityLib/ripemd160.js"></script>');
document.write('<script type="text/javascript" src="' + path + 'securityLib/base64.js"></script>');

document.write('<script type="text/javascript" src="' + path + 'securityLib/rsapem-1.1.js"></script>');
document.write('<script type="text/javascript" src="' + path + 'securityLib/rsasign-1.2.js"></script>');
document.write('<script type="text/javascript" src="' + path + 'securityLib/asn1hex-1.1.js"></script>');
document.write('<script type="text/javascript" src="' + path + 'securityLib/x509-1.1.js"></script>');
