/* 
 * Этот файл - дополнение к JS-файлам верстальщика,
 * в которых я сначала только комментировал ненужное,
 * а потом стал добавлять в init.js из www-html/new.
 * -- dimgel
 */

var showedActionsPopUpId;
function toggleActionsPopup(target) {
	var popupId = target.getAttribute('id') + '-popup';
	var popup = $('#' + popupId);
    
    var abs = $(target).offset();
    var mainCell = $('#maincell');
    popup.overlay().toggle().css({left: 0, top: -500});
	popup.css({
        left: mainCell.position().left + mainCell.width() - popup.width() - 40,
		top: abs.top + 20
	});

    if (showedActionsPopUpId) {
        $('#' + showedActionsPopUpId).hide();
        showedActionsPopUpId = null;
    }

    if (popup.is(':visible')) {
        showedActionsPopUpId = popupId;
    }

	return false;
}


var showedChangesPopupId;
function toggleChangesPopup(target) {

	var popupId = target.getAttribute('id') + '-popup';
	var popup = $('#' + popupId);
	popup.overlay().show().centering();

    if (showedChangesPopupId) {
        $('#' + showedChangesPopupId).hide();
        showedChangesPopupId = null;
    }
    if (popup.is(':visible')) {
        showedChangesPopupId = popupId;
    }
	return false;
}

function onClosePopup(target) {
   var popupId = $(target).parent().parent().attr('id');
   if ('pp-changes' == popupId.substring(0, 10)) {
        showedChangesPopupId = null;
   }
}

$(function() {
	$('.link-actions').click(function(event) {toggleActionsPopup(event.target);});
	$('.link-changes').click(function(event) {toggleChangesPopup(event.target);});
    $('.pp-contact').find('.close_pp').click(function(event) {onClosePopup(event.target);})

});


function showWin(url,x,y,name,isscrollbars) {
    cx=screen.width/2-(x/2);
    cy=screen.height/2-(y/2);
    isscrollbars=(isscrollbars=="no")?"no":"yes";
    window.open(url,name,"toolbar=no,status=no,directories=no,menubar=no,resizable=yes,width="+x+",height="+y+",scrollbars="+isscrollbars+",top="+cy+",left="+cx);
}


function minimizeLeftMenu() {
	$('.leftmenu').hide();
	$('#minimizeLeftMenu').hide();
	$('#spreader').hide(); // распорка для минимальной ширины меню
	$('#restoreLeftMenu').show();
	$('#leftcell').addClass('leftcell-minimized');
	$.cookie('leftmenuMinimized', '1', {path:'/'});
    $("#main").css("width" ,  $(window).width() - 30);
    $("#whiteBackGround").css("width" ,  30);
}

function restoreLeftMenu() {
	$('#leftcell').removeClass('leftcell-minimized');
	$('#restoreLeftMenu').hide();
	$('#minimizeLeftMenu')[0].style.display = '';
	$('.leftmenu').show();
	$('#spreader').show();
	$.cookie('leftmenuMinimized', '0', {path:'/'});
    $("#main").css("width" ,  $(window).width() - 247);
    $("#whiteBackGround").css("width" ,  247);
}

// Same done on server-side, but just in case:
$(function() {
	if ($.cookie && $.cookie('leftmenuMinimized') == '1')
		minimizeLeftMenu();
});


/**
 * Сокращение для создания тегов
 */
function dc(tagName) {
	return document.createElement(tagName);
}

function jDc(tagName) {
    return jQuery(dc(tagName));
}


function lengthLimiter(field, length) {
    var value = field.value;
    if (value.length > length) {
        field.value = value.substring(0, length);
    }
}


/**
 * Динамическая загрузка css и js файлв
 */
function dynamicLoad(fileName) {
	var ext = fileName.substr(fileName.lastIndexOf('.') + 1, 3);
	var elem = null;
	if (ext == 'js') {
		elem = dc('script');
		elem.setAttribute("type", "text/javascript");
		elem.setAttribute("src", fileName);
		//elem.setAttribute("type", "text/javascript");
	} else if (ext == 'css') {
		elem = dc('link');
		elem.setAttribute("rel", "stylesheet");
		elem.setAttribute("type", "text/css");
		elem.setAttribute("href", fileName);
	} else {
		alert('Dont know how to load ' + ext + 'files.');
	}

	if (elem) {
		document.getElementsByTagName("head")[0].appendChild(elem);
	} else {
		alert("Cannot load " + fileName);
	}
}


function printVoucher(serviceId, urlPrefix, templates) {
	// Прячем popup menu, раз само не умеет.
	if (serviceId)
		toggleActionsPopup($('#pp-actions' + serviceId)[0]);
	
	if (!templates.length) {
		alert('Не найдены шаблоны.');
		return;
	}
	
	if (templates.length == 1)
		printVoucherGo(urlPrefix, templates[0].id);
	else {
		var select = $('#voucherTemplateChooserSelect');
		select.empty();
		for (i = 0;  i < templates.length;  i++)
			$('<option/>').attr('value', templates[i].id).text(templates[i].name).appendTo(select);
		$('#voucherTemplateChooserUrlPrefix').val(urlPrefix);
		$('#voucherTemplateChooserDialog').dialog('open');
	}
}


function printVoucherSubmit() {
	var urlPrefix = $('#voucherTemplateChooserUrlPrefix').val();
	var templateId = $('#voucherTemplateChooserSelect').val();
	printVoucherGo(urlPrefix, templateId);
}


function printVoucherGo(urlPrefix, templateId) {
	var url = urlPrefix + templateId;
	$('#voucherTarget')[0].src = url;
}


$(function() {
	var dlg = $('#voucherTemplateChooserDialog');
	if (dlg.length)
		dlg.dialog({
			autoOpen: false,
			title: 'Выберите шаблон для печати ваучера',
			buttons: {
				"Отмена": function() {$(this).dialog("close");},
				"OK": function() {$(this).dialog("close");printVoucherSubmit();}
			}
		});
});


function documentsPopup(button, objIdSuffix) {
	var div = $('#documentsPopup__' + objIdSuffix);
    var btnPosition = $(button).position();
	div.toggle().css({
		left:btnPosition.left,
		top:btnPosition.top + 20
	});
}

function documentsPopup_showDiv(objIdSuffix, docType, docId, action) {
	var div = $('#documentsPopup__' + objIdSuffix + '__' + docType + '__' + (docId ? docId + '__' : '') + action);
	div.parents('[name="documentsPopup"]').find('[name="hiddenDiv"]').hide();
	div.show();
}

function documentsPopup_callback(data, doc) {
	var ok = data[0];
	var msg = data[1];
	var divId = data[2];
	var divContents = data[3];
	if (ok) {
//		alert(divContents);
//		alert($(divContents).children().length);
		$('#' + divId, doc).html(divContents);
//		$('#' + divId, doc).empty().append($(divContents).clone());
	}
	if (msg)
		alert(msg);
}

function documentsPopup_ajax(url, params) {
	$.getJSON(url, params, function(data) {
		documentsPopup_callback(data, document);
	});
}

function documentsPopup_ajaxMail(url, form) {
	form = $(form);
	var params = {
		to: form.find('input[name="to"]').val(),
		subject: form.find('input[name="subject"]').val(),
		text: form.find('input[name="text"]').val()
	};
	documentsPopup_ajax(url, params);
	return false;  // prevent form submission
}

function documentsPopup_generate(url, form) {
	if (form)
		url = url + '&' + $(form).serialize();
	$('#voucherTarget')[0].src = url;
	return false;  // prevent form submission
}

// Called from iframe which was loaded by documentsPopup_generate().
function documentsPopup_generate2_rtf(url, templateId, xmlData) {
    TM.ShowRVAndExportRTF(templateId, xmlData, function(tempDataId) {
        tempDataId = parseInt(tempDataId);
        if (tempDataId > 0) {  // При отмене возвращается -1.
            $.getJSON(url, {tempDataId: tempDataId, templateId: templateId, format: 'rtf'}, function(data) {
                documentsPopup_callback(data, window.parent.document);
            });
        }
    });
}

// Called from iframe which was loaded by documentsPopup_generate().
function documentsPopup_generate2_doc(url, templateId, format, extension, tempDataId) {
    TM.ShowDocument(tempDataId, extension, true, function(tempDataId2) {
        tempDataId2 = parseInt(tempDataId2);
	    // При отмене возвращается -1, при успехе tempDataId2 == tempDataId (так, наблюдение).
        if (tempDataId2 > 0) {
			// templateId is needed for generate2, format - for both generate2 and downloadNonExisting2
            // (since JODConverter may change document format after rendering template).
            $.getJSON(url, {tempDataId: tempDataId2, format: format, templateId: templateId}, function(data) {
                documentsPopup_callback(data, window.parent.document);
            });
        }
    });
}


function documentsPopup_currencyIdChange(sel) {
	var opt = sel.options[sel.selectedIndex];
	var rateField = $(sel).parent().find('[name="bill_rate"]');
	rateField.val(opt.getAttribute('_rate'));
	if (opt.text == 'RUR')
		rateField.attr('disabled', true);
	else
		rateField.removeAttr('disabled');
}

function waitForProvidersResponse(serviceId, value) {
	var yes = $('#waitingProv_yes');
	var no = $('#waitingProv_no');
	var yesButton = yes.find('input');
	var noButton = no.find('input');
	yesButton.attr('disabled', 'disabled');
	noButton.attr('disabled', 'disabled');
	$.get('/service/set_waiting_for_provider_response_ajax', {id: serviceId, value: value ? 1 : 0}, function(data) {
		yesButton.removeAttr('disabled');
		noButton.removeAttr('disabled');
		if (data) alert(data);
		else if (value) {yes.show();no.hide();}
		else {no.show();yes.hide();}
	});
}


function correctParseFloat(value) {
    return parseFloat(value.replace(',', '.'));
}

/**
 * Форматирования числа. Аналог функции PHP number_format
 */
function numberFormat(number, decimals, dec_point, thousands_sep) {
    var i, j, kw, kd, km;
    if(isNaN(decimals = Math.abs(decimals))){
        decimals = 2;
    }
    if(dec_point == undefined){
        dec_point = ".";
    }
    if(thousands_sep == undefined){
        thousands_sep = " ";
    }
    i = parseInt(number = (+number || 0).toFixed(decimals)) + "";
    if((j = i.length) > 3){
        j = j % 3;
    } else {
        j = 0;
    }
    km = (j ? i.substr(0, j) + thousands_sep : "");
    kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep);
    //kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).slice(2) : "");
    kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, 0).slice(2) : "");

    if (kd == '.00') {
        return km + kw
    } else {
        return km + kw + kd;
    }
}

$().ready(function(){
    if (window.tm_isUnderTmpr) {
        $('#editPartner').show();
        $('#addPartner').show();

        $('#editPartner').click(function(){
            var partnerId = parseInt($('#field_owner').val());
            TM.EditPartner(partnerId, function(PartnerId) 
            {
                PartnerId = parseInt(PartnerId);
                // При отмене возвращается -1, при успехе id измененного партнера
                if (PartnerId > 0) {			
                    getListOwner(PartnerId);
                }
            });

            return false;
        });

        $('#addPartner').click(function(){
            TM.AddPartner(function(PartnerId) 
            {
                PartnerId = parseInt(PartnerId);
                // При отмене возвращается -1, при успехе id добавленного партнера
                if (PartnerId > 0) {		
                    getListOwner(PartnerId);
                }
            });

            return false;
        });
    }
});
