﻿function updateSelection( element ){
  var sourceElement = document.getElementById( element );  
  if( document.selection ){ // The current selection 
    var range = document.selection.createRange(); // We'll use this as a 'dummy' 
    var stored_range = range.duplicate(); // Select all text 
    stored_range.moveToElementText( sourceElement ); // Now move 'dummy' end point to end point of original range 
    stored_range.setEndPoint( 'EndToEnd', range ); // Now we can calculate start and end points 
    sourceElement.selectionStart = stored_range.text.length - range.text.length; 
    sourceElement.selectionEnd = sourceElement.selectionStart + range.text.length; 
  }  
}
function caret(node) {
 node.focus(); 
 /* without node.focus() IE will returns -1 when focus is not on node */
 if(node.selectionStart) return node.selectionStart;
 else if(!document.selection) return 0;
 var c		= "\001";
 var sel	= document.selection.createRange();
 var dul	= sel.duplicate();
 var len	= 0;
 dul.moveToElementText(node);
 sel.text	= c;
 len		= (dul.text.indexOf(c));
 sel.moveStart('character',-1);
 sel.text	= "";
 if (len == -1) len = node.value.length;
 return len;
}

function EditorView( editor, viewer ){
  
  var sourceElement = document.getElementById( editor );  
  var destinationElement = document.getElementById( viewer );
  var nazev = document.getElementById( 'nazev' );  
  var autor = document.getElementById( 'autor' );  
  var text = sourceElement.value;  
  var datum = new Date();
  var out = "";
  var xout = "";
  
  if (text != null && text != ''){
    out = '<div class="pismo10 justify">';        
    for (var i = 0; i < text.length; i++){    
      if (text.charAt(i) == '\n'){
        out = out + '<br />';        
      } else {
        out = out + text.charAt(i);        
      }
    }    
    out = out + '</div>';    
  }
  
  xout = "";
  for (var i = 0; i < out.length; i++){
    if (i < out.length-2 && out.charAt(i) == '<' && out.charAt(i+1) == 'b' && out.charAt(i+2) == '>'){
      xout = xout + '<strong>';
      i = i+2;
    } else if (i < out.length-3 && out.charAt(i) == '<' && out.charAt(i+1) == '/' && out.charAt(i+2) == 'b' && out.charAt(i+3) == '>'){
      xout = xout + '</strong>';
      i = i+3;
    } else {
      xout = xout + out.charAt(i);
    }    
  }      
  out = xout;

  xout = "";
  for (var i = 0; i < out.length; i++){
    if (i < out.length-2 && out.charAt(i) == '<' && out.charAt(i+1) == 'i' && out.charAt(i+2) == '>'){
      xout = xout + '<em>';
      i = i+2;
    } else if (i < out.length-3 && out.charAt(i) == '<' && out.charAt(i+1) == '/' && out.charAt(i+2) == 'i' && out.charAt(i+3) == '>'){
      xout = xout + '</em>';
      i = i+3;
    } else {
      xout = xout + out.charAt(i);
    }    
  }      
  out = xout;

  xout = "";
  for (var i = 0; i < out.length; i++){
    if (i < out.length-2 && out.charAt(i) == '<' && out.charAt(i+1) == 'u' && out.charAt(i+2) == '>'){
      xout = xout + '<span class="underline">';
      i = i+2;
    } else if (i < out.length-3 && out.charAt(i) == '<' && out.charAt(i+1) == '/' && out.charAt(i+2) == 'u' && out.charAt(i+3) == '>'){
      xout = xout + '</span>';
      i = i+3;
    } else {
      xout = xout + out.charAt(i);
    }    
  }      
  out = xout;

  xout = "";
  for (var i = 0; i < out.length; i++){
    if (i < out.length-2 && out.charAt(i) == '<' && out.charAt(i+1) == 'c' && out.charAt(i+2) == '>'){
      xout = xout + '<div class="center">';
      i = i+2;
    } else if (i < out.length-3 && out.charAt(i) == '<' && out.charAt(i+1) == '/' && out.charAt(i+2) == 'c' && out.charAt(i+3) == '>'){
      xout = xout + '</div>';
      i = i+3;
    } else {
      xout = xout + out.charAt(i);
    }    
  }      
  out = xout;
  
  xout = "";
  for (var i = 0; i < out.length; i++){
    if (i < out.length-2 && out.charAt(i) == '<' && out.charAt(i+1) == 'm' && out.charAt(i+2) == '>'){
      xout = xout + '<div class="small">';
      i = i+2;
    } else if (i < out.length-3 && out.charAt(i) == '<' && out.charAt(i+1) == '/' && out.charAt(i+2) == 'm' && out.charAt(i+3) == '>'){
      xout = xout + '</div>';
      i = i+3;
    } else {
      xout = xout + out.charAt(i);
    }    
  }      
  out = xout;
    
  out = '<img src="./img/illustration.jpg" style="float: left; margin-right: 10px;"> ' + out;      
  out = '<div class="report_info"><strong>Datum</strong>: ' + datum.getDate() + '.' + datum.getMonth() + '.' + datum.getYear() + ' :: <strong>Autor</strong>: ' + autor.value + '</div>' + out;
  out = '<h3>' + nazev.value + '</h3>' + out;
  
  destinationElement.innerHTML = out;  
  return true;  
}

function MakeBold( editor, viewer ){    
  updateSelection( editor );
  var sourceElement = document.getElementById( editor );  
  if (sourceElement.selectionStart != sourceElement.selectionEnd) {
    var text = sourceElement.value.substring(sourceElement.selectionStart,sourceElement.selectionEnd);
    text = '<b>' + text + '</b>';
    var out = sourceElement.value.substring(0,sourceElement.selectionStart) + text + sourceElement.value.substring(sourceElement.selectionEnd,sourceElement.value.length);  
    sourceElement.value = out;
    EditorView( editor, viewer );
  }
  sourceElement.focus();
}

function MakeItalic( editor, viewer ){    
  updateSelection( editor );
  var sourceElement = document.getElementById( editor );  
  if (sourceElement.selectionStart != sourceElement.selectionEnd) {
    var text = sourceElement.value.substring(sourceElement.selectionStart,sourceElement.selectionEnd);
    text = '<i>' + text + '</i>';
    var out = sourceElement.value.substring(0,sourceElement.selectionStart) + text + sourceElement.value.substring(sourceElement.selectionEnd,sourceElement.value.length);  
    sourceElement.value = out;
    EditorView( editor, viewer );
  }
  sourceElement.focus();
}

function MakeUnderline( editor, viewer ){    
  updateSelection( editor );
  var sourceElement = document.getElementById( editor );  
  if (sourceElement.selectionStart != sourceElement.selectionEnd) {
    var text = sourceElement.value.substring(sourceElement.selectionStart,sourceElement.selectionEnd);
    text = '<u>' + text + '</u>';
    var out = sourceElement.value.substring(0,sourceElement.selectionStart) + text + sourceElement.value.substring(sourceElement.selectionEnd,sourceElement.value.length);  
    sourceElement.value = out;
    EditorView( editor, viewer );
  }
  sourceElement.focus();
}

function InsertLink( editor, viewer ){
  updateSelection( editor );
  var sourceElement = document.getElementById( editor );            
  if (sourceElement.selectionStart != sourceElement.selectionEnd) {
    var text;
    var url;
    var nazev = sourceElement.value.substring(sourceElement.selectionStart,sourceElement.selectionEnd);
    url = prompt('Zadejte URL adresu, kam má odkaz směřovat','http://www.');    
    if (url != null && nazev != null){
      text = ' <a href="' + url + '">' + nazev + '</a> ';
      var out = sourceElement.value.substring(0,sourceElement.selectionStart) + text + sourceElement.value.substring(sourceElement.selectionEnd,sourceElement.value.length);  
      sourceElement.value = out;
      EditorView( editor, viewer );  
    }
  }
  sourceElement.focus();
}

function MakeCenter( editor, viewer ){    
  updateSelection( editor );
  var sourceElement = document.getElementById( editor );  
  if (sourceElement.selectionStart != sourceElement.selectionEnd) {
    var text = sourceElement.value.substring(sourceElement.selectionStart,sourceElement.selectionEnd);
    text = '<c>' + text + '</c>';
    var out = sourceElement.value.substring(0,sourceElement.selectionStart) + text + sourceElement.value.substring(sourceElement.selectionEnd,sourceElement.value.length);  
    sourceElement.value = out;
    EditorView( editor, viewer );
  }
  sourceElement.focus();
}

function MakeSmall( editor, viewer ){    
  updateSelection( editor );
  var sourceElement = document.getElementById( editor );  
  if (sourceElement.selectionStart != sourceElement.selectionEnd) {
    var text = sourceElement.value.substring(sourceElement.selectionStart,sourceElement.selectionEnd);
    text = '<m>' + text + '</m>';
    var out = sourceElement.value.substring(0,sourceElement.selectionStart) + text + sourceElement.value.substring(sourceElement.selectionEnd,sourceElement.value.length);  
    sourceElement.value = out;
    EditorView( editor, viewer );
  }
  sourceElement.focus();
}

function MakeList( editor, viewer ){
  updateSelection( editor );
  var sourceElement = document.getElementById( editor );  
  if (sourceElement.selectionStart != sourceElement.selectionEnd) {
    var text = sourceElement.value.substring(sourceElement.selectionStart,sourceElement.selectionEnd);
    var textout = '<ul><li>';    
    for (var i = 0; i < text.length; i++){
      if (text.charAt(i+1) == '\n') {
        textout = textout + '</li><li>';        
        i++;
      } else {
        textout = textout + text.charAt(i);
      }
    }
    textout = textout + '</li></ul>';    
    var out = sourceElement.value.substring(0,sourceElement.selectionStart) + textout + sourceElement.value.substring(sourceElement.selectionEnd,sourceElement.value.length);  
    sourceElement.value = out;
    EditorView( editor, viewer );
  }
  sourceElement.focus();
}



function InsertImage( editor, viewer ){  
  var sourceElement = document.getElementById( editor );    
  var caret_pos = caret(sourceElement);  
  var text;
  var nazev = prompt('Zadejte nazev obrazku','Neznamy nazev');
  var zarovnani = prompt('Zadejte zarovnani ("left" nebo "right")','left');
  var sirka = prompt('Zadejte sirku v pixelech','100');
  var vyska = prompt('Zadejte vysku v pixelech','70');  
  if (zarovnani != null && nazev != null && sirka != null && vyska != null){
    text = ' <div style="float: '+zarovnani+'; width: '+sirka+'px; height: '+vyska+'px; border: 1px solid black;"> Obr. ' + nazev + '</div> ';
    var out = sourceElement.value.substring(0,caret_pos) + text + sourceElement.value.substring(caret_pos,sourceElement.value.length);  
    sourceElement.value = out;
    EditorView( editor, viewer );  
  }
  sourceElement.focus();
}

function InsertReport( form ){  
  form.text.value = document.getElementById('source').value;
  return true;
}
