﻿   
function encodeEntities(val)
{
  val = val.replace(/&/g,"&amp;");
  val = val.replace(/>/g,"&gt;");
  val = val.replace(/</g,"&lt;");
  val = val.replace(/\n/g,"<br/>").replace(/\r/g,"").replace(/\s\s/g,"&nbsp; ");
  if (val.replace(/^\s+|\s+$/g, '').length == 0) val = val + "&nbsp;";
  return val;
}

function resolveEntities(val)
{
    val = val.replace(/<br>|<br\/>|<br \/>/gi, "\r\n");
    val = val.replace(/&nbsp;/gi, " ");
    val = val.replace(/&gt;/gi, ">");
    val = val.replace(/&lt;/gi, "<");
    val = val.replace(/&amp;/gi, "&");
    if (val.replace(/^\s+|\s+$/g, '').length == 0) val = "";
    return val;
    
}

function textLenCounter(s) 
{  
    var extra = 0;  

    var index = s.indexOf('\r');     
    while(index != -1) 
    {      
        extra += 1;
        index = s.indexOf('\r',index+1);
    }
    return s.length - extra;
}


function textTrimmer(s, maxlen) {
    var extra = 0;

    var index = s.indexOf('\r');
    while ((index != -1) && (index < maxlen + extra)) {
        extra += 1;
        index = s.indexOf('\r', index + 1);
    }
    return s.substring(0, maxlen + extra);
}


function checkMaxChars(textarea, maxlen)
{
  if (textLenCounter(textarea.value) > maxlen)
  {
//      textarea.value = textarea.value.substring(0, maxlen - 1);
      textarea.value = textTrimmer(textarea.value, maxlen);
      var newcount = textLenCounter(textarea.value);
      showLocalizedAlert("alert_max_len_reached", " " + maxlen);
      if (newcount > maxlen) {
          textarea.value = textTrimmer(textarea.value, maxlen - 1);
          var newcount = textLenCounter(textarea.value);
          if (newcount > maxlen) textarea.value = textarea.value.substring(0, maxlen - 1);
      }
    }
  return false;
}


function checkMaxWords(textarea, maxwords)
{
  var maxlen = maxwords * 5;
  if (textLenCounter(textarea.value) > maxlen)
  {
    textarea.value = textarea.value.substring(0, maxlen - 1);
    
    showLocalizedAlert("alert_max_len_reached", " " + maxlen);
  }
  return false;
}

	                	
function editMe(o, eventname)
{
    var c;
    if (eventname == "onblur")
    {
        var el = o.nextSibling;
        
        while (el) 
        {
            c = el.className;
            if (c == "ExpandingTextAreaDiv" || c == "SmallExpandingTextAreaDiv")
            {
               var val = o.value;
               
               val = encodeEntities(val);
               el.innerHTML = val;

               o.style.display = "none";
               el.style.display = "block";
               return;
            }
            el = o.nextSibling;
        }
    
    }

    var el = o.previousSibling;
    
    while (el) 
    {
        c = el.className;
        if (c == "ExpandingTextArea")
        {
                ta = el;
                var height = o.offsetHeight;
                
                if (height < 100) height = 100;
                
                ta.onblur = function(){ editMe(this,'onblur'); };

                ta.style.width = o.offsetWidth + "px";
                ta.style.height = height + "px";              
                
//                val = o.innerHTML;
//                val = resolveEntities(val);
                
                if (ta.value.replace(/^\s+|\s+$/g, '').length == 0) ta.value = "";



                o.style.display = "none";
                ta.style.display = "block";
                
                try {
                  ta.focus();
                } catch (e) {
                
                }
                
                
//                o.style.position = "
           break;
        }
        if(c == "SmallExpandingTextArea")
        {
                ta = el;
                var height = o.offsetHeight;
                
                if (height < 100) height = 100;
                
                ta.onblur = function(){ editMe(this,'onblur'); };

                ta.style.width = o.offsetWidth + "px";
                ta.style.height = height + "px";              
                
//                val = o.innerHTML;
//                val = resolveEntities(val);
                
                if (ta.value.replace(/^\s+|\s+$/g, '').length == 0) ta.value = "";



                o.style.display = "none";
                ta.style.display = "block";
                
                try {
                  ta.focus();
                } catch (e) {
                
                }
                
                
//                o.style.position = "
           break;
        }
        el = el.previousSibling;
    }
}

function g(name)
{
    var o = $(name);
    if (o == null)
    {
      o = document.getElementsByName(name)[0];
    }
    return o;
}


function CheckDateMonth(d)
{
    if (d)
    {
        year = d.substring(0,4);
        year -=0;
        month = d.substring(5,7);
        month -=0;
        minus = d.substring(4,5);
        
        if (year >= 2008 && year <= 2017 && month >= 1 && month <= 12 && minus == "-")
        {
          return true;
        }
    }
    return false;
}



function doPost(ignoreRules)
{

    var change_section = ($("hfCommand").value == "setArgument");

    var div_projFrom = g("old_date_from");
    if (div_projFrom) div_projFrom = div_projFrom.innerHTML;
    var div_projTo = g("old_date_to");
    if (div_projTo) div_projTo = div_projTo.innerHTML;                	    

    if (ignoreRules||(!change_section && div_projFrom && div_projFrom.length < 7))
    {
      $("form").submit();
      return;
    }



    var projFrom = g("Application/GeneralInformation/ProjectDuration/@project_duration_from");
    if (projFrom) 
    {
        projFrom = projFrom.value;
        
        if (projFrom == '')
        {
            showLocalizedAlert("alert_ProjectDuration_empty");
            return;
        }

        if (!CheckDateMonth(projFrom))
        {
          alert($("datemonth_wrong_format").innerHTML);
          return;                            
        }
    }


    var projTo = g("Application/GeneralInformation/ProjectDuration/@project_duration_to");
    if (projTo) 
    {
        projTo = projTo.value;
        if (projTo == '')
        {
            showLocalizedAlert("alert_ProjectDuration_empty");
            return;
        }
        if (!CheckDateMonth(projTo))
        {
          alert($("datemonth_wrong_format").innerHTML);
          return;                            
        }
    }                        



    if (projFrom && projTo)
    {
        if (projFrom > projTo)
        {
          var t = projFrom;
          projFrom = projTo;
          projTo = t;
          g("Application/GeneralInformation/ProjectDuration/@project_duration_to").value = projTo;
          g("Application/GeneralInformation/ProjectDuration/@project_duration_from").value = projFrom;
        }
        
        if (projFrom && projTo && div_projFrom && div_projTo)
        {
            var fromYear = projFrom.substring(0,4);
            fromYear -=0;
            var toYear = projTo.substring(0,4);
            toYear -=0;
            var org_fromYear = div_projFrom.substring(0,4);
            org_fromYear -=0;
            var org_toYear = div_projTo.substring(0,4);
            org_toYear -=0;
            
            
            if (fromYear > org_fromYear)
              if (!showLocalizedConfirmDialog("alert_later_startingdate")) return;
            if (fromYear < org_fromYear)
              if (!showLocalizedConfirmDialog("alert_earlier_startingdate")) return;
            if (toYear > org_toYear)
              if (!showLocalizedConfirmDialog("alert_later_endingdate")) return;
            if (toYear < org_toYear)
              if (!showLocalizedConfirmDialog("alert_earlier_endingdate")) return;
        }
    }

    $("form").submit();
}
                	
function showLocalizedAlert(alertKey, additional_text)
{
    if (!additional_text) additional_text="";
    if ($(alertKey) != null)
    {
       alert($(alertKey).innerHTML + additional_text);
    }
} 



function showLocalizedConfirmDialog(alertKey)
{
    if ($(alertKey) != null)
    {
        var answer = confirm($(alertKey).innerHTML);
        return answer;
    }
    else return false;
} 
              	  
function callServer(command, args, ignoreRules)
{
    $("hfCommand").value = command;
    $("hfParemeters").value = args;
    doPost(ignoreRules);
    $("hfCommand").value = "";
    $("hfParemeters").value = "";
}

function callTransform(cmdstring)
{
 callServer("callTransform", cmdstring)
}

function selectSection(sectionId)
{
 callServer("setArgument", "section," + sectionId)
}

function selectMenu(menuId, warnDataLoss, ignoreRules)
{
 if (warnDataLoss)
 {
    if ($("hfIsNew").value != "1")
    {
      if (!confirm(warnDataLoss)) return;
    }
 }
 callServer("menuAction", menuId, true)
}

function showError()
{
    SetPositionOfValidationMessage();
}
                	  
                	  
                	  
// Funkcja ustawiajaca komunikat oraz miejsce pojawienia sie okienka inforumjacego o bledzie na formularzu
function SetPositionOfValidationMessage()
{
    hideTestDiv();

    try
    { 	
	    var objectName = $('hfErrorObjectName').value;
	    var errorMessage = $('hfErrorMessage').value;

        if(objectName == 'OK')
        {
            alert(errorMessage);
            return;
        }
        
        else
        
        if(objectName != '' && objectName != 'OK')
	    {
    	    o = document.getElementsByName(objectName);
    	    if (o.length > 0) o = o[0];
    	    else
    	    {
            	var o = $(objectName);
        	    if (o == null)
        	    {
                    var val = objectName.replace(/@|\//g  , "_");
                	var o = $(val);
            	    if (o != null)
            	    {
                	    objectName = val;
            	    }
        	    }
    	    }
	        

	        o.style.position = 'static';

            var offsTop = o.offsetTop;
            var offsLeft = o.offsetLeft;

	        o.style.position = 'relative';
	        $('errorSpan').innerHTML = errorMessage;

	        $('errorDiv').style.display = 'block';


	        var objLeft = o.offsetLeft + offsLeft - 6;
	        var objWidth = o.offsetWidth;
	        var objHeight = o.offsetHeight;
	        var objTop = o.offsetTop - offsTop - objHeight - $('errorDiv').offsetHeight + 22; 
        	
        	
	        $('errorDiv').style.top = objTop+'px';
	        $('errorDiv').style.left = objLeft+'px';
        	
	        o.style.position = 'static';

    	    window.scroll(objLeft - 20, objTop - 20);
	        $('errorSpan').focus();

	    }
	    else
	    {
	    }
	}
	catch(e){}
}

// Funkcja sluzaca do ukrywania okienka informujacego o bledach na formularzu
function hideTestDiv()
{
	$('errorDiv').style.display = 'none';
}
                	  








function setSelectionRange(input, selectionStart, selectionEnd)
      {
            if (input.setSelectionRange)
            {
                  input.focus();
                  input.setSelectionRange(selectionStart, selectionEnd);
            }
            else if (input.createTextRange)
            {
                  var range = input.createTextRange();
                  range.collapse(true);
                  range.moveEnd('character', selectionEnd);
                  range.moveStart('character', selectionStart);
                  range.select();
            }
      }


function getSelectionStart(o) {
	if (o.createTextRange) {
		var r = document.selection.createRange().duplicate()
		r.moveEnd('character', o.value.length)
		if (r.text == '') return o.value.length
		return o.value.lastIndexOf(r.text)
	} else return o.selectionStart
}

function getSelectionEnd(o) {
	if (o.createTextRange) {
		var r = document.selection.createRange().duplicate()
		r.moveStart('character', -o.value.length)
		return r.text.length
	} else return o.selectionEnd
}



function formatAsMoneyInt(mnt) {
    mnt = mnt.toString();
    mnt = mnt.replace(',', '.');
    mnt -= 0;
    
    mnt = (Math.round(mnt));
    
    mnt = mnt.toString();

    for (var i = mnt.length - 3; i > 0; i-=3)
    {
        mnt = mnt.substr(0, i) + " " + mnt.substr(i, mnt.length - i);;
    }
                       
    return mnt;
}

//function formatAsMoney(mnt) {
//    mnt = mnt.toString();
//    mnt = mnt.replace(',', '.');
//    mnt -= 0;
//    
//    mnt = (Math.round(mnt*100))/100;
//    mnt = (mnt == Math.floor(mnt)) ? mnt + '.00' 
//              : ( (mnt*10 == Math.floor(mnt*10)) ? 
//                       mnt + '0' : mnt);
//    mnt = mnt.toString();
//    mnt = mnt.replace('.', ',').toString();

//    for (var i = mnt.length - 6; i > 0; i-=3)
//    {
//        mnt = mnt.substr(0, i) + " " + mnt.substr(i, mnt.length - i);;
//    }
//                       
//    return mnt;
//}

//function prepareMoneyInput(object)
//{
//    var curPos = getSelectionEnd(object);
//    var strObject = object.value;
//    var testLength = strObject.length;
//    var strObject = strObject.replace('-','');
//    
//    var strObject = strObject.replace(/[^0-9,]/gi,'');    
//    
//    var strTest = strObject.split(',');
//    
//    if(strTest.length > 2)
//    {
//        var cnt = strTest.length - 2;
//        for(var i=0; i<cnt; i++)
//        {
//            var strObject = strObject.replace(',','');    
//        }
//    }
// 
//    strTest = strObject.split(',');
// 
//    if(strTest.length > 1)
//    {
//        var lengthSecondString = strTest[1].length;
//        if(lengthSecondString > 2)
//        {
//            strObject = strObject.substring(0, strObject.length - lengthSecondString + 2);    
//        }
//    }
//    
//    if(testLength!=strObject.length)
//    {
//        object.value = strObject;
//        if (curPos < object.value.length && curPos > 0) 
//            setSelectionRange(object, curPos - 1, curPos - 1);
//    }
//    
//    
//}



function prepareMoneyInputInt(object)
{
    var curPos = getSelectionEnd(object);
    var strObject = object.value;
    var testLength = strObject.length; 
    var strObject = strObject.replace(/[^0-9]/gi,'');    
    
    if(testLength!=strObject.length)
    {
        object.value = strObject;
        if (curPos < object.value.length && curPos > 0) 
            setSelectionRange(object, curPos - 1, curPos - 1);
    }
}



function prepareInputInt(object)
{
    var curPos = getSelectionEnd(object);
    var strObject = object.value;
    var testLength = strObject.length;

    var strObject = strObject.replace(/[^0-9]/gi,'');    
    
    if(testLength!=strObject.length)
    {
        object.value = strObject;
        if (curPos < object.value.length && curPos > 0) 
            setSelectionRange(object, curPos - 1, curPos - 1);
    }
}


function eventInputMoney(src, eventname)
{
   switch (eventname){
    case 'onblur': 
        prepareMoneyInputInt(src);
        src.value = formatAsMoneyInt(src.value);
    break;
    case 'onfocus': 
      prepareMoneyInputInt(src);
      setSelectionRange(src, 0, src.value.length);
    break;
    case 'onkeyup': 
      prepareMoneyInputInt(src);
    break;
    default : alert('Niezdefiniowane zdarzenie evenet()' + eventname);
   }    
}


function eventInputInt(src, eventname)
{
   switch (eventname){
    case 'onblur': 
        prepareInputInt(src);
    break;
    case 'onfocus': 
      prepareInputInt(src);
    break;
    case 'onkeyup': 
      prepareInputInt(src);
    break;
    default : alert('Niezdefiniowane zdarzenie evenet()' + eventname);
   }    
}


function doEvent(src, eventname)
{
    switch (src.className){

    case 'InputMoney': 
      eventInputMoney(src, eventname);
    break;
    case 'InputInt': 
      eventInputInt(src, eventname);
    break;
    default :
    // alert('Niezdefiniowana klasa CSS dla ONKEY' + src.className);
    }
    
    if (src.Name == '')
    {
      
    }
}




function InputDateOnChange(src)
{
  if ($('InputDate')) $('InputDate').dispose();
}


function projectDurationFromCheck(src, previousValue)
{
  if ($('InputDate')) $('InputDate').dispose();
  
  var currdate = src.value + '-01';
	var prevdate = previousValue + '-01';

  if (previousValue != '')
	  if (!validate_date(currdate)  ) 
	  {
	    alert('alert_WrongDateFormat');
    } else 
    {
      if (currdate > prevdate )
        showLocalizedAlert('alert_ProjectDurationFrom_changed');
    }   
}

function projectDurationToCheck(src, previousValue)
{
  if ($('InputDate')) $('InputDate').dispose();
  
	var currdate = src.value + '-01';
	var prevdate = previousValue + '-01';

  if (previousValue != '')
	  if (!validate_date(currdate)  ) 
	  {
	    alert('alert_WrongDateFormat');
    } else 
    {
      if (prevdate > currdate)
        showLocalizedAlert('alert_ProjectDurationTo_changed');
    }   
}

function validate_date(date) 
{
  var regex = /^(\d{4})-(\d{1,2})-(\d{1,2})$/;
  return date.test(regex);
}

 //onload="init(); showError();"

//function resizewin(e){
//    var section_middle = $("content");	
//    section_middle.style.height = (document.body.clientHeight - 50) + "px";
//    section_middle.style.width = (document.body.clientWidth - 150) + "px";
//}

var Site = {
	start: function(){
	   init();
	   showError();
	}
}
	
//	parseKwicks: function(){
//		var kwicks = $$('#kwick .kwick');
//		var fx = new Fx.Elements(kwicks, {wait: false, duration: 200, transition: Fx.Transitions.quadOut});
//		kwicks.each(function(kwick, i){
//			kwick.addEvent('mouseenter', function(e){
//				var obj = {};
//				obj[i] = {
//					'width': [kwick.getStyle('width').toInt(), 185]
//				};
//				kwicks.each(function(other, j){
//					if (other != kwick){
//						var w = other.getStyle('width').toInt();
//						if (w != 105) obj[j] = {'width': [w, 105]};
//					}
//				});
//				fx.start(obj);
//			});
//		});
//		
//		$('kwick').addEvent('mouseleave', function(e){
//			var obj = {};
//			kwicks.each(function(other, j){
//				obj[j] = {'width': [other.getStyle('width').toInt(), 125]};
//			});
//			fx.start(obj);
//		});
//	},
//	
//	appearText: function(){
//		var timer = 0;
//		var sideblocks = $$('#sidebar li');
//		
//		var slidefxs = [];
//		var colorfxs = [];
//		
//		sideblocks.each(function(el, i){
//			el.setStyle('margin-left', '-155px');
//			timer += 150;
//			slidefxs[i] = new Fx.Style(el, 'margin-left', {
//				duration: 400,
//				transition: Fx.Transitions.backOut,
//				wait: false,
//				onComplete: Site.createOver.pass([el, i])
//			});
//			slidefxs[i].start.delay(timer, slidefxs[i], 0);

//		}, this);
//	},
//	
//	createOver: function(el, i){
//		var first = el.getFirst();
//		if (!first || first.getTag() != 'a') return;
//		var overfxs = new Fx.Styles(first, {'duration': 200, 'wait': false});
//		var tocolor, fromcolor;
//		if (first.hasClass('big')){
//			tocolor = '333';
//			fromcolor = 'fff';
//		} else {
//			tocolor = 'faec8f';
//			fromcolor = '595965';
//		}
//		el.mouseouted = true;
//		el.addEvent('mouseenter', function(e){
//			overfxs.start({
//				'color': tocolor,
//				'margin-left': 10
//			});
//		});
//		el.addEvent('mouseleave', function(e){
//			overfxs.start({
//				'color': fromcolor,
//				'margin-left': 0
//			});
//		});
//	},
//	
//	makeShadow: function(){
//		new Element('img').injectInside('container').setStyles({
//			'position': 'absolute', 'top': '0', 'margin-top': '-30px', 'left': '644px', 'z-index': '999999'
//		}).setProperties({
//			'height': $('sidebar').offsetHeight + 70, 'width': '10', 'src': '/assets/images/menubig_shadow.png'
//		});
//	}
//	
//};

//var Download = {

//	start: function(){
//		
//		var compSlide = new Fx.Slide('compression', {duration: 500, transition: Fx.Transitions.quadOut, wait: false}).hide();
//		
//		$('compression-tog').addEvent('click', function(e){
//			compSlide.toggle();
//			new Event(e).stop();
//		});
//		
//		Download.trs = $$('tr.option');
//		
//		Download.chks = $$('#download div.check');
//		
//		Download.radios = $$('#compression-options div.check');
//		
//		Download.prefs = $$('#preferences-options div.check');
//		
//		
//		Download.fx = [];
//		Download.parse();
//		
//		var allinputs = $$(Download.prefs, Download.chks, Download.radios);
//		
//		allinputs.each(function(chk){
//			chk.inputElement = chk.getElement('input');
//			chk.inputElement.setStyle('display', 'none');
//		});
//		
//		allinputs.each(function(chk){
//			if (chk.inputElement.checked) Download.select(chk);
//		});
//		
//		Download.select(Download.chks[0]);
//		
//		Download.select(Download.radios[0]);
//	},

//	select: function(chk){
//		
//		chk.inputElement.checked = 'checked';
//		
//		Download.fx[chk.index].start({
//			'background-color': '#161619',
//			'color': '#FFF'
//		});
//		
//		chk.addClass('selected');
//		
//		if (chk.deps){
//			chk.deps.each(function(id){
//				if (!$(id).hasClass('selected')) Download.select($(id));
//			});
//		} else if (chk.inputElement.type == 'radio'){
//			Download.radios.each(function(other){
//				if (other == chk) return;
//				Download.deselect(other);
//			});
//		}
//	},
//	
//	all: function(){
//		Download.chks.each(function(chk){
//			Download.select(chk);
//		});
//	},
//	
//	none: function(){
//		Download.chks.each(function(chk){
//			Download.deselect(chk);
//		});
//	},

//	deselect: function(chk){
//		chk.inputElement.checked = false;
//		Download.fx[chk.index].start({
//			'background-color': '#1d1d20',
//			'color': '#595965'
//		});
//		chk.removeClass('selected');
//		
//		if (chk.deps){
//			Download.chks.each(function(other){
//				if (other == chk) return;
//				if (other.deps.test(chk.id) && other.hasClass('selected')) Download.deselect(other);
//			});
//		}
//	},

//	parse: function(){
//		Download.trs.each(function(tr, i){
//			Download.fx[i] = new Fx.Styles(tr, {wait: false, duration: 300});

//			var chk = tr.getElement('div.check');

//			chk.index = i;
//			var dp = chk.getProperty('deps');
//			if (dp) chk.deps = dp.split(',');

//			tr.addEvent('click', function(){
//				
//				if (!chk.hasClass('selected')) Download.select(chk);
//				else if (tr.hasClass('check')) Download.deselect(chk);
//			});
//			
//			tr.addEvent('mouseenter', function(){
//				if (!chk.hasClass('selected')){
//					Download.fx[i].start({
//						'background-color': '#18181b',
//						'color': '#b3b3bb'
//					});
//				}
//			});
//			
//			tr.addEvent('mouseleave', function(){
//				if (!chk.hasClass('selected')){
//					Download.fx[i].start({
//						'background-color': '#1d1d20',
//						'color': '#595965'
//					});
//				}
//			});

//		});
//	}

//};

window.addEvent('load', Site.start);
