function createXMLHttpRequest() {
  var xmlhttplocal;

  try {
    xmlhttplocal= new ActiveXObject("Msxml2.XMLHTTP")
  } catch (e) {
    try {
      xmlhttplocal= new ActiveXObject("Microsoft.XMLHTTP")
    } catch (E) {
      xmlhttplocal=false;
    }
  }

  if (!xmlhttplocal && typeof XMLHttpRequest!='undefined') {
    try {
      var xmlhttplocal = new XMLHttpRequest();
    } catch (e) {
      var xmlhttplocal=false;
      alert('Couldn\'t create xmlhttp object');
    }
  }
  
  return(xmlhttplocal);
}

function refresh(url) {
  setTimeout("window.location='"+url+"'", 3.5*1000);
}

function getInternetExplorerVersion() {
  var rv = -1;
  if (navigator.appName == 'Microsoft Internet Explorer') {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null) {
      rv = parseFloat( RegExp.$1 );
    }
  }
  return rv;
}

function surroundText(text1, text2, textarea_prefix) {
  if (!textarea_prefix) textarea_prefix = '';
  textarea = document.getElementById(textarea_prefix+'text_bb');

	if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)	{
		var caretPos = textarea.caretPos;

		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text1 + caretPos.text + text2 + ' ' : text1 + caretPos.text + text2;
		caretPos.select();
	}	else if (textarea.createTextRange) {
    textarea.focus();
    var oRange = document.selection.createRange();
		oRange.text = text1 + oRange.text + text2;
		oRange.select();
	}	else if (typeof(textarea.selectionStart) != "undefined") {
		var begin = textarea.value.substr(0, textarea.selectionStart);
		var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);
		var newCursorPos = textarea.selectionStart;
		var scrollPos = textarea.scrollTop;

		textarea.value = begin + text1 + selection + text2 + end;

		if (textarea.setSelectionRange) {
			if (selection.length == 0) {
				textarea.setSelectionRange(newCursorPos + text1.length, newCursorPos + text1.length);
			} else {
				textarea.setSelectionRange(newCursorPos, newCursorPos + text1.length + selection.length + text2.length);
			}
			textarea.focus();
		}
		textarea.scrollTop = scrollPos;
	} else {
		textarea.value += text1 + text2;
		textarea.focus(textarea.value.length - 1);
	}
	
	//Always return false to prevent form submittal
	return false;
}

function addQuote(username, timestamp, text_bb, textarea) {
  if (!textarea) textarea = document.getElementById('text_bb');
  
  quoteText = '[quote='+username+' on '+timestamp+']\n'+text_bb+'\n[/quote]\n';

	if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)	{
		var caretPos = textarea.caretPos;

		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? quoteText + caretPos.text + ' ' : quoteText + caretPos.text;
		caretPos.select();
	}	else if (typeof(textarea.selectionStart) != "undefined") {
		var begin = textarea.value.substr(0, textarea.selectionStart);
		var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);
		var newCursorPos = textarea.selectionStart;
		var scrollPos = textarea.scrollTop;

		textarea.value = begin + quoteText + selection + end;
		textarea.scrollTop = scrollPos;
	} else {
		textarea.value = quoteText + textarea.value;
		textarea.focus(textarea.value.length - 1);
	}
}

function showPreview(id,id_pbb,id_ps) {
  if (!id)     id     = 'text_bb';
  if (!id_pbb) id_pbb = 'parse_bb';
  if (!id_ps)  id_ps  = 'parse_smilies';
  
  src = document.getElementById(id);
  
  if (src) {
    document.getElementById('preview').style.display = 'block';
    document.getElementById('preview').getElementsByTagName('div')[0].innerHTML = 'Loading...';
    
    src_text_bb = document.getElementById(id).value;
    src_parse_bb = document.getElementById(id_pbb).checked;
    src_parse_smilies = document.getElementById(id_ps).checked;
  
    req=createXMLHttpRequest();
    req.open('POST','inc/bbcode_parser.php');
    req.onreadystatechange = function() {
      if (req.readyState==4 || req.readyState=="complete") {
        document.getElementById('preview').getElementsByTagName('div')[0].innerHTML = '<fieldset id="iefix_dummy">'+req.responseText+'</fieldset>';
      }
    }
    req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    req.send('text_bb='+escape(src_text_bb)+
             '&parse_bb='+escape(src_parse_bb)+
             '&parse_smilies='+escape(src_parse_smilies));
  }
}

window.onload = function() {
  //Rounded corners
    settings = {autoPad: false,
                antiAlias: true,
                tl: { radius: 20 },
                tr: { radius: 20 },
                bl: { radius: 20 },
                br: { radius: 20 }};
    //autoPad: true causes reCAPTCHA on Firefox to redirect the browser for some reason.
    //         false causes IE6 to distort the page.
    var ieVersion = getInternetExplorerVersion();
    if (ieVersion != -1 && ieVersion < 7.0) settings.autoPad = true;

    roundedDiv1 = new curvyCorners(settings, document.getElementById('leftcolumn'));
    roundedDiv2 = new curvyCorners(settings, document.getElementById('rightcolumn'));
    
    roundedDiv1.applyCornersToAll();
    roundedDiv2.applyCornersToAll();
    
    //Fix to force Opera to redraw 
    document.getElementById("leftcolumn").style.visibility = "hidden";
    setTimeout('document.getElementById("leftcolumn").style.visibility = "visible"',1);
    document.getElementById("rightcolumn").style.visibility = "hidden";
    setTimeout('document.getElementById("rightcolumn").style.visibility = "visible"',1);
  
  //reCAPTCHA / CurvyCorners conflict on IE6
    //Reload reCAPTCHA on IE6 to realign the input field
    if (ieVersion != -1 && ieVersion < 7.0 && window.Recaptcha) Recaptcha.reload();
  
    
  //Validation
    //Rig up the Recaptcha for basic validation (if exists)
    rec = document.getElementById('recaptcha_response_field');
    if (rec) rec.className = 'required';
  
    //Activate Validation
    for (i=0; i<document.forms.length; i++) {
      valPlaceholder = new Validation(document.forms[i],{stopOnFirst: false,
                                                         immediate:   false});
    }
    
  //Auto-suggest
    as_fields = document.getElementsByClassName('autosuggest-user');
    
    for (i=0; i<as_fields.length; i++) {
      var asPlaceholder = new AutoSuggest(as_fields[i].id,
                                          {script:"inc/autosuggest/user.php?",
                                           varname:"text",
                                           json:true});
    }
}

function switchWsgText() {
  
  brief = document.getElementById('wsg_text_brief');
  full  = document.getElementById('wsg_text_full');
  sw    = document.getElementById('wsg_text_switch');
  
  if (brief.style.display == 'none') {
    full.style.display = 'none'
    brief.style.display = 'block'
    sw.innerHTML = '[show full guide]'
  } else {
    brief.style.display = 'none'
    full.style.display = 'block'
    sw.innerHTML = '[hide full guide]'
  }
  
  return false;
}