
// THIS FILE IS PART OF WEBMATIC3 (Webmatic cube)
// www.valarsoft.com

function wm3_getBBCodeArray()
 {
  return new Array('img','/img','url','/url','left','/left','center','/center','right','/right','b','/b','i','/i','u','/u','br','hr','sp','more',
                   ':)',':o',':p','lD',':(','|)',';)','B)','|(',':/',':|','8|',':s',':D');
 }

function wm3_imgAdmin(obj_form,obj_textarea,obj_mode,section,WM3_cPATH_IMAGES)
 {
  var tagOpen = tagClose = '';
  var image_url,image_border;

  if(obj_form.img_picture) 
   if(obj_form.img_picture.value != 0) 
    {
     image_url    = WM3_cPATH_IMAGES + obj_form.img_picture.value;
     image_border = obj_form.img_border.value;
     wm3_img(obj_textarea,obj_mode,image_url,image_border);
    }
 }

function wm3_aAdmin(obj_form,obj_textarea,obj_mode,section,label)
 {
  var tagOpen = tagClose = '';
  var link_url;
  var selection;

  if(obj_form.a_text) if(obj_form.a_text.value != '') label = obj_form.a_text.value;
  if(obj_form.a_url.value != 0) link_url = obj_form.a_url.value;
  else
   {
	if(obj_form.a_link)
     if(obj_form.a_link.value != 0)
      link_url = 'index.php?section='+section+'&pageID='+obj_form.a_link.value;
   }
  selection = wm3_getSelection(obj_textarea);
  if(selection) label = '';
  if(link_url) wm3_url(obj_textarea,obj_mode,link_url,label);
 }

function wm3_hr(obj_form,obj_textarea,obj_mode)
 {
  var tagOpen = tagClose = '';

  if(obj_mode.value == WM3_cRENDER_MODE_HTML)
   {
    tagOpen = '<hr ';
    tagOpen = tagOpen+'width="'+obj_form.hr_width.value+'%"';
    if(obj_form.hr_align[obj_form.hr_align.selectedIndex].value == 1) tagOpen = tagOpen+' align="left"';
    if(obj_form.hr_align[obj_form.hr_align.selectedIndex].value == 2) tagOpen = tagOpen+' align="center"';
    if(obj_form.hr_align[obj_form.hr_align.selectedIndex].value == 3) tagOpen = tagOpen+' align="right"';
    if(obj_form.hr_size.value >= 0) tagOpen = tagOpen+' size="'+obj_form.hr_size.value+'"';
    tagOpen  = tagOpen+'>';
   }
  if(obj_mode.value == WM3_cRENDER_MODE_PLAIN_TEXT) tagOpen = '\n-------------------------\n';
  if(obj_mode.value == WM3_cRENDER_MODE_BB_CODE)    tagOpen = '[hr]';
  if(obj_mode.value == WM3_cRENDER_MODE_HTML_BB_CODE)
   {
    tagOpen = '<hr ';
    tagOpen = tagOpen+'width="'+obj_form.hr_width.value+'%"';
    if(obj_form.hr_align[obj_form.hr_align.selectedIndex].value == 1) tagOpen = tagOpen+' align="left"';
    if(obj_form.hr_align[obj_form.hr_align.selectedIndex].value == 2) tagOpen = tagOpen+' align="center"';
    if(obj_form.hr_align[obj_form.hr_align.selectedIndex].value == 3) tagOpen = tagOpen+' align="right"';
    if(obj_form.hr_size.value >= 0) tagOpen = tagOpen+' size="'+obj_form.hr_size.value+'"';
    tagOpen  = tagOpen+'>';
   }
  wm3_addTag(tagOpen,tagClose,obj_textarea,true);
 }

function wm3_smile(name,obj_textarea,obj_mode)
 {
  var tagOpen = tagClose = '';

  if(obj_mode.value == WM3_cRENDER_MODE_HTML || obj_mode.value == WM3_cRENDER_MODE_HTML_BB_CODE)
   {
    if(name == ':)') name = 's1.png';  if(name == ':o') name = 's2.png';
    if(name == ':p') name = 's3.png';  if(name == 'lD') name = 's4.png';
    if(name == ':(') name = 's5.png';  if(name == '|)') name = 's6.png';
    if(name == ';)') name = 's7.png';  if(name == 'B)') name = 's8.png';
    if(name == '|(') name = 's9.png';  if(name == ':/') name = 's10.png';
    if(name == ':|') name = 's11.png'; if(name == '8|') name = 's12.png';
    if(name == ':s') name = 's13.png'; if(name == ':D') name = 's14.png';
    tagOpen  = '<img src="'+WM3_cPATH_EMOTICONS+name+'" align="absmiddle">';
   }
  if(obj_mode.value == WM3_cRENDER_MODE_PLAIN_TEXT) tagOpen = name;
  if(obj_mode.value == WM3_cRENDER_MODE_BB_CODE)    tagOpen = '['+name+']';
  wm3_addTag(tagOpen,tagClose,obj_textarea,true);
 }

function wm3_br(obj_textarea,obj_mode)
 {
  var tagOpen = tagClose = '';

  if(obj_mode.value == WM3_cRENDER_MODE_HTML)         tagOpen = '<br>';
  if(obj_mode.value == WM3_cRENDER_MODE_PLAIN_TEXT)   tagOpen = '\n';
  if(obj_mode.value == WM3_cRENDER_MODE_BB_CODE)      tagOpen = '[br]';
  if(obj_mode.value == WM3_cRENDER_MODE_HTML_BB_CODE) tagOpen = '<br>';
  wm3_addTag(tagOpen,tagClose,obj_textarea,true);
 }

function wm3_nbsp(obj_textarea,obj_mode)
 {
  var tagOpen = tagClose = '';

  if(obj_mode.value == WM3_cRENDER_MODE_HTML)         tagOpen = '&nbsp;';
  if(obj_mode.value == WM3_cRENDER_MODE_PLAIN_TEXT)   tagOpen = ' ';
  if(obj_mode.value == WM3_cRENDER_MODE_BB_CODE)      tagOpen = '[sp]';
  if(obj_mode.value == WM3_cRENDER_MODE_HTML_BB_CODE) tagOpen = '&nbsp;';
  wm3_addTag(tagOpen,tagClose,obj_textarea,true);
 }

function wm3_b(obj_textarea,obj_mode)
 {
  var tagOpen = tagClose = '';

  if(obj_mode.value == WM3_cRENDER_MODE_HTML)         { tagOpen = '<b>'; tagClose = '</b>'; }
  if(obj_mode.value == WM3_cRENDER_MODE_BB_CODE)      { tagOpen = '[b]'; tagClose = '[/b]'; }
  if(obj_mode.value == WM3_cRENDER_MODE_HTML_BB_CODE) { tagOpen = '<b>'; tagClose = '</b>'; }
  wm3_addTag(tagOpen,tagClose,obj_textarea);
 }

function wm3_i(obj_textarea,obj_mode)
 {
  var tagOpen = tagClose = '';

  if(obj_mode.value == WM3_cRENDER_MODE_HTML)         { tagOpen = '<i>'; tagClose = '</i>'; }
  if(obj_mode.value == WM3_cRENDER_MODE_BB_CODE)      { tagOpen = '[i]'; tagClose = '[/i]'; }
  if(obj_mode.value == WM3_cRENDER_MODE_HTML_BB_CODE) { tagOpen = '<i>'; tagClose = '</i>'; }
  wm3_addTag(tagOpen,tagClose,obj_textarea);
 }

function wm3_u(obj_textarea,obj_mode)
 {
  var tagOpen = tagClose = '';

  if(obj_mode.value == WM3_cRENDER_MODE_HTML)         { tagOpen = '<u>'; tagClose = '</u>'; }
  if(obj_mode.value == WM3_cRENDER_MODE_BB_CODE)      { tagOpen = '[u]'; tagClose = '[/u]'; }
  if(obj_mode.value == WM3_cRENDER_MODE_HTML_BB_CODE) { tagOpen = '<u>'; tagClose = '</u>'; }
  wm3_addTag(tagOpen,tagClose,obj_textarea);
 }

function wm3_alignLeft(obj_textarea,obj_mode)
 {
  var tagOpen = tagClose = '';

  if(obj_mode.value == WM3_cRENDER_MODE_HTML)         { tagOpen = '<div align="left">'; tagClose = '</div>';  }
  if(obj_mode.value == WM3_cRENDER_MODE_BB_CODE)      { tagOpen = '[left]';             tagClose = '[/left]'; }
  if(obj_mode.value == WM3_cRENDER_MODE_HTML_BB_CODE) { tagOpen = '<div align="left">'; tagClose = '</div>';  }
  wm3_addTag(tagOpen,tagClose,obj_textarea);
 }

function wm3_alignCenter(obj_textarea,obj_mode)
 {
  var tagOpen = tagClose = '';

  if(obj_mode.value == WM3_cRENDER_MODE_HTML)         { tagOpen = '<div align="center">'; tagClose = '</div>';    }
  if(obj_mode.value == WM3_cRENDER_MODE_BB_CODE)      { tagOpen = '[center]';             tagClose = '[/center]'; }
  if(obj_mode.value == WM3_cRENDER_MODE_HTML_BB_CODE) { tagOpen = '<div align="center">'; tagClose = '</div>';    }
  wm3_addTag(tagOpen,tagClose,obj_textarea);
 }

function wm3_alignRight(obj_textarea,obj_mode)
 {
  var tagOpen = tagClose = '';

  if(obj_mode.value == WM3_cRENDER_MODE_HTML)         { tagOpen = '<div align="right">'; tagClose = '</div>';   }
  if(obj_mode.value == WM3_cRENDER_MODE_BB_CODE)      { tagOpen = '[right]';             tagClose = '[/right]'; }
  if(obj_mode.value == WM3_cRENDER_MODE_HTML_BB_CODE) { tagOpen = '<div align="right">'; tagClose = '</div>';   }
  wm3_addTag(tagOpen,tagClose,obj_textarea);
 }

function wm3_img(obj_textarea,obj_mode,image_url,image_border)
 {
  var tagOpen = tagClose = '';

  if(obj_mode.value == WM3_cRENDER_MODE_HTML)         tagOpen = '<img src="'+image_url+'" border="'+image_border+'">';
  if(obj_mode.value == WM3_cRENDER_MODE_PLAIN_TEXT)   tagOpen = ' '+image_url+' ';
  if(obj_mode.value == WM3_cRENDER_MODE_BB_CODE)      tagOpen = '[img]'+image_url+'[/img]';
  if(obj_mode.value == WM3_cRENDER_MODE_HTML_BB_CODE) tagOpen = '<img src="'+image_url+'" border="'+image_border+'">';
  wm3_addTag(tagOpen,tagClose,obj_textarea,true);
 }

function wm3_url(obj_textarea,obj_mode,link_url,label)
 {
  var tagOpen = tagClose = '';
  var no_selection = false; // If true will not render the selection

  if(obj_mode.value == WM3_cRENDER_MODE_HTML)         { tagOpen = '<a href="'+link_url+'">'; tagClose = label+'</a>'; }
  if(obj_mode.value == WM3_cRENDER_MODE_PLAIN_TEXT)   { tagOpen = ' '+link_url+' ';                                   no_selection = true; }
  if(obj_mode.value == WM3_cRENDER_MODE_BB_CODE)      { tagOpen = '[url]'+link_url;          tagClose = '[/url]';     no_selection = true; }
  if(obj_mode.value == WM3_cRENDER_MODE_HTML_BB_CODE) { tagOpen = '<a href="'+link_url+'">'; tagClose = label+'</a>'; }
  wm3_addTag(tagOpen,tagClose,obj_textarea,no_selection);
 }

function wm3_more(obj_textarea)
 {
  var tagOpen = tagClose = '';

  tagOpen  = '[more]';
  wm3_addTag(tagOpen,tagClose,obj_textarea);
 }

function wm3_code(obj_textarea,obj_mode)
 {
  var tagOpen = tagClose = '';

  if(obj_mode.value == WM3_cRENDER_MODE_BB_CODE)      { tagOpen = '[code]'; tagClose = '[/code]'; }
  if(obj_mode.value == WM3_cRENDER_MODE_HTML_BB_CODE) { tagOpen = '[code]'; tagClose = '[/code]'; }  
  wm3_addTag(tagOpen,tagClose,obj_textarea);
 }

function wm3_preview(obj_textarea,obj_mode,skin,flag_news)
 {
  var wm3_preview;

  wm3_preview = window.open('','Preview','width=500,height=400,scrollbars=yes');
  wm3_preview.close();
  wm3_preview = window.open('','Preview','width=500,height=400,scrollbars=yes');
  wm3_preview.focus();
  wm3_preview.document.write('<link rel="stylesheet" href="'+skin+'" type="text/css" />');
  wm3_preview.document.write('<title>Webmatic (Preview)</title>');
  wm3_preview.document.write(WM3_cPREVIEW_CSS_START+wm3_renderPreview(obj_textarea.value,obj_mode,flag_news)+WM3_cPREVIEW_CSS_END);
 }

function wm3_renderPreview(str,obj_mode,flag_news)
 {
  if(obj_mode.value == WM3_cRENDER_MODE_HTML)         return wm3_getHtmlText(str,flag_news);                                 // HTML
  if(obj_mode.value == WM3_cRENDER_MODE_PLAIN_TEXT)   return wm3_getPlainText(str,flag_news);                                // Plain text
  if(obj_mode.value == WM3_cRENDER_MODE_BB_CODE)      return wm3_getBBCodeText(wm3_getPlainText(str,false),flag_news,false); // BB code
  if(obj_mode.value == WM3_cRENDER_MODE_HTML_BB_CODE) return wm3_getBBCodeText(str,flag_news,true);                          // BB code and HTML
 }

function wm3_getHtmlText(str,flag_news)
 {
  // Create normal HTML string
  if(flag_news) return str.replace('[more]',wm3_renderMore()); // Replace only the first occurrence
  else          return str;
 }

function wm3_getPlainText(str,flag_news)
 {
  // Create a plain text string

  // Replace html entities
  str = wm3_charReplace(str,'&','&amp;');
  str = wm3_charReplace(str,' ','&nbsp;');
  str = wm3_charReplace(str,'<','&lt;');
  str = wm3_charReplace(str,'>','&gt;');
  str = wm3_charReplace(str,'\n','<br>'); // Replece new line with <br>
  if(flag_news) str = str.replace('[more]',wm3_renderMore()); // Replace only the first occurrence
  return str;
 }

function wm3_getBBCodeText(str,flag_news,flag_code)
 {
  // Replace bbcode with relative html code for preview
  var _ARRAY;
  var s_pos,e_pos,code,len,p1,p2,tl;

  // Code
  tl = '[code]'.length; s_pos = str.indexOf('[code]'); e_pos = str.indexOf('[/code]');
  
  _ARRAY = wm3_getBBCodeArray();
  while(s_pos < e_pos)
   {
    len  = str.length;
    p1   = str.substr(0,s_pos);
    p2   = str.substr(e_pos+tl+1,len);
    code = str.substr(s_pos,len-s_pos-p2.length);
	if(flag_code) code = wm3_getPlainText(code,false);	
	for(i = 0; i < _ARRAY.length; i++) code = wm3_replaceText(code,'['+_ARRAY[i]+']','&#91;'+_ARRAY[i]+'&#93;');
    code = code.replace('[code]','');
    code = code.replace('[/code]','');
    code = WM3_cCODE_CSS_START + code + WM3_cCODE_CSS_END;
    str = p1+code+p2;
    s_pos = str.indexOf('[code]');
    e_pos = str.indexOf('[/code]');
   }

  // Img
  tl = '[img]'.length; s_pos = str.indexOf('[img]'); e_pos = str.indexOf('[/img]');
  while(s_pos < e_pos)
   {
    len  = str.length;
    p1   = str.substr(0,s_pos);
    p2   = str.substr(e_pos+tl+1,len);
    code = str.substr(s_pos,len-s_pos-p2.length);
	if( wm3_isImageUrlRelative(code.substr(tl,code.length-(2*tl+1))) ||
	    wm3_isImageUrl        (code.substr(tl,code.length-(2*tl+1))) )
     {
      code = code.replace('[img]','<img src="');
      code = code.replace('[/img]','">');
     }
    else
     {
      code = code.replace('[img]','[img ]');
      code = code.replace('[/img]','[/img ]');
     }
    str   = p1+code+p2;
    s_pos = str.indexOf('[img]');
    e_pos = str.indexOf('[/img]');
   }

  // Url
  tl = '[url]'.length; s_pos = str.indexOf('[url]'); e_pos = str.indexOf('[/url]');
  while(s_pos < e_pos)
   {
    len  = str.length;
    p1   = str.substr(0,s_pos);
    p2   = str.substr(e_pos+tl+1,len);
    code = str.substr(s_pos,len-s_pos-p2.length);
	if( wm3_isUrlRelative(code.substr(tl,code.length-(2*tl+1))) ||
	    wm3_isUrl        (code.substr(tl,code.length-(2*tl+1))) )
     {
      code = code.replace('[url]','<a href="'+code.substr(tl,code.length-(2*tl+1))+'" target="_blank">');
      code = code.replace('[/url]','</a>');
     }
    else
     {
      code = code.replace('[url]','[url ]');
      code = code.replace('[/url]','[/url ]');
     }
    str   = p1+code+p2;
    s_pos = str.indexOf('[url]');
    e_pos = str.indexOf('[/url]');
   }

  // Left
  tl = '[left]'.length; s_pos = str.indexOf('[left]'); e_pos = str.indexOf('[/left]');
  while(s_pos < e_pos)
   {
    len   = str.length;
    p1    = str.substr(0,s_pos);
    p2    = str.substr(e_pos+tl+1,len);
    code  = str.substr(s_pos,len-s_pos-p2.length);
    code  = code.replace('[left]','<div align="left">');
    code  = code.replace('[/left]','</div>');
    str   = p1+code+p2;
    s_pos = str.indexOf('[left]');
    e_pos = str.indexOf('[/left]');
   }
  // Center
  tl = '[center]'.length; s_pos = str.indexOf('[center]'); e_pos = str.indexOf('[/center]');
  while(s_pos < e_pos)
   {
    len   = str.length;
    p1    = str.substr(0,s_pos);
    p2    = str.substr(e_pos+tl+1,len);
    code  = str.substr(s_pos,len-s_pos-p2.length);
    code  = code.replace('[center]','<div align="center">');
    code  = code.replace('[/center]','</div>');
    str   = p1+code+p2;
    s_pos = str.indexOf('[center]');
    e_pos = str.indexOf('[/center]');
   }
  // Right
  tl = '[right]'.length; s_pos = str.indexOf('[right]'); e_pos = str.indexOf('[/right]');
  while(s_pos < e_pos)
   {
    len   = str.length;
    p1    = str.substr(0,s_pos);
    p2    = str.substr(e_pos+tl+1,len);
    code  = str.substr(s_pos,len-s_pos-p2.length);
    code  = code.replace('[right]','<div align="right">');
    code  = code.replace('[/right]','</div>');
    str   = p1+code+p2;
    s_pos = str.indexOf('[right]');
    e_pos = str.indexOf('[/right]');
   }

  // Other tags
  str = wm3_replaceText(str,'[b]','<b>');   str = wm3_replaceText(str,'[/b]','</b>');
  str = wm3_replaceText(str,'[i]','<i>');   str = wm3_replaceText(str,'[/i]','</i>');
  str = wm3_replaceText(str,'[u]','<u>');   str = wm3_replaceText(str,'[/u]','</u>');
  str = wm3_replaceText(str,'[br]','<br>'); str = wm3_replaceText(str,'[sp]','&nbsp;');
  str = wm3_replaceText(str,'[hr]','<hr>');
  if(flag_news) str = str.replace('[more]',wm3_renderMore()); // Replace only the first occurrence
  str = wm3_replaceText(str,'[:)]','<img src="'+WM3_cPATH_EMOTICONS+'s1.png"  width="16" height="16" align="absmiddle">');
  str = wm3_replaceText(str,'[:o]','<img src="'+WM3_cPATH_EMOTICONS+'s2.png"  width="16" height="16" align="absmiddle">');
  str = wm3_replaceText(str,'[:p]','<img src="'+WM3_cPATH_EMOTICONS+'s3.png"  width="16" height="16" align="absmiddle">');
  str = wm3_replaceText(str,'[lD]','<img src="'+WM3_cPATH_EMOTICONS+'s4.png"  width="16" height="16" align="absmiddle">');
  str = wm3_replaceText(str,'[:(]','<img src="'+WM3_cPATH_EMOTICONS+'s5.png"  width="16" height="16" align="absmiddle">');
  str = wm3_replaceText(str,'[|)]','<img src="'+WM3_cPATH_EMOTICONS+'s6.png"  width="16" height="16" align="absmiddle">');
  str = wm3_replaceText(str,'[;)]','<img src="'+WM3_cPATH_EMOTICONS+'s7.png"  width="16" height="16" align="absmiddle">');
  str = wm3_replaceText(str,'[B)]','<img src="'+WM3_cPATH_EMOTICONS+'s8.png"  width="16" height="16" align="absmiddle">');
  str = wm3_replaceText(str,'[|(]','<img src="'+WM3_cPATH_EMOTICONS+'s9.png"  width="16" height="16" align="absmiddle">');
  str = wm3_replaceText(str,'[:/]','<img src="'+WM3_cPATH_EMOTICONS+'s10.png" width="16" height="16" align="absmiddle">');
  str = wm3_replaceText(str,'[:|]','<img src="'+WM3_cPATH_EMOTICONS+'s11.png" width="16" height="16" align="absmiddle">');
  str = wm3_replaceText(str,'[8|]','<img src="'+WM3_cPATH_EMOTICONS+'s12.png" width="16" height="16" align="absmiddle">');
  str = wm3_replaceText(str,'[:s]','<img src="'+WM3_cPATH_EMOTICONS+'s13.png" width="16" height="16" align="absmiddle">');
  str = wm3_replaceText(str,'[:D]','<img src="'+WM3_cPATH_EMOTICONS+'s14.png" width="16" height="16" align="absmiddle">');

  return str;
 }

function wm3_renderMore()
 {
  var str;

  str =  '<table width="96%" border="0" cellspacing="0" cellpadding="0" align="center"><tr>';
  str += '<td width="45%"><hr align="center" size="1"></td>';
  str += '<td><div align="center"><i>more</i></div></td>';
  str += '<td width="45%"><hr align="center" size="1"></td>';
  str += '</tr></table>';
  return str;
 }

function wm3_moreRows(n,obj_textarea) { if(obj_textarea.rows <= 50) obj_textarea.rows = obj_textarea.rows + n; }

function wm3_lessRows(n,obj_textarea) { if(obj_textarea.rows >= 10) obj_textarea.rows = obj_textarea.rows - n; }

function wm3_checkAll(form,obj_name,value,total)
 {
  for(i = 1;i <= total;i++)
   eval('form.'+obj_name+i+'.checked=value;');
 }

function wm3_invertSelection(form,obj_name,total)
 {
  for(i = 1;i <= total;i++)
   eval('if(form.'+obj_name+i+'.checked==1) form.'+obj_name+i+'.checked=0; else form.'+obj_name+i+'.checked=1;');
 }

function wm3_selectAll(obj_name)
 {
  if(document.all)
   {
    eval('document.all.'+obj_name+'.focus();');
    eval('document.all.'+obj_name+'.select();');
   }
  else
   {
    document.getElementsByName(obj_name)[0].focus();
    document.getElementsByName(obj_name)[0].select();
   }
 }

