var gsMonthNames = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
var gsDayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');

var gEaster = 0;

// date diff in days
Date.prototype.dateDiff = function (d) { return Math.round((d.valueOf() - this.valueOf()) / 86400000); };

// date adds
Date.prototype.add = function (n) { var d = new Date(this); d.setDate(d.getDate() + n); return d; };
Date.prototype.addMonth = function (n) { var d = new Date(this); d.setMonth(d.getMonth() + n); return d; };
Date.prototype.addYear = function (n) { var d = new Date(this); d.setFullYear(d.getFullYear() + n); return d; };

// first and last date of month
Date.prototype.getFirstDate = function () { var d = new Date(this); d.setDate(1); return d; };
Date.prototype.getLastDate = function () { var d = this.addMonth(1); d.setDate(1); return d.add(-1); };

// date between [d1, d2]
Date.prototype.between = function (d1, d2) { return 0 <= d1.dateDiff(this) && d2.dateDiff(this) <= 0; };

// easter calculator
Date.prototype.getEaster = function (y) {
    if (!y) {
        y = this.getFullYear();
    }

    var c, n, k, i, j, l, m, d;

    c = parseInt(y / 100, 10);
    n = y - 19 * parseInt(y / 19, 10);
    k = parseInt((c - 17) / 25, 10);
    i = c - parseInt(c / 4, 10) - parseInt((c - k) / 3, 10) + 19 * n + 15;
    i = i - 30 * parseInt(i / 30, 10);
    i = i - parseInt(i / 28, 10) * (1 - parseInt(i / 28, 10) * parseInt(29 / (i + 1), 10) * parseInt((21 - n) / 11, 10));
    j = y + parseInt(y / 4, 10) + i + 2 - c + parseInt(c / 4, 10);
    j = j - 7 * parseInt(j / 7, 10);
    l = i - j;
    m = 3 + parseInt((l + 40) / 44, 10);
    d = l + 28 - 31 * parseInt(m / 4, 10);

    return new Date(y, m - 1, d);
};

// local holiday test
Date.prototype.isHoliday = function () {
    // sundays
    if (this.getDay() == 0) {
        return true;
    }

    var y = this.getFullYear();
    var m = this.getMonth();
    var d = this.getDate();
    var r;

    // fixed holidays
    switch (m) {
        case 0: case 4: r = d == 1; break;
        case 3: r = d == 19; break;
        case 5: r = d == 24; break;
        case 6: r = d == 24 || d == 5; break;
        case 9: r = d == 12; break;
        case 11: r = d == 25 || d == 31; break;
        default: break;
    }

    // moveable easter-based holidays
    if (!r) {
        // skip the easter recalc
        if (!gEaster) {
            gEaster = this.getEaster(y);
        }
        else if (gEaster.getFullYear() != y) {
            gEaster = this.getEaster(y);
        }

        // integer date diff decision 
        switch (this.dateDiff(gEaster)) {
            case 2: case 3: case 48: case 47: r = true; break;
            default: break;
        }
    }

    return r;
};

// string date part names
Date.prototype.monthName = function () { return gsMonthNames[this.getMonth()]; };
Date.prototype.dayName = function () { return gsDayNames[this.getDay()]; };

// format with replace function (JScript 5.5 or higher)
Date.prototype.format = function (f) {
    if (!this.valueOf()) {
        return '&nbsp;';
    }

    var d = this;

    return f.replace(/(yyyy|mmmm|mmm|mm|dddd|ddd|dd|hh|nn|ss|s\/p|a\/p)/gi,
		function ($1) {
		    switch ($1.toLowerCase()) {
		        case 'yyyy': return d.getFullYear(); break;
		        case 'mmmm': return gsMonthNames[d.getMonth()]; break;
		        case 'mmm': return gsMonthNames[d.getMonth()].substr(0, 3); break;
		        case 'mm': return (d.getMonth() + 1).zp(2); break;
		        case 'dddd': return gsDayNames[d.getDay()]; break;
		        case 'ddd': return gsDayNames[d.getDay()].substr(0, 3); break;
		        case 'dd': return d.getDate().zp(2); break;
		        case 'hh': return ((h = d.getHours() % 12) ? h : 12).zp(2); break;
		        case 'nn': return d.getMinutes().zp(2); break;
		        case 'ss': return d.getSeconds().zp(2); break;
		        case 'a/p': return d.getHours() < 12 ? 'a' : 'p'; break;
		        case 's/p': var i = d.getDate() % 10; break;
		        default: return 'thstndrd'.substr(2 * (i < 4) * i, 2); break;

		    }
		}
	);
};

function CheckLength(TargetObject, maxLen){
	if(event.keyCode==13){
		try {event.keyCode=0;}
		catch(err) {}
	}
    else {
        LenString = TargetObject.value.length;
		if (LenString > maxLen){
		    TargetObject.value = TargetObject.value.substring(0,maxLen);
		}
	}
 }

function formatCurrency(num) 
{
	num = num.toString().replace(/\$|\,/g,'');
	if (isNaN(num)) {
	    num = "0";
	}
	sign = (num == (num = Math.abs(num)));
	
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if (cents < 10) {
	    cents = "0" + cents;
	}
	for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
	    num = num.substring(0, num.length - (4 * i + 3)) + '.' + num.substring(num.length - (4 * i + 3));
	}
	return (((sign)?'':'-') + '' + num + ',' + cents);
}

function formatCurrencyWithNDecimals(num, decimals) 
{
	var dec = Math.pow(10, decimals);

	num = num.toString().replace(/\$|\,/g,'');
	if (isNaN(num)) {
	    num = "0";
	}
	sign = (num == (num = Math.abs(num)));
	
	num = Math.floor(num*dec+0.50000000001);
	cents = num%dec;

	num = Math.floor(num/dec).toString();
	if(cents.toString().length < decimals)
	{
		var n = decimals - cents.toString().length;
		for (var j = 0; j < n; j++)
		{
			cents = "0" + cents;   
		}
	}
	for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
	    num = num.substring(0, num.length - (4 * i + 3)) + '.' + num.substring(num.length - (4 * i + 3));
	}
	return (((sign)?'':'-') + '' + num + ',' + cents);
}  
	
function changeKey(ID){
	var id = ID;
	if (event.keyCode==13){                
		try{ event.keyCode=0; }
		catch(err){}
	}
}

function setFont(fontID, controlID)
{
var control = document.getElementById(controlID);
var fontControl = document.getElementById(fontID);
if ((fontControl != null) && (control != null))
	{
		control.style.fontSize = fontControl.value;
		control.style.height = control.style.height;
	}
}

function SelectContent(Element)
{
	element = document.all[Element];
	
	if(element != null)
	{
		element.select();
	}
}
  
function convert_srv_to_client_num_format(inputNum)
{
	var returnNum = inputNum; 
	var thousand_separator = ".";
	var decimal_separator = get_client_decimal_separator();
	if (decimal_separator == ".") {
	    thousand_separator = ",";
	}
	
	returnNum = inputNum;
	
	returnNum = returnNum.replace(/\./g, ""); // remove "."
	
	if ((decimal_separator == ".") ){
	    returnNum = returnNum.replace(/\,/g, ".");
	}
		
	return returnNum;
}

  

  
function toMoney(field,numDecimal)
{
	field=document.all[field];
	var myStrVrednost = String(field.value);
	if (myStrVrednost != "") {
	    field.value = formatCurrency(parseFloat(myStrVrednost.replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(",", ".")).toFixed(numDecimal));
	}
}
  
function suggestValue(source, destination)   
{	
	var o = null;
	o = document.all[destination];
	if (o != null) {
	    document.all[destination].value = RemoveNonDigits(document.all[source].value);
	    return true;
	}
	else {
	    return false;
	}
}
	
function clearAndDisplay(Combo)
{
	wcGetComboById(Combo.toString()).Value = "0";
	wcGetComboById(Combo.toString()).Text = "";
	wcGetComboById(Combo.toString()).TextObj = "";	
	wcupdpd(Combo.toString());
}

function move(Combo)
{
	var combo = wcGetComboById(Combo.toString());
	if(event.keyCode==13) {
		event.keyCode=9;
	}
}

function clearWebCombo(Combo)
{
	wcGetComboById(Combo.toString()).Value = "0";
	wcGetComboById(Combo.toString()).Text = "";
	wcGetComboById(Combo.toString()).TextObj = "";	
	wcupdpd(Combo.toString());
	document.form[0].submit();
}

// used in Prejeti racuni
// to remove characters that are not digits nor minus        
function RemoveNonDigits(input)
{
    re = /^(\d+|-+)*$/;
    var output;

	if (re.test(input)) {
	    output = input;
	}
	else {
	    output = input.replace(/[^\d-]/g, "");
	}

	return output;		  		
}    

// used in Placilni nalog razdeli to calculate remain    
function setOstatak(pocetni, znesek, ostatak)
{ 
	var pocetniN = parseFloat(pocetni.innerText.replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(",","."));
	var znesekN = parseFloat(znesek.value.replace(",", "."));

	if (isNaN(znesekN)) {
	    ostatak.innerText = "";
	}
	else {
	    var rez = parseFloat(pocetniN - znesekN);
	    ostatak.innerText = formatCurrency(rez.toFixed(2));
	}
	
}

// trimming with array ops
String.prototype.trim = function () { return this.split(/\s/).join(' '); };

// string replicator
String.prototype.times = function (n) { s = ''; for (i = 0; i < n; i++) { s += this; } return s; };

// zero padding and trailing
String.prototype.zp = function (n) { return '0'.times(n - this.length) + this; };
String.prototype.zt = function (n) { return this + '0'.times(n - this.length); };

// string reverse
String.prototype.reverse = function () { return this.split('').reverse().join(''); };

// clear format from a string representation of a number
String.prototype.clean = function () {

    var firstStep = this.replace(/[^0-9|,+|-]/g, '');
    return parseFloat(firstStep.replace(/[^0-9|,|-]/g, '.'));
};


// string method wrappers
Number.prototype.zp = function (n) { return this.toString().zp(n); };
Number.prototype.zt = function (n) { return this.toString().zt(n); };
Number.prototype.substr = function (n) { return this.toString().substr(n); };
Number.prototype.reverse = function () { return this.toString().reverse(); };

// number sign 'bit' (boolean)
Number.prototype.sign = function () { return this < 0; };

// decimal digits truncation
Number.prototype.truncate = function (n) { return Math.round(this * Math.pow(10, n)) / Math.pow(10, n); };

// fractional part of a number
Number.prototype.fractional = function () { return parseFloat(this) - parseInt(this, 10); };

// integer thousand separators
Number.prototype.group = function () {
    var s = parseInt(this, 10).reverse(), r = '';

    for (var i = 0; i < s.length; i++) {
        r += (i > 0 && i % 3 == 0 ? '.' : '') + s.charAt(i);
    }
    return r.reverse();
};

// format a number with n decimal digits, thousands separator and sign
Number.prototype.formatNumber = function (n) {
    // remember the input sign and cancel it
    var a = Math.abs(this);

    // truncate and zero-trail the fractional part
    var f = a.fractional().truncate(n).substr(n).zt(n);

    // sign + grouped integer part + dot + fractional part
    if (f == 0) {
        return (' -'.substr(this.sign(), 1) + a.group()).trim();
    }
    else {
        return (' -'.substr(this.sign(), 1) + a.group() + ',' + f).trim();
    }
};


// format a number with n decimal digits, thousands separator and sign
Number.prototype.formatNumberForZaloge = function (n) {
    // remember the input sign and cancel it
    var a = Math.abs(this);

    // truncate and do not! zero-trail the fractional part
    var temp = a.fractional().truncate(n).toString();
    var f = temp.substr(temp.indexOf(".") + 1, temp.length);

    // sign + grouped integer part + dot + fractional part
    if (f == 0) {
        return (' -'.substr(this.sign(), 1) + a.group()).trim();
    }
    else {
        return (' -'.substr(this.sign(), 1) + a.group() + ',' + f).trim();
    }
};
// math cosecant, secant and cotangent
Math.csc = function (x) { return 1 / Math.sin(x); };
Math.sec = function (x) { return 1 / Math.cos(x); };
Math.cot = function (x) { return 1 / Math.tan(x); };
  

function CalculateProdajnaCenaZalogeByCena(hiddenCenaCtrl, cenaCtrl, popustCtrl, marzaCtrl, rabatCtrl, prodajnaCenaCtrl)
{
	var znes = document.all[prodajnaCenaCtrl];  
	var cena = document.all[cenaCtrl];
	var procentPopusta = document.all[popustCtrl];
	var procentMarze = document.all[marzaCtrl];
	var procentRabata = document.all[rabatCtrl];
	var hiddenCena = document.all[hiddenCenaCtrl];
	
	var vrednost = 0;
	
	var prPopustFloat = 0;
	var prPopust = 0;
	
	var prMarzaFloat = 0;
	var prMarza = 0;
	
	var prRabatFloat = 0;
	var prRabat = 0;
	
	var c = 0;
	var myString = "";
	
	if (cena != null)
	{
		if (isNaN(parseFloat(cena.value)))
		{
			c = 0;
		}
		else
		{
			myString = String(cena.value);
			c = parseFloat(myString.replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(",","."));
		}
	}
	else
	{
		c = 0;
	}
	if (procentPopusta != null)
	{
		if (isNaN(parseFloat(procentPopusta.value))){
			prPopust = 0;
		}
		else{
			myString = String(procentPopusta.value);
			prPopust =   parseFloat(myString.replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(",","."));
		}
	}
	else{
		prPopust = 0;
	}	
	prPopustFloat = parseFloat(prPopust);
	
	if (procentMarze != null)	{
		if (isNaN(parseFloat(procentMarze.value))){
			prMarza = 0;
		}
		else{
			myString = String(procentMarze.value);
			prMarza =   parseFloat(myString.replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(",","."));
		}
	}
	else{
		prMarza = 0;
	}	
	prMarzaFloat = parseFloat(prMarza);
	
	if (procentRabata != null){
		if (isNaN(parseFloat(procentRabata.value))){
			prRabat = 0;
		}
		else{
			myString = String(procentRabata.value);
			prRabat =   parseFloat(myString.replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(",","."));
		}
	}
	else{
		prRabat = 0;
	}	
	prRabatFloat = parseFloat(prRabat);
	
	vrednost = parseFloat(c * (1 - parseFloat(prRabatFloat/100)) * (1 - parseFloat(prPopustFloat/100)) * (1 + parseFloat(prMarzaFloat/100)));
	
	vrednostCena = parseFloat(c);
	if (znes!=null){
		if (!isNaN(vrednost)){
			znes.value = vrednost.formatNumberForZaloge(6);
		}		
	}
	if (cena!=null){
		if (!isNaN(vrednostCena)){
			cena.value = vrednostCena.formatNumberForZaloge(6);
		}		
	}
	if (hiddenCena!=null){
		if (!isNaN(c)){
			hiddenCena.value = c.formatNumberForZaloge(6);
		}		
	}
}

function CalculateProdajnaCenaZalogeByProcenti(hiddenCenaCtrl, cenaCtrl, popustCtrl, marzaCtrl, rabatCtrl, prodajnaCenaCtrl){
	var znes = document.all[prodajnaCenaCtrl];  
	var cena = document.all[cenaCtrl];
	var procentPopusta = document.all[popustCtrl];
	var procentMarze = document.all[marzaCtrl];
	var procentRabata = document.all[rabatCtrl];
	var hiddenCena = document.all[hiddenCenaCtrl];
	
	var vrednost = 0;
	
	var prPopustFloat = 0;
	var prPopust = 0;
	
	var prMarzaFloat = 0;
	var prMarza = 0;
	
	var prRabatFloat = 0;
	var prRabat = 0;
	
	var c = 0;


	if (hiddenCena != null) {
	    if (isNaN(parseFloat(hiddenCena.value))) {
	        c = 0;
	    }
	    else if (String(hiddenCena.value) == '-9999') {
	        c = 0;
	    }
	    else {
	        var myString = String(hiddenCena.value);
	        c = parseFloat(myString.replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(",", "."));
	    }
	}
	else {
	    c = 0;
	}

if (procentPopusta != null) {
    if (isNaN(parseFloat(procentPopusta.value))) {
        prPopust = 0;
    }
    else {
        myString = String(procentPopusta.value);
        prPopust = parseFloat(myString.replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(",", "."));
    }
}
else {
    prPopust = 0;
}
	
	prPopustFloat = parseFloat(prPopust);

	if (procentMarze != null) {
	    if (isNaN(parseFloat(procentMarze.value))) {
	        prMarza = 0;
	    }
	    else {
	        myString = String(procentMarze.value);
	        prMarza = parseFloat(myString.replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(",", "."));
	    }
	}
	else {
	    prMarza = 0;
	}
	
	prMarzaFloat = parseFloat(prMarza);

	if (procentRabata != null) {
	    if (isNaN(parseFloat(procentRabata.value))) {
	        prRabat = 0;
	    }
	    else {
	        myString = String(procentRabata.value);
	        prRabat = parseFloat(myString.replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(",", "."));
	    }
	}
	else {
	    prRabat = 0;
	}
	
	prRabatFloat = parseFloat(prRabat);
	
	vrednost = parseFloat(c * (1 - parseFloat(prRabatFloat/100)) * (1 - parseFloat(prPopustFloat/100)) * (1 + parseFloat(prMarzaFloat/100)));
	
	vrednostCena = parseFloat(c);
	if (znes != null) {
	    if (!isNaN(vrednost)) {
	        znes.value = vrednost.formatNumberForZaloge(6);
	    }
	}

    if (cena !== null) {
        if (!isNaN(vrednostCena)) {
            cena.value = vrednostCena.formatNumberForZaloge(6);
        }
    }
	
}

function CalculateMarzaZaloge(cenaCtrl, popustCtrl, marzaCtrl, rabatCtrl,  prodajnaCenaCtrl)
{
	var prodajnaCena = document.all[prodajnaCenaCtrl];  
	var cena = document.all[cenaCtrl];
	var procentPopusta = document.all[popustCtrl];
	var znes = document.all[marzaCtrl];
	var procentRabata = document.all[rabatCtrl];

	var vrednost = 0;
	
	var prPopustFloat = 0;
	var prPopust = 0;
	
	var prProdajnaCenaFloat = 0;
	var prProdajnaCena = 0;
	
	var prRabatFloat = 0;
	var prRabat = 0;
	
	var c = 0;
	var myString = "";

	if (cena != null) {
	    if (isNaN(parseFloat(cena.value))) {
	        c = 0;
	    }
	    else {
	        myString = String(cena.value);
	        c = parseFloat(myString.replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(",", "."));
	    }
	}
	else {
	    c = 0;
	}

	if (procentPopusta != null) {
	    if (isNaN(parseFloat(procentPopusta.value))) {
	        prPopust = 0;
	    }
	    else {
	        myString = String(procentPopusta.value);
	        prPopust = parseFloat(myString.replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(",", "."));
	    }
	}
	else {
	    prPopust = 0;
	}
		
	prPopustFloat = parseFloat(prPopust);

	if (prodajnaCena != null) {
	    if (isNaN(parseFloat(prodajnaCena.value))) {
	        prProdajnaCena = 0;
	    }
	    else {
	        myString = String(prodajnaCena.value);
	        prProdajnaCena = parseFloat(myString.replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(",", "."));
	    }
	}
	else {
	    prProdajnaCena = 0;
	}
		
	prProdajnaCenaFloat = parseFloat(prProdajnaCena);

	if (procentRabata != null) {
	    if (isNaN(parseFloat(procentRabata.value))) {
	        prRabat = 0;
	    }
	    else {
	        myString = String(procentRabata.value);
	        prRabat = parseFloat(myString.replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(".", "").replace(",", "."));
	    }
	}
	else {
	    prRabat = 0;
	}
			
	prRabatFloat = parseFloat(prRabat);
	var tempKolicnik = (c * (1 - parseFloat(prRabatFloat/100)) * (1 - parseFloat(prPopustFloat/100)));
	if(tempKolicnik != 0)
	{
		vrednost = parseFloat(((prProdajnaCenaFloat/ (c * (1 - parseFloat(prRabatFloat/100)) * (1 - parseFloat(prPopustFloat/100)))) - 1) * 100);
		vrednost = parseFloat(vrednost.toFixed(2));
		if (znes != null) {
		    if (!isNaN(vrednost)) {
		        znes.value = vrednost.formatNumberForZaloge(2);
		    }
		}
			   
	}
	else
	{
		znes.value = 0;
		procentPopusta.value = 0;
		procentRabata.value = 0;
		znes.value = 0;
		cena.value = prProdajnaCenaFloat.formatNumberForZaloge(6);
	}

}
function PreracunajZnesekVOP(SteviloEnot, NaEnoto, Odstotek, Znesek)
  {
  
	stev = document.all[SteviloEnot];
	var myStrStev = String(stev.value);
	
	stev.value = parseFloat(myStrStev.replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(",","."));
		
	naEnot = document.all[NaEnoto];
	var myStrNaEnot = String(naEnot.value);
	
	naEnot.value = parseFloat(myStrNaEnot.replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(",","."));
				
	odst = document.all[Odstotek];
	var myStrOdst = String(odst.value);
	
	odst.value = parseFloat(myStrOdst.replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(".","").replace(",","."));
		
	znes = document.all[Znesek];
	
	if (!isNaN(stev.value) && !isNaN(naEnot.value) && !isNaN(odst.value))
		znes.value = formatCurrency(parseFloat(stev.value)*parseFloat(naEnot.value)*parseFloat(odst.value)/100);
		
	if (isNaN(stev.value))
		stev.value = "";	
	else
	{
		myStrStev = String(stev.value);
		stev.value = myStrStev.replace(".","*").replace(",",".").replace("*",",");
	}
	
	if (isNaN(naEnot.value))
		naEnot.value = "";	
	else
	{
		myStrNaEnot = String(naEnot.value);
		naEnot.value = myStrNaEnot.replace(".","*").replace(",",".").replace("*",",");
	}
	
	if (isNaN(odst.value))
		odst.value = "";	
	else
	{
		myStrOdst = String(odst.value);
		odst.value = myStrOdst.replace(".","*").replace(",",".").replace("*",",");
	}	
  }
  
  
function TemporarilyDisableButton(id, delay)
{
	document.getElementById(id).disabled = true;
	setTimeout("document.getElementById('"+id+"').disabled = false",delay);
}


function cleanUp(responseText) {
	var myObject = JSON.parse(responseText);  //more secure than eval
	return myObject.d;  //ASP.NET special
}


function getQuerystring(key, default_)
{
  if (default_==null) default_=""; 
  key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
  var qs = regex.exec(window.location.href);
  if(qs == null)
	return default_;
  else
	return qs[1];
} 

function selText(kontrolaID)
{
		document.getElementById(kontrolaID).select();
}


function SetDelavecVrednostLabel(targetControlID, SourceControlID, text1, text2, text3, text4) {

	var targetLabel = document.getElementById(targetControlID);
	var selected = $j('#DivZaUrnoPostavko input:checked').val();

	if (selected == "T")
		targetLabel.innerText = text1;
	if (selected == "M")
		targetLabel.innerText = text2;
	if (selected == "B")
		targetLabel.innerText = text3;
	if (selected == "N")
		targetLabel.innerText = text4;

}
function SetDelavecRSVrednostLabel(targetControlID, SourceControlID, text1, text2, text3, text4) {

    var targetLabel = document.getElementById(targetControlID);
    var selected = $j('#DivZaUrnoPostavko_RS input:checked').val();

    if (selected == "T")
        targetLabel.innerText = text1;
    if (selected == "M")
        targetLabel.innerText = text2;
    if (selected == "B")
        targetLabel.innerText = text3;
    if (selected == "N")
        targetLabel.innerText = text4;

}

function SetDelavecVrednostPrevozLabel(targetControlID,textD, textK, textM, textF, textN) {

	var targetLabel = document.getElementById(targetControlID);
	var selected = $j('#dIVZaPrevozNaDelo input:checked').val();

	if (selected == "D") {
	    targetLabel.innerText = textD;
	}
	if (selected == "K") {
	    targetLabel.innerText = textK;
	}
	if (selected == "M") {
	    targetLabel.innerText = textM;
	}
	if (selected == "F") {
	    targetLabel.innerText = textF;
	}
	if (selected == "N") {
	    targetLabel.innerText = textN;
	}

}

function SetDelavecRSVrednostPrevozLabel(targetControlID, textD, textK, textM, textF, textN) {

    var targetLabel = document.getElementById(targetControlID);
    var selected = $j('#DivZaPrevozNaDelo_RS input:checked').val();

    if (selected == "D") {
        targetLabel.innerText = textD;
    }
    if (selected == "K") {
        targetLabel.innerText = textK;
    }
    if (selected == "M") {
        targetLabel.innerText = textM;
    }
    if (selected == "F") {
        targetLabel.innerText = textF;
    }    
    if (selected == "N") {
        targetLabel.innerText = textN;
    }

}












function GetDateValue(ctrlID)
{
	var ctrl = PDP_GetById( ctrlID);
	return ctrl.value;
}


function SetComboFocus(comboID)
{
  var combo = null;
 
  try { combo = ISGetObject(comboID); } 
  catch(err) { alert(err); }
  
  if (combo != null) 
  {
		try { combo.SetFocus(); } 
		catch(err) 
		{ 
			try { combo.focus(); } 
			catch(err) {}
		}
  } 
  else 
  {
	try { combo = document.getElementById(comboID+"_text"); } 
	 catch(err) {}
  
	 if (combo != null) 
	 {
		combo.focus();
		combo.select();
	 } 
	 else {
		alert("control "+comboID+" not found (1)!");
	 }
  }
}

function ISGetObject(comboID)
{
	return wcGetComboById(comboID);
}

function SetCommonControlFocus(ctrlID)
{
	var ctrl = null;

	try { ctrl = document.getElementById(ctrlID); } 
	catch(err) {}

	if (ctrl != null) 
	{
		try { ctrl.SetFocus(); } 
		catch(err)
		{
			try { ctrl.focus(); } 
			catch(err) {}
		}


	} 
	else {
		alert("control \""+ctrlID+"\" not found (2)!");
	}
}

function SetDropDownListControlFocus(ctrlID)
{
	var ctrl = null;

	try { ctrl = document.getElementById(ctrlID); } 
	catch(err) {}

	if (ctrl != null) 
		ctrl.focus();        
	else 
		alert("control \""+ctrlID+"\" not found (2)!");    
}


function SetDateTextBoxControlFocus(ctrlID)
{
	var ctrl = null;

	try { ctrl = PDP_GetById(ctrlID);} 
	catch(err) {}
	
	if (ctrl == null) 
	try {ctrl = document.getElementById(ctrlID); } 
	catch(err) {}

	if (ctrl != null) 
	{
		ctrl.focus();
		ctrl.select();
	} 
	else {
		alert("control \""+ctrlID+"\" not found (3)!");
	}
}


function SetLabelFocus(labelID)
{
	self.location="\"#" + labelIDD + "\"";
}

function SetLinkButtonFocus(ctrlID)
{
	var ctrl = null;

	try {ctrl = document.getElementById(ctrlID); } 
	catch(err) {}
	
	try 
	{
		if (ctrl != null) 
			ctrl.focus();
		else
			alert("control \""+ctrlID+"\" not found!(4)");
	} 
	catch(err){}                 
}

function SetRadioButtonFocus(ctrlID, selectedIndex)
{
	var ctrl = null;

	try 
	{
		if (selectedIndex=="") selectedIndex = "0";		
		ctrl = document.getElementById(ctrlID+"_"+selectedIndex); 
	} 
	catch(err){}
		if (ctrl != null) 
		{
			try {ctrl.SetFocus(); } 
			catch(err)
			{
				try {ctrl.focus(); } 
				catch(err)
				{
				 try {ctrl.select(); } 
				catch(err){}
				}
			}
		}  	          
}

function ResizeImgToFullWindow(imageID)
{
	var img1 = document.getElementById(imageID);	
	img1.width=document.body.clientWidth;
}

function DoLoad()
{ 
  return true;
}

function close_child_and_resize_parent_win()
{
	self.opener.window.resizeTo(1024, 768);
	self.close();
}

function split_window_priponka(url)
{

	var scr_width = screen.width;
	var scr_height = screen.height;
	
	var cur_width = 1024;
	var main_hight = 440;
	var priponka_height = scr_height  - main_hight -34; 
	
	HideWaitingWindow();
	
	self.resizeTo(cur_width, main_hight);
	self.moveTo(0, 0); 
	open_in_new_window_custom(url, 'VAPriponka', scr_width, priponka_height, main_hight, 0);	
}

function open_in_new_window_custom(url, win_name, width, height, top, left)
{
	HideWaitingWindow();
	var sParams = 'height=' + height + ',';
	sParams = sParams + 'titlebar=' + 'yes' + ',';
	sParams = sParams + 'top=' + top + ',';
	sParams = sParams + 'left=' + left + ',';
	sParams = sParams + 'width=' + width + ',';
	sParams = sParams + 'toolbar=no,';
	sParams = sParams + 'scrollbars=yes,';
	sParams = sParams + 'directories=no,';
	sParams = sParams + 'location=no,';
	sParams = sParams + 'status=no,';
	sParams = sParams + 'menubar=no';
		sParams = sParams + ',resizable=yes';
		
	var win = window.open(url,win_name,sParams,true);
	if ((win==null) || (typeof(win)=="undefined")) alert('Odpiranje datoteke je bilo onemogo\u010Deno zaradi nastavitev prepre\u010Devanja pojavnih oken (pop-up blocker).');
	
	try
	{
		win.resizeTo(width, height);
		
		var obj=win.opener.window.document.all["iFrameLoading"];
		if (obj != null)
		{

			obj.style.visibility="hidden";
			var isAnimating=win.opener.window.document.getElementsByName("IsAnimatingControl");
			if (isAnimating != null)
			{
				isAnimating.value = "False";
				obj.style.visibility="hidden";
			}

		}
	}
	catch(err){}
}

function OnEditBodyKeyDown(btnID,commandName)
{
    if (event.keyCode == 13) {
        event.keyCode = 9;
    }
    else {
        if (event.altKey == true) {
            //SHRANI
            if (event.keyCode == 83 || event.keyCode == 115) {
                var btnSave = document.getElementById(btnID);
                if (btnSave != null) {
                    __doPostBack(commandName, '');
                }
            }
            //SHRANI IN NOV							  
            if (event.keyCode == 82 || event.keyCode == 114) {
                var btnSaveNew1 = document.getElementById(btnID);
                if (btnSaveNew1 != null) {
                    __doPostBack(commandName, '');
                }
            }
            //IZSTAVI										  
            if (event.keyCode == 73 || event.keyCode == 105) {
                var btnIzstavi = document.getElementById(btnID);
                if (btnIzstavi != null) {
                    __doPostBack(commandName, '');
                }
            }
            //DODAJ
            if (event.keyCode == 68 || event.keyCode == 100) {
                var btnDodaj = document.getElementById(btnID);
                if (btnDodaj != null) {
                    __doPostBack(commandName, '');
                }
            }
            //OPUSTI
            if (event.keyCode == 79 || event.keyCode == 111) {
                var btnOpusti1 = document.getElementById(btnID);
                if (btnOpusti1 != null)
                    document.location = btnOpusti1.href;
            }
        }
    }
}

function open_in_new_window(url)
{
	HideWaitingWindow();
	open_in_new_window_custom(url, '', '1024', '768',0,0);
	
}

function ShowWaithing()
{
	var obj=document.all["iFrameLoading"];
	if (obj != null)
	{
	    var objLeft = (document.body.clientWidth - obj.offsetWidth) / 2;
	    var objTop = (document.body.clientHeight - obj.offsetHeight) / 2;
		objLeft = objLeft + document.body.scrollLeft;
		objTop = objTop + document.body.scrollTop;		
		var isAnimating=document.getElementById("PPC_IsAnimating");

		if (isAnimating != null) {
		    if (isAnimating.value == "True") {
		        obj.style.visibility = "visible";
		    }
		    else
		        if (isAnimating.value == null) {
		            isAnimating.value = "True";
		            obj.style.visibility = "visible";
		        }
		        else
		            Hide();
		}
		else {
		    obj.style.visibility = "visible";		 
		}
		obj.style.left=objLeft;
		obj.style.top=objTop;
	}
	
}

function HideWaitingWindow()
{
	Hide();
}

function Hide()
{
	var obj=document.all["iFrameLoading"];
	if (obj != null)
	{
		obj.style.visibility="hidden";		
		var isAnimating=document.getElementById("PPC_IsAnimating");
		
		if (isAnimating != null)
		{		    
			isAnimating.value = "False";
			obj.style.visibility="hidden";
		}		

	}
}

function isNum(argvalue) {
	argvalue = argvalue.toString();

	if (argvalue.length == 0) {
	    return false;
	}

    for (var n = 0; n < argvalue.length; n++) {
        if (((argvalue.substring(n, n + 1) < "0" || argvalue.substring(n, n + 1) > "9")) && (argvalue.substring(n, n + 1) != ".") && (argvalue.substring(n, n + 1) != ",") && (argvalue.substring(n, n + 1) != "-") && (argvalue.substring(n, n + 1) != "+")) {
            return false;
        } 
    }
	return true;
}

function get_client_decimal_separator()
{
	var decimal_separator = ",";
	if (parseFloat(1/2).toString().lastIndexOf('.') > 0)
	{
		decimal_separator = ".";
	}
	 
	return decimal_separator;
}



function convert_client_to_srv_num_format(inputNum)
{
	var returnNum = inputNum; 
	var thousand_separator = ".";
	var decimal_separator = get_client_decimal_separator();
	if (decimal_separator == ".")	thousand_separator = ",";

	returnNum = inputNum;
	
	if ((decimal_separator == ".") && (thousand_separator == ","))
	{
		returnNum = returnNum.toString().replace(/\;/g, "").replace(/\,/g, ";").replace(/\./g, ",").replace(/\;/g, ".");
	}
		
	return returnNum;
}

function scrollIntoView(elID)
{
	var el = document.getElementById(elID);
	el.scrollIntoView(true);
	SetCommonControlFocus(elID);
	try {el.select();}
	catch(error){}			
 }

function setDestToZeroIfSrcNotZero(srcCtrlID, destCtrlID)
{
	var srcCtrl = document.getElementById(srcCtrlID);
	var destCtrl = document.getElementById(destCtrlID);
	
	if ((srcCtrl.value != null)&&(srcCtrl.value != ''))
	{	
		var znesek = Number( convert_srv_to_client_num_format(srcCtrl.value) );
		srcCtrl.value = formatCurrencyWithNDecimals(znesek , 2);
		if (znesek != 0) destCtrl.value = '0,00' ;
	}
}


function IncDatumZapadlosti(datumZapadlostiID, datumRacunaID, steviloDniID)
{	
	if (!PDP_CanEdit(datumZapadlostiID)) return; 
	
	var stDniCtrl = document.getElementById(steviloDniID); 
	var stDni = stDniCtrl.value;
	if (isNum(stDni)) 
	{
		var vDate2 = null;

		if (PDP_GetById(datumRacunaID).value == '') {
		    vDate2 = DTB_GetTodayDate(datumRacunaID);
		}
		else {
		    vDate2 = DTB_GetDateValue(datumRacunaID);
		}

		if (vDate2 != null){
		    if (!DTB_TestInRange(datumRacunaID, vDate2, true)) {
		        return false;
		    }

			var vTicks = vDate2.valueOf();
			
			vTicks = vTicks +( 86400000 )*stDni; 
			
			vNewDate = new Date(vTicks); 
			vNewDate = new Date(vNewDate.getFullYear(), vNewDate.getMonth(), vNewDate.getDate()); 

			if (!DTB_TestInRange(datumZapadlostiID, vNewDate, false)){
				setTimeout("javascript:PDP_ClearError('" + datumZapadlostiID + "');", 500); return false;
}

			DTB_SetDateValue(datumZapadlostiID, vNewDate, true);
			PDP_GetById(datumZapadlostiID).select();
			DTB_ApplyRangeRules(datumZapadlostiID, vNewDate);

			return true;
		} 
		else{
			PDP_ShowError(datumZapadlostiID, 1, true);
			return false;
		}
	}
}

function PRACOsnovaChanged(osnovaCtrlID, znesekDDVCtrlID, faktorDDVStr)
{
	var osnovaCtrl = document.getElementById(osnovaCtrlID); 
	var znesekDDVCtrl = document.getElementById(znesekDDVCtrlID);

	var osnova = 0;
	var znesekDDV = 0;
	var faktor = Number(convert_srv_to_client_num_format(faktorDDVStr));
   
	if(osnovaCtrl != null)
	{
		if (isNum(osnovaCtrl.value))
		{
			osnova = Number(convert_srv_to_client_num_format(osnovaCtrl.value));
		}
	}
   
	if(znesekDDVCtrl != null){
		if (isNum(znesekDDVCtrl.value))
		{
			znesekDDV = Number(convert_srv_to_client_num_format(znesekDDVCtrl.value));
		}
	}
  
	znesekDDV = osnova * faktor;
	
	znesekDDVCtrl.value = formatCurrencyWithNDecimals(znesekDDV, 2);
	osnovaCtrl.value = formatCurrencyWithNDecimals(osnova, 2); 
  
	PRACIzracunVsote();
	znesekDDVCtrl.focus();
	znesekDDVCtrl.select();

}

function PRACZnesekDDVChanged(znesekDDVCtrlID)
{
	var znesekDDVCtrl = document.getElementById(znesekDDVCtrlID);
	
	if(znesekDDVCtrl != null){
		if (isNum(znesekDDVCtrl.value))
		{
			znesekDDV = Number(convert_srv_to_client_num_format(znesekDDVCtrl.value));
			znesekDDVCtrl.value = formatCurrencyWithNDecimals(znesekDDV, 2);
		}
	}
	
	PRACIzracunVsote();
}

function PRACIzracunVsote()
{
	var sumOsn=0;
	var sumDDV=0;
	var sumDDVTemp = 0;
	var ctrlID;
	var ctrl;
	var ctrlValue;
	var samoobdavcitev;
			
	var jsonStr = GetSumCtrlList();  
	  
	eval("var sumsCtrlList = " + jsonStr + ";");
		
	for (var i=0; i < sumsCtrlList.SumCtrls.OsnList.length; i++) 
	{
		ctrlID = sumsCtrlList.SumCtrls.OsnList[i].osn;
		ctrl = document.getElementById(ctrlID);
			
		if (ctrl != null)
		{
			ctrlValue = Number(convert_srv_to_client_num_format(ctrl.value));
			sumOsn = sumOsn + ctrlValue;
		}
	}
		
	for (i=0; i < sumsCtrlList.SumCtrls.DDVList.length; i++) 
	{
		ctrlID = sumsCtrlList.SumCtrls.DDVList[i].ddv;
		ctrl = document.getElementById(ctrlID);
		
		if (ctrl != null)
		{
			ctrlValue = Number(convert_srv_to_client_num_format(ctrl.value));
			sumDDV = sumDDV + ctrlValue;
			samoobdavcitev = ctrl.getAttribute('Samoobdavcitev');
			if (samoobdavcitev == 'N')
			{
				sumDDVTemp = sumDDVTemp + ctrlValue;
			}
		} 
	}
		
	ctrlID = sumsCtrlList.SumCtrls.sumDDV;
	ctrl = document.getElementById(ctrlID);
	ctrl.innerText = formatCurrencyWithNDecimals(sumDDV, 2);
	 
	ctrlID = sumsCtrlList.SumCtrls.sumOsn;
	ctrl = document.getElementById(ctrlID);
	ctrl.innerText = formatCurrencyWithNDecimals(sumOsn, 2);
		
	ctrlID = sumsCtrlList.SumCtrls.sum;
	ctrl = document.getElementById(ctrlID);
	ctrl.innerText = formatCurrencyWithNDecimals(sumDDVTemp+sumOsn, 2);   
}     

function onlyNumbersInTextBox(evt, ctrl)
{
	 var strLen = document.getElementById(ctrl);

	 var charCode = (evt.which) ? evt.which : event.keyCode;
	 if (charCode > 31 && (charCode < 48 || charCode > 57)) {
	     return false;
	 }

	 return true;
}


/**
browserDetection()  
find out what browser your viewer is using
*/
function browserDetection(ret)
{
	var browserName=navigator.appName;
	var browser = "FF";    		

	if (browserName=="Netscape"){
		browser = "FF";
	}
	else if (browserName=="Microsoft Internet Explorer"){
		browser = "IE";
	}
	else if (browserName=="Opera"){
		browser = "FF";
	}
	else if (browserName=="Safari"){
		browser = "FF";
	}

	if(ret=="code") return browser;
	else return browserName;
}

/**
* nextElFocus(element,tagname)
* Set focus to next element
*
* @param element element;    Element object
* @param string tagname;     Tag name of next element to focus on
*/
function nextElFocus(element,tagname){
	if(element.form) {  
		var elements = element.form.elements;
		var elementName = element.name; 
		   
		// Skip textarea
		if(element.tagName.toLowerCase() != "textarea"){
			try {
				for(i=0; i<elements.length; i++){
					if(elements[i].name==elementName){
					    if (elements[i + 1].type == "hidden" || (tagname ? elements[i + 1].tagName != tagname : false) || !isVisible(elements[i + 1]) || elements[i + 1].tabIndex == "-1" || elements[i + 1].disabled == true || elements[i + 1].type == "file") {
					        elementName = elements[i + 1].name;
					    }
					    else {
					        try { elements[i + 1].focus(); }
					        catch (err) { }

					        try { elements[i + 1].select(); }
					        catch (err) { }

					        break;
					    }
					}
				}
			}
			catch(err) {}
		 }
	}
}


/**
* isVisible(e)
* Check if an element is visible.
* 
* @param element e;  Element object
*/
function isVisible(e) {
 
	while (e.nodeName.toLowerCase() != 'body' && e.style.display.toLowerCase() != 'none' && e.style.visibility.toLowerCase() != 'hidden') {
		e = e.parentNode;
	}
	if (e.nodeName.toLowerCase() == 'body') {
	    return true;
	}
	else
	    return false;	
}

/**
* ElementEnterTab()
* Enter Tab conversion hack
* 
*/
function formEnterTab(event){
	var browser = "FF";
	var key;
	
	browser = browserDetection("code");
	
	if(browser != "IE"){
		key = event.which;
		if (key == 13) {
		    nextElFocus(event.target);
		    return false;
		}
		else {
		    return true;
		}
	}
	else
		return true;
   
}


/* 
 * Ajax Data Controls - adc
 *
 */
function adcSetText(element, text)
{
	if (typeof element.innerText != 'undefined')
	{
		element.innerText = text;
	}
	else if (typeof element.textContent != 'undefined')
	{
		element.textContent = text;
	}
}

function adcSetChecked(element, value){
    if (typeof(value) == 'boolean') {
        element.checked = value;
    }
}

/* 
 * Format numeric field
 *
 */
function formatNumericField(element_id, decimals)
{
	var el = $j("#"+element_id);
	
	if(el!=undefined) {
	    var num = el.value;
		$j(el).val(formatCurrencyWithNDecimals(Number(convert_srv_to_client_num_format($j(el).val().replace(/\./g, ""))),decimals));
	}
}


function showDialogWindow(element, message, type, dialog_buttons) {
    var html = "";
	if (type == "warning") {
		html = "<div class=\"warnings\"><table><tr><td style=\"vertical-align:midlle\"><img src=\"../media/img/error_handler/warning.png\"/></td><td>" + message + "</td></tr></table></div>";
    }   
    else if (type == "modal") {
        html = "<div class=\"modal\"><table><tr><td style=\"vertical-align:midlle\"></td><td>" + message + "</td></tr></table></div>";
    }
	else {
		html = "<div class=\"warnings\"><table><tr><td style=\"vertical-align:midlle\"><img src=\"../media/img/error_handler/warning.png\"/></td><td>" + message + "</td></tr></table></div>";
	}

	$j(element).html(html);
	
	$j(function () {
		$j(element).dialog({
			modal: true,
			width: 600,
			buttons: dialog_buttons
		});
	});
}


function showWarningWindow(message,OKFunction, CancelFunction){
	 var dialog_buttons = {};
	 try {
	     dialog_buttons[Ogrodje_GumbVRedu] = function () { $j(this).dialog("destroy"); $j(".error_handler_dialog").remove(); if (typeof OKFunction == 'function') { OKFunction(); } };
		 dialog_buttons[Ogrodje_GumbOpusti] = function () { $j(this).dialog("destroy"); $j(".error_handler_dialog").remove(); if (typeof CancelFunction == 'function') { CancelFunction(); } };
	 }
	 catch (err) {
	     dialog_buttons['OK'] = function () { $j(this).dialog("destroy"); $j(".error_handler_dialog").remove(); if (typeof OKFunction == 'function') { OKFunction(); } };
		 dialog_buttons['Cancel'] = function () { $j(this).dialog("destroy"); $j(".error_handler_dialog").remove(); if (typeof CancelFunction == 'function') { CancelFunction(); } };
	 }

	 showDialogWindow("#dialogContainer", message, "warning", dialog_buttons);
}




    var i = { Month: 2, Day: 1, Year: 3, Hour: 4, Min: 5, Sec: 6, AMPM: 7 };
    var trim = function (s) { return s.replace(/^\s+|\s+$/g, ''); };  

    function parseDate(strDate)//, optFormat)
    {
        strDate = trim(strDate);
        var rexp = new RegExp(
  "^" +
  "(?:" + // date
    "(1[0-2]|0?[1-9])" + // Month
    // "[ .-]" +
    "(3[0,1]|[1,2][0-9]|0?[1-9])" + // Day
    //"(?:[/-]" +
"(?:" +
      "(19[7-9][0-9]|2[0-9]{3}|[0-9]{2})" + // Year
    ")?" +
    "\\s?" +
  ")?" +
  "(?:" + // Time
    "(2[0-3]|1[0-9]|[1-9])" + // Hour
    "(?:[:]" +
      "([0-5][0-9])" + // Min
      "(?:[:]" +
        "([0-5][0-9])" + // Sec
      ")?" +
    ")?" +
    "\\s?" +
    "(?:([aApP])[mM]?)?" + // ampm
  ")?$"
);
        var parsed = rexp.exec(strDate);
        if (!strDate || !parsed) { return null; }

        var ret = new Date(); // could also pass in a context date

        var year = ret.getFullYear();
        if (parsed[i.Year]) {
            switch (parsed[i.Year].length) {
                case 4:
                    year = parseInt(parsed[i.Year], 10);
                    break;
                case 2:
                    year = year - (year % 100) + parseInt(parsed[i.Year], 10);
                    break;
            }
        }

        var month = (parsed[i.Month] ? parseInt(parsed[i.Month], 10) - 1 : ret.getMonth());
        var day = (parsed[i.Day] ? parseInt(parsed[i.Day], 10) : ret.getDate());
        var hour = (parsed[i.Hour] ? parseInt(parsed[i.Hour], 10) : 0);
        var min = (parsed[i.Min] ? parseInt(parsed[i.Min], 10) : 0);
        var sec = (parsed[i.Sec] ? parseInt(parsed[i.Sec], 10) : 0);
        var ms = 0;

        ret.setFullYear(year, month, day);
        ret.setHours(hour, min, sec, ms);
        if (!parsed[i.AMPM]) { return ret; }

        if (hour > 12 && parsed[i.AMPM].toLowerCase() === 'p') {
            ret.setHours(ret.getHours() + 12);
        }
        else if (hour === 12 && parsed[i.AMPM].toLowerCase() === 'a') {
            ret.setHours(ret.getHours() - 12);
        }
        return ret;
    };

