// >> Show / hide shipping address
	/* orderForm */
	LieferAdr = {
		storage: null,
		setStorage: function(){
			var fields = $('#lieferAdrBox').find(':input');
			this.storage = [];
			var self = this;
			fields.each(function(i){
					self.storage.push({'name': $(this).attr('name'), 'value': $(this).attr('value'), 'element': $(this)});
			});
			
		},
		storeAndClear: function(){
			this.setStorage();
			if ($('#lieferadresse').attr('checked') == true){
				lieferAdrBox(null, $('#lieferadresse'));
			}
			else {
				$('#lieferadresse').removeAttr('checked');
				$('#lieferAdrBox').find(':input').val('');
			}
		},
		fillFieldsFromStorage: function(){
			$(this.storage).each(function(i){
					this.element.val(this.value);
			});
		}
	};
	
	function lieferAdrBox(event, el){
		var lieferAdrCheck = $(el).attr('checked');
		var lieferAdrBox = $('#lieferAdrBox');
		if (lieferAdrCheck == true){
			LieferAdr.fillFieldsFromStorage();
			lieferAdrBox.show();
		}
		else if (lieferAdrCheck == false){
			lieferAdrBox.find('input').each(function() {
					$(this).attr('value', '');
			})
			lieferAdrBox.find('select').each(function() {
					var opt = $(this).find('option');
					opt.each(function(i){
						$(this).removeAttr('selected');
						if (i == 0) {
							$(this).attr('selected', 'selected');
						}
					})
			})
			lieferAdrBox.hide();
		}
	}
	
	/* vMode */
	function vMode_lieferAdrBox(){
		var shell = $('#of_vMode_shippingAdr');
		var cb = $('#of_vMode_shippingAdr_value').text();
		
		if (cb == "1") {
			shell.show();
		}
	}
// <<


// >> utilities requires jQuery 1.2.6+ Version: rel-1-9-1
	doNothing = function(){}
	Utils = {
		pixelPath: '/xist4c/px/spc.gif',
		pixel: function(){
			return $('<img src="' + this.pixelPath + '" height="1" width="1" border="0" alt=""/>');
		},
		pixelAsString: function(){
			return '<img src="' + this.pixelPath + '" height="1" width="1" border="0" alt=""/>';
		},
		getRecalculatedImage: function(args){
			var img = args.image;
			if ($.browser.msie){
				var w = img.width;
				var h = img.height;
			}else{
				var w = img.attr('width');
				var h = img.attr('height');
			}
			var mw = args.maxWidth;
			var mh = args.maxHeight;
			var nw, nh;
			var f = 1;
			if (args.proportional){
				f = mw / w;
				var nw = mw;
				var nh = h * f;
				if (nh > mh){
					f = mh / nh;
					var nh = mh;
					var nw = nw * f;
				}
				if ($.browser.msie){
					img.width = nw;
					img.height = nh;
				}else{
					img.attr('width', nw);
					img.attr('height', nh);
				}
				return img;
			}
			if ($.browser.msie){
				img.width = mw;
				img.height = mh;
			}else{
				img.attr('width', mw);
				img.attr('height', mh);
			}
			return img;
		},
		getUrlParamsAsJson: function(url, dontDecode){
			var self = this, urlParams;
			if (!url){
				url = window.location.href;
			}
			if (url.search(/\?/) > -1){
				urlParams = url.substring(url.search(/\?/) + 1 , url.length);
				urlParams = urlParams.split('&');
				jParams = {};
				$(urlParams).each(function(){
					var parVal = this.split('='), record, k = parVal[0], v, i;
					if (parVal.length > 2){
						v = '';
						for (i = 1; i < parVal.length; i+=1){
							v += parVal[i] + '=';
						}
						v = v.substring(0, v.lastIndexOf('='));
					}else{
						v = parVal[1];
					}
					if (!dontDecode){
						k = decodeURIComponent(k);
						v = decodeURIComponent(v);
					}
					if (jParams[k] && typeof jParams[k] !== 'undefined'){
						if (self.isArray(jParams[k])){
							jParams[k].push(v);
						}else{
							jParams[k] = [jParams[k]];
							jParams[k].push(v);
						}
					}else{
						jParams[k] = v;
					}
				});
				return jParams;
			}
			return null;
		},
		getUrlParamsFromJson: function(params, noEmptyParams){
			var paramStr = '?', i, self = this, k;
			if (params && typeof params === 'object'){
				for (k in params){
					if (params[k] && self.isArray(params[k])){
						for (i = 0; i < params[k].length; i+=1){
							paramStr += [encodeURIComponent(k),'=',encodeURIComponent(params[k][i]),'&'].join('');
						}
					}else{
						if (noEmptyParams){
							if (params[k]){
								paramStr += [encodeURIComponent(k),'=',encodeURIComponent(params[k]),'&'].join('');
							}
						}else{
							paramStr += [encodeURIComponent(k),'=',encodeURIComponent(params[k]),'&'].join('');
						}
					}
				}
				return paramStr.substring(0, paramStr.length - 1);
			}
			return null;
		},
		stripTags: function(str){
			if (typeof str == 'string') return str.replace(/<\/?[^>]+>/gi, '');
			return null;
		},
		clipStringAfter: function(str, len, opts){
			var rStr = '', defaults = {
				endChar: null,
				decorator: null
			}, i;
			if (opts && this.isObject(opts)){
				$.extend(defaults, opts);
			}
			if (str.length > len){
				rStr = str.substring(0, len);
				if (typeof defaults.endChar === 'string'){
					if (str.substr(len, 1) != defaults.endChar){
						for (i = 0; i < str.substr(len, str.length).length; i+=1){
							if (str.substr(len + i, 1) == defaults.endChar){
								rStr += str.substr(len, i);
								break;
							}
						}
					}
				}
				if (typeof defaults.decorator === 'string'){
					rStr += defaults.decorator;
				}
				return rStr;
			}
			return str;
		},
		parseDeFloat: function(f){
			var f = f.replace(/\./g, '');
			f = f.replace(/\,/, '.');
			return f;
		},
		getUrlSession: function(keyString){
			var sidKeyLength = 12, sidKeyRex = /;jsessionid=/, sid = null,
					loc = window.location.href, params = Utils.getUrlParamsAsJson(), paramStartRex = /\?/, endPos,
					ks = keyString || '';
			if (sidKeyRex.test(loc)){
				if (params){
					endPos = loc.search(paramStartRex);
				}else{
					endPos = loc.length;
				}
				return ks + loc.substring(loc.search(sidKeyRex) + sidKeyLength, endPos);
			}
			return '';
		},
		isObject: function(obj){
			return (
				obj && 
				(typeof(obj) === 'object') && 
				!(typeof(obj.length) === 'number')
			);
		},
		isArray: function(obj){
			return (
				obj && 
				!(typeof(obj) === 'string') && 
				(typeof(obj) === 'object') && 
				(typeof(obj.length) === 'number')
			);
		},
		isFunction: function(obj){
			return typeof(obj) === 'function';
		},
		isString: function(obj){
			return typeof(obj) === 'string';
		},
		busyWait: function(condition, interval, maxloops, callback){
			var ivFunc, cnt = 0, self = this, stdInterval = 1000, intervalObj = null;
			if (parseInt(Number(interval)) !== 'NaN' && parseInt(Number(interval)) > 0){
				stdInterval = parseInt(interval);
			}
			if (Utils.isFunction(condition)){
				if (!intervalObj){
					ivFunc = function(){
						var ready = condition.call(self);
						if (ready){
							clearInterval(intervalObj);
							intervalObj = null;
							if (Utils.isFunction(callback)){
								callback.call(self);
							}
						}
						cnt +=1;
						if (cnt == maxloops){
							clearInterval(intervalObj);
							intervalObj = null;
							return null;
						}
					}
					intervalObj = setInterval(ivFunc, stdInterval);
				}
			}
		},
		getXist4cSessionId: function(opts){
			var defaults = {
				sessionPrefix: ';jsessionid',
				sessionCookieName: 'JSESSIONID',
				returnOnlyUrlSession: false,
				returnWithPrefix: false
			}, u = window.location.href, c = $.cookie(defaults.sessionCookieName), end,
			sessionPrefix = defaults.sessionPrefix, node, params = this.getUrlParamsAsJson();
			if (opts && typeof opts === 'object'){
				$.extend(defaults, opts);
			}
			if (u.search(sessionPrefix) > -1 || (params && params[sessionPrefix.substring(1)])){ // Test url for session entry.
				if (u.search(sessionPrefix) == -1){
					if (defaults.returnWithPrefix){
						return sessionPrefix + '=' + params[sessionPrefix.substring(1)];
					}
					return params[sessionPrefix.substring(1)];
				}else{
					if (u.indexOf('?') === -1){
						end = u.length;
					}else{
						end = u.indexOf('?');
					}
					if (defaults.returnWithPrefix){
						return u.substring(u.search(sessionPrefix), end);
					}
					return u.substring(u.search(sessionPrefix) + (sessionPrefix.length + 1), end);
				}
			}else if (!defaults.returnOnlyUrlSession){
				if (c){ // When a cookie holds the session.
					if (defaults.returnWithPrefix){
						return [sessionPrefix,'=',c].join('');
					}
					return c;
				}else{ // Last instance, test the XIST4C_GLOBALS for sessioned href's.
					if (XIST4C_GLOBALS && XIST4C_GLOBALS.sitemap.length){
						node = XIST4C_GLOBALS.sitemap[0];
						if (node.href && node.href.search(sessionPrefix) > -1){
							if (node.href.indexOf('?') === -1){
								end = node.href.length;
							}else{
								end = node.href.indexOf('?');
							}
							if (defaults.returnWithPrefix){
								return node.href.substring(node.href.search(sessionPrefix), end);
							}
							return node.href.substring(node.href.search(sessionPrefix) + (sessionPrefix.length + 1), end);
						}
					}
				}
			}
			return null;
		},
		// used with modified function context (call, apply)!
		// a calling object must provide a "defaults" member
		getDefault: function(name){
			var dv;
			if (typeof this.defaults === 'object'){
				if (typeof name === 'string'){
					dv = this.defaults[name];
					if (typeof dv === 'undefined'){
						return null;
					}
					return dv;
				}
				return this.defaults;
			}
			return null;
		}
	}
// <<


// >> MD5 hash generator
	var MD5 = function (string) {
		function RotateLeft(lValue, iShiftBits) {
			return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
		}
		function AddUnsigned(lX,lY) {
			var lX4,lY4,lX8,lY8,lResult;
			lX8 = (lX & 0x80000000);
			lY8 = (lY & 0x80000000);
			lX4 = (lX & 0x40000000);
			lY4 = (lY & 0x40000000);
			lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
			if (lX4 & lY4) {
				return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
			}
			if (lX4 | lY4) {
				if (lResult & 0x40000000) {
					return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
				} else {
					return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
				}
			} else {
				return (lResult ^ lX8 ^ lY8);
			}
		}
		function F(x,y,z) { return (x & y) | ((~x) & z); }
		function G(x,y,z) { return (x & z) | (y & (~z)); }
		function H(x,y,z) { return (x ^ y ^ z); }
		function I(x,y,z) { return (y ^ (x | (~z))); }
	 
		function FF(a,b,c,d,x,s,ac) {
			a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
			return AddUnsigned(RotateLeft(a, s), b);
		};
	 
		function GG(a,b,c,d,x,s,ac) {
			a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
			return AddUnsigned(RotateLeft(a, s), b);
		};
	 
		function HH(a,b,c,d,x,s,ac) {
			a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
			return AddUnsigned(RotateLeft(a, s), b);
		};
	 
		function II(a,b,c,d,x,s,ac) {
			a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
			return AddUnsigned(RotateLeft(a, s), b);
		};
	 
		function ConvertToWordArray(string) {
			var lWordCount;
			var lMessageLength = string.length;
			var lNumberOfWords_temp1=lMessageLength + 8;
			var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
			var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
			var lWordArray=Array(lNumberOfWords-1);
			var lBytePosition = 0;
			var lByteCount = 0;
			while ( lByteCount < lMessageLength ) {
				lWordCount = (lByteCount-(lByteCount % 4))/4;
				lBytePosition = (lByteCount % 4)*8;
				lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
				lByteCount++;
			}
			lWordCount = (lByteCount-(lByteCount % 4))/4;
			lBytePosition = (lByteCount % 4)*8;
			lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
			lWordArray[lNumberOfWords-2] = lMessageLength<<3;
			lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
			return lWordArray;
		};
	 
		function WordToHex(lValue) {
			var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
			for (lCount = 0;lCount<=3;lCount++) {
				lByte = (lValue>>>(lCount*8)) & 255;
				WordToHexValue_temp = "0" + lByte.toString(16);
				WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
			}
			return WordToHexValue;
		};
	 
		function Utf8Encode(string) {
			string = string.replace(/\r\n/g,"\n");
			var utftext = "";
	 
			for (var n = 0; n < string.length; n++) {
	 
				var c = string.charCodeAt(n);
	 
				if (c < 128) {
					utftext += String.fromCharCode(c);
				}
				else if((c > 127) && (c < 2048)) {
					utftext += String.fromCharCode((c >> 6) | 192);
					utftext += String.fromCharCode((c & 63) | 128);
				}
				else {
					utftext += String.fromCharCode((c >> 12) | 224);
					utftext += String.fromCharCode(((c >> 6) & 63) | 128);
					utftext += String.fromCharCode((c & 63) | 128);
				}
	 
			}
	 
			return utftext;
		};
	 
		var x=Array();
		var k,AA,BB,CC,DD,a,b,c,d;
		var S11=7, S12=12, S13=17, S14=22;
		var S21=5, S22=9 , S23=14, S24=20;
		var S31=4, S32=11, S33=16, S34=23;
		var S41=6, S42=10, S43=15, S44=21;
	 
		string = Utf8Encode(string);
	 
		x = ConvertToWordArray(string);
	 
		a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
	 
		for (k=0;k<x.length;k+=16) {
			AA=a; BB=b; CC=c; DD=d;
			a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
			d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
			c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
			b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
			a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
			d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
			c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
			b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
			a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
			d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
			c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
			b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
			a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
			d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
			c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
			b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
			a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
			d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
			c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
			b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
			a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
			d=GG(d,a,b,c,x[k+10],S22,0x2441453);
			c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
			b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
			a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
			d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
			c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
			b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
			a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
			d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
			c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
			b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
			a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
			d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
			c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
			b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
			a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
			d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
			c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
			b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
			a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
			d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
			c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
			b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
			a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
			d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
			c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
			b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
			a=II(a,b,c,d,x[k+0], S41,0xF4292244);
			d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
			c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
			b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
			a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
			d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
			c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
			b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
			a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
			d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
			c=II(c,d,a,b,x[k+6], S43,0xA3014314);
			b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
			a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
			d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
			c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
			b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
			a=AddUnsigned(a,AA);
			b=AddUnsigned(b,BB);
			c=AddUnsigned(c,CC);
			d=AddUnsigned(d,DD);
		}
		var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);
		return temp.toLowerCase();
	}
// <<


// >> e-abo creditcard check
	PayoneCreditcardChecker = $.extend(
		$.clone(LLObject),
		{
			create: function(opts){
				var o = LLObject.create.call(this);
				o.defaults = {
					callbackFunction: {
						name: null,
						func: function(response){
							var cardDataShell = $('.mopFormShell_kreditkarte'), form = $('#cb_kreditkarte').parents('form'),
							cardpan = cardDataShell.find('input[name=p_abo_kartennummer]'),
							cardcvc2 = cardDataShell.find('input[name=p_abo_cvc]'),
							pseudocardpan, errorOuter;
							if (!cardDataShell.find('.creditcard-error-msg-outer').length){
								cardDataShell.prepend('<div class="creditcard-error-msg-outer"></div>');
							}
							errorOuter = $('.creditcard-error-msg-outer').removeClass('creditcard-error-msg-outer-withLayout').empty();
							if (response.get('status') == 'VALID'){
								if (!cardDataShell.find('input[name=p_pseudocardpan]').length){
									cardDataShell.append('<input type="hidden" name="p_pseudocardpan" value=""/>');
								}
								pseudocardpan = cardDataShell.find('input[name=p_pseudocardpan]');
								cardpan.val(response.get('truncatedcardpan'));
								cardcvc2.val('***');
								pseudocardpan.val(response.get('pseudocardpan'));
								Utils.busyWait(
									function(intervalObj){
										if (parseInt(pseudocardpan.val(), 10) > 0){
											return true;
										}
										return false;
									},
									200,
									100,
									function(intervalObj){
										form.unbind('submit').submit();
									}
								);
							}else{
								errorOuter.addClass('creditcard-error-msg-outer-withLayout').text(response.get('customermessage'));
							}
						}
					},
					data: {
						request: 'creditcardcheck',
						responsetype: 'JSON',
						mode: 'live',
						mid: null,
						aid: null,
						portalid: null,
						encoding: 'UTF-8',
						storecarddata: 'yes',
						key: null,
						hash: null,
						cardholder: null,
						cardpan: null,
						cardtype: null,
						cardexpiredate: null,
						cardcvc2: null,
						language: 'de'
					},
					options: {
						return_type: 'object',
						callback_function_name: null
					}
				};
				if (typeof opts === 'object'){
					$.extend(true, o.defaults, opts);
				}
				return o;
			},
			init: function(){
				var form = $('.creditCardForm').parents('form'), self = this;
				form.unbind().bind('submit', function(e){
					var opts = self.defaults, request, data = opts.data, expiredate = '';
					e.preventDefault();
					e.stopPropagation();
					if (form.length){
						window[opts.callbackFunction.name] = opts.callbackFunction.func;
						data.cardholder = $('.creditCardForm').find('input[name=ccf_ccowner]').val();
						data.cardpan = $('.creditCardForm').find('input[name=ccf_ccnumber]').val();
						data.cardtype = $('.creditCardForm')
							.find('select[name=ccf_creditcard]').val();
						if (data.cardtype == 'E'){
							data.cardtype = 'M';
						}
						expiredate = $('.creditCardForm').find('select[name=ccf_ccexpdate]').val().split(/(.{2})/);
						data.cardexpiredate = [expiredate[3], expiredate[5]].join('');
						data.cardcvc2 = $('.creditCardForm').find('input[name=ccf_ccsecurecode]').val();
						request = new PayoneRequest(data, opts.options);
						request.checkAndStore();
					}else{
						form.unbind().submit();
					}
				});
			},
			isCreditCardPayment: function(){
				var cardOption = $('.creditCardForm').find(':input');
				return cardOption.attr('checked');
			}
		}
	);
	$(function(){
		if ($('.usePayone').length){
			ccChecker = PayoneCreditcardChecker.create({
				callbackFunction:{
					name: 'progressPayoneResponse',
					func: function(response){
						var cardDataShell = $('.creditCardForm'), form = cardDataShell.parents('form'),
						cardpan = cardDataShell.find('input[name=ccf_ccnumber]'),
						cardcvc2 = cardDataShell.find('input[name=ccf_ccsecurecode]'),
						pseudocardpan, errorOuter;
						if (!cardDataShell.parent().find('.creditcard-error-msg-outer').length){
							cardDataShell.before('<div class="creditcard-error-msg-outer"></div>');
						}
						errorOuter = $('.creditcard-error-msg-outer').removeClass('creditcard-error-msg-outer-withLayout').empty();
						if (response.get('status') == 'VALID'){
							if (!cardDataShell.parent().find('input[name=p_pseudocardpan]').length){
								cardDataShell.after('<input type="hidden" name="p_pseudocardpan" value=""/>');
							}
							pseudocardpan = cardDataShell.parent().find('input[name=p_pseudocardpan]');
							cardpan.val(response.get('truncatedcardpan'));
							cardcvc2.val('***');
							pseudocardpan.val(response.get('pseudocardpan'));
							Utils.busyWait(
								function(intervalObj){
									if (parseInt(pseudocardpan.val(), 10) > 0){
										return true;
									}
									return false;
								},
								200,
								100,
								function(intervalObj){
									form.unbind('submit').submit();
								}
							);
						}else{
							errorOuter.addClass('creditcard-error-msg-outer-withLayout').text(response.get('customermessage'));
						}
					}
				},
				data: {
					mode: 'test',
					mid: '16174',
					aid: '16929',
					portalid: '2012316',
					key: 'bd5f532f925bae0e3d76d97dc4172c74',
					hash: '9115b5c82d560be0a4003d525a8689ee'
				},
				options: {
					callback_function_name: 'progressPayoneResponse'
				}
			});
			ccChecker.init();
		}
	});
// <<


