function open_popup( url ) {
	var hwin;
	hwin = window.open( url, '', 'toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=yes,resizable=1,width=600,height=540');
	return false;
}
function open_modal(url) {
    open_modal2(url, 600, 380);
}
function open_modal2(url, w, h) {
	hwin = window.open( url, '', 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=no,resizable=1,width='+w+',height='+h);
}


function GetElement(obj) {
    if (document.getElementById) {
	    return document.getElementById(obj);
    }
    else if (document.all) {
        return document.all[obj];
    }
    else
        return document.layers[obj];
}

// FORMS
var RequiredFields = new Array();
function submit_form(f) {
    // check for multiple selectes
    for(var i=0; i<f.length; i++)
        if (f.elements[i].type == 'select-multiple')
            select_all(f.elements[i]);
        if (f.onsubmit) {
            if (f.onsubmit())
                f.submit();
        }
        else
            f.submit();
}

// MULTIPLE SELECTS
function move_to_dest(f, el) {
    f = document.forms[f];
    moveOption(f, el+"_source", el);
}
function move_to_src(f, el) {
    f = document.forms[f];
	moveOption(f, el, el+"_source");
}
function moveOption(f, src, dest) {
    columnsSrc = f[src];
	columnsDest = f[dest];
	if (columnsSrc.selectedIndex >= 0) {
	    opt = columnsSrc.options[columnsSrc.selectedIndex];
		columnsDest.options[columnsDest.length] = new Option(opt.text, opt.value);;
		columnsSrc.options[columnsSrc.selectedIndex] = null;
	}
}
function select_all(el) {
    for(var i=0; i<el.length; i++)
	    el.options[i].selected = true;
}
	  
// DATAGRID
var datagrids = new Array();
var datagrids_data = new Array();
function dgobj(dt,cl,gid) {
    var obj = GetElement(gid);
    var b = false;
    if (obj == null) {
        obj = new Active.Controls.Grid;
        obj.setId(gid);
        datagrids[gid] = obj;
    }
    else {
	    obj = datagrids[gid];
		b = true;
    }
    
    datagrids_data[gid] = dt;
		
    //	set number of rows/columns
	obj.setRowProperty("count", dt.length);
	obj.setColumnProperty("count", cl.length);

    //	provide cells and headers text
	obj.setDataProperty("text", function(i, j){return dt[i][j+1]});
	obj.setDataProperty("value", function(i, j){return dt[i][0]});  // ID
	obj.setColumnProperty("text", function(i){return cl[i]});

	// Hide Row ##s
	obj.setRowHeaderWidth("0px");
		
	if (b) {
	    obj.setProperty("selection/index", null);
		obj.refresh();
	}
		
	return obj;
}
function refreshDataGrid(obj, data) {
	obj.setRowProperty("count", data.length);
    datagrids_data[obj.getId()] = data;
	obj.setDataProperty("text", function(i, j){return data[i][j+1]});
	obj.setDataProperty("value", function(i, j){return data[i][0]});  // ID
    obj.setProperty("selection/index", null);
	obj.refresh();
}
	  
// AJAX functions
function getXMLElement(obj, tagName)  {
	if ((obj == null) || (tagName == null))
		return null;
	if (obj.length < 1)
		return null;
	else
		for (i = 0; i < obj.length ; i++)
			if (obj[i].nodeName == tagName)
				return i;
  return null;
}
function childNodeValue(parent, name) {
	var v = "";
  var indx = getXMLElement(parent.childNodes,name);
	if (indx != null) {
		if (parent.childNodes[indx].firstChild != null)
			v = parent.childNodes[indx].firstChild.nodeValue;
	}
	return v;
}

// CALENDAR
function sfrm(formName, elementName, img) {
    var dF = GetElement("CalFrame");
	var wF = window.frames["CalFrame"];
	wF.location = 'cal.aspx?selfName=CalFrame&formName='+formName+'&elementName=' + elementName + '&val=' + document.forms[formName][elementName].value;
	var eL=0;var eT=0;
	for(var p=document.images[img]; p&&p.tagName!='BODY'; p=p.offsetParent) {
	    eL+=p.offsetLeft;
		eT+=p.offsetTop;
	}
	var eH=document.images[img].offsetHeight;
	var dH=dF.style.pixelHeight;
	var sT=document.body.scrollTop;
	dF.style.left=eL;
	if(eT-dH >= sT && eT+eH+dH > document.body.clientHeight+sT)
	    dF.style.top=eT-dH;
	else
	    dF.style.top=eT+eH;
	if("none"==dF.style.display) {
	    dF.style.display="block";
	}    
}		

// PANEL
function togglePanel(id) {
    $("#"+id+"_content").toggle();
    return false;
}

// DATAGRIDEDIT
var DGERowIDs = new Array();

function clickDGE(id, row_id) {
    DGERowIDs[id] = row_id;
    // highlight Edit/Remove buttons
    $("#btnEdit_"+id).get(0).disabled = false;
    $("#btnRemove_"+id).get(0).disabled = false;
}

function newDGE(id) {
    DGERowIDs[id] = -1;
    enableDGEForm(id);
    $("#btnDone_"+id).get(0).disabled = false;
    $("#btnCancel_"+id).get(0).disabled = false;
}

function editDGE(id) {
    if (DGERowIDs[id] >= 0) {
        enableDGEForm(id);
        $("#btnDone_"+id).get(0).disabled = false;
        $("#btnCancel_"+id).get(0).disabled = false;
        var obj = datagrids[id];
        var selectedRow = obj.getProperty("selection/index");
        var columnsCount = obj.getColumnProperty("count");
        $("#formelements_"+id+" :input").each( function(i){
            $(this).val(obj.getDataProperty("text", selectedRow, i));
        } );
    }        
}

function removeDGE(id) {
    DGERowIDs[id] = -1;
    disableDGEForm(id);
    $("#btnEdit_"+id).get(0).disabled = true;
    $("#btnRemove_"+id).get(0).disabled = true;
    $("#btnDone_"+id).get(0).disabled = true;
    $("#btnCancel_"+id).get(0).disabled = true;

    var obj = datagrids[id];
    var selectedRow = obj.getProperty("selection/index");
    var data = datagrids_data[id];
    var newdata = new Array();
    for(var i = 0; i < data.length; i++) {
        if (i != selectedRow)
            newdata[newdata.length] = data[i];
    }
    refreshDataGrid(obj, newdata);
    updateDGEvalue(id);
}

function isInt(i) {
	return (((i=="") || (i=="NULL")) || ((parseInt(i, 10)==i) && (!isNaN(parseInt(i)))));
}
function isFloat(i) {
	return (((i=="") || (i=="NULL")) || ((parseFloat(i, 10)==i) && (!isNaN(parseFloat(i)))));
}

function doneDGE(id) {
    var obj = datagrids[id];
    var data = datagrids_data[id];

    // precheck: required
    var errs = 0;
    $("#formelements_"+id+" :input").each( function(i) {
        var n = this.name;
        if (GetElement(n+"_error")) {
            if ($(this).val() == "") {
                $("#"+n+"_error").show();
                errs++;
            }
            else
                $("#"+n+"_error").hide();
        }
    } );
    if (errs > 0)
        return;
    // precheck: int, float
    $("#formelements_"+id+" :input").each( function(i) {
        var n = this.name;
        if (GetElement(n+"_intval")) {
            $("#"+n+"_intval").hide();
            if (!isInt($(this).val())) {
                $("#"+n+"_intval").show();
                errs++;
            }
        }
        if (GetElement(n+"_floatval")) {
            $("#"+n+"_floatval").hide();
            if (!isFloat($(this).val())) {
                $("#"+n+"_floatval").show();
                errs++;
            }
        }
    } );
    if (errs > 0)
        return;
    
    
    if (DGERowIDs[id] >= 0) {
        var selectedRow = obj.getProperty("selection/index");
        $("#formelements_"+id+" :input").each( function(i) { data[selectedRow][i+1] = $(this).val(); } );
    }
    else {
        var newrow = new Array();
        newrow[0] = "0"; // ID
        $("#formelements_"+id+" :input").each( function(i) { newrow[i+1] = $(this).val(); } );
        data[data.length] = newrow;
    }       
    refreshDataGrid(obj, data);
    updateDGEvalue(id);

    disableDGEForm(id);
    $("#btnDone_"+id).get(0).disabled = true;
    $("#btnCancel_"+id).get(0).disabled = true;
}

function cancelDGE(id) {
    disableDGEForm(id);
    $("#btnDone_"+id).get(0).disabled = true;
    $("#btnCancel_"+id).get(0).disabled = true;
}

function clearDGEForm(id) {
    $("#formelements_"+id+" :input").val("");
    $("#formelements_"+id+" :input").each( function(i){$("#"+this.name+"_error").hide();} );
    
}
function disableDGEForm(id) {
    clearDGEForm(id);
    $("#formelements_"+id+" :input").each( function() {this.disabled = true;
            this.style.backgroundColor=(this.style.backgroundColor=='#ffffff')?'#dddddd':'#dddd99';
        } );
}
function enableDGEForm(id) {
    clearDGEForm(id);
    $("#formelements_"+id+" :input").each( function() {this.disabled = false;
            this.style.backgroundColor=(this.style.backgroundColor=='#dddddd')?'#ffffff':'#ffff99';
        } );
}
function updateDGEvalue(id) {
    $("#"+id+"_value").val( getValueDGE(id) );
}
function getValueDGE(id) {
    var obj = datagrids[id];
    var data = datagrids_data[id];
    var columnsCount = obj.getColumnProperty("count");
    var s = "";
    for(var i = 0; i < data.length; i++) {
        var r = "ID" + String.fromCharCode(253) + data[i][0];
        for(var z = 0; z < columnsCount; z++) {
            r += (r == "") ? "" : String.fromCharCode(254);
            r += obj.getColumnProperty("text", z) + String.fromCharCode(253) + data[i][z+1];
        }
        s += (s == "") ? "" : String.fromCharCode(255);
        s += r;
    }
    return s;
}

// Product Extra Large Image
var extra_large_image = "";
var extra_large_title = "";
// function ShowEL(fn) {
function ShowEL() {
    // window.open("ShowImg.aspx?fn="+fn,"","width=40,height=40,scrollbars=0,status=no,resizable,menu=no");
    if (extra_large_image != "")
        window.open("/ShowImg.aspx?fn="+extra_large_image+"&title="+escape(extra_large_title),"","width=40,height=40,scrollbars=0,status=no,resizable,menu=no");
    return false;
}
function InitPELI(title) {
    extra_large_title = title;
    $("#MainImageImg").click(function() {return ShowEL();});
}
function SetPELI(s) {
    extra_large_image = s;
    if (s == "") {
        $("#main-image").css("cursor", "default");
        $("#main-image-cover").hide();
    }
    else {
        $("#MainImageA").attr("href", "/uploads/" + s);
        $("#main-image").css("cursor", "pointer");
        $("#main-image-cover").show();
    }
}


function isValidEmail(str) {
   return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
}

// GALLERY
$(function() {
        // Ð¤Ð¾Ñ‚Ð¾, Ð¸Ð·
        $('#gallery a').lightBox({
        txtImage: "&#x0424;&#x043E;&#x0442;&#x043E;",
        txtOf: "&#x0438;&#x0437;",
        imageBtnClose: "/images/lightbox-btn-close-ru.gif",
        imageBtnNext: "/images/lightbox-btn-next-ru.gif",
        imageBtnPrev: "/images/lightbox-btn-prev-ru.gif",
        imageLoading: "/images/lightbox-ico-loading.gif",
        imageBlank: "/images/lightbox-blank.gif"
        });
        $('a.lightbox').lightBox({
        txtImage: "&#x0424;&#x043E;&#x0442;&#x043E;",
        txtOf: "&#x0438;&#x0437;",
        imageBtnClose: "/images/lightbox-btn-close-ru.gif",
        imageBtnNext: "/images/lightbox-btn-next-ru.gif",
        imageBtnPrev: "/images/lightbox-btn-prev-ru.gif",
        imageLoading: "/images/lightbox-ico-loading.gif",
        imageBlank: "/images/lightbox-blank.gif"
        });
        $('a.lightbox-single').lightBox({
        txtImage: "&#x0424;&#x043E;&#x0442;&#x043E;",
        txtOf: "&#x0438;&#x0437;",
        imageBtnClose: "/images/lightbox-btn-close-ru.gif",
        imageBtnNext: "/images/lightbox-btn-next-ru.gif",
        imageBtnPrev: "/images/lightbox-btn-prev-ru.gif",
        imageLoading: "/images/lightbox-ico-loading.gif",
        imageBlank: "/images/lightbox-blank.gif"
        });
});

function ShowProductNotification(variant_id) {
    $("#pn_confirm_" + variant_id).hide();
    $("#pn_div_" + variant_id).animate({height:'toggle'}, "fast"); 
    return false;
}

function CreateProductNotification(variant_id) {
    var email = $("#pn_email_" + variant_id).val();
    if (!isValidEmail(email)) {
        // alert("Ââåäèòå êîððåêòíûé e-mail");
        alert("\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 e-mail");
        $("#pn_email_" + variant_id).get(0).focus();
        return false;
    }
    var params = {action: "ajax_productnotify", email: email, vid: variant_id};
    $.post("/_actions.aspx", params, responseCreateProductNotification);
    return false;
}

function responseCreateProductNotification(response_data) {
    var response = response_data.documentElement;
    var nodes = response.getElementsByTagName("variant");
    var variant_id = nodes[0].firstChild.nodeValue; // childNodeValue(nodes[0], "variant");
    $("#pn_div_" + variant_id).hide();
    $("#pn_confirm_" + variant_id).show();
}


var ss_gallery = {};
var ss_offset = {};
function ss_init(id, count, width, per_width) {
    var ss = {id: id, count: count, width: width, per_width: per_width};
    ss_gallery[id] = ss;
    ss_offset[id] = 0;
    ss_check_offsets(id);
}
function ss_left(id) {
    if (ss_offset[id] > 0) {
        ss_offset[id]--;
        ss_move(id);
    }
    return false;
}
function ss_right(id) {
    if (ss_offset[id] + ss_gallery[id]["per_width"] < ss_gallery[id]["count"]) {
        ss_offset[id]++;
        ss_move(id);
    }
    return false;
}
function ss_move(id) {
    var s = "-" + (ss_offset[id] * ss_gallery[id]["width"]) + "px";
    $("#ss-table-"+id).animate( {left: s}, "fast" );
    ss_check_offsets(id);
}
function ss_check_offsets(id) {
    if (ss_offset[id] > 0)
        $("#ss-left-"+id).css("background-image", "url(/images/ss-left.gif)");
    else
        $("#ss-left-"+id).css("background-image", "url(/images/ss-left-inact.gif)");
    if (ss_offset[id] + ss_gallery[id]["per_width"] < ss_gallery[id]["count"])
        $("#ss-right-"+id).css("background-image", "url(/images/ss-right.gif)");
    else
        $("#ss-right-"+id).css("background-image", "url(/images/ss-right-inact.gif)");
}


function money(x) {
			var h = Math.pow(10, 2);
			var s = (Math.round(x * h) / h) + "";

			var k = s.indexOf(".");
			if (k < 0) {
				s += ".";
				k = s.indexOf(".");
			}
				
			s += "000000";
			s = s.substr(0, k + 1 + 2);
			return s;
}

