    var moveState = false;
    var moveObj, moveObjTitle;
    var x0, y0;
    var objX0, objY0;
    var moveObjZ = 10000;
    var prevPosition = "";
    var browser = (
        !!(window.attachEvent && !window.opera) ? 'IE' :
        !!window.opera ? 'Opera' :
        navigator.userAgent.indexOf('AppleWebKit/') > -1 ? 'WebKit' :
        navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1 ? 'Gecko' : ''
    )
    var shopcaseBT = 0

    function cursorPosition(event) {
        var x = y = 0;
        if (document.attachEvent != null) { // Internet Explorer & Opera
            x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
            y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
        }
        if (!document.attachEvent && document.addEventListener) { // Gecko
            x = event.clientX + window.scrollX;
            y = event.clientY + window.scrollY;
       }
        return {x:x, y:y};
    }

    function initMove(th, obj, event) {
        var event = event || window.event;
        moveObj = document.getElementById(obj);
        moveObjTitle = th
        moveObj.style.zIndex = moveObjZ++;
//        prevPosition = moveObj.style.position
//        moveObj.style.position = "absolute";
        var posCursor = cursorPosition(event);
//        var posObj = getAbsPos(moveObj);
        var posObj = offset(moveObj);
        x0 = posCursor.x;
        y0 = posCursor.y;
        objX0 = posObj.x;
        objY0 = posObj.y;
//        alert(objY0)
        moveState = true;
//        document.getElementById('txt').value = x0 + " - " + y0 + " - " + objX0 + " - " + objY0 + " - " + moveState
        return false
    }
    
    function destroyMove()
    {
//        moveObj.style.position = prevPosition;
        prevPosition = ""
        moveState = false;
        moveObj = "";
        moveObjTitle = "";
    }

    document.onmouseup = function() {
        destroyMove();
//        document.getElementById('txt').value = x0 + " - " + y0 + " - " + objX0 + " - " + objY0 + " - " + moveState
    }

    document.onmousemove = function(event) {
        moveHandler(event);
        if (moveState) return false
    }

    function moveHandler(event) {
        if (moveState)
        {
            var event = event || window.event;
            var posCursor = cursorPosition(event);
            moveObj.style.left = (objX0 + posCursor.x - x0) + 'px';
            if (browser != "IE") moveObj.style.top = (objY0 + posCursor.y - y0) + 'px';
            oppSetShopcaseBorderTop(objY0 + posCursor.y - y0)
//            document.getElementById('txt').value = objX0 + " - " + objY0 + " - " + posCursor.x + " - " + posCursor.y + " - " + x0 + " - " + y0 + " - " + obj.style.left + " - " + obj.style.top
            return false
        }
    }

	function getAbsPos(p)
	{
		var s = { x:0, y:0 }
		while (p)
		{
			s.x += p.offsetLeft
			s.y += p.offsetTop
			p = p.offsetParent
		}
		return s
    }

    function offset(elem) {
        var top = 0
        var left = 0
        if (elem.getBoundingClientRect && browser == 'Opera') {
//            var doc = elem.ownerDocument
            var box = elem.getBoundingClientRect();
            add(box.left /*+ Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft(*/,
            box.top /*+ Math.max(doc.documentElement.scrollTop, doc.body.scrollTop)*/);
//            add(-doc.documentElement.clientLeft, -doc.documentElement.clientTop);
        }
        else {
            while (elem) {
                add(elem.offsetLeft, elem.offsetTop)
                elem = elem.offsetParent
            }
        }
        return { x: left , y: top};

        function add(l, t) {
            left += parseInt(l, 10) || 0;
            top += parseInt(t, 10) || 0;
        }
    }

    function getScrollTop() {
        return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop)
    }
    
    function getClientWidth()
    {
        return document.compatMode == 'CSS1Compat' && !window.opera ? document.documentElement.clientWidth : document.body.clientWidth
    }

    function getClientHeight()
    {
        return document.compatMode == 'CSS1Compat' && !window.opera ? document.documentElement.clientHeight : document.body.clientHeight
    }

    function getClientSTop()
    {
        return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop)
    }

    function getClientSLeft()
    {
        return self.pageXOffset || (document.documentElement && document.documentElement.scrollLeft) || (document.body && document.body.scrollLeft)
    }

    function oppSetCookie(name, value, expires, path, domain, secure)
    {
        domain = "." + oppGetDomain()
        var curCookie = name + "=" + escape(value) +
            ((expires) ? "; expires=" + expires.toGMTString() : "") +
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            ((secure) ? "; secure" : "")
        if ((name + "=" + escape(value)).length <= 4000) document.cookie = curCookie
        else if (confirm("Cookie превышает 4KB и будет вырезан !")) document.cookie = curCookie
    }

    function oppGetCookie(name)
    {
        var prefix = name + "="
        var cookieStartIndex = document.cookie.indexOf(prefix)
        if (cookieStartIndex == -1) return null
        var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
        if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length
        return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
    }

    function oppDeleteCookie(name, path, domain)
    {
        domain = "." + oppGetDomain()
        if (getCookie(name))
        {
            document.cookie = name + "=" + 
                ((path) ? "; path=" + path : "") +
                ((domain) ? "; domain=" + domain : "") +
                "; expires=Thu, 01-Jan-70 00:00:01 GMT"
        }
    }

    function oppGetDomain()
    {
        var d = window.location.hostname
        d = d.split(".")
        return (d[d.length-2] + "." + d[d.length-1])
    }

    function oppSetP(id)
    {
		var pts = document.getElementsByName('pt' + id)
		if (pts)
		{
		    var st = ""
			j = pts.length
			for (i=0; i < j; i++)
			{
                pt = pts[i].value
                var v = parseInt(document.getElementById("pt" + id + "-" + pt).value)
                if ((isNaN(v)) || (v <= 0)) v = 0
                if (v > 0) st += ((st == "") ? "" : ",")  + pt + "-" + v
            }

		    var si = ""
            var pis = document.getElementsByName('pi' + id)
		    if (pis)
		    {
			    j = pis.length
			    for (i=0; i < j; i++)
			    {
		            pi = pis[i]
                    if (pi.checked)
                    {
                        var obj = document.getElementById("pi" + id + "-" + pi.value)
                        v = parseInt(obj.value)
                        if ((!isNaN(v)) && (v > 0)) si += ((si == "") ? "" : ",") + pi.value + "-" + v
                    }
                }
            }

            var d = new Date()
            if (st == "")
            {
                d.setYear(d.getYear() - 1)
                var v = ""
            }
            else
            {
                d.setHours(d.getHours() + 1)
                var v = st + "|" + si
            }
            oppSetCookie("p[" + id + "]", v, d, "/", "", "")
            oppRefreshShopcase()
        }
    }

    function oppSetPTI(pid, tid, t, n)
    {
        var obj = document.getElementById("p" + t + pid + "-" + tid)
        if (obj)
        {
            var v = parseInt(obj.value)
            if (isNaN(v))
            {
                if (n != 0)
                {
                    v = 0
                    v += n
                    if (v < 0) v = 0
                    obj.value = v
                }
            }
            else
            {
                v += n
                if (v < 0) v = 0
                obj.value = v
            }
            oppSetP(pid)
        }
    }

    function oppShowPI(id, th, s)
    {
        var h = document.getElementById("pi" + id + "d")
        if (h)
        {
            if (h.style.display != 'none')
            {
                h.style.display = 'none';
                if (th.src) th.src = '/images/btnAddIngr' + s + 'D.gif';
            }
            else
            {
                var hc = document.getElementById("pi" + id + "c")
                if (!hc) hc = h
			    if (hc.innerHTML == '')
			    {
                    hc.innerHTML = '<img src="/opp/img/loader7.gif" align="absmiddle">'
                    var ajax = createAjax()
                    if (ajax)
                    {
					    ajax.onreadystatechange = function()
					    {
					        if (ajax.readyState == 4)
                            {
                                hc.innerHTML = ajax.responseText
                            }
                        }
				        ajax.open("GET", '/opp/getIngredients.php?id=' + id, true)
				        ajax.send("null")
				    }
			    }

                if (h.tagName == "TBODY")
                {
                    if (browser == "IE") h.style.display = 'block';
                    else h.style.display = 'table-row-group'
                }
                else h.style.display = 'block';
                if (th.src) th.src = '/images/btnAddIngr' + s + 'U.gif';
            }
        }
    }

    function oppShopcaseOnLoad(t, s)
    {
        //oppSetShopcaseBorderTop(t)
        shopcaseBT = t
        switch (s)
        {
            case "1":
            {
                break
            }
            case "2":
            {
                var shopcase = document.getElementById("shopcase")
                shopcase.style.left = '10px'
                break
            }
            case "3":
            {
                var menu = document.getElementById("menu")
                var shopcase = document.getElementById("shopcase")
                var posObj = offset(menu);
                shopcase.style.left = posObj.x + 'px'
                break
            }
        }
        if (shopcase) shopcase.style.display = ''
        oppRefreshShopcase()
    }

    function oppRefreshShopcase()
    {
        var obj = document.getElementById("shopcaseCont")
        var objL = document.getElementById("shopcaseLoader")
        if (!objL)
        {
            var isNewLoader = false
            objL = obj
        } else var isNewLoader = true
        if (obj)
        {
            obj.innerHTML = "&nbsp;"
            if (isNewLoader) objL.style.backgroundImage = "url(/opp/img/loader1.gif)"
            else objL.style.backgroundImage = "url(/opp/img/loaderPizza.gif)"
            var d = new Date()
            var t = d.getTime()
            var url = "/opp/getShopcase.php?" + t
            var ajax = createAjax()
            if (ajax)
            {
                ajax.onreadystatechange = function () {
                    if (ajax.readyState == 4) {
                        txt = ajax.responseText
                        var t = txt.split("<summa>")
                        if (t.length > 0) {
                            txt = t[0]
                            var tCnt = t[2]
                            t = t[1]
                            var objSumma = document.getElementById("ShopCaseTotalSumma")
                            if (objSumma) objSumma.innerHTML = t
                            var objCnt = document.getElementById("ShopCaseTotalCnt")
                            if (objCnt) objCnt.innerHTML = tCnt
                        }

                        if (txt == "") {
                            var objE = document.getElementById("shopcaseEmpty")
                            if (objE) obj.innerHTML = objE.innerHTML
                            else obj.innerHTML = "Корзина пустая"
                            //obj.style.verticalAlign = "middle"
                            //obj.style.textAlign = "center"
                            //obj.innerHTML = "Корзина пуста"
                        }
                        else obj.innerHTML = txt
                        if (isNewLoader) objL.style.backgroundImage = "url(/images/shCImg.png)"
                        else objL.style.backgroundImage = ""
                        ajax = null
                    }
                }
                ajax.open("GET", url, true)
                ajax.send("null")
            }
        }
    }

    function oppDeleteShopcaseProduct(pID, tID)
    {
        if (confirm("Удалить блюдо из корзины?"))
        {
            var v = oppGetCookie("p[" + pID + "]")
            var v = v.split("|")
            if (v.length > 0) var i = v[1]
            else var i = ""
            var t = v[0].replace(new RegExp("(^|,)" + tID + "-\\d+($|,)", "g"), "$1$2").replace(/(^,|,,|,$)/, "")

            var d = new Date()
            if (t == "")
            {
                v = ""
                d.setYear(d.getYear() - 1)
            }
            else
            {
                v = t + "|" + i
                d.setHours(d.getHours() + 1)
            }

            var obj = document.getElementById("pt" + pID + "-" + tID)
            if (obj) obj.value = "0"

            oppSetCookie("p[" + pID + "]", v, d, "/", "", "")
            var obj = document.getElementById("sh" + pID + "_" + tID)
            if (obj) obj.style.display = "none"
        }
    }

    function oppSetShopcaseBorderTop(ot)
    {
        shopcaseBT = ot - getScrollTop()
    }

    function checkOrder(th)
    {
		var pc = document.getElementById('PhoneCode').value
        var pn = document.getElementById('PhoneNumber').value
        var msg = ""
        if ((pc == '') || (pn == '')) msg = 'Введите код и номер телефона'
		else if ((pn.length < 7) || (pn.indexOf('-') >= 0) || (pn.indexOf(' ') >= 0)) msg = 'Номер телефона введён некорректно'
		else if (document.getElementById('AccountName').value == '') msg = 'Введите Имя'
		else if (document.getElementById('Metro').value == '') msg = 'Введите станцию Метро'
		else if (document.getElementById('Street').value == '') msg = 'Введите название Улицы'
		else if (document.getElementById('House').value == '') msg = 'Введите номер Дома'
		else if ((document.getElementById('vImgNumber')) && document.getElementById('vImgNumber').value == '') msg = 'Введите контрольное число'
        else
        {
	        if (confirm("Оформить заказ?"))
            {
                //document.getElementById('oppSubmit').style.display = "none"
                //th.style.display = "none"
                var objForm = document.getElementById('oppForm')
                objForm.style.display = "none"
                var objLoader = document.getElementById('oppLoader')
                objLoader.style.display = ""

                var chImgN = document.getElementById('chImgNumber')
                if (chImgN)
                {
                    var d = new Date()
                    var t = d.getTime()
                    var url = "/opp/getImageNumber.php?k=" + chImgN.value + "&n=" + document.getElementById('vImgNumber').value + "&" + t
                    var ajax = createAjax()
                    if (ajax)
                    {
                        ajax.onreadystatechange = function () {
                            if (ajax.readyState == 4) {
                                var txt = ajax.responseText
                                if (txt == "OK")
                                {
                                    location.href = "#yatop"
                                    objForm.submit()
                                }
                                else
                                {
                                    objLoader.style.display = "none"
                                    objForm.style.display = ""
                                    var msg = "Введённое контрольное число не совпадает с предложенным"
                                    document.getElementById("oppMsg1v").innerHTML = msg
                                    document.getElementById("oppMsg1").style.display = ""
                                    document.getElementById("oppMsg2v").innerHTML = msg
                                    document.getElementById("oppMsg2").style.display = ""
                                }
                                ajax = null
                            }
                        }
                        ajax.open("GET", url, true)
                        ajax.send("null")
                    }
                }
                else
                {
                    location.href = "#yatop"
                    objForm.submit()
                }
            }
        }
        if (msg != "")
        {
            alert(msg)
        }
    }
