
function check_reg() {

	var ready = true;

	if(document.register.name.value.length < 5) {
		$("input[name='name']").addClass("rb");
		ready = false;
	} else {
		$("input[name='name']").removeClass("rb");
	}

	if(!checkegn(document.register.egn)) {
		$("input[name='egn']").addClass("rb");
		ready = false;
	} else {
		$("input[name='egn']").removeClass("rb");
	}

	if(!isValidPhone(document.register.phone.value)) {
		$("input[name='phone']").addClass("rb");
		ready = false;
	} else {
		$("input[name='phone']").removeClass("rb");
	}

	if(!isValidEmailAddress(document.register.email.value)) {
		$("input[name='email']").addClass("rb");
		ready = false;
	} else {
		$("input[name='email']").removeClass("rb");
	}

	if(document.register.city.value.length < 3) {
		$("input[name='city']").addClass("rb");
		ready = false;
	} else {
		$("input[name='city']").removeClass("rb");
	}

	if(document.register.daddr.value.length < 15) {
		$("textarea[name='daddr']").addClass("rb");
		ready = false;
	} else {
		$("textarea[name='daddr']").removeClass("rb");
	}

	if(!ready) {
		alert("Моля попълнете всички задължителни полета");
		return false;
	}

	if (!document.register.agree.checked)  {
		alert("Моля съгласете се с общите условия");
		return false;
	}

	$.blockUI({ message: '<h1><br /> Please wait...<br /><br /></h1>'  });
	document.register.submit();
	return true;

	return false;
}

function isLeapYear(yyyy)
	{
		if (yyyy % 400 == 0) { return true; }
		if (yyyy % 100 == 0) { return false; }
		if (yyyy % 4 == 0) { return true; }

		return false;
	}

function checkegn (egn)	{
		var digits = [],
			coeffs = [2, 4, 8, 5, 10, 9, 7, 3, 6],
			days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

		for (var i = 0; i < egn.value.length; i++)
		{
			var digit = parseInt(egn.value.charAt(i), 10);

			if (isNaN(digit)) { break; }
			digits[i] = digit;
		}

		if (10 != digits.length) {
			return false; 
//			writeResultError("Моля, въведете 10 ЦИФРИ."); _text.focus(); return; 
		}

		var dd = digits[4] * 10 + digits[5],
			mm = digits[2] * 10 + digits[3],
			yy = digits[0] * 10 + digits[1],
			yyyy = null;

		if (mm >= 1 && mm <= 12) { yyyy = 1900 + yy; }
		else if (mm >= 21 && mm <= 32) { mm -= 20; yyyy = 1800 + yy; }
		else if (mm >= 41 && mm <= 52) { mm -= 40; yyyy = 2000 + yy; }

		else {
			return false; 
//			writeResultError("Некоректен месец. Позиции 3 и 4."); _text.focus(); return; 
		}

		days[1] += isLeapYear(yyyy) ? 1 : 0;

		if (!(dd >= 1 && dd <= days[mm - 1])) {
			return false; 
//			writeResultError("Некоректен ден. Позиции 5 и 6."); _text.focus(); return; 
		}

		// Gregorian calendar adoption. 31 Mar 1916 was followed by 14 Apr 1916.
		if (yyyy == 1916 && mm == 4 && (dd >= 1 && dd < 14)) {
			return false;
//			writeResultError("Грешна дата (от 01.04.1916 до 13.04.1916 г. - Григориански календар)."); _text.focus(); return;
		}

		var checksum = 0;

		for (var j = 0; j < coeffs.length; j++) { checksum += digits[j] * coeffs[j]; }
		checksum %= 11;
		if (10 == checksum) { checksum = 0; }

		if (digits[9] != checksum) {
			return false; 
//			writeResultError("Грешна контролна цифра на въведеният ЕГН. Позиция 10."); _text.focus(); return; 
		}
		
		return true;
//		writeResultOk("Въведеният ЕГН е верен."); _text.focus();
	};




// Browser Window Size and Position
// copyright Stephen Chapman, 3rd Jan 2005, 8th Dec 2005
// you may copy these functions but please keep the copyright notice as well
function pageWidth() {
	return window.innerWidth != null? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null;
} 

function pageHeight() {
	return  window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null;
} 

function posLeft() {
	return typeof window.pageXOffset != 'undefined' ? window.pageXOffset : document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0;
} 

function posTop() {
	return typeof window.pageYOffset != 'undefined' ?  window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0;
} 

function posRight() {
	return posLeft()+pageWidth();
}

function posBottom() {
	return posTop()+pageHeight();
}

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}


function isValidEmailAddress(emailAddress) {
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	return pattern.test(emailAddress);
}

function isValidPhone(phone) {
	var pattern = new RegExp(/^[\+\-\s[0-9]{5,}$/);
	return pattern.test(phone);
}

function check_outq(lang) {

	var ready = true;

	if(document.checkout.name.value.length < 5) {
		$("input[name='name']").addClass("rb");
		ready = false;
	} else {
		$("input[name='name']").removeClass("rb");
	}

	if(!checkegn(document.checkout.egn)) {
		$("input[name='egn']").addClass("rb");
		ready = false;
	} else {
		$("input[name='egn']").removeClass("rb");
	}

	if(!isValidPhone(document.checkout.phone.value)) {
		$("input[name='phone']").addClass("rb");
		ready = false;
	} else {
		$("input[name='phone']").removeClass("rb");
	}

	if(!isValidEmailAddress(document.checkout.email.value)) {
		$("input[name='email']").addClass("rb");
		ready = false;
	} else {
		$("input[name='email']").removeClass("rb");
	}

	if(document.checkout.daddr.value.length < 15) {
		$("textarea[name='daddr']").addClass("rb");
		ready = false;
	} else {
		$("textarea[name='daddr']").removeClass("rb");
	}

	if(!ready) {
		alert("Моля попълнете всички задължителни полета");
		return false;
	}

	if (!document.checkout.agree.checked)  {
		alert("Моля съгласете се с общите условия");
		return false;
	}

	$.blockUI({ message: $('#domMessage') });
	document.checkout.submit();
	return true;

}


function check_outqq(lang) {

	if(document.checkout.name.value.length < 5) {
		alert("Въведете име и фамилия");
		return false;
	}

	if(document.checkout.phone.value.length < 5) {
		alert("Въведете телефон");
		return false;
	}

	if(!isValidEmailAddress(document.checkout.email.value)) {
		alert("Въведете валиден емайл адрес");
		return false;
	}

	if(document.checkout.daddr.value.length < 15) {
		alert("Въведете адрес");
		return false;
	}

	if (!document.checkout.agree.checked)  {
		alert("Съгласете се с общите условия");
		return false;
	}

	document.checkout.submit();
	return true;

}

function slides (sel) {

	var st = sel + ' .top';
	var sm = sel + ' .mid';

	$(sm).slideToggle('slow', function(){ 
		if ($(sm).css('display') == 'none' ) {
			$(st).css('background', 'url(http://img.musicworld.bg/img/search_top_d.gif)');
			$.cookie('slides', '1', {path:'/'}); 
		}
		else { 
			$(st).css('background', 'url(http://img.musicworld.bg/img/search_top_u.gif)');
			$.cookie('slides', null, {path:'/'});
		}
		}
	);
}

function slide (sel, cc) {

	var st = sel + ' .top';
	var sm = sel + ' .mid';

	$(sm).slideToggle('slow', function(){ 
		if ($(sm).css('display') == 'none' ) {
			$(st).css('background', 'url(http://img.musicworld.bg/img/left_top_d.gif)');
			$.cookie(cc, '1', {path:'/'});
		} 
		else { 
			$(st).css('background', 'url(http://img.musicworld.bg/img/left_top_u.gif)');
			$.cookie(cc, null, {path:'/'});
		}
		}
	);

}

function check_out(lang) {

var found_it;

	for (var i=0; i<document.checkout.paym.length; i++)  {
		if (document.checkout.paym[i].checked)  {
			found_it = true;
		}
	}

	if (found_it) {
		document.checkout.submit();
		return true;
	} else {
		alert('Please select payment method');
		return false;
	}

}


function deals_dates_d(f,t) {

 $.post('/parms/dealsdate', { f: f, t: t }, function(data){ location.reload(true); } );

}



function deals_dates() {

 var f = document.getElementById('fdate').innerHTML;
 var t = document.getElementById('tdate').innerHTML;
 
 $.post('/parms/dealsdate', { f: f, t: t }, function(data){ location.reload(true); } );

}


function upload_img(form) {
	sleep(1);
	location.reload(true);
}

function order(id){
  var i = "input[name='count"+id+"']";
	var ii = 1;
 $.post('/parms/cart/'+id+'/'+ii,function(data){ $('#scart').load('/parms/scart');}); 
 $(i).val(1);
 $("#scart").fadeIn("slow");
}

function ordercnt(id, lng){
  var i = "input[name='cnt']";
  var ii = $(i).val() ;
	$.post('/parms/cart/'+id+'/'+ii,function(data){ window.location='/'+lng+'/cart'; });
 $(i).val(1);
 $("#scart").fadeIn("slow");
}

function ordercntno(id, lng){
	alert("Подукта е изчерпан, моля свържете се с оператор");
}

function modorder(id,op){

 $.post('/parms/modcart/'+op+'/'+id,function(data){ $('#cart').load('/parms/ccart'); $('#scart').load('/parms/scart'); });

}

function sendcart(){
 $.post('/parms/sendcart',function(data){ window.location='/'; });
}

function sendcons(){
 $.post('/parms/sendcons',function(data){ window.location='/'; });
}

function views(p) {
 $.get('/parms/'+p,function(data){ location.reload(true); });
}


function parms(p,pp) {

 $.get('/parms/'+p,function(data){ if (data=='ok') window.location=pp;});

};


function logout() {

    $.post('/parms/logout', {}, function(data){ window.location=window.location; } );

}

function login(u,p) {

    var pps = SHA256(p);
    var ppm = MD5(p);

    $.post('/parms/login/', 
	{ e: u, p: p, ps: pps, pm: ppm }, 
	function(data){ 
	    if (data=='ok') {
		$("#form1").submit();
		window.location=window.location;
	    }
	    else {
		alert(data);
	    }
	}
    );

};


/**
*
*  Secure Hash Algorithm (SHA256)
*  http://www.webtoolkit.info/
*
*  Original code by Angel Marin, Paul Johnston.
*
**/

function SHA256(s){

    var chrsz   = 8;
    var hexcase = 0;

    function safe_add (x, y) {
        var lsw = (x & 0xFFFF) + (y & 0xFFFF);
        var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
        return (msw << 16) | (lsw & 0xFFFF);
    }

    function S (X, n) { return ( X >>> n ) | (X << (32 - n)); }
    function R (X, n) { return ( X >>> n ); }
    function Ch(x, y, z) { return ((x & y) ^ ((~x) & z)); }
    function Maj(x, y, z) { return ((x & y) ^ (x & z) ^ (y & z)); }
    function Sigma0256(x) { return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); }
    function Sigma1256(x) { return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); }
    function Gamma0256(x) { return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); }
    function Gamma1256(x) { return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); }

    function core_sha256 (m, l) {
        var K = new Array(0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0xFC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x6CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2);
        var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19);
        var W = new Array(64);
        var a, b, c, d, e, f, g, h, i, j;
        var T1, T2;

        m[l >> 5] |= 0x80 << (24 - l % 32);
        m[((l + 64 >> 9) << 4) + 15] = l;

        for ( var i = 0; i<m.length; i+=16 ) {
            a = HASH[0];
            b = HASH[1];
            c = HASH[2];
            d = HASH[3];
            e = HASH[4];
            f = HASH[5];
            g = HASH[6];
            h = HASH[7];

            for ( var j = 0; j<64; j++) {
                if (j < 16) W[j] = m[j + i];
                else W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]);

                T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]);
                T2 = safe_add(Sigma0256(a), Maj(a, b, c));

                h = g;
                g = f;
                f = e;
                e = safe_add(d, T1);
                d = c;
                c = b;
                b = a;
                a = safe_add(T1, T2);
            }

            HASH[0] = safe_add(a, HASH[0]);
            HASH[1] = safe_add(b, HASH[1]);
            HASH[2] = safe_add(c, HASH[2]);
            HASH[3] = safe_add(d, HASH[3]);
            HASH[4] = safe_add(e, HASH[4]);
            HASH[5] = safe_add(f, HASH[5]);
            HASH[6] = safe_add(g, HASH[6]);
            HASH[7] = safe_add(h, HASH[7]);
        }
        return HASH;
    }

    function str2binb (str) {
        var bin = Array();
        var mask = (1 << chrsz) - 1;
        for(var i = 0; i < str.length * chrsz; i += chrsz) {
            bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i%32);
        }
        return bin;
    }

    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;
    }

    function binb2hex (binarray) {
        var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
        var str = "";
        for(var i = 0; i < binarray.length * 4; i++) {
            str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
            hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8  )) & 0xF);
        }
        return str;
    }

    s = Utf8Encode(s);
    return binb2hex(core_sha256(str2binb(s), s.length * chrsz));

}

/**
*
*  MD5 (Message-Digest Algorithm)
*  http://www.webtoolkit.info/
*
**/
/**
* var MD5 = function (string) {
**/

function MD5(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();
}

function zblock(f) {
	$.blockUI({ message: '<h1><br /> Please wait...<br /><br /></h1>'  });
	document.forms[f].submit();
	sleep(1000);
	return true;
}

