/**
*
*  URL encode / decode
*  http://www.webtoolkit.info/
*
**/

var Url = {

	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},

	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},

	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		string = string.replace(/\//g,"%2F");
		string = string.replace(/\\/g,"%5C");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while ( i < utftext.length ) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}
}


$('.editable').live('click', function() {

	var oldContent = $(this).text();
	$(this).html('<input class="editedvalue" style="border:none" value="'+oldContent+'"/>');
	$(this).removeClass('editable');
	
	var inputObj = $(this).children('input');
	inputObj.css('text-align', $(this).css('text-align'));
	inputObj.css('color', $(this).css('color'));
	inputObj.css('background-color', $(this).css('background-color'));
	inputObj.select().focus();
});


function getElementsByClass(searchClass,node,tag) {
        var classElements = new Array();
        if ( node == null )
                node = document;
        if ( tag == null )
                tag = '*';
        var els = node.getElementsByTagName(tag);
        var elsLen = els.length;
        var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
        for (i = 0, j = 0; i < elsLen; i++) {
                if ( pattern.test(els[i].className) ) {
                        classElements[j] = els[i];
                        j++;
                }
        }
        return classElements;
}


//
// getStyle()
// Gets current style of element el and style styleProp
//
function getStyle(el,styleProp)
{
	var x = document.getElementById(el);
	if (x.currentStyle)
		var y = x.currentStyle[styleProp];
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
	return y;
}


//
// showHide()
// Toggles element 'elemId'
//
function showHide(elemId, typ){

	var state;
	var obj = document.getElementById(elemId);

	if (obj) {
		if (getStyle(elemId, 'display') == 'none') {
			obj.style.display = typ
		} else {
			obj.style.display = 'none'
		}
	}
}



//
// showHideAll()
// Toggles all elements of declared class name
//
function showHideAll(className, attrValue){

	var objs = getElementsByClass(className);

	for (var S = 0; S < objs.length; S++) {

		if (objs[S]) {
			objs[S].style.display = attrValue
		}
	}
}


function welcomeSubmit(recno,avf) {

	var dowod       = Url.encode(document.getElementById('dowod'+recno).value);
	var numerdow    = Url.encode(document.getElementById('numerdow'+recno).value);
	var meldunek    = Url.encode(document.getElementById('meldunek'+recno).value);
	var obecny      = Url.encode(document.getElementById('obecny'+recno).checked ? 't' : 'f');
	var akredytacja = Url.encode(document.getElementById('akredytacja'+recno).value);
	var person_id   = Url.encode(document.getElementById('person_id'+recno).value);

	sourceURL = 'dowod='+dowod+'&numerdow='+numerdow+'&meldunek='+meldunek+'&obecny='+obecny+'&akredytacja='+akredytacja+'&person_id='+person_id+'&avf='+avf;
	location.href = 'welcome,save,' + sourceURL;
}


function newsCzasNow() {

	var data = document.getElementById('data');
	var hdata = document.getElementById('hdata');
	var now = document.getElementById('now');

	if (now.checked) {
		hdata.value = data.value;
		data.value = '';
		data.disabled = true;
	} else {
		data.value = hdata.value;
		data.disabled = false;
	}
}


function cennikAktualizujSume() {

	var kwota = new Array;
	var grupa = 0;
	var suma = 0;
	var dolicz_vat = false;

	var wartosci;
	$('select').each(function() {

		grupa = $(this).val().split(':')[2];

		if ($(this).val().split(':')[0] == '--') {
			kwota[grupa] = '--';
		} else {
			kwota[grupa] = parseFloat($(this).val().split(':')[0]);
		}
		if ($(this).val().split(':')[1] == 't') {
			dolicz_vat = true;
		}

		if (grupa != 2 && grupa != 3) {
			suma += kwota[grupa];
		}
	});

	suma += kwota[2];
	suma += (kwota[2] + kwota[3] > 0 ? kwota[3] : -kwota[2]);

	if (suma > 0) {
		if (dolicz_vat) {
			$('#suma').html(suma.toFixed(2).toString() + ' netto, ' + (suma*1.23).toFixed(2).toString() + ' z VAT');
		} else {
			$('#suma').html(suma.toFixed(2).toString());
		}
	} else {
		$('#suma').html('--');
	}
}



function toggleAutorzy() {

	var id = $("#autorzy").val().split('||')[0];
	var imie_nazwisko = $("#autorzy").val().split('||')[1];
	var bio = $("#autorzy").val().split('||')[2];
	var telefon = $("#autorzy").val().split('||')[3];

	if (id > 0) {
		$("#imie_nazwisko").val(imie_nazwisko);
		$("#bio").val(bio);
		$("#telefon").val(telefon);
	} else {
		$("#imie_nazwisko").val('');
		$("#bio").val('');
		$("#telefon").val('');
	}
}


function podgladHTML(obiekt) {

	var tresc = $('#'+obiekt).val();
	var warstwa = $('#podglad'+obiekt);
	if (warstwa.css('display') == 'none') {
		warstwa.html(tresc);
		warstwa.fadeIn('fast');
		warstwa.click(function() { warstwa.fadeOut('slow') });
		warstwa.mouseleave(function() { warstwa.fadeOut('slow') });
	} else {
		warstwa.fadeOut('slow');
	}
}


function myCheckboxCheck(id) {

	var cb = $('#cb'+id);
	var cbinput = $('#cbv'+id);

	if (cbinput.val() == 't') {
		cb.removeClass('checked').addClass('unchecked');
		cbinput.val('f');
	} else {
		cb.removeClass('unchecked').addClass('checked');
		cbinput.val('t');
	}
}


function checkLength(obj, min, max, zakrotka, zadluga) {

	if (obj.val().length > max) {
		obj.addClass('ui-state-error');
		alert(zadluga);
		return false;
	} else if (obj.val().length < min) {
		obj.addClass('ui-state-error');
		alert(zakrotka);
		return false;
	} else {
		return true;
	}
}


function checkRange(obj, min, max, trescbledu) {

	if (obj.val() > max || obj.val() < min) {
		obj.addClass('ui-state-error');
		alert(trescbledu);
		return false;
	} else {
		return true;
	}
}


function checkRegexp(obj, regexp, trescbledu) {

	if (!(regexp.test(obj.val()))) {
		obj.addClass('ui-state-error');
		alert(trescbledu);
		return false;
	} else {
		return true;
	}
}


function isDate(obj, trescbledu) {

	var result, value = obj.val();

    try {

        value = value.replace("/", "-").replace(".", "-");
        var SplitValue = value.split("-");
        var OK = true;

        OK = (OK && SplitValue[0].length == 4);
        OK = (OK && SplitValue[1].length == 2);
        OK = (OK && SplitValue[2].length == 2);

        if (OK) {
            var Year = parseInt(SplitValue[0], 10);
            var Month = parseInt(SplitValue[1], 10);
            var Day = parseInt(SplitValue[2], 10);

            if (OK = ((Year > 1900) && (Year <= new Date().getFullYear()))) {
                if (OK = (Month <= 12 && Month > 0)) {
                    var LeapYear = (((Year % 4) == 0) && ((Year % 100) != 0) || ((Year % 400) == 0));

                    if (Month == 2) {
                        OK = LeapYear ? Day <= 29 : Day <= 28;
                    }
                    else {
                        if ((Month == 4) || (Month == 6) || (Month == 9) || (Month == 11)) {
                            OK = (Day > 0 && Day <= 30);
                        }
                        else {
                            OK = (Day > 0 && Day <= 31);
                        }
                    }
                }
            }
        }
        result = OK;
    }

    catch (e) {
        result = false;
    }

	if (!result) {
		obj.addClass('ui-state-error');
		alert(trescbledu);
	}

	return result;
}

