").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});
diff --git a/includes/external/novalnet/js/novalnet_api.js b/includes/external/novalnet/js/novalnet_api.js
new file mode 100644
index 0000000..118b9d7
--- /dev/null
+++ b/includes/external/novalnet/js/novalnet_api.js
@@ -0,0 +1,128 @@
+/**
+ * Novalnet novalnet api call Script
+ * By Novalnet (https://www.novalnet.de)
+ * Copyright (c) Novalnet
+ */
+ if(typeof(jQuery) == undefined || typeof(jQuery) == 'undefined' || typeof(jQuery) == 'function' ) {
+ var s = document.createElement("script");
+ s.type = "text/javascript";
+ var nn_cc_root = document.getElementById('nn_api_shoproot').value;
+ s.src = nn_cc_root+"includes/external/novalnet/js/jquery.js";
+ document.getElementsByTagName("head")[0].appendChild(s);
+ }
+ if (window.addEventListener) { // For all major browsers, except IE 8 and earlier
+ window.addEventListener("load", novalnet_api_load);
+ } else if (window.attachEvent) { // For IE 8 and earlier versions
+ window.attachEvent("onload", novalnet_api_load);
+ }
+/**
+ * To get the backend field configuration values
+ */
+ function novalnet_api_load() {
+ jQuery('input[name="configuration[MODULE_PAYMENT_NOVALNET_PUBLIC_KEY]"]').attr('id', 'novalnet_public_key');
+ jQuery('input[name="configuration[MODULE_PAYMENT_NOVALNET_VENDOR_ID]"]').attr('id', 'novalnet_vendor_id');
+ jQuery('input[name="configuration[MODULE_PAYMENT_NOVALNET_AUTHCODE]"]').attr('id', 'novalnet_auth_code');
+ jQuery('input[name="configuration[MODULE_PAYMENT_NOVALNET_PRODUCT_ID]"]').attr('id', 'novalnet_product');
+ jQuery('input[name="configuration[MODULE_PAYMENT_NOVALNET_TARIFF_ID]"]').attr('id', 'novalnet_tariff_id');
+ jQuery('input[name="configuration[MODULE_PAYMENT_NOVALNET_PAYMENT_ACCESS_KEY]"]').attr('id', 'novalnet_access_key');
+ jQuery('#novalnet_vendor_id,#novalnet_auth_code,#novalnet_product,#novalnet_access_key').attr("readonly", true);
+ if( jQuery('#novalnet_public_key').val() != '' ) {
+ get_merchant_details();
+ }
+ jQuery('#novalnet_public_key').change(function() {
+ get_merchant_details();
+ });
+ jQuery('#novalnet_public_key').closest('form').submit(function(event) {
+ var form = this;
+ if (jQuery('#nn_api_config_call').attr('value') == '0') {
+ event.preventDefault();
+ jQuery(document).ajaxComplete(function() {
+ jQuery(form).submit();
+ });
+ }
+ return true;
+ });
+ }
+
+/**
+ * To send the api details to novalnet server and get vendor configuration details
+ */
+ function get_merchant_details() {
+ var server_ip = jQuery('#server_ip').val();
+ var public_key = jQuery('#novalnet_public_key').val();
+ var language = jQuery('#nn_language').val();
+ if(jQuery.trim(public_key) == '') {
+ null_basic_params();
+ return false;
+ }
+ jQuery('#nn_api_config_call').attr('value', 0);
+ var data_to_send = {"system_ip": server_ip , "api_config_hash": public_key, 'lang': language}
+ if ('XDomainRequest' in window && window.XDomainRequest !== null) {
+ var xdr = new XDomainRequest();
+ xdr.open('POST' , 'https://payport.novalnet.de/autoconfig');
+ xdr.onload = function () {
+ process_result( data_to_send );
+ };
+ xdr.send( data_to_send );
+ }else{
+ jQuery.ajax({
+ type : 'POST',
+ url : 'https://payport.novalnet.de/autoconfig',
+ data : data_to_send,
+ success: function(data) {
+ process_result( data );
+ }
+ });
+ }
+ return true;
+ }
+
+/**
+ * To performing unset the vendor configuration details in global configuration
+ */
+ function null_basic_params() {
+ jQuery('#novalnet_vendor_id, #novalnet_auth_code, #novalnet_product, #novalnet_access_key').val('');
+ jQuery('#novalnet_tariff_id').find('option' ).remove();
+ jQuery('#nn_api_config_call').attr('value', 1);
+ jQuery('#novalnet_tariff_id').append(jQuery( '