/*
	This code is copyright (C) Astcon RI. Its reuse is strictly forbidden and will be persecuted by international law.
	If you are interested in buying, please contact us at www.astcon.com 
*/

function rollme(t2,id)
{
	var t=document.getElementById(id);
	if(t.style.display=='none')
	{
		t.style.display='';
		t2.style.backgroundImage="url('images/minus.gif')";
	}
	else
	{
		t.style.display='none';
		t2.style.backgroundImage="url('images/plus.gif')";
	}
	return false;
	
}


// Will be called by input fields when in 'update DOM' mode. This will
// make sure that changes to input fields in the form will be captured
// in the DOM - not necessary in IE but is required in Moz, etc as the DOM
// will otherwise reflect the page as it was initially.
//
// inputField : the input field that has just been tabbed out of (onBlur) OR the ID of the input field
function updateDOM(inputField) {
    // if the inputField ID string has been passed in, get the inputField object
    if (typeof inputField == "string") {
        inputField = document.getElementById(inputField);
    }

    if (inputField.type == "select-one") {
        for (var i=0; i<inputField.options.length; i++) {
            if (i == inputField.selectedIndex) {
                inputField.options[inputField.selectedIndex].setAttribute("selected","selected");
            }
        }
    } else if (inputField.type == "text") {
        inputField.setAttribute("value",inputField.value);
    } else if (inputField.type == "textarea") {
        inputField.setAttribute("value",inputField.value);
    } else if ((inputField.type == "checkbox") || (inputField.type == "radio")) {
        if (inputField.checked) {
            inputField.setAttribute("checked","checked");
        } else {
            inputField.removeAttribute("checked");
        }
    }
}

function getel(name)
{
	return document.getElementById(name);
}

function selectAll(checkbox)
{
	var all = document.getElementsByName('selected');
	var stan = checkbox.checked;
	for(var i=0; i<all.length; i++) all[i].checked = stan;
	return false;
}

function invertAll()
{
	var all = document.getElementsByName('selected');
	for(i=0; i<all.length; i++)
	{
		all[i].checked = !all[i].checked;
	}
	return false;
}

function flaguj(img,id,user,can,event,dir,url)
{
	var val = getel(id).value;
	val = parseInt(val) + dir;
	if(val<0) val=4;
	else if(val>4) val=0;

	var flags = new Array('empty.png', 'blue.png', 'green.png', 'yellow.png', 'red.png');
	getel(img).src = 'images/flag_' + flags[val];
	getel(id).value = val;
	callServer(url + '?act=flagset&user=' + user + '&kand=' + can + '&flag=' + val);
	//alert(event.button);
	return false;
}

var lastColor = '';
var lastClicked = '';
function hl(el,id)	// highlight row
{
	if(el.style.backgroundColor=='#FFEADF' || el.style.backgroundColor=='rgb(255, 234, 223)' || el.style.backgroundColor=='#ffeadf' )
	{
		el.style.backgroundColor=lastColor;
		lastClicked = '';
		lastColor = '';
		lastID = id;
	}
	else
	{
		if(lastClicked!='') lastClicked.style.backgroundColor = lastColor;

		lastColor = el.style.backgroundColor;
		el.style.backgroundColor='#FFEADF';
		lastClicked = el;
		lastID = id;
		setCookie('lastChecked', id);
	}
	
}

function setCookie(c_name,value,expiredays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+
		((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function getCookie(c_name)
{
	if (document.cookie.length>0)
	{
		c_start=document.cookie.indexOf(c_name + "=");
		if (c_start!=-1)
		{
			c_start=c_start + c_name.length+1;
			c_end=document.cookie.indexOf(";",c_start);
			if (c_end==-1) c_end=document.cookie.length;
			return unescape(document.cookie.substring(c_start,c_end));
		}
	}
	return "";
}

function showChat(caller, id)
{
	$("_chat_receiver").value = id;
	$("_chat_receiver").onchange();
	caller.parentNode.removeChild(caller);
}

function $() {
  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1) 
      return element;

    elements.push(element);
  }

  return elements;
}

function trim(str) {
	str = str.replace(/^\s+/, '');
	for (var i = str.length - 1; i >= 0; i--) {
		if (/\S/.test(str.charAt(i))) {
			str = str.substring(0, i + 1);
			break;
		}
	}
	return str;
}

function str_replace(search, replace, subject) {
    return subject.split(search).join(replace);
}

// funkcja oblicza wartości we wierszu
function calcRow(i)
{
	var ilosc = parseInt(trim($('ilosc' + i).value));
	if(isNaN(ilosc)) ilosc = 0;
	
	var rabat = parseInt(trim($('rabat' + i).value));
	if(isNaN(rabat)) rabat = 0;
	var kwotaRabatu = (100 - rabat)/100;
	
	var cena_netto  =  parseFloat(trim($('cena_netto' + i).value.replace(',', '.')));
	if(isNaN(cena_netto)) cena_netto = 0;
	cena_netto = roundMe(cena_netto);
	$('cena_netto' + i).value = cena_netto.toFixed(2).replace('.', ',');
	cena_netto = (cena_netto * kwotaRabatu).toFixed(2);
	
	var stawka_vat     = vaty[$('stawka_vat' + i).value];
	//var cena_brutto    = roundMe(cena_netto * (1+stawka_vat));
	
	var wartosc_netto  = roundMe(cena_netto  * ilosc);
	var wartosc_brutto = roundMe(wartosc_netto * (1+stawka_vat));
	var wartosc_vat    = roundMe(wartosc_brutto - wartosc_netto);
	
	$('kwota_netto' + i).value = wartosc_netto.toFixed(2).replace('.', ',');
	$('kwota_vat' + i).value = wartosc_vat.toFixed(2).replace('.', ',');
	$('kwota_brutto' + i).value = wartosc_brutto.toFixed(2).replace('.', ',');
}

function calcService()
{
	//var ilosc = parseInt(trim($('ilosc').value));
	//if(isNaN(ilosc)) ilosc = 0;
	var cena_netto  =  parseFloat(trim($('cena_netto').value.replace(',', '.')));
	if(isNaN(cena_netto)) cena_netto = 0;
	cena_netto = roundMe(cena_netto);
	$('cena_netto').value = cena_netto.toFixed(2).replace('.', ',');
	
	var stawka_vat     = vaty[$('stawka_vat').value];
	if(isNaN(stawka_vat)) stawka_vat = 0;
	//var cena_brutto    = roundMe(cena_netto * (1+stawka_vat));
	
	var wartosc_netto  = roundMe(cena_netto);	// + ilosc
	var wartosc_brutto = roundMe(wartosc_netto * (1+stawka_vat));
	$('cena_brutto').value = wartosc_brutto.toFixed(2).replace('.', ',');
}

function wiecej(arr)
{
	var opis = document.getElementsByName('opis[]');
	var ilosc = document.getElementsByName('ilosc[]');
	var jednostka = document.getElementsByName('jednostka[]');
	var cena_netto = document.getElementsByName('cena_netto[]');
	var rabat = document.getElementsByName('rabat[]');
	var stawka_vat = document.getElementsByName('stawka_vat[]');
	var kwota_netto = document.getElementsByName('kwota_netto[]');
	var kwota_brutto = document.getElementsByName('kwota_brutto[]');
	var kwota_vat = document.getElementsByName('kwota_vat[]');
	var i = 0, j = 0;
	
	var tmp = '';
	for(i=0; i<opis.length; i++)
	{
		tmp += "<tr><td style='text-align:center'>" + (i+1) + "</td><td><input type='text' name='opis[]' size='70' value='" + 
			opis[i].value + "' /></td>" + 
			"<td><input type='text' name='ilosc[]' id='ilosc" + i + "' size='8' value='" + ilosc[i].value + 
				"' onchange='calcRow(" + i + ")' /></td>" + 
			"<td><input type='text' name='jednostka[]' size='9' value='" + jednostka[i].value + "' /></td>" + 
			"<td><input type='text' name='cena_netto[]' id='cena_netto" + i + "' size='9' value='" + 
				cena_netto[i].value + "' onchange='calcRow(" + i + ")' /></td>" + 
			"<td><input type='text' name='rabat[]' id='rabat" + i + "' size='3' maxlength='3' value='" + 
				rabat[i].value + "' onchange='calcRow(" + i + ")' />%</td>" + 
			"<td><select name='stawka_vat[]' id='stawka_vat" + i + "'>";
		for(j=0; j<id_stawki.length; j++)
		{
			tmp += "<option value='" + id_stawki[j] + "'" + (id_stawki[j]==stawka_vat[i].value ? " selected='selected'" : '') + 
				">" + stawki_vat[j] + "</option>";
		}
		tmp += "</select></td>" + 
			"<td><input type='text' name='kwota_netto[]' readonly='readonly'  id='kwota_netto" + i + 
				"' size='9' value='" + kwota_netto[i].value + "' /></td>" + 
			"<td><input type='text' name='kwota_vat[]' readonly='readonly' id='kwota_vat" + i + 
				"' size='8' value='" + kwota_vat[i].value + "' /></td>" + 
			"<td><input type='text' name='kwota_brutto[]' readonly='readonly' id='kwota_brutto" + i + 
				"' size='9' value='" + kwota_brutto[i].value + "' /></td>" + 
			
			"<td><img src='images/cross.png' class='ico' "  + 
			"onclick=\"this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode); return false\" /></td></tr>";
	}
	tmp += "<tr><td style='text-align:center'>" + (i+1) + "</td><td><input type='text' name='opis[]' size='70' value='" + arr[0] + "' /></td>" + 
			"<td><input type='text' name='ilosc[]' value='1' id='ilosc" + i + "' size='8' value='" + (arr[1]!='' ? arr[1] : '1') + "' onchange='calcRow(" + 
				i + ")' /></td>" + 
			"<td><input type='text' name='jednostka[]' size='9' value='" + (arr[4]!='' ? arr[4] : 'szt.') + "' /></td>" + 
			"<td><input type='text' name='cena_netto[]' id='cena_netto" + i + "' size='9' value='" + arr[2] + "' onchange='calcRow(" + i + 
			")' /></td>" + 
			"<td><input type='text' name='rabat[]' id='rabat" + i + "' size='3' maxlength='3' value='" + 
				arr[5] + "' onchange='calcRow(" + i + ")' />%</td>" + 
			"<td><select name='stawka_vat[]' id='stawka_vat" + i + "' onchange='calcRow(" + i + ")'>";
	for(j=0; j<id_stawki.length; j++)
	{
		tmp += "<option value='" + id_stawki[j] + "'" + (id_stawki[j]==arr[3] ? " selected='selected' " : "") + ">" + stawki_vat[j] + "</option>";
	}
	tmp += "</select></td>" + 
		"<td><input type='text' name='kwota_netto[]' readonly='readonly' id='kwota_netto" + i + "' size='9' value='' /></td>" + 
		"<td><input type='text' name='kwota_vat[]' readonly='readonly' id='kwota_vat" + i + "' size='8' value='' /></td>" + 
		"<td><input type='text' name='kwota_brutto[]' readonly='readonly' id='kwota_brutto" + i + "' size='9' value='' /></td>" + 
		"<td><img src='images/cross.png' " + 
		"class='ico' onclick=\"this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode); " + 
		"return false\" /></td></tr>";
	$('fields').innerHTML = "<table class='lista' style='text-align:center'>" + 
		"<tr><th>Lp.</th><th>Nazwa</th><th>Ilość</th><th>Jednostka</th><th>Cena netto</th><th>Rabat</th>" + 
		"<th>Stawka VAT</th><th>Wartość netto</th><th>Wartość VAT</th><th>Wartość brutto</th><th>&nbsp;</th></tr>" + 
			tmp + "</table>";
	if(arr[2]!='') calcRow(i);
}

function getChatSenders(link)
{
	callServer(link, 
		function(str) {
		var tmp = '';
		if(str!='')
		{
			if(hasNewMail!=true) makeSound('Audio1');
			hasNewMail = true;
			try {
				var arr = str.split('#');
				if(arr.length>0)
				{
					for(var i=0; i<arr.length; i++)
					{
						try {
							var element = arr[i].split('|');
							if(element.length==2)
							{
								tmp = tmp + "<a style='display:block' href='#' onclick='showChat(this, " + element[0] + 
									"); return false;'>" + element[1] + "</a>";
							}
						}
						catch(e) {
						}
					}
				}
				if(tmp!='')
				{
					$('_chat_selector').innerHTML = tmp;
				}
				else $('_chat_selector').innerHTML = '';
			}
			catch(e) {
			}
		}
		else
		{
			hasNewMail = false;
			$('_chat_selector').innerHTML = '';
		}
	});
}

function roundMe(number)
{
	number = parseFloat(number);
	return Math.round(number*100)/100;
}

function rtrim(str, charlist)
{
    charlist = !charlist ? ' \\s\u00A0' : (charlist+'').replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\\$1');
    var re = new RegExp('[' + charlist + ']+$', 'g');    return (str+'').replace(re, '');
}

function numberFormat(number, decimals, dec_point, thousands_sep)
{
    number = (number+'').replace(',', '.').replace(' ', '');
    var n = !isFinite(+number) ? 0 : +number, 
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
		dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec)
		{
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
		};
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if(s[0].length > 3)
	{
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
	}
    if((s[1] || '').length < prec)
	{
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
	return s.join(dec);
}

function makeSound(soundobj)
{
	try {
	  var thissound = document.getElementById(soundobj);
	  thissound.Play();
	}
	catch(e) {}
}

var hasNewMail = false;

// AJAX STARTS #################################################################################

var toSend = Array(); // keeps awaiting ajax calls

/* Create a new XMLHttpRequest object to talk to the Web server */
var xmlHttp = false;
var feedbackFunc = null;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
	  xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
	try {
		xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
	} catch (e2) {
		xmlHttp = false;
	}
}
@end @*/
if(!xmlHttp && typeof XMLHttpRequest != 'undefined') xmlHttp = new XMLHttpRequest();

// Wywołanie strony przez AJAXA z JS
function callServer(url, feedBack)
{
	// Open a connection to the server
	if(xmlHttp.readyState==0 || xmlHttp.readyState==4)
	{
		callUrl(url, feedBack);
		document.body.style.cursor='progress';
		//getel('topprogress').style.backgroundImage = "url(images/busy.gif)";
	}
	else toSend.push(new Array(url,feedBack));
}

// funkcja pomocnicza 
function callUrl(url, feedBack)
{
	xmlHttp.open('POST', url + '&veridcd=' + Math.floor(Math.random()*1000000), true);	// open connection
	feedbackFunc = feedBack;
	xmlHttp.onreadystatechange = updatePage;	// Setup a function for the server to run when it's done
	xmlHttp.send(null);							// Send the request
}

// feedback receive function
function updatePage()
{
	if(xmlHttp.readyState==4)
	{
		if(feedbackFunc==null)
		{
			//alert(xmlHttp.responseText);
			if(xmlHttp.responseText.substr(0, 7)=='ERRINFO')	// komunikat błędu
			{
				alert(xmlHttp.responseText.substr(10));
			}
			else
			{
				//alert(xmlHttp.responseText);
				try { giveFeedback(xmlHttp.responseText); }  catch(e) {}
			}
		}
		else	// indywidualna funkcja
		{
			//alert(xmlHttp.responseText);
			try { feedbackFunc(xmlHttp.responseText); }  catch(e) {}
			feedbackFunc = null;
		}
		
		if(toSend.length>0)
		{
			var tmp = toSend.shift();
			callUrl(tmp[0],tmp[1]);
		}
		else
		{
			document.body.style.cursor='default';
			//getel('topprogress').style.backgroundImage = "";
		}
	}
}

// AJAX ENDS #################################################################################
//jQUERY

