﻿function OpenUrl(url)
{
    if (url != null && url.length != 0)
        window.open(url);
}

function Redirect(url)
{
    if (url != null && url.length != 0)
        document.location = url;
}

var isOpera = false;
var isIe = false;
var isSafari = false;
var isGecko = false;
var isCamino = false;
var isKonqueror = false;
var isKhtml = false;

var ua = navigator.userAgent;
// Browser
isOpera = typeof opera != 'undefined';
isIe = !isOpera && ua.indexOf('MSIE') != -1;
isSafari = !isOpera && ua.indexOf('WebKit') != -1;
// Safari also gives navigator.product string equal to 'Gecko'.
isGecko = !isOpera && navigator.product == 'Gecko' && !isSafari;
isCamino = isGecko && navigator.vendor == 'Camino';
isKonqueror = !isOpera && ua.indexOf('Konqueror') != -1;
isKhtml = isKonqueror || isSafari;

if (isIe) document.onmousemove = getMouseXY;

var activeImageElement = null;
var datas = new Array();
var dateTime = new Date();

function getMouseXY(e) {
	var tempX, tempY;
	var myWidth, myHeight;
	var scrollLeft, scrollTop;
	
	if( typeof( window.innerWidth ) == 'number' ) { //Non-IE
		myWidth = window.innerWidth - document.body.scrollLeft;
		myHeight = window.innerHeight - document.body.scrollTop;
		tempX = e.pageX - document.body.scrollLeft;
		tempY = e.pageY - document.body.scrollTop;
		scrollLeft = document.body.scrollLeft;
		scrollTop = document.body.scrollTop;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { //IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth - document.documentElement.scrollLeft;
		myHeight = document.documentElement.clientHeight - document.documentElement.scrollTop;
		tempX = event.clientX;
		tempY = event.clientY;
		scrollLeft = document.documentElement.scrollLeft;
		scrollTop = document.documentElement.scrollTop;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { //IE 4 compatible
		myWidth = document.body.clientWidth - document.body.scrollLeft;
		myHeight = document.body.clientHeight - document.body.scrollTop;
		tempX = event.clientX;
		tempY = event.clientY;
		scrollLeft = document.body.scrollLeft;
		scrollTop = document.body.scrollTop;
	}

	if (tempX <= 0){tempX = 0;}
	if (tempY <= 0){tempY = 150;}

	var pl = document.getElementById('PictureLoading');
	if ((tempX + pl.offsetWidth) > myWidth) { 
		var deltaX = 0;
		if ((tempX - pl.offsetWidth) < 0) {
			deltaX = pl.offsetWidth - tempX;
		}
		pl.style.left = tempX - pl.offsetWidth + deltaX + scrollLeft;
	} else { 
		pl.style.left = tempX + 8 + scrollLeft;
	}
	if ((tempY + pl.offsetHeight) > myHeight) { 
		var deltaY = 0;
		if ((tempY - pl.offsetHeight) < 0) {
			deltaY = pl.offsetHeight - tempY;
		}
		pl.style.top = tempY - pl.offsetHeight + deltaY + scrollTop;
	} else { 
		pl.style.top = tempY + 16 + scrollTop;
	}

	var pc = document.getElementById('PictureContainer');
	if (pc.style.display == 'none') return;

	if ((tempX + pc.offsetWidth) > myWidth) { 
		var deltaX = - 5;
		if ((tempX - pc.offsetWidth) < 0) {
			deltaX = pc.offsetWidth - tempX;
		}
		pc.style.left = tempX - pc.offsetWidth + deltaX + scrollLeft;
	} else { 
		pc.style.left = tempX + 5 + scrollLeft;
	}
	var pc_top = 0;
	if ((tempY + pc.offsetHeight) > myHeight) { 
		var deltaY = - 5;
		if ((tempY - pc.offsetHeight) < 0) {
			deltaY = pc.offsetHeight - tempY;
		}
		pc_top = tempY - pc.offsetHeight + deltaY + scrollTop;
	} else { 
		pc_top = tempY + 5 + scrollTop;
	}
	if (pc_top < 150) pc_top = 150;
	pc.style.top = pc_top;
}

function onLoadImageEventHandler(event){
//	var t=setTimeout("foo()", 5000);
//}

//function foo(){
	var pc = document.getElementById('PictureContainer'); 
	var pl = document.getElementById('PictureLoading');
	if (pl.style.display == 'none') return;
	pl.style.display = 'none';
	if (isOpera) pc.style.zIndex = 1000000; else pc.style.display = 'block';
	
	if (window.document.createEvent) {
	    var evObj = window.document.createEvent('MouseEvents');
	    evObj.initEvent('mousemove', true, true);
	    this.dispatchEvent(evObj);
	} else if (this.createEventObject) this.fireEvent('onmousemove');
}

function PictureShowHide(event, url)
{
	if ((url != undefined) && (url.length != 0))
	{
	    if ((event.relatedTarget) && (event.relatedTarget.id == "image_in_floating_div") ||
	    (event.fromElement) && (event.fromElement.id == "image_in_floating_div")) 
	    {
	        var pc = document.getElementById('PictureContainer');
		    if ((pc) && (pc.style.display = 'none')) pc.style.display = 'block';
	        return;
	    }
	    
	    if ((event.currentTarget) && (event.currentTarget.id == "image_in_floating_div")) return;
	    if ((event.fromElement) && (event.fromElement.id == "image_in_floating_div")) return;
	    if ((event.relatedTarget) && (event.relatedTarget == activeImageElement)) return;
	    if ((event.toElement) && (event.toElement == activeImageElement)) return;
	    
	    if (event.currentTarget)
	    {
	        event.currentTarget.onmousemove = getMouseXY;
	        activeImageElement = event.currentTarget;
	        activeImageElement.id = "imageThumb";
	    }
	    if (event.toElement) 
	    {
	        activeImageElement = event.toElement;
	    }
	    
      	var pc = document.getElementById('PictureContainer');
		var pl = document.getElementById('PictureLoading');
		if (pc) {
			pl.style.display = 'block';
			pc.style.position='absolute';	
			pc.style.top = 150;
			if (!content) {
			    var content = "<img id=\"image_in_floating_div\" class=\"image\" src=\"" + url + "\" ";
			    if (!isIe) content += " onmousemove=\"getMouseXY(event)\" ";
			    content += " onmouseout=\"PictureShowHide(event);\" onload=\"onLoadImageEventHandler(event)\" />";
			}
			pc.innerHTML = content;
			if (isOpera) {
			    pc.style.display = 'block';
			    pc.style.zIndex = -1000000;
			}
		}
	}
	else
	{
	    if ((event.relatedTarget) && (event.relatedTarget.id == "imageThumb") &&
	    (event.currentTarget) && (event.currentTarget.id == "image_in_floating_div")) return;
	    if ((event.currentTarget) && (event.currentTarget.id == "imageThumb") &&
	    (event.relatedTarget) && (event.relatedTarget.id == "image_in_floating_div")) return;
	    
	    if ((event.fromElement == activeImageElement) && (event.toElement) && 
	    (event.toElement.id == "image_in_floating_div")) return;
	    if ((event.toElement == activeImageElement) && (event.fromElement) && 
	    (event.fromElement.id == "image_in_floating_div")) return;
	    
	    var pc = document.getElementById('PictureContainer');
		var pl = document.getElementById('PictureLoading');
		
		if (pc) {
			pc.style.display = "none";
			pl.style.display = "none";
			activeImageElement = null;
		}
	}	
}

function UpdatePrice(val, type, id, subtypeid){
    var price_hdns, price_div, price, subtype_hdns, subtype;
    switch (typeof(val))
    {
        case "number":
            price = val;
            subtype = subtypeid;
        break;
        case "object":
            price = val.value;
            subtype = val.options[val.selectedIndex].getAttribute("subtype");
        break;
        default: price = 0.0;
            subtype = "0";
    }
    price_hdns = document.getElementsByName("hdn_price_" + type + "_" + id);
    price_hdns[0].value = price;
    subtype_hdns = document.getElementsByName("hdn_subtype_" + type + "_" + id);
    subtype_hdns[0].value = subtype;
    //alert(subtype);
    price_div = document.getElementById("div_price_" + type + "_" + id);
    price_div.innerHTML = ConvertToMoney(price);// + "&nbsp;&nbsp;&nbsp;"; 
}
function ConvertToMoney(val){
    if (val < 0) return "0,00";
    var val_str = "" + Math.round(val * 100) / 100;
    val_str = val_str.replace("NaN", "0");
    var temp_str = "";
    var index = val_str.indexOf(".");
    
    if (index == -1) 
    {
        val_str += ".00";
        index = val_str.indexOf(".");
    }
    if (index == (val_str.length - 2)) val_str += "0";
    var iteration = 0;
    for(var i = index - 1; i >= 0; i--)
    {
        temp_str = val_str.substr(i, 1) + temp_str;
        iteration++;
        if (iteration == 3) 
        {
            iteration = 0;
            temp_str = " " + temp_str;
        }
    }
    temp_str += val_str.substr(index, 3);
    return temp_str.replace(".", ",");
}
function Recalculate(){
    
    var quant_elements, sum_elements, sum_div, price_elements, quantity, price, summ;
    var total_v, total_soft_v, total_hard_v, total_service_v, totalCtrl;
    total_v = 0.0;
    total_soft_v = 0.0; 
    total_hard_v = 0.0; 
    total_service_v = 0.0;
    for(var i = 0; i < datas.length; i++){
        quant_elements = document.getElementsByName("quant_" + datas[i].type + "_" + datas[i].id);
        price_elements = document.getElementsByName("hdn_price_" + datas[i].type + "_" + datas[i].id);
        sum_elements = document.getElementsByName("hdn_total_" + datas[i].type + "_" + datas[i].id);
        sum_div = document.getElementById("div_total_" + datas[i].type + "_" + datas[i].id);
        
        quantity = parseInt(quant_elements[0].value);
        if (quantity < 0) {quantity = 0; quant_elements[0].value = '0'; }
        if (quantity > 99) {quantity = 99; quant_elements[0].value = '99'; }
        if (quantity.toString() == 'NaN') { quantity = 0; quant_elements[0].value = "0"; }
        price = parseFloat(price_elements[0].value);
        if (price.toString() == 'NaN') { price = 0.0; price_elements[0].value = "0.0"; }
        sum_elements[0].value = price * quantity;
        summ = parseFloat(sum_elements[0].value);
        if (summ.toString() == 'NaN') { summ = 0.0; sum_elements[0].value = "0.0"; }
        
        sum_div.innerHTML = ConvertToMoney(summ);
        total_v += summ;
        
        switch (datas[i].type){
            case "soft":
                total_soft_v += summ;
            break;
            case "hard":
                total_hard_v += summ;
            break;
            case "service":
                total_service_v += summ;
            break;
        }
    }
    
    totalCtrl = document.getElementById("total");
    totalCtrl.innerHTML = ConvertToMoney(total_v);
    
    totalCtrl = document.getElementById("total_soft");
    totalCtrl.innerHTML = ConvertToMoney(total_soft_v);
    totalCtrl = document.getElementById("total_hard");
    totalCtrl.innerHTML = ConvertToMoney(total_hard_v);
    totalCtrl = document.getElementById("total_service");
    totalCtrl.innerHTML = ConvertToMoney(total_service_v);
}
function spinEditChange(element_name, inc)
{
    var els = document.getElementsByName(element_name);
    if (els[0] == null) return;
    var quantity = parseInt(els[0].value);
    if (inc){
        quantity = parseInt(els[0].value) + 1;    
    } else {
        quantity = parseInt(els[0].value) - 1;
    }
    if (quantity < 0) {quantity = 0; }
    if (quantity > 99) {quantity = 99; }
    if (els[0].value != toString(quantity))
    {
        els[0].value = quantity;
        Recalculate();
    }
}
function unload(sync) {    
    var xmlhttp=null;
	if (window.XMLHttpRequest){// code for all new browsers
  		xmlhttp=new XMLHttpRequest();
  	}
	else 
	if (window.ActiveXObject){// code for IE5 and IE6
  	   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
	if (xmlhttp!=null)
    {
        sync ? sync = true : sync = false;
        var params = getParams();
        if (params != ""){
            //alert(document.location + '?' + params);
            xmlhttp.open("GET", document.location + '?' + params, !sync);
    	    xmlhttp.send(null);
    	}
  	}
}

function getParams(){
    var params = "";
    var quantity = null;
    var subType = null;
    for(var i = 0; i < datas.length; i++){
        quantity = document.getElementsByName("quant_" + datas[i].type + "_" + datas[i].id)[0];
        if (quantity.value != "0")
        {
            if (params.indexOf("time=", 0) == -1)
            {
                var now = new Date();
                var sec = now.getTime() - dateTime.getTime();
                params += "time=" + sec + "&";
            }
            params += "a" + datas[i].id + "=";
            subType = document.getElementsByName("hdn_subtype_" + datas[i].type + "_" + datas[i].id)[0].value;
            if (subType == "") subType = "0";
            params += subType + "_" + quantity.value + "&";
        }
    }
    if (params != "")
        params = params.substr(0, params.length - 1);
    return params;
}

var selectedInfo = null;
var	selectedElement = null;

function SelectInfo(el, info)
{
    // убрать выделение с предыдущего пункта
    if (selectedInfo || selectedElement)
        info.style.left = -100;

	if (SelectInfo.arguments.length >= 2)
	{
		var res_left = lt_offset("left", el);
		var res_top = lt_offset("top", el) + 25;
		
		if (info.offsetWidth + res_left > aspnetForm.scrollWidth)
		{
		    var width = menuTable.scrollWidth;
		    var left = lt_offset("left", menuTable);
		    
		    info.style.left = width + left - info.scrollWidth;
		}
		else
		    info.style.left = Number(res_left) - 1;
		    
	   	info.style.top = Number(res_top);
	}
	
	selectedElement = el;
	selectedInfo = info;
}

function DeselectInfo(event, el, info)
{
    var elem;
    if (window.event != null) /*IE*/
            elem = window.event.toElement;
     else 
        if (event.relatedTarget != null)
            elem = (event.relatedTarget.tagName ? event.relatedTarget : event.relatedTarget.parentNode);
    
	if (info && !Contains(info,elem)) info.style.left = -1000;
}

function getChildNodeById(el, id) {
    if ((!el) || (!id)) return null;
    for (var i = 0; i < el.childNodes.length; i++)
    {
        if (el.childNodes[i].id == id) return el.childNodes[i];
    }
    return null;
}

function previewHtmlInfo(element, sourceId){
    var source = getChildNodeById(element.parentNode, sourceId);
    if (!source) return;
    if ((!source.value) || (source.value == "")) return;
    var preview = getChildNodeById(element.parentNode, 'preview');
    if (!preview) return;
        
    if (element.value == "Показать") {
        preview.innerHTML = source.value;
        source.style.display = "none";
        preview.style.display = "block";
        element.value = "Скрыть";
    } else {
        source.style.display = "block";
        preview.style.display = "none";
        element.value = "Показать";
    }   
}


function convertHTML(element, sourceId, previewButtonId){
    var source = getChildNodeById(element.parentNode, sourceId);
    if (!source) return; 
    var previewButton = getChildNodeById(element.parentNode, previewButtonId);
    if (!previewButton) return;
    var preview = getChildNodeById(element.parentNode, 'preview');
    if (!preview) return;
    if (element.value == "Для хранения") {
        source.value = source.value.replace(/</g, "[").replace(/>/g, "]");
        element.value = "Для показа";
        previewButton.style.display = "none";
        preview.style.display = "none";
        source.style.display = "block";
    } else {
        source.value = source.value.replace(/\[/g, "<").replace(/]/g, ">");
        element.value = "Для хранения";
        previewButton.style.display = "block";
    }   
}

function createProposition(){
     var params = getParams();
     if (params != ""){
        var w=800; var h=500; var left = (screen.width/2)-(w/2); var top = (screen.height/2)-(h/2);
        window.open('CreateProposition.aspx?' + params, 'CreateProposition', 'location=no,status=no,menubar=no,' +
        'resizable=no,scrollbars=yes,width='+w+',height='+h+',top='+top+',left='+left);
     } else 
        alert('Пожалуйста, выберите позиции для формирования коммерческого предложения.');
}
