
// THIS FILE IS PART OF WEBMATIC3 (Webmatic cube)
// www.valarsoft.com

function wm3_initRequest()
 {
  // Init a XMLHttpRequest
  var request = false;
  
  /*@cc_on @*/

  /*@if(@_jscript_version >= 5)
	try
	 {
	  request = new ActiveXObject("Msxml2.XMLHTTP");
     }
    catch(e)
     {
	  try { request = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { request = false; }
	 }
    @else request = false;
    
    @end @*/

  if(!request && typeof XMLHttpRequest!='undefined')
   {
	try { request = new XMLHttpRequest(); } catch(e) { request = false; }
   }
  return request;
 }

function wm3_openRequest(url,objID)
 {
  // Open a XMLHttpRequest to retrive data from url ... TODO...
  var obj;

  request = wm3_initRequest();
  if(request)
   {
    if(document.getElementById) obj = document.getElementById(objID);
	request.open('get',url,true);
	request.onreadystatechange = function(e)
	 {
	  if(request.readyState == 4)
	   {
        //alert(request.responseText);
	    obj.innerHTML = request.responseText; // Se ci troviamo dentro una form IE non accetta che dentro responseText ci sia un tag form... (colpa del DOM ??? )
	   }
	  else
	   {
        obj.innerHTML = 'Loading...'; //'<img src="'+WM3_cPATH_EMOTICONS+'loader.gif">';
	   }
	 };
    request.send(null);
   }
 }

function wm3_changeRenderMode(kernel_url,obj_textarea,obj_render_mode,objID,resizeID,editor_type)
 {
  if(obj_render_mode.value != WM3_cRENDER_MODE_HTML)
   {
    if(!tinyMCE.activeEditor.isHidden())
     {
	  obj_textarea.value = tinyMCE.activeEditor.getBody().innerHTML;
      tinyMCE.activeEditor.hide();
      if(editor_type == 1) wm3_openRequest(kernel_url+'&action='+WM3_cACTION_KERNEL_RENDER_PAGE_EDITOR,objID);
      if(editor_type == 2) wm3_openRequest(kernel_url+'&action='+WM3_cACTION_KERNEL_RENDER_NEWS_EDITOR,objID);
      if(editor_type == 6) wm3_openRequest(kernel_url+'&action='+WM3_cACTION_KERNEL_RENDER_NEWSLETTER_EDITOR,objID);
      wm3_showObject(resizeID);
     }
   }
  else
   {
    tinyMCE.activeEditor.show();
    tinyMCE.activeEditor.getBody().innerHTML = obj_textarea.value;
    if(editor_type == 1) wm3_openRequest(kernel_url+'&action='+WM3_cACTION_KERNEL_RENDER_PAGE_EDITOR_TINYMCE,objID);
    if(editor_type == 2) wm3_openRequest(kernel_url+'&action='+WM3_cACTION_KERNEL_RENDER_NEWS_EDITOR_TINYMCE,objID);
    if(editor_type == 6) wm3_openRequest(kernel_url+'&action='+WM3_cACTION_KERNEL_RENDER_NEWSLETTER_EDITOR_TINYMCE,objID);
    wm3_hideObject(resizeID);
   }
 }

function wm3_menuItemChangeCategory()
 {
  wm3_hideObject('pageID');
  wm3_hideObject('subchannelID');
  wm3_hideObject('link_external_url');
  wm3_hideObject('link_external_target');
  if(document.wm3_form.categoryID.value == WM3_cMENU_ITEM_CATEGORY_CUSTOM)
   {
   	wm3_showObject('pageID');
    wm3_hideObject('subchannelID');
    wm3_hideObject('link_external_url');
    wm3_hideObject('link_external_target');
   }
  if(document.wm3_form.categoryID.value == WM3_cMENU_ITEM_CATEGORY_CHANNEL)
   {
   	wm3_hideObject('pageID');
    wm3_showObject('subchannelID');
    wm3_hideObject('link_external_url');
    wm3_hideObject('link_external_target');
   }
  if(document.wm3_form.categoryID.value == WM3_cMENU_ITEM_CATEGORY_EXTERNAL)
   {
   	wm3_hideObject('pageID');
    wm3_hideObject('subchannelID');
    wm3_showObject('link_external_url');
    wm3_showObject('link_external_target');
   }
 }

function wm3_ecommercePictureChangeFrom()
 {
  if(document.wm3_form.picture_from.value == 1)
   {
    wm3_hideObject('picture_from_local');
    wm3_showObject('picture_from_remote');
   }
  else
   {
    wm3_showObject('picture_from_local');   	
    wm3_hideObject('picture_from_remote');
   }
 }

function wm3_ecommerceThumbnailChangeFrom()
 {
  if(document.wm3_form.thumbnail_from.value == 1)
   {
    wm3_hideObject('thumbnail_from_local');
    wm3_showObject('thumbnail_from_remote');
   }
  else
   {
   	wm3_showObject('thumbnail_from_local');
    wm3_hideObject('thumbnail_from_remote');    
   }
 }

function wm3_ecommerceDownloadChangeSource()
 {
  wm3_hideObject('download_from_local'); 	
  wm3_hideObject('download_from_remote');
  wm3_hideObject('download_from_external');
  if(document.wm3_form.source.value == 0) wm3_showObject('download_from_local');
  if(document.wm3_form.source.value == 1) wm3_showObject('download_from_remote');
  if(document.wm3_form.source.value == 2) wm3_showObject('download_from_external');
 }

function wm3_newsletterChangeTarget()
 {
  wm3_hideObject('user_gender');
  wm3_hideObject('groupID');
  if(document.wm3_form.newsletter_target.value == 2) { wm3_showObject('user_gender'); wm3_showObject('groupID'); }
 }

function wm3_newsletterChangeType(str_html,str_text)
 {
  if(document.wm3_form.newsletter_format.value == 1) document.wm3_form.newsletter_foot.value = str_text;
  if(document.wm3_form.newsletter_format.value == 2) document.wm3_form.newsletter_foot.value = str_html;
 }

function wm3_newsletterClickUseFoot()
 {
  wm3_hideObject('newsletter_foot');
  if(document.wm3_form.newsletter_use_foot.checked) wm3_showObject('newsletter_foot');
 }

function wm3_panelChangeCategory()
 {
  wm3_hideObject('surveyID');
  wm3_hideObject('menuID');
  wm3_hideObject('expansion');
  wm3_hideObject('expansion_config');
  wm3_hideObject('body');
  wm3_hideObject('body_editor');
  if(document.wm3_form.categoryID.value == WM3_cPANEL_CATEGORY_CUSTOM)    { wm3_showObject('body'); wm3_showObject('body_editor'); }
  if(document.wm3_form.categoryID.value == WM3_cPANEL_CATEGORY_SURVEY)    wm3_showObject('surveyID');
  if(document.wm3_form.categoryID.value == WM3_cPANEL_CATEGORY_MENU)      wm3_showObject('menuID');
  if(document.wm3_form.categoryID.value == WM3_cPANEL_CATEGORY_EXPANSION) { wm3_showObject('expansion'); wm3_showObject('expansion_config'); }
 }

function wm3_pageChangeCategory()
 {
  wm3_hideObject('expansion');
  wm3_hideObject('expansion_config');
  wm3_hideObject('body');
  wm3_hideObject('body_editor');
  if(document.wm3_form.categoryID.value == WM3_cPAGE_CATEGORY_CUSTOM)    { wm3_showObject('body'); wm3_showObject('body_editor'); }
  if(document.wm3_form.categoryID.value == WM3_cPAGE_CATEGORY_EXPANSION) { wm3_showObject('expansion'); wm3_showObject('expansion_config'); }
 }

function wm3_bannerChangeSource()
 {
  wm3_hideObject('banner_from_local');
  wm3_hideObject('banner_from_remote');
  wm3_hideObject('banner_from_external');
  if(document.wm3_form.banner_source.value == 0) wm3_showObject('banner_from_local');
  if(document.wm3_form.banner_source.value == 1) wm3_showObject('banner_from_remote');
  if(document.wm3_form.banner_source.value == 2) wm3_showObject('banner_from_external');
 }

function wm3_mediaAlbumItemMediaChangeSource()
 {
  wm3_hideObject('media_from_local'); 	
  wm3_hideObject('media_from_remote');
  wm3_hideObject('media_from_external');
  if(document.wm3_form.source_media.value == 0) wm3_showObject('media_from_local');
  if(document.wm3_form.source_media.value == 1) wm3_showObject('media_from_remote');
  if(document.wm3_form.source_media.value == 2) wm3_showObject('media_from_external');
 }

function wm3_mediaAlbumItemThumbnailChangeSource()
 {
  wm3_hideObject('thumbnail_from_local'); 	
  wm3_hideObject('thumbnail_from_remote');
  wm3_hideObject('thumbnail_from_external');
  if(document.wm3_form.source_thumbnail.value == 0) wm3_showObject('thumbnail_from_local');
  if(document.wm3_form.source_thumbnail.value == 1) wm3_showObject('thumbnail_from_remote');
  if(document.wm3_form.source_thumbnail.value == 2) wm3_showObject('thumbnail_from_external');
 }

function wm3_directoryItemFileChangeSource()
 {
  wm3_hideObject('pageID');
  wm3_hideObject('home_url');
  wm3_hideObject('download_url');
  if(document.wm3_form.source.value == 0) wm3_showObject('pageID');
  if(document.wm3_form.source.value == 1) { wm3_showObject('home_url'); wm3_showObject('download_url'); }
 }

function wm3_channelBlockLinkChangeType()
 {
  wm3_hideObject('pageID');
  wm3_hideObject('subchannelID');
  if(document.wm3_form.block_type.value == 0) wm3_showObject('pageID');
  if(document.wm3_form.block_type.value == 1) wm3_showObject('subchannelID');
 }

function wm3_chatroomJoin(file,stage,action_main,action_users,msg)
 {
  var obj_chatroomID,obj_current_chatroomID,obj_nickname;
  var obj_main_iframe,obj_users_iframe;

  if(document.getElementById)
   {
    obj_main_iframe        = document.getElementById('chatroom_main_iframe');
    obj_users_iframe       = document.getElementById('chatroom_users_iframe');
    obj_chatroomID         = document.getElementById('chatroomID');
    obj_current_chatroomID = document.getElementById('current_chatroomID');
    obj_nickname           = document.getElementById('nickname');
   }
  if(!obj_nickname.value)
   {
    alert(msg);
   }
  else
   {
    obj_current_chatroomID.value = obj_chatroomID.value;
    obj_main_iframe.src   = file+'?stage='+stage+'&chatroomID='+obj_chatroomID.value+'&action='+action_main+'&nickname='+obj_nickname.value;
    wm3_sleep(500);
    obj_users_iframe.src  = file+'?stage='+stage+'&chatroomID='+obj_chatroomID.value+'&action='+action_users+'&nickname='+obj_nickname.value;
    obj_nickname.disabled = true;
   }
 }

function wm3_chatroomJoinEnterPressed(e,file,stage,action_main,action_users,msg)
 {
  if(wm3_keyPressed(13,e))
   {
    wm3_chatroomJoin(file,stage,action_main,action_users,msg);
   }
 }

function wm3_chatroomSentenceSend(file,stage,action_main,action_users)
 {
  var obj_current_chatroomID,obj_sentence,obj_nickname;
  var obj_main_iframe,obj_users_iframe;

  if(document.getElementById)
   {
    obj_sentence           = document.getElementById('sentence');
    obj_main_iframe        = document.getElementById('chatroom_main_iframe');
    obj_users_iframe       = document.getElementById('chatroom_users_iframe');
    obj_current_chatroomID = document.getElementById('current_chatroomID');
    obj_nickname           = document.getElementById('nickname');
   }

  if(obj_sentence.value)// && obj.stanza.value && obj.roomID.value)
   {
    var sentence = obj_sentence.value;

    //sentence = sentence.replace('%','%25');
    //sentence = sentence.replace('&','%26');

    obj_main_iframe.src  = file+'?stage='+stage+'&chatroomID='+obj_current_chatroomID.value+'&action='+action_main+'&nickname='+obj_nickname.value+'&sentence='+sentence;
    obj_users_iframe.src = file+'?stage='+stage+'&chatroomID='+obj_current_chatroomID.value+'&action='+action_users+'&nickname='+obj_nickname.value;
    obj_sentence.value = '';
   }
 }

function wm3_chatroomSentenceSendEnterPressed(e,file,stage,action_main,action_users)
 {
  if(wm3_keyPressed(13,e))
   {
    wm3_chatroomSentenceSend(file,stage,action_main,action_users);
   }
 }

function wm3_hideObject(objID)
 {
  var obj;

  if(document.getElementById) obj = document.getElementById(objID);
  if(obj && obj.style) obj.style.display = 'none';
 }

function wm3_showObject(objID)
 {
  var obj;

  if(document.getElementById) obj = document.getElementById(objID);
  if(obj && obj.style) obj.style.display = '';
 }

function wm3_keyPressed(code,e)
 {
  e = (e) ? e : (window.event) ? event : null;
  if(e)
   {
    var key_pressed = (e.charCode) ? e.charCode:
                      ((e.keyCode) ? e.keyCode :
                      ((e.which)   ? e.which   :0));
    if(key_pressed == code) return true;
   }
  return false;
 }

function wm3_sleep(ms)
 {
  var start = new Date().getTime();
  for(var i = 0; i < 1e7; i++)
   if((new Date().getTime() - start) > ms) break;
 }

function wm3_isUrl(str)
 {
  // Return true if str its an absolute url
  var re = /^(https?:\/\/){1}(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z_!~*'()-]+\.)*([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+\/?)$/;
  return re.test(str);
 }

function wm3_isUrlRelative(str)
 {
  // Return true if str its a relative url/path
  var re = /^(((\/{1}\.{1})?[a-zA-Z0-9_!~*'().;?:@&=+$,%#-]+\/?)+(\.{1}[a-zA-Z0-9]{2,4})?)$/;
  return re.test(str);
 }

function wm3_isImageUrl(str)
 {
  // Return true if str its an absolute url to an image file
  var re = /^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+(.[jJ][pP][gG]|.[jJ][pP][eE][gG]|.[gG][iI][fF]|.[pP][nN][gG]))$/;
  return re.test(str);
 }

function wm3_isImageUrlRelative(str)
 {
  // Return true if str its a relative url/path to an image file
  var  re = /^(((\.\.){1}\/)*|(\/){1})?(([a-zA-Z0-9]*)\/)*([a-zA-Z0-9]*)+(.[jJ][pP][gG]|.[jJ][pP][eE][gG]|.[gG][iI][fF]|.[pP][nN][gG])+$/;
  return re.test(str);
 }

function wm3_replaceText(str,txt_search,txt_replace)
 {
  var start_position = str.indexOf(txt_search);
  while(start_position != -1)
   {
    str            = str.replace(txt_search,txt_replace);
    start_position = str.indexOf(txt_search);
   }
  return str;
 }

function wm3_charReplace(str,char_search,string_replace)
 {
  var i,ch,replace = '';
               
  for(i = 0; i < str.length; i++)
   {
    ch = str.charAt(i);
    if(ch == char_search) { replace += string_replace; } else { replace += ch; }
   }
  return replace;
 }

function wm3_accept(msg) { return confirm(msg); }

function wm3_getSelection(obj_textarea)
 {
  var browserType,browserVersion;

  browserType    = wm3_browserType();
  browserVersion = wm3_browserVersion();
  if((browserType == 'msie' && browserVersion >= 5) || (browserType == 'opera' && browserVersion <= 8))
   {
    return ((document.selection).createRange()).text;
   }               
  if(browserType == 'other' || (browserType == 'netscape' && browserVersion >= 8) || (browserType == 'firefox' && browserVersion >= 1) || (browserType == 'opera' && browserVersion >= 9))
   {
    return (obj_textarea.value).substring(obj_textarea.selectionStart,obj_textarea.selectionEnd);
   }
  return '';
 }

function wm3_addTag(tagOpen,tagClose,obj_textarea,no_selection)
 {
  var selection,head,tail;
  var startP,endP;
  var browserType,browserVersion;

  browserType    = wm3_browserType();
  browserVersion = wm3_browserVersion();
  if(no_selection) selection = ''; else selection = wm3_getSelection(obj_textarea);
  if((browserType == 'msie' && browserVersion >= 5) || (browserType == 'opera' && browserVersion <= 8))
   {
    obj_textarea.focus();
    document.selection.createRange().text = tagOpen + selection + tagClose;
    return;
   }               
  if(browserType == 'other' || (browserType == 'netscape' && browserVersion >= 8) || (browserType == 'firefox' && browserVersion >= 1) || (browserType == 'opera' && browserVersion >= 9))
   {
    startP    = obj_textarea.selectionStart;
    endP      = obj_textarea.selectionEnd;
    head      = (obj_textarea.value).substring(0,startP);
    tail      = (obj_textarea.value).substring(endP,(obj_textarea.value).length);
    obj_textarea.value = head + tagOpen + selection + tagClose + tail;
    obj_textarea.focus();
    return;
   }
  obj_textarea.value = obj_textarea.value + tagOpen + tagClose;
 }

function wm3_updateImage(path,name,v,WM3_cPATH_DATA,extra)
 {
  if(document.images)
   {
    if(v != 0) document[name].src = path + v + extra;
    else       document[name].src = WM3_cPATH_DATA + 'misc_noimage.png';
   }
 }

function wm3_browserType()
 { 
  var cli        = navigator.userAgent.toLowerCase();
  var isFirefox  = (cli.indexOf('firefox')  !=-1 );
  var isOpera    = (cli.indexOf('opera')    !=-1 );
  var isNetscape = (cli.indexOf('netscape') !=-1 );
  var isMSIE     = (cli.indexOf('msie')     !=-1 );

  if(isFirefox)  return 'firefox';
  if(isOpera)    return 'opera';
  if(isNetscape) return 'netscape';
  if(isMSIE)     return 'msie';
  return 'other';
 }

function wm3_browserVersion()
 {
  var cli = navigator.userAgent.toLowerCase();
  var ver = parseInt(navigator.appVersion);

  if(wm3_browserType() == 'firefox')
   {
    if(cli.indexOf('firefox/1') != -1) return 1;
    if(cli.indexOf('firefox/2') != -1) return 2;
	if(cli.indexOf('firefox/3') != -1) return 3;
	if(cli.indexOf('firefox/4') != -1) return 4;
	if(cli.indexOf('firefox/5') != -1) return 5;
    return 0;
   }
  if(wm3_browserType() == 'opera')
   {
    if(cli.indexOf('opera 6') != -1) return 6;
    if(cli.indexOf('opera 7') != -1) return 7;
    if(cli.indexOf('opera 8') != -1) return 8;
    if(cli.indexOf('opera/9') != -1) return 9;
    return 0;
   }
  if(wm3_browserType() == 'netscape')
   {
    if((cli.indexOf('netscape/6') != -1) || (cli.indexOf('netscape6') != -1)) return 6;
    if(cli.indexOf('netscape/7')  != -1) return 7;
    if(cli.indexOf('netscape/8')  != -1) return 8;
    return 0;
   }
  if(wm3_browserType() == 'msie')
   {
   	if(cli.indexOf('msie 4') != -1) return 4;
    if(cli.indexOf('msie 5') != -1) return 5;
    if(cli.indexOf('msie 6') != -1) return 6;
    if(cli.indexOf('msie 7') != -1) return 7;
    if(cli.indexOf('msie 8') != -1) return 8;
    if(cli.indexOf('msie 9') != -1) return 9;
    return 0;
   }
  return ver;
 }

