function showSubmenu(elId){
	jQuery('ul.submenu > li > ul').each(function(){
		jQuery(this).slideUp('normal');
	});
	jQuery('#' + elId).slideToggle('normal');
};

function getXmlHttp() {
	var xmlhttp;
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
		}
	}
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}

function saveUserData(field_name, field_value) {
	if (field_name>'' && field_value>'' ) {
		var xmlhttp = getXmlHttp();
		if (typeof(xmlhttp.setRequestHeader) == "function") {
			xmlhttp.open('POST', 'save_data.php?r='+Math.random(), true);
			xmlhttp.onreadystatechange = function() 
			{
		  		if (xmlhttp.readyState == 4) 
		  			if(xmlhttp.status == 200)
		  				getResponse(xmlhttp.responseXML);
		  		
			};
			xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			xmlhttp.send('field_name='+field_name + '&field_value='+field_value);
		}
		else{
			xmlhttp.open("GET", 'save_data.php?field_name='+field_name + '&field_value='+field_value, true);
			xmlhttp.onreadystatechange = function() 
			{
				if (xmlhttp.readyState == 4)
			 	  	if(xmlhttp.status == 200)
			 	  		getResponse(xmlhttp.responseXML);
			}; 
			xmlhttp.send(null);
		}
	}
	return false;
}

function getResponse(data){
	if (jQuery("status", data).text()=='ok'){
		field_name = jQuery("field", data).text();
		par = jQuery('input[name="' + field_name + '"]').parent().parent();
		if (field_name!='login_password'){
			if (field_name=='login_user'){
				par.find('span.field-value').css('display', 'inline');
				setCookie(SC_LOGIN, par.find('input:eq(2)').val())
			}
			else
				par.find('span.field-value').css('display', 'inline').text(par.find('input:eq(2)').val());
		}
		else{
			setCookie(SC_PASSWORD, md5(md5(md5(par.find('input:eq(2)').val()))))
			par.find('input:eq(2)').val('')
			par.find('span.field-value').css('display', 'inline');
		}
		par.find('input.edit').css('display', 'inline');
		par.find('input.save').css('display', 'none');
		par.find('input:eq(2)').css('display', 'none');
	}
}

var cookie_name = 'basket_products';
var add_to_count = false;

jQuery(function(){
	jQuery('input.edit').click(function(){
		par = jQuery(this).parent().parent();
		par.find('span.field-value').css('display', 'none');
		par.find('input.edit').css('display', 'none');
		par.find('input.save').css('display', 'inline');
		par.find('input:eq(2)').css('display', 'inline');
	})	
	jQuery('input.save').click(function(){
		input_element = jQuery(this).parent().parent().find('input:eq(2)');
		field_name = input_element.attr('name');
		field_value = input_element.attr('value');
		saveUserData(field_name, field_value);
	})
	jQuery('div#packages-sub a').click(function(){
		var cel = jQuery(this); 
		cel.parent().find('a').removeClass('active');
		cel.addClass('active');
		var current_id = cel.attr('id');
		jQuery('div#thumbnails img:gt(0)').css('display', 'none');
		jQuery('div#thumbnails img#' + current_id + '-small').css('display', 'block');
		jQuery('#first-small-product-image').trigger('click');
		return false;
	});
	
	jQuery('.basket').click(function(){
		add_item = jQuery(this).find('span').attr('title');
		parts = unserialize_basket(add_item, '-');
		basket_element = parts[0] + '-' + parts[1];
		item_count = parts[2]*1;
		
		if (!isNaN(item_count) && item_count>0 && (String(item_count).match(/[0-9]+(\.[0-9]+)?/)) ) {
			add_to_basket(basket_element, item_count);
		}
		/*
		else if (item_count=='0'){
			dell_from_basket(basket_element);
		}
		*/
		return false;
	});
	
	jQuery('#add-to-basket').click(function(){
		add_item = jQuery(this).find('span').attr('title');
		parts = unserialize_basket(add_item, '-');
		basket_element = parts[0] + '-' + parts[1];
		item_count = parts[2]*1;
		if (!isNaN(item_count) && item_count>0 && (String(item_count).match(/[0-9]+(\.[0-9]+)?/)) ) {
			add_to_basket(basket_element, item_count);
		}
	});
	
	jQuery('.quick-order-tbl input.add').click(function(){
		var product_id = jQuery(this).parent().find('input.product-general-id').val();
		var item_count = jQuery(this).parent().parent().find('input.items-count').val();
		var product_packing = jQuery(this).parent().parent().find('input[name="product' + product_id + '-packing"]').val();
		if (product_packing==undefined)
			product_packing = jQuery(this).parent().parent().find('input[name="vproduct' + product_id + '-packing"]').val();
		if (!isNaN(item_count) && item_count>0 && (String(item_count).match(/[0-9]+(\.[0-9]+)?/)) ) {
			add_to_basket(product_id + '-' + product_packing, item_count);
		}
	});
	
	jQuery('a#inbasket').click(function(){
		var product_id = jQuery('table.sum-tbl input.product-general-id').val();
		var item_count = jQuery('table.sum-tbl input.items-count').val();
		var product_packing = jQuery('input[name="packing"]').val();
		if (product_packing==undefined)
			product_packing = jQuery('input[name="vpacking"]').val();
		if (!isNaN(item_count) && item_count>0 && (String(item_count).match(/[0-9]+(\.[0-9]+)?/)) ) {
			add_to_basket(product_id + '-' + product_packing, item_count);
		}
		return false;
	});
	
	jQuery('table.order-tbl input.edit').click(function(){
		jQuery(this).parent().find('input.save').css('display', 'inline');
		jQuery(this).css('display', 'none');
		jQuery(this).parent().parent().find('td.count-items > span').css('display', 'none');
		jQuery(this).parent().parent().find('td.count-items > input').css('display', 'inline');
	});
	
	jQuery('table.order-tbl input.save').click(function(){
		
		coockiename = jQuery(this).parent().parent().find('td.lft input').val();
		var item_count = jQuery(this).parent().parent().find('td.count-items > input').val();
		if (!isNaN(item_count) && item_count>0 && (String(item_count).match(/[0-9]+(\.[0-9]+)?/)) ) {
			add_to_basket(coockiename, item_count);
			old_count = jQuery(this).parent().parent().find('td.count-items > span').text()*1;
			current_count = jQuery('span.result').text()*1;
			current_count = current_count - old_count + item_count*1;
			current_count = jQuery('span.result').text(String(current_count));
			jQuery(this).parent().find('input.edit').css('display', 'inline');
			jQuery(this).css('display', 'none');
			jQuery(this).parent().parent().find('td.count-items > span').css('display', 'inline').text(item_count);
			jQuery(this).parent().parent().find('td.count-items > input').css('display', 'none');
		}
	});
	
	jQuery('table.order-tbl input.delete').click(function(){
		old_count = jQuery(this).parent().parent().find('td.count-items > span').text()*1;
		current_count = jQuery('span.result').text()*1;
		current_count = current_count - old_count*1;
		jQuery('span.result').text(String(current_count));
		coockiename = jQuery(this).parent().parent().find('td.lft input').val();
		dell_from_basket(coockiename);
		jQuery(this).parent().parent().remove();
	});
	
});

function changeImage(element, small_image, big_image){
	jQuery('.jqZoomWindow').remove();
	jQuery('.jqZoomPup').remove();
	jQuery(".jqzoom").remove();
	jQuery(".zoom-link").remove();
	
	var image_link = '#';
	var image_link_class = '';
	
	image_link = big_image;
	image_link_class = ' class="zoom-link" ';
	
	jQuery("div#big-image").html('').append('<a href="' + image_link + '" ' + image_link_class + '><img src="' + small_image + '" alt="" /></a>');
	
	jQuery('.zoom-link').jqzoom();
	
	jQuery(element).parent().find('img').each(function(){ jQuery(this).removeClass('active') });
	jQuery(element).addClass('active');
	
	var cel = jQuery(element); 
	cel.parent().find('a').removeClass('active');
	cel.addClass('active');
	var current_id = cel.attr('id');
	return false;
}

function add_to_basket(basketElement, count) {
	var _cookie = getCookie(cookie_name);
	var array_of_basket_items = new Array();
	// flag of new element
	var flag_add_new= true;
	// index of found added element for add count
	var _el;
	// if no items added
	basketElement = encodeURIComponent(basketElement);
	if (_cookie==null) {
		array_of_basket_items.push(basketElement + '-' + count);
	} else {
		array_of_basket_items=unserialize_basket(_cookie);
		if(array_of_basket_items[0]=='')
			array_of_basket_items = new Array();
		basket_element_array = unserialize_basket(basketElement, '-');
		// chek if element already added
		for (var i = 0; i < array_of_basket_items.length; i++) {
			elem = unserialize_basket(array_of_basket_items[i], '-');
			if ( elem[0]==basket_element_array[0] && elem[1]==basket_element_array[1]) {
				//add_to_count = true;
				flag_add_new = false;
				_el = i;
			}
		}
		if (flag_add_new) {
			array_of_basket_items.push(basketElement + '-' + count);
		}
		else{
			if (String(count).match(/[0-9]+(\.[0-9]+)?/)){
				elem = unserialize_basket(array_of_basket_items[_el], '-');
				array_of_basket_items[_el] = elem[0] + '-' + elem[1] + '-' + String(count);
			}
		}
	}
	setCookie(cookie_name, serialize_basket(array_of_basket_items));
}

function dell_from_basket(basketElement) {
	var _cookie = getCookie(cookie_name);
	var mas = new Array();
	var mas1 = new Array();
	var flag= false;
	elements_got=unserialize_basket(basketElement, "-");
	if (_cookie!=null) {
		mas=unserialize_basket(_cookie);
		for (var i = 0; i < mas.length; i++) {
			elements=unserialize_basket(mas[i], "-");
			if (elements.length>0){
				if (elements[0]==elements_got[0] && elements[1]==encodeURIComponent(elements_got[1]) ){
					flag= true;
				}
				else{
					mas1.push(mas[i]);
				}
			}
		}
	}
	if (flag) {
		setCookie(cookie_name, serialize_basket(mas1));
	}
}

function serialize_basket(ins, delemiter) {
	var temp="";
	delemiter = (delemiter==undefined) ? '|' : delemiter;
	for (var i = 0; i < ins.length; i++) {
		if (ins[i]!="") temp=temp+ins[i]+"|";
	}
	if (temp.length>1) temp=temp.substr(0,(temp.length-1))
	return temp;
}

function unserialize_basket(ins, delemiter) {
	delemiter = (delemiter==undefined) ? '|' : delemiter;
	var temp = new Array();
	var temp1 ="";
	if (ins.indexOf(delemiter,0)>=0 && ins.length>0) {
		do {
			temp1=ins.substr(0,ins.indexOf(delemiter,0));
			ins=ins.substr((temp1.length+1),ins.length);
			if (temp1!="") temp.push(temp1);
		} while (ins.indexOf(delemiter,0)>=0)
		if (ins.length>0) temp.push(ins);
	} else {
		temp.push(ins);
	}
	return temp;
}

function setCookie(name, value, expires, path, domain, secure) {
    if (!path)  path="/";
    if (!expires) {
    	var timestamp = new Date();
		expires = new Date(timestamp.getTime() + 1720000);
    }
    document.cookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

function getCookie(name) {
var cookie = " " + document.cookie;
var search = " " + name + "=";
var setStr = null;
var offset = 0;
var end = 0;
if (cookie.length > 0) {
	offset = cookie.indexOf(search);
	if (offset != -1) {
		offset += search.length;
		end = cookie.indexOf(";", offset)
		if (end == -1) {
			end = cookie.length;
		}
		setStr = unescape(cookie.substring(offset, end));
	}
}
return(setStr);
}


function md5 (str) {
    // http://kevin.vanzonneveld.net
    // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
    // + namespaced by: Michael White (http://getsprink.com)
    // +    tweaked by: Jack
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // -    depends on: utf8_encode
    // *     example 1: md5('Kevin van Zonneveld');
    // *     returns 1: '6e658d4bfcb59cc13f96c14450ac40b9'
    var xl;

    var rotateLeft = function (lValue, iShiftBits) {
        return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
    };

    var addUnsigned = function (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);
        }
    };

    var _F = function (x, y, z) {
        return (x & y) | ((~x) & z);
    };
    var _G = function (x, y, z) {
        return (x & z) | (y & (~z));
    };
    var _H = function (x, y, z) {
        return (x ^ y ^ z);
    };
    var _I = function (x, y, z) {
        return (y ^ (x | (~z)));
    };

    var _FF = function (a, b, c, d, x, s, ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(_F(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };

    var _GG = function (a, b, c, d, x, s, ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(_G(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };

    var _HH = function (a, b, c, d, x, s, ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(_H(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };

    var _II = function (a, b, c, d, x, s, ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(_I(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };

    var convertToWordArray = function (str) {
        var lWordCount;
        var lMessageLength = str.length;
        var lNumberOfWords_temp1 = lMessageLength + 8;
        var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
        var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
        var lWordArray = new 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] | (str.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;
    };

    var wordToHex = function (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;
    };

    var x = [],
        k, AA, BB, CC, DD, a, b, c, d, S11 = 7,
        S12 = 12,
        S13 = 17,
        S14 = 22,
        S21 = 5,
        S22 = 9,
        S23 = 14,
        S24 = 20,
        S31 = 4,
        S32 = 11,
        S33 = 16,
        S34 = 23,
        S41 = 6,
        S42 = 10,
        S43 = 15,
        S44 = 21;

    str = this.utf8_encode(str);
    x = convertToWordArray(str);
    a = 0x67452301;
    b = 0xEFCDAB89;
    c = 0x98BADCFE;
    d = 0x10325476;

    xl = x.length;
    for (k = 0; k < xl; 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 utf8_encode (argString) {
    // http://kevin.vanzonneveld.net
    // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: sowberry
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman
    // +   improved by: Yves Sucaet
    // +   bugfixed by: Onno Marsman
    // +   bugfixed by: Ulrich
    // +   bugfixed by: Rafal Kukawski
    // *     example 1: utf8_encode('Kevin van Zonneveld');
    // *     returns 1: 'Kevin van Zonneveld'

    if (argString === null || typeof argString === "undefined") {
        return "";
    }

    var string = (argString + ''); // .replace(/\r\n/g, "\n").replace(/\r/g, "\n");
    var utftext = "",
        start, end, stringl = 0;

    start = end = 0;
    stringl = string.length;
    for (var n = 0; n < stringl; n++) {
        var c1 = string.charCodeAt(n);
        var enc = null;

        if (c1 < 128) {
            end++;
        } else if (c1 > 127 && c1 < 2048) {
            enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128);
        } else {
            enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128);
        }
        if (enc !== null) {
            if (end > start) {
                utftext += string.slice(start, end);
            }
            utftext += enc;
            start = end = n + 1;
        }
    }

    if (end > start) {
        utftext += string.slice(start, stringl);
    }

    return utftext;
}


