// Entango Core JavaScript
/*jslint browser: true */ /*global window */
if(window.Ent === undefined){var Ent = {};Ent.entango = true;}
if((typeof Ent === "object") && (Ent !== null) && (Ent.entango === true)){
if(Ent.ent_core_included !== true){
Ent.ent_core_included = true;
Ent.defaultCookieLifetimeDays = 30;
Ent.isUndefined = function(item){return item === undefined;};
Ent.isNull = function(item){return item === null;};
Ent.isNUN = function(item){return (item === undefined) || (item === null);};
Ent.isEmpty = function(item){return Ent.isNUN(item);};
Ent.isNumber = function(item){return (typeof item === "number") || (item instanceof Number);};
Ent.isString = function(item){return (typeof item === "string") || (item instanceof String);};
Ent.isBoolean = function(item){return (typeof item === "boolean") || (item instanceof Boolean);};
Ent.isFunction = function(item){return typeof item === "function";};
Ent.isObject = function(item){return (typeof item === "object") && (item !== null) && !(item instanceof Number) && !(item instanceof String) && !(item instanceof Boolean);};
Ent.getType = function(item){var type = typeof item;if(type === "object"){if(item === null){return "null";}else if(item instanceof Number){return "number";}else if(item instanceof String){return "string";}else if(item instanceof Boolean){return "boolean";}}return type;};
Ent.isNode = function(item){return (item !== null) && (typeof item === "object") && (typeof item.nodeType === "number");};
Ent.isElement = function(item){return Ent.isNode(item) && (item.nodeType === 1);};
Ent.getElement = function(item){if(Ent.isString(item)){return document.getElementById(item);}else if(Ent.isElement(item)){return item;}else{return null;}};
Ent.getInt = function(item,defaultValue){if(defaultValue === undefined){defaultValue = 0;}if(Ent.isNUN(item)){return defaultValue;}if(item instanceof String){item = item.valueOf();}if(item instanceof Number){item = item.valueOf();}switch(typeof item){case "number":return isNaN(item) ? defaultValue : (item > 0 ? Math.floor(item) : Math.ceil(item));case "string":return Ent.integer(parseFloat(Ent.trim(item)),defaultValue);case "object":if(Ent.isNumber(item.value) || Ent.isString(item.value)){return Ent.integer(item.value,defaultValue);}}return defaultValue;};
Ent.integer = function(item,defaultValue){return Ent.getInt(item,defaultValue);};
Ent.getFloat = function(item,defaultValue){if(defaultValue === undefined){defaultValue = 0;}if(Ent.isNUN(item)){return defaultValue;}if(item instanceof String){item = item.valueOf();}if(item instanceof Number){item = item.valueOf();}switch(typeof item){case "number":return isNaN(item) ? defaultValue : item;case "string":return Ent.float(parseFloat(Ent.trim(item)),defaultValue);case "object":if(Ent.isNumber(item.value) || Ent.isString(item.value)){return Ent.float(item.value,defaultValue);}}return defaultValue;};
Ent.float = function(item,defaultValue){return Ent.getFloat(item,defaultValue);};
Ent.getMoney = function(item,defaultValue){item=Ent.getFloat(item,defaultValue);if(typeof item === "number"){item = item > 0 ? Math.floor(100 * item) / 100 : Math.ceil(100 * item) /100;}return item;};
Ent.formatFloat = function(num,dec,width){if(Ent.isNUN(dec)){dec = 0;}var fixed = num.toFixed(dec);if(Ent.isNUN(width) || (width <= 0) || (width <= fixed.length)){return fixed;}var show = "";for(var cnt = 0; cnt < width - fixed.length; cnt++){show += " ";}return show + fixed;};
Ent.formatMoney = function(item){return Ent.formatFloat(item,2);};
Ent.isVisible = function(item){item=Ent.getElement(item);if((item !== null) && (item.style.display != "none")){return true;}return false;};
Ent.setVisible = function(item){item=Ent.getElement(item);if(item !== null){item.style.display = "";}};
Ent.isInvisible = function(item){item=Ent.getElement(item);if(item === null || item.style.display == "none"){return true;}return false;};
Ent.setInvisible = function(item){item=Ent.getElement(item);if(item !== null){item.style.display = "none";}};
Ent.flipVisibility = function(item){item=Ent.getElement(item);if(Ent.isVisible(item)){Ent.setInvisible(item);}else{Ent.setVisible(item);}};
Ent.isEnabled = function(item){item=Ent.getElement(item);if(item !== null && item.disabled !== true){return true;}return false;};
Ent.setEnabled = function(item){item=Ent.getElement(item);if(item !== null){item.disabled = null;}};
Ent.isDisabled = function(item){item=Ent.getElement(item);if(item !== null && item.disabled === true){return true;}return false;};
Ent.setDisabled = function(item){item=Ent.getElement(item);if(item !== null){item.disabled = true;}};
Ent.isChecked = function(item){item=Ent.getElement(item);if(item !== null && item.checked === true){return true;}return false;};
Ent.setChecked = function(item){item=Ent.getElement(item);if(item !== null){item.checked = true;}};
Ent.isUnchecked = function(item){item=Ent.getElement(item);if(item !== null && item.checked !== true){return true;}return false;};
Ent.setUnchecked = function(item){item=Ent.getElement(item);if(item !== null){item.checked = null;}};
Ent.isReadonly = function(item){item=Ent.getElement(item);if(item !== null && item.readOnly === true){return true;}return false;};
Ent.setReadonly = function(item){item=Ent.getElement(item);if(item !== null){item.readOnly = true;}};
Ent.isNotReadonly = function(item){item=Ent.getElement(item);if(item !== null && item.readOnly !== true){return true;}return false;};
Ent.setNotReadonly = function(item){item=Ent.getElement(item);if(item !== null){item.readOnly = null;}};
Ent.setFocus = function(item){item=Ent.getElement(item);if(item !== null){item.focus();}};
Ent.submitForm = function(formId,formAction,formMethod,formTarget){var form=document.forms[formId];if((form !== undefined) && (form !== null)){if((formAction !== undefined) && (formAction !== null)){form.action=formAction;}if((formMethod !== undefined) && (formMethod !== null)){form.method=formMethod;}if((formTarget !== undefined) && (formTarget !== null)){form.target=formTarget;}return form.submit();}return false;};
Ent.isBlankElement = function(item){item = Ent.getElement(item);if((item === null) || Ent.isBlankString(item.value)){return true;}return false;};
Ent.isBlankString = function(item){var pattern = /\S/;if((item === undefined) || (item === null) || ((typeof item == "string") && !pattern.test(item))){return true;}return false;};
Ent.setText = function(item,text){item = Ent.getElement(item);if(item !== null){if(item.hasChildNodes()){item.replaceChild(document.createTextNode(text),item.firstChild);}else{item.appendChild(document.createTextNode(text));}}};
Ent.getText = function(item){item = Ent.getElement(item);if((item !== null) && item.hasChildNodes()){return item.firstChild.nodeValue;}return "";};
Ent.getOptionValue = function(item){item = Ent.getElement(item);if(item !== null){if(!Ent.isBlankString(item.value)){return item.value;}else if(!Ent.isBlankString(item.text)){return item.text;}else{return "";}}};
Ent.getElementsByNameAndTag = function(name,tag,form){var elements = [];if(!Ent.isBlankString(name) && !Ent.isBlankString(tag)){if(Ent.isBlankString(form)){var block = document;}else{block = document.forms[form];}if(!Ent.isNUN(block)){var items = block.getElementsByTagName(tag);for(var i = 0; i < items.length; i++){if(items[i].name == name){elements[elements.length] = items[i];}}}}return elements;};
Ent.getInputByName = function(inputName,formName){var input = null;if(!Ent.isEmpty(inputName)){var item = document;if(!Ent.isEmpty(formName)){item = document.forms[formName];}if(!Ent.isNUN(item)){var inputs = item.getElementsByTagName("input");for(var i = 0; i < inputs.length; i++){if(inputs[i].name == inputName){input = inputs[i];}}}}return input;};
Ent.getSelectByName = function(selectName,formName){var select = null;if(!Ent.isEmpty(selectName)){var item = document;if(!Ent.isEmpty(formName)){item = document.forms[formName];}if(!Ent.isNUN(item)){var selects = item.getElementsByTagName("select");for(var i = 0; i < selects.length; i++){if(selects[i].name == selectName){select = selects[i];}}}}return select;};
Ent.getSelectValue = function(item){item = Ent.getElement(item);if((item !== null) && !Ent.isNUN(item.options) && (item.options.length > 0)){var selected = item.selectedIndex;if((typeof selected != "number") || (selected < 0) || (selected >= item.options.length)){selected = 0;}return Ent.getOptionValue(item.options[selected]);}else{return null;}};
Ent.trim = function(item){if(Ent.isNUN(item)){return "";}if(item instanceof String){item = item.valueOf();}switch(typeof item){case "string":return item.replace(/^\s+|\s+$/g,"");case "object":if(Ent.isString(item.value)){return Ent.trim(item.value);}}return "";};
Ent.cleanUp = function(str){return Ent.trim(str).replace(/\s+/g," ");};
Ent.parseFloatField = function(str){str = Ent.trim("" + str);if(str === ""){return 0;}else{return parseFloat(str);}};
Ent.parseIntField = function(str){str = Ent.trim("" + str);if(str === ""){return 0;}else{return parseInt(str,10);}};
Ent.parseMoneyField = function(str){str = Ent.trim("" + str);if(str === ""){return 0;}else{return Math.floor(100.0 * parseFloat(str))/100.0;}};
Ent.clientField = function(str){return Ent.getElement("clientField." + str);};
Ent.limit = function(item,limit){item=Ent.getElement(item);if((item !== null) && item.value && (typeof item.value == "string")){item.value = Ent.trim(item.value);if((typeof limit == "number") && (limit > 0) && (item.value.length > limit)){item.value = item.value.substring(0,limit);}}};
Ent.isValidEmailAddress = function(email){if(typeof email == "string"){var pattern = /^.+@.+\..{2,3}$/;return pattern.test(email);}return false;};
Ent.isValidEmailField = function(item){item = Ent.getElement(item);if((item !== null) && (item.value)){return Ent.isValidEmailAddress(item.value);}return false;};
Ent.validateEmailField = function(item,showAlert,altMessage){item = Ent.getElement(item);if((item !== null) && (typeof item.value == "string")){item.value=Ent.trim(item.value);if(Ent.isValidEmailAddress(item.value)){return true;}}if(showAlert !== false){alert((typeof altMessage == "string")?altMessage:"Please enter a valid email address.");}return false;};
Ent.isValidUSZipcode = function(zipcode){if(typeof zipcode == "string"){var pattern = /^\d{5}([\-]\d{4})?$/; return pattern.test(zipcode);}return false;};
Ent.isValidUSZipcodeField = function(item){item = Ent.getElement(item);if((item !== null) && (item.value)){return Ent.isValidUSZipcode(item.value);}return false;};
Ent.validateUSZipcodeField = function(item,showAlert,altMessage){item = Ent.getElement(item);if((item !== null) && (typeof item.value == "string")){item.value=Ent.trim(item.value);var pattern = /^[\d\s\-]{5,}$/;if(pattern.test(item.value)){var test = item.value.replace(/\s+/g,"-").replace(/\-{2,}/g,"-").replace(/\-+$/,"");if(Ent.isValidUSZipcode(test)){item.value=test;return true;}}}if(showAlert !== false){alert((typeof altMessage == "string")?altMessage:"Please enter a valid ZIP Code.");}return false;};
Ent.isValidCAZipcode = function(zipcode){if(typeof zipcode == "string"){var pattern = /^[A-Z]\d[A-Z] \d[A-Z]\d$/; return pattern.test(zipcode);}return false;};
Ent.isValidCAZipcodeField = function(item){item = Ent.getElement(item);if((item !== null) && (item.value)){return Ent.isValidCAZipcode(item.value);}return false;};
Ent.validateCAZipcodeField = function(item,showAlert,altMessage){item = Ent.getElement(item);if((item !== null) && (typeof item.value == "string")){item.value=Ent.trim(item.value);var pattern = /^[\d\s\-a-zA-Z]{6,}$/;if(pattern.test(item.value)){var test = item.value;if(test.length == 6){test = test.substring(0,3) + " " + test.substring(3);}test = test.toUpperCase().replace(/\-+/g," ").replace(/\s{2,}/g," ");if(Ent.isValidCAZipcode(test)){item.value=test;return true;}}}if(showAlert !== false){alert((typeof altMessage == "string")?altMessage:"Please enter a valid Postal Code.");}return false;};
Ent.isValidZipcode = function(zipcode,country){if(typeof zipcode == "string"){if((typeof country == "string") && (country.length == 2)){var ctry = country;}else{ctry="US";}if(ctry == "US"){return Ent.isValidUSZipcode(zipcode);}else if(ctry == "CA"){return Ent.isValidCAZipcode(zipcode);}}return false;};
Ent.isValidZipcodeField = function(item,country){item = Ent.getElement(item);if((item !== null) && (item.value)){return Ent.isValidZipcode(item.value,country);}return false;};
Ent.validateZipcodeField = function(item,country,showAlert,altMessage){item = Ent.getElement(item);var ctry = "US";if((item !== null) && (typeof item.value == "string")){if((typeof country == "string") && (country.length == 2)){ctry = country;}if(ctry == "US"){return Ent.validateUSZipcodeField(item,showAlert,altMessage);}else if(ctry == "CA"){return Ent.validateCAZipcodeField(item,showAlert,altMessage);}else{item.value=Ent.trim(item.value);if(item.value.length > 0){return true;}}/* Note: may be in error. Some countries might not use postal codes */}if(showAlert !== false){alert((typeof altMessage == "string")?altMessage:((ctry == "US")?"Please enter a valid ZIP Code.":"Please enter a valid Postal Code."));}return false;};
Ent.getSimpleCookie = function(name){if(typeof name == "string"){name = Ent.trim(name);if((name !== "") && (document.cookie !== "")){var cookies = document.cookie.split(";");for(var index = 0; index < cookies.length; index++){cookies[index] = Ent.trim(cookies[index]);if(cookies[index].substring(0,name.length + 1) == (name + "=")){return decodeURIComponent(cookies[index].substring(name.length + 1));}}}}return "";};
Ent.setSimpleCookie = function(name,val,lifetimeSecs){if(typeof name == "string"){name = Ent.trim(name);if(name !== ""){if(Ent.isNUN(val) || (typeof val != "string") || Ent.isBlankString(val)){val = ""; lifetimeSecs = 0;}if(Ent.isNUN(lifetimeSecs)){lifetimeSecs = Ent.defaultCookieLifetimeDays * 24 * 60 * 60;}if((typeof lifetimeSecs != "number") || (lifetimeSecs < 0)){lifetimeSecs = 0;}document.cookie = name + "=" + encodeURIComponent(Ent.trim(val)) + "; max-age=" + lifetimeSecs;}}};
// These are deprecated SH legacy functions here for convenience
Ent.convert = function(amount){var cents = amount.toString();var len = cents.length;if(len > 2){var dollarsAndCents = cents.substring(0, len - 2) + "." + cents.substring(len - 2, len);}else{if(len == 2){dollarsAndCents = "0."  + cents;}else{if(len == 1){dollarsAndCents = "0.0" + cents;}else{ dollarsAndCents = "0.00" ;}}}return dollarsAndCents ;};
// Adapted from 3rd party source
Ent.md5 = function(string) {
	/**
	*
	*  MD5 (Message-Digest Algorithm)
	*  http://www.webtoolkit.info/
	*
	**/
	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();
};
}}
else{alert("Ent already defined outside Entango code.");}

