var objectChild = new Array();
var subWin;
var autoComplete = 1;
var selectedRow = -1;
var lastList = '';
var lastQuery = null;
var columnsByTable = new Object();
var tableAliases = new Object();
var showAutoCompleteWait = 0;
var req;
var ROOT_URL="/tmworks/rview";
var codepress;
var DB_SQLSERVER='3';
function signIn(ele) {
  ele.disabled='true';
  $('loading_f').show();
  document.forms[0].submit();
}

function initdatabase() {
  $('btn_next').disable();
  new Ajax.Request("index.php/init", {
    method:'post',
    parameters: {host: $('host').value, dbuser: $('dbuser').value, dbpassword:$('dbpassword').value, dbname: $('dbname').value},
    onComplete:function(transport) {
      alert(transport.responseText);
    }
  });
}

function openAdminPage() {

}
function displayMenu(idMenu,idHide) {
	Display(idMenu);
	VisibleSelectTag(idMenu);
}

function Display(id) {
	var e = GetElement(id);
	if(e && e.style) {
		var btn = GetElement("btn" + id);
		if( e.style.display == "none") {
			OptionButtonAction( btn, true );
			e.style.display = "";
		}	else {
			OptionButtonAction( btn, false );
			e.style.display = "none";
		}
	}
}


function Display(id)
{
	var e = GetElement(id);
	if(e && e.style )
	{
		var btn = GetElement("btn" + id);
		if( e.style.display == "none" )
		{
			OptionButtonAction( btn, true );
			e.style.display = "";
		}
		else
		{
			OptionButtonAction( btn, false );
			e.style.display = "none";
		}
	}
}

function VisibleElement(id)
{
	var e=GetElement(id);
	if(e && e.style )
	{
		if(e.style.visibility=="hidden")
			e.style.visibility="visible";
		else
			e.style.visibility="hidden";
	}
}
function Visible(id)
{
	if( typeof(id) == "string" )
	{
		if( id.length < 1 ) return ;

		var a = id.split(' ');
		for( var i=0; i<a.length; ++i )
		{
			VisibleElement(a[i]);
		}
	}
	else
	{
		VisibleElement(id);
	}
}

function DisplayMenu(idMenu,idHide)
{

	Display(idMenu);
 	VisibleSelectTag(idMenu);

}

function Show(id)
{
	var e=GetElement(id);
	if(e && e.style )
	{
		if(e.style.display=="none")
		{
			e.style.display="";
		}
	}
}

function GetElement( id )
{
	if( document.getElementById )
	{
		return document.getElementById(id);
	}
	return null;
}

function gl(e){p=e.offsetParent;if(!p||p.tagName=="BODY") return e.offsetLeft;return e.offsetLeft+gl(p);}
function gt(e){p=e.offsetParent;if(!p||p.tagName=="BODY") return e.offsetTop;return e.offsetTop+gt(p);}
function VisibleSelectTag(id) {
var d=GetElement(id);if(!d) return;
var ml=gl(d);var mr=ml+d.offsetWidth;var mb=gt(d)+d.offsetHeight;
var fs=document.forms;for(i=1;i<fs.length;i++){
var es=fs[i].elements;for(j=0;j<es.length;j++){
var c=es[j];if(c.tagName=="SELECT"){
if(d.style.display==""){if(gt(c)<mb&&gl(c)<mr&&ml<gl(c)+c.offsetWidth){c.style.visibility="hidden"}}else{c.style.visibility="visible";}
}}}}

function OptionButtonAction( btn, showmenu )
{
	return;
}

function RemoveMember( form, sname )
{
	var u = form.elements[sname].options;
	li = u.length - 1;
	for( i = 0 ; i < li ; i ++ ) { if( u[i].selected ) { u[i] = null; li -=1; i-=1; } }
}
function AddMember(form, cname, sname)
{
	var c = form.elements[cname].options;
	var u = form.elements[sname].options;

	for( i = 0 ; i < c.length -1; i ++ )
	{
		var co = c[i];

		if( ! co.selected || ! co.value ) continue;
		var f = false;
		var li = u.length - 1;
		for( j = 0 ; j < li ; j ++ ) { if( u[j].value == co.value ) { f = true; break; } }
		if( f ) continue;
		u[u.length] = new Option( u[li].text, "");
		u[li] = new Option( co.text, co.value, true, true );
	}
}

function submitData(argReqID) {
  setBusy();
  document.mainForm.requestID.value = argReqID;
  document.mainForm.submit();
}

function submitData2(argReqID) {
  setBusy();
  document.mainForm2.requestID.value = argReqID;
  document.mainForm2.submit();
}

function submitForm(reqID, formID) {
  setBusy();
  var form=document.getElementById(formID);
  form.requestID.value=reqID;
  form.submit();
}

function openSunWin(argUrl) {
  var sunWin = window.open(argUrl,'','scrollbars=yes,menubar=no,height=500,width=600,resizable=yes,toolbar=no,location=no,status=no');
}

function openSQLEditor() {
  var sunWin = window.open('/tmworks/rview?requestID=initsqllab','','scrollbars=yes,menubar=no,height=500,width=830,resizable=yes,toolbar=no,location=no,status=no');
}

function openFB() {
  var sunWin = window.open('/tmworks/rview?requestID=initformbuilder','','scrollbars=yes,menubar=no,height=500,width=800,resizable=yes,toolbar=no,location=no,status=no');
}

function openSB(type, closeFun, list) {
  if (type==1) {
    openQB(closeFun, list);
  } else {
    openIUDB(closeFun, list);
  }
}

function openQB(closeFun, list) {
  var url="/tmworks/rview?requestID=initquerybuilder"
  if(closeFun) {
    url+="&closeFun="+closeFun+"();";
  }
  if(list) {
    url+="&plist="+list;
  }
  var sunWin = window.open(url,'','scrollbars=yes,menubar=no,height=500,width=800,resizable=yes,toolbar=no,location=no,status=no');
}

function openIUDB(closeFun, list) {
  var url="/tmworks/rview?requestID=initiudbuilder"
  if(closeFun) {
    url+="&closeFun="+closeFun+"();";
  }
  if(list) {
    url+="&plist="+list;
  }
  var sunWin = window.open(url,'','scrollbars=yes,menubar=no,height=500,width=800,resizable=yes,toolbar=no,location=no,status=no');
}

function getFormVarList(itemid) {
  var items=$('formvar').select('a[class="subopen"]');
  var list="";
  if(items && items.size()>0) {
    items.each(function(s, index) {
      list+=items[index].firstChild.nodeValue+";";
    });
  }
  return list;
}

function copyToIUDEditor() {
  if($("iud_sql")) {
    var brs=$("iud_sql").select('br');
    brs.each(function(s, index) {
      brs[index].replace("\n");
    });
    var sql=$("iud_sql").innerHTML.unescapeHTML().stripTags();
    var newCode=window.opener.codepress.getCode();
    if(newCode && !newCode.blank()) {
      newCode+="\n;\n";
    }
    newCode+=sql;
    newCode = newCode.replace("&nbsp;",' ');
    window.opener.codepress.setCode(newCode);
    window.close();
  } else {
    copyToEditor();
  }
}

// if already contains characters, append ; and the content
function copyToEditor() {
  qb_genSQL();
  var newCode=window.opener.codepress.getCode();
  if(newCode && !newCode.blank()) {
    newCode+="\n;\n";
  }
  newCode+=codepress?codepress.getCode():document.getElementById('QUERYTEXT').value;
  window.opener.codepress.setCode(newCode);
  window.close();
}

function copyToLoadAction() {
  qb_genSQL();
  window.opener.document.getElementById('loadAction').value=codepress?codepress.getCode():document.getElementById('QUERYTEXT').value;
  window.close();
}

function copyToEffectForm() {
  qb_genSQL();
  window.opener.document.getElementById('updatescript').value=codepress?codepress.getCode():document.getElementById('QUERYTEXT').value;
  window.close();
}
function copyToDataSource() {
  qb_genSQL();
  var s=codepress?codepress.getCode():document.getElementById('QUERYTEXT').value;
  window.opener.document.getElementById('datasource').value=s
  window.close();
}
function openCM() {
  var sunWin = window.open('/tmworks/rview?requestID=catman','','scrollbars=yes,menubar=no,height=500,width=800,resizable=yes,toolbar=no,location=no,status=no');
}

function openRegist() {
  var sunWin = window.open('/tmworks/rview?requestID=regist','','scrollbars=no,menubar=no,height=500,width=600,resizable=yes,toolbar=no,location=no,status=no');
}

function openAdministration() {
  if($('username').value == "" || $('password').value=="") {
    alert("Please fill out the username and password fields.");
    return;
  }
  document.adminform.username.value=document.login.username.value;
  document.adminform.password.value=document.login.password.value;
  window.open('','subwin','scrollbars=yes,menubar=no,height=500,width=700,resizable=yes,toolbar=no,location=no,status=no');
  $('adminform').submit();
}

function openFeedback() {
  var sunWin = window.open('http://www.tmworks.org/index.php?option=com_alfcontact&Itemid=62','','scrollbars=yes,menubar=no,height=500,width=700,resizable=yes,toolbar=no,location=no,status=no');
}

function trim(argStr) {
  return argStr.replace(/(\s*$)/g, "")
}

function keyDown(event, argReqID) {
  var key=event.keyCode ? event.keyCode : event.charCode;
  if(key == null) {
    return true;
  }
  if (key == 13 && event.ctrlKey) {
    document.mainForm.requestID.value=argReqID;
    document.mainForm.submit();
    return false;
  }
  var table = document.getElementById("autoCompTable");
  if(table.rows.length > 0) {
    if(key == 27) {
      while(table.rows.length > 0) {
        table.deleteRow(0);
      }
      return false;
    } else if((key == 13 && !event.shiftKey) || (key==9 && !event.shiftKey)) {
      if(table.rows.length > selectedRow) {
        var row = table.rows[selectedRow];
        insertText(row.cells[0].innerHTML);
        highlightRow(0);
        if(autoComplete == 0) {
          autoComplete = 0;
        }
        return false;
      }
    } else if(key == 38 && !event.shiftKey) {
      if(table.rows.length > selectedRow) {
        selectedRow = selectedRow <= 0 ? table.rows.length-1 : selectedRow-1;
        highlightRow(selectedRow);
      }
      return false;
    } else if(key == 40 && !event.shiftKey) {
      if(table.rows.length > selectedRow) {
        selectedRow = selectedRow >= table.rows.length-1 ? 0 : selectedRow+1;
        highlightRow(selectedRow);
      }
      return false;
    }
    return true;
  }
}

function highlightRow(row) {
  if(row != null){
    selectedRow = row;
  }
  var table = document.getElementById("autoCompTable");
  highlightThisRow(table.rows[selectedRow]);
}

function highlightThisRow(row) {
  var table = document.getElementById("autoCompTable");
  for(var i=0; i<table.rows.length; i++) {
    var r = table.rows[i];
    var col = (r == row) ? '#95beff' : '';
    var cells = r.cells;
    if(cells.length > 0) {
      cells[0].style.backgroundColor = col;
    }
  }
}

function keyUp(event) {
  if(autoComplete != 0) {
    showAutoComplete();
  }
  return true;
}
function showAutoComplete() {
  if(showAutoCompleteWait==0) {
    showAutoCompleteWait=5;
    setTimeout('showAutoCompleteNow()', 100);
  } else {
    showAutoCompleteWait-=1;
  }
}
function showAutoCompleteNow() {
  var input = document.mainForm.sqlContent;
  var pos = input.selectionStart;
  var s = input.value.substring(0, pos);
  if(s != lastQuery) {
    lastQuery = s;
    retrieveList(s);
  }
  showAutoCompleteWait = 0;
}

function retrieveList(s) {
  sendAsyncRequest('/tmworks/rview?requestID=autocomp&dbaction=' + encodeURIComponent(s));
}

function getXMLHTTPRequest() {
  req = false;
  if(window.XMLHttpRequest) {
    try {
      req = new XMLHttpRequest();
    } catch(e) {
      req = false;
    }
  } else if(window.ActiveXObject) {
    try {
      req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        req = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
        req = false;
      }
    }
  }
  return req;
}

function ajaxRequest(url, fu) {
  req = getXMLHTTPRequest();
  req.onreadystatechange = fu;
  // for anti-caching...
  var ts = (new Date()).getTime();
  url+="&ts="+ts;
  req.open("GET", url, true);
  req.send("");
}


function sendAsyncRequest(url) {
  req = false;
  if(window.XMLHttpRequest) {
    try {
      req = new XMLHttpRequest();
    } catch(e) {
      req = false;
    }
  } else if(window.ActiveXObject) {
    try {
      req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        req = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
        req = false;
      }
    }
  }
  if(req) {
    req.onreadystatechange = processAsyncResponse;
    req.open("GET", url, true);
    req.send("");
  } else {
    var target = document.getElementById("autoComp");
    target.innerHTML = "<tbody><tr><td>ERROR</td></tr></tbody>";
  }
}
function processAsyncResponse() {
  if (req.readyState == 4) {
    if (req.status == 200) {
      var target = document.getElementById("autoComp");
      target.innerHTML = req.responseText;
    } else {
      var target = document.getElementById("autoComp");
      target.innerHTML = "<table><tbody><tr><td>ERROR</td></tr></tbody></table>";
    }
  }
}
function insertText(s) {
  var field = document.mainForm.sqlContent;
  var curfield = field.value;
  var last = curfield.substring(curfield.length-1);
  if(last != '.' && last != '\'' && last != '"' && last > ' ') {
    s = ' ' + s;
  }
  field.value += s;
  field.focus();
}

function addEvent(element, eventType, fn) {
  if(fn == null) {
    return;
  }
  if (element.addEventListener) {
    element.addEventListener(eventType, fn, true);
    return true;
  } else if (element.attachEvent){
    return element.attachEvent('on'+eventType, fn);
  } else {
    alert('Event handler could not be added');
  }
}

function driverTip(argURL) {
  argURL = "/tmworks/rview?requestID=drivertip&connSource="+document.getElementById('connSource').value;
  ajaxRequest(argURL, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        var rec = req.responseText;
        if (rec == "") {
          return;
        }
        var data = rec.split("|");
        for (var i = 0; i < data.length; i++) {
          var t=data[i].indexOf("=");
          var ele = [data[i].substring(0, t), data[i].substring(t+1)];
          if (ele[0].indexOf("l_")>=0) {
            document.getElementById(ele[0]).firstChild.nodeValue = ele[1];
          } else if (ele[0].indexOf("i_")>=0) {
            document.getElementById(ele[0]).innerHTML = "<img src=\"/tmworks/tmview/img/" + ele[1] + "\" align=\"absmiddle\"/>";
          } else {
            document.getElementById(ele[0]).value = ele[1];
          }
        }
      }
    }
  });
}

function dba_mysql_createdb(){
  if (document.mainForm2.databasename.value == "") {
    alert("Please fill out the database name field!");
    return false;
  }
  if (window.confirm("Create Database:"+document.mainForm2.databasename.value + ", OK?")) {
    document.mainForm2.scriptContent.value="Create Database " + document.mainForm2.databasename.value;
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(document.mainForm2.scriptContent.value);
    dba_common_response(argURL);
  }
}

function dba_sqlserver_createdb(){
  if (document.mainForm2.databasename.value == "") {
    alert("Please specify the database name.");
    return false;
  }
  if (window.confirm("Create Database:"+document.mainForm2.databasename.value + ", OK?")) {
    document.mainForm2.scriptContent.value="CREATE DATABASE ["+document.mainForm2.databasename.value+"]";
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(document.mainForm2.scriptContent.value);
    dba_common_response(argURL);
  }
}

function dba_sqlserver_renamedb(olddbname) {
  var newdbname=document.mainForm2.newdbname.value;
  if (newdbname=="") {
    alert("Please specify the new database name.");
    return false;
  }
  document.mainForm2.scriptContent.value="ALTER DATABASE ["+olddbname+"] MODIFY NAME = [" + newdbname+"]";
  var argURL="/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(document.mainForm2.scriptContent.value);
  dba_common_response(argURL);
}

function dba_sqlserver_createschema() {
  var owner=document.mainForm2.owner.options[document.mainForm2.owner.selectedIndex].text;
  var schemaname=document.mainForm2.schemaname.value;
  if (window.confirm("Create Schema: "+schemaname + ", OK?")) {
    document.mainForm2.scriptContent.value="CREATE SCHEMA ["+schemaname+"] AUTHORIZATION ["+owner+"] ";
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(document.mainForm2.scriptContent.value);
    dba_common_response(argURL);
  }
}

function dba_sqlserver_dropschema() {
  var schemaname = document.mainForm2.schemaname.options[document.mainForm2.schemaname.selectedIndex].text;
  if (window.confirm("Drop Schema: "+schemaname + ", OK?")) {
    document.mainForm2.scriptContent.value="DROP SCHEMA ["+schemaname+"]";
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(document.mainForm2.scriptContent.value);
    dba_common_response(argURL);
  }
}

function dba_sqlserver_renametable() {
  var oldtablename = document.mainForm2.oldtablename.options[document.mainForm2.oldtablename.selectedIndex].text;
  var newtablename = document.mainForm2.newtablename.value;
  if (newtablename == "") {
    alert("Please specify the new table name.");
    return false;
  }
  document.mainForm2.scriptContent.value="EXEC sp_rename '" + oldtablename + "', '" + newtablename + "', 'OBJECT'";
  var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(document.mainForm2.scriptContent.value);
  dba_common_response(argURL);
}

function dba_sqlserver_droptable() {
  var tablename = document.mainForm2.tablename.options[document.mainForm2.tablename.selectedIndex].text;
  document.mainForm2.scriptContent.value="DROP TABLE "+tablename;
  var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(document.mainForm2.scriptContent.value);
  dba_common_response(argURL);
}

function dba_mysql_dropdb() {
  var dbname = document.mainForm2.databasename.options[document.mainForm2.databasename.selectedIndex].text;
  if (window.confirm("Drop Database: "+dbname + ", OK?")) {
    document.mainForm2.scriptContent.value="Drop Database " + dbname;
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(document.mainForm2.scriptContent.value);
    dba_common_response(argURL);
  }
}

function dba_mysql_createtable() {
  var tablename=document.getElementById('tablename').value;
  var engine=document.mainForm2.engine.options[document.mainForm2.engine.selectedIndex].text;
  var comment=document.getElementById('tablecomment').value;
  var columntable = document.getElementById('columnset');
  var primaryKeyStmt="";
  var stmt = "CREATE TABLE `" + tablename + "` (";
  var appendDot=0;
  for (var i = 1; i < columntable.rows.length; i++) {
    var columnName = columntable.rows[i].cells[1].firstChild.value;
    if (columnName == "") {
      continue;
    }
    if(appendDot!=0){
      stmt+=",";
    }
    appendDot=1;
    var datatype = columntable.rows[i].cells[3].firstChild.value;
    stmt += "`" + columnName + "` " + datatype;
    var sizeOrvalue=columntable.rows[i].cells[4].firstChild.value;
    var precision=columntable.rows[i].cells[5].firstChild.value;
    var defaultvalue=columntable.rows[i].cells[6].firstChild.value;
    var columncomment=columntable.rows[i].cells[7].firstChild.value;
    if (sizeOrvalue!="") {
      if (precision !=""){
        stmt +="("+sizeOrvalue+","+precision+") ";
      } else {
        stmt +="("+sizeOrvalue+") ";
      }
    }
    var fieldflags = columntable.rows[i].cells[2].getElementsByTagName("input");
    if (fieldflags[2].checked){
      stmt += " UNSIGNED ";
    }
    if(fieldflags[4].checked){
      stmt += " ZEROFILL ";
    }
    if(fieldflags[0].checked){
      stmt += " NOT NULL ";
    }
    if(defaultvalue!=""){
      stmt+=" DEFAULT " + defaultvalue+" ";
    }
    if(fieldflags[3].checked){
      stmt += " AUTO_INCREMENT ";
    }
    if(fieldflags[1].checked){
      stmt += " UNIQUE ";
    }
    if (columncomment!=""){
      stmt +=" COMMENT '"+columncomment+"'";
    }
    if(fieldflags[5].checked){
      if(primaryKeyStmt==""){
        primaryKeyStmt += "`"+columnName+"`";
      } else {
        primaryKeyStmt += ",`"+columnName+"`";
      }
    }
  }
  if(primaryKeyStmt!=""){
    stmt+=",PRIMARY KEY ("+primaryKeyStmt+")";
  }
  stmt+=")ENGINE="+engine+" COMMENT='"+comment+"'";
  if (window.confirm("Create Table:\n"+stmt + ", Please Confirm?")) {
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(stmt);
    dba_common_response(argURL);
  }
}

function dba_mysql_renametable() {
  var oldtablename = document.mainForm2.oldtablename.options[document.mainForm2.oldtablename.selectedIndex].text;
  var newtablename = document.mainForm2.newtablename.value;
  if (newtablename == "") {
    alert("Please specify the new table name.");
    return false;
  }
  document.mainForm2.scriptContent.value="RENAME TABLE " + oldtablename + " TO " + newtablename;
  var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(document.mainForm2.scriptContent.value);
  dba_common_response(argURL);
}

function dba_mysql_emptytable() {
  var tablename = document.mainForm2.tablename.options[document.mainForm2.tablename.selectedIndex].text;
  document.mainForm2.scriptContent.value="DELETE FROM " + tablename;
  var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(document.mainForm2.scriptContent.value);
  dba_common_response(argURL);
}

function dba_mysql_droptable() {
  var tablename = document.mainForm2.tablename.options[document.mainForm2.tablename.selectedIndex].text;
  document.mainForm2.scriptContent.value="DROP TABLE " + tablename;
  var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(document.mainForm2.scriptContent.value);
  dba_common_response(argURL);
}

function dba_mysql_createview(){
  var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(document.mainForm2.scriptContent2.value);
  dba_common_response(argURL);
}

function dba_sqlserver_createview(){
  dba_mysql_createview();
}

function dba_mysql_dropview(){
  var stmt = "DROP VIEW " + document.mainForm2.viewname.options[document.mainForm2.viewname.selectedIndex].text;
  var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(stmt);
  dba_common_response(argURL);
}

function dba_sqlserver_dropview(){
  var stmt = "DROP VIEW \"" + document.mainForm2.viewname.options[document.mainForm2.viewname.selectedIndex].text+"\"";
  var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(stmt);
  dba_common_response(argURL);
}

function dba_mysql_createindex() {
  var tablename=document.getElementById("tablename").value;
  if(document.getElementById("tablename").selectedIndex==0){
    alert("Please specify a valid table.");
    return;
  }
  var indexname=document.getElementById("indexname").value;
  if(indexname==""){
    alert("Please specify a index name to create.");
    return;
  }
  var stmt="CREATE ";
  if(document.getElementById("unique").checked){
    stmt+=" UNIQUE ";
  }
  stmt+="INDEX " + indexname + " ON " + tablename +" (";
  var appendDot=0;
  var columntable=document.getElementById("columnset");
  for(var i=1;i<columntable.rows.length;i++){
    var columnName = columntable.rows[i].cells[1].firstChild.value;
    if (columnName == "") {
      continue;
    }
    if(appendDot!=0){
      stmt+=",";
    }
    appendDot=1;
    stmt+=columnName;
    var indexlen=columntable.rows[i].cells[2].firstChild.value;
    if(indexlen!=""){
      stmt+="("+indexlen+")";
    }
    stmt+=" "+columntable.rows[i].cells[3].firstChild.value;
  }

  stmt+=")";
  if (window.confirm("Create Index:\n"+indexname + " on " + tablename + ", Please Confirm?\n" + stmt)) {
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(stmt);
    dba_common_response(argURL);
  }
}

function dba_mysql_dropindex(){
  var tablename=document.getElementById("tablename").value;
  var indexname=document.getElementById("indexname").value;
  if(document.getElementById("tablename").selectedIndex==0){
    alert("Please specify a valid table.");
    return;
  }
  if(indexname==""){
    alert("Please select the index name to drop.");
    return;
  }
  var stmt="DROP INDEX " + indexname + " ON " + tablename;
  if (window.confirm("Drop Index:\n"+indexname + ", Please Confirm?")) {
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(stmt);
    dba_common_response(argURL);
  }
}

function dba_mysql_createprocedure() {
  var procedurename=document.getElementById("procedurename").value;
  if(procedurename==""){
    alert("Please specify the procedure name!");
    return;
  }

  var stmt="CREATE PROCEDURE `"+procedurename+"` (";

  var columntable = document.getElementById('columnset');
  var appendDot=0;
  for (var i = 1; i < columntable.rows.length; i++) {
    var paramName = columntable.rows[i].cells[2].firstChild.value;
    if (paramName == "") {
      continue;
    }
    var paramType = columntable.rows[i].cells[1].firstChild.value;
    if(appendDot!=0){
      stmt+=",";
    }
    appendDot=1;
    stmt+=paramType + " " + paramName + " ";
    var datatype=columntable.rows[i].cells[3].firstChild.value;
    stmt+=datatype;
    var datasize=columntable.rows[i].cells[4].firstChild.value;
    if(datasize!=""){
      stmt+="("+datasize+")";
    }
  }

  stmt+=")";
  var proceduretype=document.getElementById("proceduretype").value;
  stmt+=" "+proceduretype+" ";
  var sqlsecurity=document.getElementById("sqlsecurity").value;
  stmt+=" SQL SECURITY "+sqlsecurity+" ";
  stmt+=" BEGIN ";
  stmt+=document.getElementById("procedurebody").value;
  stmt+=" END";
  if (window.confirm("Create Procedure:\n"+stmt+ ", Please Confirm?")) {
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(stmt);
    dba_common_response(argURL);
  }
}

function dba_mysql_dropprocedure(){
  var procedurename=document.getElementById("procedurename").value;
  if (procedurename==""){
    alert("No procedure selected to drop!");
    return;
  }
  if (window.confirm("Drop Procedure:\n"+procedurename+ ", Please Confirm?")) {
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent("DROP PROCEDURE `"+procedurename+"`");
    dba_common_response(argURL);
  }
}

function dba_mysql_createfunction() {
  var functionname=document.getElementById("functionname").value;
  if(functionname==""){
    alert("Please specify the function name!");
    return;
  }

  var stmt="CREATE FUNCTION `"+functionname+"` (";

  var columntable = document.getElementById('columnset');
  var appendDot=0;
  for (var i = 1; i < columntable.rows.length; i++) {
    var paramName = columntable.rows[i].cells[1].firstChild.value;
    if (paramName == "") {
      continue;
    }
    if(appendDot!=0){
      stmt+=",";
    }
    appendDot=1;
    stmt+=paramName + " ";
    var datatype=columntable.rows[i].cells[2].firstChild.value;
    stmt+=datatype;
    var datasize=columntable.rows[i].cells[3].firstChild.value;
    if(datasize!=""){
      stmt+="("+datasize+")";
    }
  }

  stmt+=")";
  var returndatatype=document.getElementById("returndatatype").value;
  stmt+=" RETURNS " + returndatatype;
  var returndatasize=document.getElementById("returndatasize").value;
  if(returndatasize!="") {
    stmt+="("+returndatasize+") ";
  }

  var functiontype=document.getElementById("functiontype").value;
  stmt+=" "+functiontype+" ";
  var sqlsecurity=document.getElementById("sqlsecurity").value;
  stmt+=" SQL SECURITY "+sqlsecurity+" ";
  stmt+=" BEGIN ";
  stmt+=document.getElementById("functionbody").value;
  stmt+=" END";
  if (window.confirm("Create Function:\n"+stmt+ ", Please Confirm?")) {
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(stmt);
    dba_common_response(argURL);
  }
}

function dba_mysql_dropfunction(){
  var functionname=document.getElementById("functionname").value;
  if (functionname==""){
    alert("No function selected to drop!");
    return;
  }
  if (window.confirm("Drop Function:\n"+functionname+ ", Please Confirm?")) {
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent("DROP FUNCTION `"+functionname+"`");
    dba_common_response(argURL);
  }
}

function dba_mysql_createtrigger(){
  var triggername=document.getElementById("triggername").value;
  var tablename=document.getElementById("tablename").value;
  var triggertype=document.getElementById("triggertype").value;
  var triggerevent=document.getElementById("triggerevent").value;
  var triggerbody=document.getElementById("triggerbody").value;
  stmt="CREATE TRIGGER `"+triggername+"` "+triggertype + " " + triggerevent +" ON `" + tablename + "` " + "FOR EACH ROW ";
  stmt+=" BEGIN ";
  stmt+=triggerbody;
  stmt+=" END";
  if (window.confirm("Create Trigger:\n"+stmt+ ", Please Confirm?")) {
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(stmt);
    dba_common_response(argURL);
  }
}

function dba_mysql_droptrigger() {
  var triggername=document.getElementById("triggername").value;
  if (triggername==""){
    alert("No Trigger Available!");
    return;
  }
  if (window.confirm("Drop Trigger:\n"+triggername+ ", Please Confirm?")) {
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent("DROP TRIGGER `"+triggername+"`");
    dba_common_response(argURL);
  }
}

function dba_mysql_createuser(){
  var username=document.getElementById("username").value;
  var host=document.getElementById("host").value;
  var psd1=document.getElementById("psd1").value;
  var psd2=document.getElementById("psd2").value;
  if (username==""){
    return;
  }
  if(psd1!=psd2){
    alert("Password Confirm Fail, Please Check.");
    return;
  }
  var stmt="GRANT ";
  var stmt_pri="";
  var isAllPrivilege=0;
  var source=document.getElementById("privileges_set");
  var psets=source.getElementsByTagName("input");
  for (var i=0;i<psets.length;i++){
    if(psets[i].checked){
      if(stmt_pri!=""){
        stmt_pri+=",";
      }
      stmt_pri+=psets[i].value;
    } else {
      isAllPrivilege=1;
    }
  }
  if(isAllPrivilege==0){
    stmt+="ALL PRIVILEGES ";
  } else {
    stmt+=stmt_pri+" ";
  }
  stmt+="ON *.* TO ";
  stmt+="'"+username+"'@'"+host+"' IDENTIFIED BY '"+psd1+"' WITH ";
  if(document.getElementById("grant_priv").checked){
    stmt+=" GRANT OPTION ";
  }
  var max_queries=document.getElementById("max_queries").value;
  if(max_queries!="" && max_queries!="0"){
    stmt+="MAX_QUERIES_PER_HOUR "+max_queries + " ";
  } else {
    stmt+="MAX_QUERIES_PER_HOUR 0 ";
  }
  var max_updates=document.getElementById("max_updates").value;
  if(max_updates!="" && max_updates!="0"){
    stmt+="MAX_UPDATES_PER_HOUR "+max_updates + " ";
  }
  var max_connections=document.getElementById("max_connections").value;
  if(max_connections!="" && max_connections!="0"){
    stmt+="MAX_CONNECTIONS_PER_HOUR "+max_connections + " ";
  }
  var max_user_connections=document.getElementById("max_user_connections").value;
  if(max_user_connections!="" && max_user_connections!="0"){
    stmt+="MAX_USER_CONNECTIONS "+max_user_connections + " ";
  }
  if (window.confirm("Grant User:\n"+stmt+ ", Please Confirm?")) {
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(stmt);
    dba_common_response(argURL);
  }
}

function dba_mysql_dropuser(){
  var username_t=document.getElementById("username").value;
  var username=username_t.split("@");
  if (window.confirm("Drop User:\n"+username_t+ ", Please Confirm?")) {
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent("DROP USER '"+username[0]+"'@'"+username[1]+"'");
    dba_common_response(argURL);
  }
}

function dba_mysql_commonalert(argMsg){
  if (window.confirm(argMsg)) {
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(document.getElementById("scriptContent2").value);
    dba_common_response(argURL);
  }
}

function dba_mysql_getcreatetable(){
  var tablename=document.getElementById("tablename").value;
  var url="/tmworks/rview?requestID=datagetter&actionName=dba_mysql_getcreatetable&param1="+tablename;
  ajaxRequest(url, function(){
    if (req.readyState == 4) {
      if (req.status == 200) {
        document.getElementById("scriptContent2").value=req.responseText;
      }
    }
  });
}

function dba_mysql_getcreateview(){
  var viewname=document.getElementById("viewname").value;
  var url="/tmworks/rview?requestID=datagetter&actionName=dba_mysql_getcreateview&param1="+viewname;
  ajaxRequest(url, function(){
    if (req.readyState == 4) {
      if (req.status == 200) {
        document.getElementById("scriptContent2").value=req.responseText;
      }
    }
  });
}

function dba_mysql_getcreateprocedure(){
  var procedurename=document.getElementById("procedurename").value;
  var url="/tmworks/rview?requestID=datagetter&actionName=dba_mysql_getcreateprocedure&param1="+procedurename;
  ajaxRequest(url, function(){
    if (req.readyState == 4) {
      if (req.status == 200) {
        document.getElementById("scriptContent2").value=req.responseText;
      }
    }
  });
}

function dba_mysql_getcreatefunction(){
  var functionname=document.getElementById("functionname").value;
  var url="/tmworks/rview?requestID=datagetter&actionName=dba_mysql_getcreatefunction&param1="+functionname;
  ajaxRequest(url, function(){
    if (req.readyState == 4) {
      if (req.status == 200) {
        document.getElementById("scriptContent2").value=req.responseText;
      }
    }
  });
}

function dba_mysql_gettableindex(){
  var tablename=document.getElementById("tablename").value;
  var url="/tmworks/rview?requestID=datagetter&actionName=dba_mysql_gettableindex&param1="+tablename;
  ajaxRequest(url, function(){
    if (req.readyState == 4) {
      if (req.status == 200) {
        var indexSelectEle=document.getElementById("indexname");
        indexSelectEle.options.length =0;
        var source=req.responseText;
        var indexdatas=source.split(";");
        for(var i=0;i<indexdatas.length;i++){
          var oOption=new Option(indexdatas[i],indexdatas[i]);
          indexSelectEle.options[indexSelectEle.length]=oOption;
        }
      }
    }
  });
}

function dba_getcolumnsforcreateindex(){
  var tablename=document.getElementById("tablename").value;
  var url="/tmworks/rview?requestID=datagetter&actionName=dba_getcolumnsforcreateindex&param1="+tablename;
  ajaxRequest(url, function(){
    if (req.readyState == 4) {
      if (req.status == 200) {
        var columntable=document.getElementById("columnset");
        var deleteTime=columntable.rows.length-2;
        for(var i=0;i<deleteTime;i++){
          deleteColumn();
        }
        var indexSelectEle=columntable.rows[1].cells[1].firstChild;
        indexSelectEle.options.length =0;
        var source=req.responseText;
        var indexdatas=source.split(";");
        for(var i=0;i<indexdatas.length;i++){
          var oOption=new Option(indexdatas[i],indexdatas[i]);
          indexSelectEle.options[indexSelectEle.length]=oOption;
        }
      }
    }
  });
}

function dba_common_response(argURL) {
  ajaxRequest(argURL, function(){
    if (req.readyState == 4) {
      if (req.status == 200) {
        var ele=document.getElementById('error');
        ele.style.display="block";
        ele.innerHTML=req.responseText+"<img src='/tmworks/tmview/img/close.gif' onclick='javascript:hideElement(\"error\")' style='float:right;cursor:pointer'/>";
      }
    }
  });
}

function dba_mysql_checkallprivilege(){
  var source=document.getElementById("fieldset_privileges");
  var psets=source.getElementsByTagName("input");
  for (var i=0;i<psets.length;i++){
    psets[i].checked=true;
  }
}

function dba_mysql_uncheckallprivilege(){
  var source=document.getElementById("fieldset_privileges");
  var psets=source.getElementsByTagName("input");
  for (var i=0;i<psets.length;i++){
    psets[i].checked=false;
  }
}

function addColumn() {
  var table = document.getElementById('columnset');
  var lastTableRow = table.rows[table.rows.length-1];
  var cloneNode = lastTableRow.cloneNode(true);

  var source = document.getElementById("columnsetbody");
  source.appendChild(cloneNode);
  cloneNode.cells[0].innerHTML = table.rows.length - 1;
  if (table.rows.length % 2 == 0) {
    cloneNode.className="odd";
  } else {
    cloneNode.className="even";
  }
}

function deleteColumn() {
  var table = document.getElementById('columnset');
  if (table.rows.length < 3) {
    return;
  }
  table.deleteRow(table.rows.length - 1);
}

function applyEvent(a,b,c) {
    var e="on"+b;
    if(a.addEventListener) {
      a.addEventListener(b,c,false)
    } else if (a.attachEvent) {
      a.attachEvent(e, c)
    } else {
      var d = a[e];
      a[e] = function() {
        var f=d.apply(this,arguments),
        g = c.apply(this,arguments);
        return f == undefined ? g : (g==undefined?f:g&&f)
      }
    }
  }

function getTipList(argItem, argTipType, argParam) {
  var argURL="/tmworks/rview?requestID=tip&tipType="+argTipType+"&param="+argParam;
  ajaxRequest(argURL, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        var ele=document.getElementById("autoComp");
        ele.innerHTML=req.responseText;
        var table=document.getElementById("autoCompTable");
        var e=document.getElementById(argItem);
        var clientX=e.offsetLeft;
        var clientY=e.offsetTop + 21;
        while(e=e.offsetParent){
          clientX+=e.offsetLeft;
          clientY+=e.offsetTop;
        }
        table.style.left=clientX+"px";
        table.style.top=clientY+"px";
        ele.style.display="";
      }
    }
  });
 }

 function selectTipItem(argItem, argValue) {
   document.getElementById(argItem).value=argValue;
 }

 function closeTip() {
   var table=document.getElementById("autoComp");
   if (table) {
     table.style.display="none";
   }
 }


function showTipList(event, argItem) {
  var key=event.keyCode ? event.keyCode : event.charCode;
  if(key == null) {
    return true;
  }
  var table = document.getElementById("autoCompTable");
  if(table.rows.length > 0) {
    if(key == 27) {
      while(table.rows.length > 0) {
        table.deleteRow(0);
      }
      return false;
    } else if((key == 13 && !event.shiftKey) || (key==9 && !event.shiftKey)) {
      if(table.rows.length > selectedRow) {
        var row = table.rows[selectedRow];
        document.getElementById(argItem).value=row.cells[0].innerHTML;
        highlightRow(selectedRow);
        // close the layer
        document.getElementById("autoComp").style.display="none";
        return false;
      }
    } else if(key == 38 && !event.shiftKey) {
      if(table.rows.length > selectedRow) {
        selectedRow = selectedRow <= 0 ? table.rows.length-1 : selectedRow-1;
        highlightRow(selectedRow);
      }
      return false;
    } else if(key == 40 && !event.shiftKey) {
      if(table.rows.length > selectedRow) {
        selectedRow = selectedRow >= table.rows.length-1 ? 0 : selectedRow+1;
        highlightRow(selectedRow);
      }
      return false;
    }
    return true;
  }
}

function getSumary(str, maxlen) {
  if (str.length <= maxlen) {
    return str;
  }
  return str.substring(0, maxlen)+"...";
}

function dba_sqlserver_createtable() {
  var tablename=document.getElementById('tablename').value;
  var schema=document.mainForm2.schema.options[document.mainForm2.schema.selectedIndex].text;
  var comment=document.getElementById('tablecomment').value;
  var columntable = document.getElementById('columnset');
  var primaryKeyStmt="";
  var stmt = "CREATE TABLE [" + schema + "].[" + tablename + "] (";
  var appendDot=0;
  for (var i = 1; i < columntable.rows.length; i++) {
    var columnName = columntable.rows[i].cells[1].firstChild.value;
    if (columnName == "") {
      continue;
    }
    if(appendDot!=0){
      stmt+=",";
    }
    appendDot=1;
    var datatype = columntable.rows[i].cells[3].firstChild.value;
    stmt += "[" + columnName + "] " + datatype;
    var sizeOrvalue=columntable.rows[i].cells[4].firstChild.value;
    var precision=columntable.rows[i].cells[5].firstChild.value;
    var defaultvalue=columntable.rows[i].cells[6].firstChild.value;
    var columncomment=columntable.rows[i].cells[7].firstChild.value;
    if (sizeOrvalue!="") {
      if (precision !=""){
        stmt +="("+sizeOrvalue+","+precision+") ";
      } else {
        stmt +="("+sizeOrvalue+") ";
      }
    }
    var fieldflags = columntable.rows[i].cells[2].getElementsByTagName("input");
    if(fieldflags[0].checked){
      stmt += " NOT NULL ";
    }
    if(defaultvalue!=""){
      stmt+=" DEFAULT " + defaultvalue+" ";
    }
    if(fieldflags[1].checked){
      stmt += " UNIQUE ";
    }
    if(fieldflags[2].checked){
      if(primaryKeyStmt==""){
        primaryKeyStmt += "["+columnName+"]";
      } else {
        primaryKeyStmt += ",["+columnName+"]";
      }
    }
  }
  if(primaryKeyStmt!=""){
    stmt+=",PRIMARY KEY CLUSTERED ("+primaryKeyStmt+")";
  }
  stmt+=")";
  if (window.confirm("Create Table:\n"+stmt + ", Please Confirm?")) {
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(stmt);
    dba_common_response(argURL);
  }
}

function dba_sqlserver_emptytable() {
  var tablename = document.mainForm2.tablename.options[document.mainForm2.tablename.selectedIndex].text;
  document.mainForm2.scriptContent.value="DELETE FROM " + tablename;
  if (window.confirm("Empty Table:\n"+stmt + ", Please Confirm?")) {
    var argURL = "/tmworks/rview?requestID=dbaction2&scriptContent="+encodeURIComponent(document.mainForm2.scriptContent.value);
    dba_common_response(argURL);
  }
}

function getHTMLByURL(url, id) {
  setBusy();
  ajaxRequest(url, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        setBusy(false);
        document.getElementById(id).innerHTML=req.responseText;
      }
    }
  });
}

function qb_copyNewCondition(x) {
  var parent=x.parentNode;
  var clone=x.cloneNode(true);
  insertAfter(clone, x);
  for (var i=1; i<parent.rows.length; i++){
    var row=parent.rows[i];
    row.cells[1].firstChild.id="con_key"+i;
    row.cells[3].firstChild.id="con_value"+i;
  }
}

function qb_delCondition(x) {
  var parent=x.parentNode;
  if (parent.rows.length < 3) {
    // empty the input
    x.cells[1].firstChild.value="";
    x.cells[3].firstChild.value="";
    return;
  }
  parent.removeChild(x);
  for (var i=1; i<parent.rows.length; i++){
    var row=parent.rows[i];
    row.cells[1].firstChild.id="con_key"+i;
    row.cells[3].firstChild.id="con_value"+i;
  }
}

function qb_copyNewSort(x) {
  var parent=x.parentNode;
  var clone=x.cloneNode(true);

  insertAfter(clone, x);
  for (var i=1; i<parent.rows.length; i++){
    var row=parent.rows[i];
    row.cells[1].firstChild.id="sort_key"+i;
  }
}

function qb_delSort(x) {
  var parent=x.parentNode;
  if (parent.rows.length < 3) {
    x.cells[1].firstChild.value="";
    return;
  }
  parent.removeChild(x);
  for (var i=1; i<parent.rows.length; i++){
    var row=parent.rows[i];
    row.cells[1].firstChild.id="sort_key"+i;
  }
}

function insertAfter(newElement,targetElement) {
  var parent = targetElement.parentNode;
  if(parent.lastchild == targetElement) {
    parent.appendChild(newElement);
  } else {
    parent.insertBefore(newElement, targetElement.nextSibling);
  }
}

function qb_genSQLWithLinks() {
  qb_links_clone = qb_links.clone();
  var columnsEle=document.getElementById('conditions');
  var conditionEle=document.getElementById('columnconditions');
  var sortEle=document.getElementById('sortcolumns');
  var distinct=document.getElementById('uniquerecords').checked ? "DISTINCT" : "";
  var group="";

  var tableArray=new Array();
  var tbNames=new Array();

  var sql="SELECT " + distinct + " \n";
  var length=columnsEle.rows.length;
  if (length == 1) sql += "  " + "*\n";
  for(var i=1; i<length;i++) {
    var row=columnsEle.rows[i];
    var columnName=row.cells[1].innerHTML;
    var alias=row.cells[2].firstChild.value;
    var aggregateEle=row.cells[3].firstChild;
    var aggregate=aggregateEle.options[aggregateEle.selectedIndex].value;

    var tbName=columnName.substring(0, columnName.lastIndexOf('.'));
    if (!tableArray[tbName]) {
      tableArray[tbName] = tbName;
      tbNames.push(tbName);
    }
    if(row.cells[4].firstChild.checked) {
      group += columnName+",";
    }
    if (aggregate != ""){
      columnName=aggregate+columnName+")";
    }
    if (alias=="") {
      sql += "  " + columnName;
    } else {
      sql += "  " + columnName + " AS " + alias;
    }
    if (i == length - 1) {
      sql += "\n";
    } else {
      sql += ",\n";
    }
  }

  sql += "FROM\n";
  var linkHash = new Hash();
  while(qb_links_clone.length>0) {
    var link=qb_links_clone[0];
    var field1 = link.field1.id;
    var field2 = link.field2.id;
    var tb1 = field1.substring(0, field1.lastIndexOf("."));
    var tb2 = field2.substring(0, field2.lastIndexOf("."));
    var condition = link.condition;
    linkHash.set(tb1, getTableLinks(tb1));
  }

  var arr=linkHash.keys();
  sql+="  "+arr[0]+"\n";
  sql+=linkHash.get(arr[0]);
  for (var i=1 ;i<arr.length;i++) {
    sql+=linkHash.get(arr[i]);
  }

  var whereCondition="";
  length=conditionEle.rows.length;
  for(var i=1; i<length;i++) {
    var row=conditionEle.rows[i];
    var key=row.cells[1].firstChild.value;
    if(key=="") {
      continue;
    }
    var opEle=row.cells[2].firstChild;
    var op=opEle.options[opEle.selectedIndex].value;
    var value=row.cells[3].firstChild.value;

    var matchType=row.cells[4].firstChild.options[row.cells[4].firstChild.selectedIndex].value;

    whereCondition += "  " + key + " " + op + " " + value;
    if (i == length - 1) {
      whereCondition += "\n";
    } else {
      whereCondition += " " + matchType + "\n";
    }
  }

  if(whereCondition !=""){
    sql += "WHERE\n"+whereCondition;
  }

  if(group!=""){
    sql += "GROUP BY\n";
    sql +="  "+group.substring(0, group.length-1) + "\n";
  }

  var orderStmt="";
  length=sortEle.rows.length;
  for(var i=1; i<length; i++) {
    var row=sortEle.rows[i];
    var orderColumn=row.cells[1].firstChild.value;
    if (orderColumn==""){
      continue;
    }
    var descType=row.cells[2].firstChild.options[row.cells[2].firstChild.selectedIndex].value;
    orderStmt += "  " + orderColumn + " " + descType;
    if (i == length - 1) {
      orderStmt += "\n";
    } else {
      orderStmt += ",\n";
    }
  }
  if(orderStmt !=""){
    sql +="ORDER BY\n"+orderStmt;
  }

  if(codepress) {
    codepress.setCode(sql);
  } else {
    document.getElementById('QUERYTEXT').value=sql;
  }
}

function qb_genSQL() {
  if(qb_links != null && qb_links.length>0) {
    qb_genSQLWithLinks();
    return;
  }

  var columnsEle=document.getElementById('conditions');
  var conditionEle=document.getElementById('columnconditions');
  var sortEle=document.getElementById('sortcolumns');
  var distinct=document.getElementById('uniquerecords').checked ? "DISTINCT" : "";
  var group="";

  var tableArray=new Array();
  var tbNames=new Array();

  var sql="SELECT " + distinct + " \n";
  var length=columnsEle.rows.length;
  if (length == 1) sql += "  " + "*\n";
  for(var i=1; i<length;i++) {
    var row=columnsEle.rows[i];
    var columnName=row.cells[1].innerHTML;
    var alias=row.cells[2].firstChild.value;
    var aggregateEle=row.cells[3].firstChild;
    var aggregate=aggregateEle.options[aggregateEle.selectedIndex].value;

    var tbName=columnName.substring(0, columnName.lastIndexOf('.'));
    if (!tableArray[tbName]) {
      tableArray[tbName] = tbName;
      tbNames.push(tbName);
    }
    if(row.cells[4].firstChild.checked) {
      group += columnName+",";
    }
    if (aggregate != ""){
      columnName=aggregate+columnName+")";
    }
    if (alias=="") {
      sql += "  " + columnName;
    } else {
      sql += "  " + columnName + " AS " + alias;
    }
    if (i == length - 1) {
      sql += "\n";
    } else {
      sql += ",\n";
    }
  }

  sql += "FROM\n";

  for(var i=0; i<tbNames.length-1;i++){
    sql+="  " + renewViewName(tbNames[i]) + ",\n";
  }
  sql+="  " +renewViewName(tbNames[tbNames.length-1])+"\n";

  var whereCondition="";
  length=conditionEle.rows.length;
  for(var i=1; i<length;i++) {
    var row=conditionEle.rows[i];
    var key=row.cells[1].firstChild.value;
    if(key=="") {
      continue;
    }
    var opEle=row.cells[2].firstChild;
    var op=opEle.options[opEle.selectedIndex].value;
    var value=row.cells[3].firstChild.value;

    var matchType=row.cells[4].firstChild.options[row.cells[4].firstChild.selectedIndex].value;

    whereCondition += "  " + key + " " + op + " " + value;
    if (i == length - 1) {
      whereCondition += "\n";
    } else {
      whereCondition += " " + matchType + "\n";
    }
  }

  if(whereCondition !=""){
    sql += "WHERE\n"+whereCondition;
  }

  if(group!=""){
    sql += "GROUP BY\n";
    sql +="  "+group.substring(0, group.length-1) + "\n";
  }

  var orderStmt="";
  length=sortEle.rows.length;
  for(var i=1; i<length; i++) {
    var row=sortEle.rows[i];
    var orderColumn=row.cells[1].firstChild.value;
    if (orderColumn==""){
      continue;
    }
    var descType=row.cells[2].firstChild.options[row.cells[2].firstChild.selectedIndex].value;
    orderStmt += "  " + orderColumn + " " + descType;
    if (i == length - 1) {
      orderStmt += "\n";
    } else {
      orderStmt += ",\n";
    }
  }
  if(orderStmt !=""){
    sql +="ORDER BY\n"+orderStmt;
  }

  if(codepress) {
    codepress.setCode(sql);
  } else {
    document.getElementById('QUERYTEXT').value=sql;
  }
}

function renewViewName(viewName) {
  if(viewName && viewName.indexOf(" ") != -1 && viewName.indexOf("\"") == -1) {
    var sb = "";
    // 在最后一??.后增加[, 并且末尾增加]作为viewName
    var index = viewName.lastIndexOf(".");
    if(index == -1) {
      sb = "\"" + viewName + "\"";
    } else {
      sb = viewName.substring(0, index + 1) + "\"" + viewName.substring(index+1) + "\"";
    }
    return sb;
  }
  return viewName;
}

function qb_getResult() {
  var columnsEle=document.getElementById('conditions');
  if(columnsEle.rows.length<2) {
    document.getElementById('queryResults').innerHTML="<p/>No column selected, please drop a table to the sql workshop first.";
    return;
  }
  qb_genSQL();
  var sql=codepress ? codepress.getCode() : document.getElementById('QUERYTEXT').value;
  var ajax=new Ajax.Request(ROOT_URL, {
    method:'post',
    parameters: 'requestID=qb_getresult&sqlContent='+encodeURIComponent(sql),
    onComplete:function(ajax) {
      document.getElementById('queryResults').innerHTML=ajax.responseText;
    }
  });
}

function qb_switchCheckAllColumns(item) {
  var checked=item.checked;
  var table=item.parentNode.parentNode.parentNode;
  var rowNum=table.rows.length;
  for(var i=1;i<rowNum;i++){
    var ele=table.rows[i].cells[0].firstChild;
    if(ele.checked != checked) {
      ele.checked=checked;
      ele.onclick();
    }
  }

}

function getRepTypeImg() {
  var ele=document.getElementById('repType');
  document.getElementById('img_rep').src= "/tmworks/tmview/img/charts/"+ele.options[ele.selectedIndex].value+".gif";
  getChartDSHelp();
}

function selectTableasTemplate() {
  var ele=document.getElementById('alltablelist');
  var tableid=ele.options[ele.selectedIndex].value;
  // !!! tablename--->formName
  var url="/tmworks/rview?requestID=fb_tableastemplate&formName="+tableid;
  loadon();
  new Ajax.Request(url, {
    method: 'post',
    onComplete: function(req) {
      closeDialog();
      var txt=req.responseText;
      var start=txt.indexOf("<attachment>");
      var end=txt.indexOf("</attachment>");
      var html=txt.substring(0, start);
      var data=eval("("+txt.substring(start+12, end)+")");
      formprop[0] = data.formID;
      formprop[1] = data.formName;
      formprop[2] = data.formDescription;
      docid('fname').innerHTML = data.formName + "<span id='formsaved' style='color:red;vertical-align:middle;'></span>";

      html = "<table id='MainContent' width='99%' height='90%' align='center' cellpadding='0' cellspacing='0'  border='0'>" + html + "</table>"
      var createdDiv = document.createElement("div");
      createdDiv.innerHTML = html;
      document.getElementById('MainContent').parentNode.replaceChild(createdDiv.childNodes[0], document.getElementById('MainContent'));

      MainContent = new GridCustomize("MainContent");
      MainContent.regEventByClass("div", "field-outer-container");
      currOrd = getCurrentOrder();

      loadoff();
    }}
  );
}

function selectForm(formid) {
  closeDialog();
  loadon();
  if(formid == undefined || formid == null) {
    var ele=document.getElementById('allformlist');
    formid=ele.options[ele.selectedIndex].value;
  }
  new Ajax.Request(ROOT_URL, {
    method:'post',
    parameters:{requestID:'getform', formID:formid},
    onComplete: function(ajax) {
      var txt=ajax.responseText;
      var start=txt.indexOf("<attachment>");
      var end=txt.indexOf("</attachment>");
      if (start != -1 && end != -1) {
        var html=txt.substring(0, start);
        var data=eval("("+txt.substring(start+12, end)+")");
        formprop[0] = data.formID;
        formprop[1] = data.formName;
        formprop[2] = data.formDescription;
        formprop[3] = data.formLoadAction;
        docid('fname').innerHTML = data.formName + "<span id='formsaved' style='color:red;vertical-align:middle;'></span>";

        html = "<table id='MainContent' width='99%' height='90%' align='center' cellpadding='0' cellspacing='0'  border='0'>" + html + "</table>"
        var createdDiv = document.createElement("div");
        createdDiv.innerHTML = html;
        document.getElementById('MainContent').parentNode.replaceChild(createdDiv.childNodes[0], document.getElementById('MainContent'));
      }
      MainContent = new GridCustomize("MainContent");
      MainContent.regEventByClass("div", "field-outer-container");
      currOrd = getCurrentOrder();

      loadoff();
    }
  });
}

function deleteForm(param) {
  var formid="";
  if(param ==0 && docid('allformlist').selectedIndex >= 0){
    formid = docid('allformlist').options[docid('allformlist').selectedIndex].value
  }
  if(formid ==""){
    return;
  }
  if (confirm("the selected form data will be lost, are you sure?")) {
    var url="/tmworks/rview?requestID=delform&formID="+formid+"&timestamp="+ts;
    var ts = (new Date()).getTime();
    var ele=document.getElementById('allformlist');
    setSelectByAjax(url, ele);
  }
}

function deleteQuery() {
  var qid="";
  if(docid('allqblistd').selectedIndex >= 0){
    qid = docid('allqblistd').options[docid('allqblistd').selectedIndex].value
  }
  if(qid ==""){
    return;
  }
  if (confirm("the selected query data will be lost, are you sure?")) {
    var url="/tmworks/rview?requestID=delquery&qbID="+qid;
    var ele=document.getElementById('allqblistd');
    setSelectByAjax(url, ele);
  }
}

function appendCat() {
  var body=document.getElementById('catbody');
  if(document.getElementById('norowtip')) {
    body.deleteRow(0);
    rowLen=0;
  }
  if(body.rows.length > 0) {
    if(body.rows[body.rows.length-1].cells[1].firstChild.type=="text") {
      return;
    }
  }
  var rowLen=body.rows.length;
  var clone=document.getElementById('clone');
  var append=clone.cloneNode(true);
  if(rowLen % 2 == 0) {
    append.className ="odd";
  } else {
    append.className ="even";
  }
  body.appendChild(append);
}

function newCat(ele) {
  var catName=ele.cells[1].firstChild.value;
  var catDescription=ele.cells[2].firstChild.value;
  if(catName=="" || catDescription=="") {
    alert("Please input the catalog's name and description");
    return;
  }

  var url="/tmworks/rview?requestID=updatecat&param=0&catName="+catName+"&catDescription="+catDescription;
  ajaxRequest(url, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        document.getElementById('catdiv').innerHTML= req.responseText;
      }
    }
  });
}

function delCat(catID) {
  var url="/tmworks/rview?requestID=updatecat&param=2&catID="+catID;
  ajaxRequest(url, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        document.getElementById('catdiv').innerHTML= req.responseText;
      }
    }
  });
}

function uv_operate(requestID) {
  setBusy();
  var viewName=document.getElementById('viewName').value;
  var viewDes=encodeURIComponent(document.getElementById('viewDescription').value);
  var formID=document.getElementById('formID').options[document.getElementById('formID').selectedIndex].value;
  var sqlContent=encodeURIComponent(codepress ? codepress.getCode() : document.getElementById('sqlContent').value);
  var catID=document.getElementById('catID').options[document.getElementById('catID').selectedIndex].value;
  var url="/tmworks/rview?requestID="+requestID+"&viewName="+viewName+"&viewDescription="+viewDes+"&formID="+formID+"&sqlContent="+sqlContent+"&catID="+catID;
  if(requestID=='edituserview2') {
    url+="&viewID="+document.getElementById('viewID').value;
  }
  ajaxRequest(url, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        var ele=document.getElementById('error');
        ele.style.display="block";
        ele.innerHTML=req.responseText+"<img src='/tmworks/tmview/img/close.gif' onclick='javascript:hideElement(\"error\")' style='float:right;cursor:pointer'>";
        setBusy(false);
        document.body.scrollTop=0;
      }
    }
  });
}

function createUV() {
  uv_operate('newuserview2');
}

function confirmUV() {
  uv_operate('confirmUV');
}

function updateUV() {
  uv_operate('edituserview2');
}

function op_operate(requestID) {
  setBusy();
  var opName=document.getElementById('opName').value;
  var opDes=encodeURIComponent(document.getElementById('opDescription').value);
  var formID=document.getElementById('formID').options[document.getElementById('formID').selectedIndex].value;
  var sqlContent=encodeURIComponent(codepress ? codepress.getCode() : document.getElementById('sqlContent').value);
  var opTip = encodeURIComponent(document.getElementById('opTip').value);
  var catID=document.getElementById('catID').options[document.getElementById('catID').selectedIndex].value;
  var pageFlow = document.getElementById('pageFlow').options[document.getElementById('pageFlow').selectedIndex].value;

  var url="/tmworks/rview?requestID="+requestID+"&opName="+opName+"&opDescription="+opDes+"&formID="+formID+"&sqlContent="+sqlContent+"&catID="+catID+"&opTip="+opTip+"&pageFlow="+pageFlow;
  if(requestID=='updateop') {
    url+="&opID="+document.getElementById("opID").value;
  }
  ajaxRequest(url, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        var ele=document.getElementById('error');
        ele.style.display="block";
        ele.innerHTML=req.responseText+"<img src='/tmworks/tmview/img/close.gif' onclick='javascript:hideElement(\"error\")' style='float:right;cursor:pointer'>";
        setBusy(false);
        document.body.scrollTop=0;
      }
    }
  });
}

function createOP() {
  op_operate('createop');
}

function confirmOP() {
  op_operate('confirmOP');
}

function updateOP() {
  op_operate('updateop');
}

function qr_operate(requestID) {
  setBusy();
  var monName=document.getElementById('monName').value;
  var monDes=encodeURIComponent(document.getElementById('monDescription').value);
  var sqlContent=encodeURIComponent(codepress ? codepress.getCode() : document.getElementById('sqlContent').value);
  var catID=document.getElementById('catID').options[document.getElementById('catID').selectedIndex].value;
  var monType=document.getElementById('monType').value;
  var url="/tmworks/rview?requestID="+requestID+"&monName="+monName+"&monDescription="+monDes+"&sqlContent="+sqlContent+"&catID="+catID+"&monType="+monType;
  if(requestID=='updatemon') {
    url+="&monID="+document.getElementById("monID").value;
  }
  ajaxRequest(url, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        var ele=document.getElementById('error');
        ele.style.display="block";
        ele.innerHTML=req.responseText+"<img src='/tmworks/tmview/img/close.gif' onclick='javascript:hideElement(\"error\")' style='float:right;cursor:pointer'>";
        setBusy(false);
        document.body.scrollTop=0;
      }
    }
  });
}


function createMON() {
  qr_operate('createmon');
}

function confirmMON() {
  qr_operate('confirmmon');
}

function updateMON() {
  qr_operate('updatemon');
}

function rp_operate(requestID) {
  setBusy();
  var repName=document.getElementById('repName').value;
  var repDes=encodeURIComponent(document.getElementById('repDescription').value);
  var repDetail=encodeURIComponent(codepress ? codepress.getCode() : document.getElementById('sqlContent').value);
  var repType=document.getElementById('repType').options[document.getElementById('repType').selectedIndex].value;
  var formID=document.getElementById('formID').options[document.getElementById('formID').selectedIndex].value;
  var catID=document.getElementById('catID').options[document.getElementById('catID').selectedIndex].value;
  var url="/tmworks/rview?requestID="+requestID+"&repName="+repName+"&repDescription="+repDes+"&repDetail="+repDetail+"&catID="+catID+"&repType="+repType+"&formID="+formID;
  if(requestID=='updaterep') {
    url+="&repID="+document.getElementById("repID").value;
  }
  ajaxRequest(url, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        var ele=document.getElementById('error');
        ele.style.display="block";
        ele.innerHTML=req.responseText+"<img src='/tmworks/tmview/img/close.gif' onclick='javascript:hideElement(\"error\")' style='float:right;cursor:pointer'>";
        setBusy(false);
        document.body.scrollTop=0;
        setBusy(false);
      }
    }
  });
}

function createREP() {
  rp_operate('createrep');
}

function confirmREP() {
  rp_operate('confirmrep');
}

function updateREP() {
  rp_operate('updaterep');
}

function getSqlContent() {
  var ele=document.getElementById('query');
  var qID=ele.options[ele.selectedIndex].value;
  if(qID=="") {
    return;
  }
  var url="/tmworks/rview?requestID=getreptypeimg&param1="+qID+"&param2=getsqlcontent";
  ajaxRequest(url, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        if (codepress) {
          codepress.setCode(req.responseText);
        } else {
          document.getElementById('sqlContent').value=req.responseText;
        }
      }
    }
  });
}

function setCodePress(id, value) {
  if (codepress) {
    codepress.setCode(value);
  } else {
    document.getElementById(id).value=value;
  }
}

function setFormHideElementValue_CD(form, eleId) {
  if(form.eleId) {
    form.eleId.value=codepress ? codepress.getCode() : document.getElementById(id).value;
  } else {
    var child=document.createElement("input");
    child.type="hidden";
    child.name=eleId;
    child.value=codepress ? codepress.getCode() : document.getElementById(id).value;
    form.appendChild(child);
  }
}

function getFormVar() {
  var ele=document.getElementById('formID');
  var fID=ele.options[ele.selectedIndex].value;
  if(fID=="") {
    return;
  }
  new Ajax.Request(ROOT_URL, {
    method: 'post',
    parameters:{requestID:'getreptypeimg', param1:fID, param2:'getformvar'},
    onSuccess: function(transport) {
      document.getElementById('formvar').innerHTML=transport.responseText;
    }
  });
}

function getChartDSHelp() {
  var ele=document.getElementById('repType');
  var rID=ele.options[ele.selectedIndex].value;
  if(rID=="") {
    return;
  }
  new Ajax.Request(ROOT_URL, {
    method: 'post',
    parameters:{requestID:'getreptypeimg', param1:rID, param2:'getchartsqlhelp'},
    onSuccess: function(transport) {
      document.getElementById('charthelp').innerHTML=transport.responseText;
    }
  });
}

function insertnew() {
  _get_message_form('insertnew2');
}

function createsupport() {
  _get_message_form('createsupport');
}

function updatesupport() {
  _get_message_form('updatesupport');
}

function _get_message_form(requestID) {
  document.mainForm.requestID.value=requestID;
  $('mainForm').request({
    onComplete: function(ajax){
      var ele=document.getElementById('error');
      ele.style.display="block";
      ele.innerHTML=ajax.responseText+"<img src='/tmworks/tmview/img/close.gif' onclick='javascript:hideElement(\"error\")' style='float:right;cursor:pointer'>";
      document.body.scrollTop=0;
      $('mainForm').enable();
      setBusy(false);
    }
  });
  $('mainForm').disable();
}

function createuser() {
  _get_message_form("createuser");
}

function testconn() {
  setBusy();
  _get_message_form("testconn");
}

function createconn() {
  _get_message_form("createconn");
}
/** search pageno data for user view */
function uv_search(pageNo) {
  pageNo=!pageNo?1:pageNo;
  if (!checkFormInput()) {
    return;
  }
  setBusy();
  $("searchResultDiv").update("<div align='center'><img src='/tmworks/tmview/img/loading_b.gif' alt='Fetching result set...' title = 'Fetching result set...'/></div>");
  document.mainForm.requestID.value="selectview2";
  var qs = $('mainForm').serialize();
  qs +="&pageNo="+pageNo;
  new Ajax.Request(ROOT_URL, {
    method:'post',
    parameters:qs,
    onComplete: function(ajax) {
      $("searchResultDiv").update(ajax.responseText);
      $j("#searchResultDiv").fadeIn("fast");
      setBusy(false);
    }
  });
}

/** search pageno data for system view */
var retryTimes=0;
function sv_search(pageNo) {
  pageNo=!pageNo?1:pageNo;
  setBusy();
  $("te_container").update("<div align='center'><img src='img/loading_b.gif' alt='Fetching result set...' title = 'Fetching result set...'/></div>");
  document.mainForm.pageNo.value=pageNo;
  var qs = $('mainForm').serialize();
  new Ajax.Request('index.php?viewtablej', {
    method:'post',
    parameters:qs,
    onComplete: function(ajax) {
      var a=$A(ajax.responseJSON);
      if(a.size() == 3) {
        $("pagebanner").update(a[0]);
        $("gbar").update(a[1]);
        $("te_container").update(a[2]);
        $j("#te_container").fadeIn("normal");
        // reset the select row
        lastSelRow_Ele = null;
        retryTimes=0;
      } else {
        TmMsgBox.showError(a[0]);
        if(++retryTimes<2) {
          // clear the order column and refresh the data;
          document.mainForm.orderColumnName.value="";
          sv_search(pageNo);
        }
      }
      setBusy(false);
      // re-apply the thickbox
	    tb_init('a.thickbox, area.thickbox, input.thickbox');
    }
  });
}

function executeop1() {
  if (!checkFormInput()) {
    return;
  }
  setBusy();
  document.getElementById('requestID').value="confirmop";

  ajaxPost(ROOT_URL, document.mainForm, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        var useError=false;
        var rText=req.responseText;
        if(rText.indexOf("[MSG]") == 0) {
           rText = rText.substring(5);
           useError = true;
        }
        var pageFlow=document.getElementById('pageFlow').value;
        if(pageFlow=='0' || useError) {
          var ele=document.getElementById('error');
          ele.style.display="block";
          ele.innerHTML=rText;
        } else if(pageFlow=='1') {
          var ele=document.getElementById('dataset');
          ele.style.display="block";
          ele.innerHTML=rText;
        }
        setBusy(false);
      }
    }
  });
}


function exeop() {
  setBusy();
  document.getElementById('requestID').value="exeop";
  ajaxPost(ROOT_URL, document.mainForm, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        var ele=document.getElementById('error');
        ele.style.display="block";
        ele.innerHTML=req.responseText+"<img src='/tmworks/tmview/img/close.gif' onclick='javascript:hideElement(\"error\")' style='float:right;cursor:pointer'>";
        setBusy(false);
      }
    }
  });
  closeDialog();
}

function closeDialog() {
  document.getElementById('moreFilterDialog').style.display="none";
}

var bIsCatchFlyBar=false;
var dragClickX=0;
var dragClickY=0;
var movemovefun;
function catchFlyBar(e, divName){
  bIsCatchFlyBar = true;
  var divFlyBar=document.getElementById(divName);
  var x=(e.x ? e.x : e.pageX)+document.body.scrollLeft;
  var y=(e.y ? e.y : e.pageY)+document.body.scrollTop;
  dragClickX=x-parseInt(divFlyBar.style.left);
  dragClickY=y-parseInt(divFlyBar.style.top);

  applyEvent(document, "mousemove", movemovefun=function(event) {
    var mX=event.x ? event.x : event.pageX;
    var mY=event.y ? event.y : event.pageY;
    if(bIsCatchFlyBar) {
      var tx=mX+document.getElementsByTagName('body')[0].scrollLeft-dragClickX;
      var ty=mY+document.getElementsByTagName('body')[0].scrollTop-dragClickY;
      tx=tx<0?0:tx;
      ty=ty<0?0:ty;
      divFlyBar.style.left=tx;
      divFlyBar.style.top=ty;
    }
  });
}

var lastFlyBarX;
var lastFlyBarY;
function releaseFlyBar(e){
  bIsCatchFlyBar = false;
  if(document.addEventListener) {
    document.removeEventListener("mousemove", movemovefun, true);
  } else {
    document.detachEvent("onmousemove", movemovefun);
  }
  var et = e.target!=null?e.target:e.srcElement;
  lastFlyBarX=findPosX(et);
  lastFlyBarY=findPosY(et);
}

function ajaxPost(url, frm, fun) {
  req=getXMLHTTPRequest();
  req.onreadystatechange=fun;
  handleForm(req, url, frm);
}

function handleForm(req, u, frm){
  var nvp=getFormQS(frm);
  // for anti-caching
  nvp+="&t="+(new Date()).getTime();
  req.open("POST", u, true);
  req.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8");
  req.setRequestHeader("Content-length",nvp.length);
  req.send(nvp);
}

function getFormQS(frm){
  var qs="";
  for(var c=0;c<frm.elements.length;c++) {
    if(document.all){
      var el=frm.elements[c];
    } else {
      var el=frm.elements.item(c);
    }
    switch(el.type){
      case "textarea":
      case "hidden":
      case "text":
        qs+=el.name+"="+encodeURIComponent(el.value)+"&";
        break;
      case "select-one":
        if(el.selectedIndex!=-1){
          sv=el.options[el.selectedIndex].value;
          qs+=el.name+"="+encodeURIComponent(sv)+"&";
        }
        break;
      case "select-multiple":
        ss="";
        for(var so=0;so<el.options.length;so++){
          if(el.options[so].selected==true){
            ss+=(ss=="")?"":"&";
            sv=el.options[so].value;
            ss+=el.name+"="+encodeURIComponent(sv);
          }
        }
        ss+=(ss=="")?"":"&";
        qs+=ss;
        break;
      case "radio":
      case "checkbox":
        if(el.checked==true){
          qs+=el.name+"="+encodeURIComponent(el.value)+"&";
        }
        break;
      default:
        qs+=el.name+"="+encodeURIComponent(el.value)+"&";
    }
  }
  qs=qs.substr(0,(qs.length-1));
  return qs;
}

function getChart() {
  if (!checkFormInput()) {
    return;
  }
  setBusy();
  document.getElementById('chartdiv').innerHTML="<div align='center'><img src='/tmworks/tmview/img/loading_b.gif' alt='Loading Chart...' title = 'Loading Chart...'/></div>";
  ajaxPost(ROOT_URL, document.mainForm, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        setBusy(false);
        document.getElementById('chartdiv').innerHTML = req.responseText;
      }
    }
  });
}

function te_focusTd(ele) {
    var focusDiv=document.getElementById('focusDIV');
    var scrollX=document.getElementById('te_container').scrollLeft;
    var scrollY=document.getElementById('te_container').scrollTop;
    focusDiv.style.left=(findPosX(ele) - scrollX)+"px";
    focusDIV.style.top=(findPosY(ele) - scrollY)+"px";
    focusDIV.style.width=(ele.offsetWidth-3)+"px";
    focusDIV.style.height=(ele.offsetHeight-3)+"px";
    focusDIV.style.display="block";
}

var lastSelRow_Ele;
function te_selRow(event, ele) {
  var ctrlKey=event.ctrlKey;
  if (!ctrlKey && lastSelRow_Ele != null && lastSelRow_Ele != ele) {
    lastSelRow_Ele.className="rowHead";
    var next=lastSelRow_Ele.nextSibling;
    do {
      next.className="dataCell";
    } while(next=next.nextSibling);
  }

  var tb=document.getElementById('databody');
  lastSelRow_Ele=ele;

  var eleCl=ele.className;
  if (eleCl == "rowHead") {
    ele.className="rowHead rowHeadFocus";
    var next=ele.nextSibling;
    do {
      next.className="dataCell dataCellFocus";
    } while(next=next.nextSibling);
  } else {
    ele.className="rowHead";
    var next=ele.nextSibling;
    do {
      if (next==null||next==undefined||next.tagName!="TD"||tb.rows[0].cells[next.cellIndex].className=="colHead colHeadFocus") {
        continue;
      }
      next.className="dataCell";
    } while(next=next.nextSibling);
  }
}

function getLastSelectRowNo() {
  // 没有选中的行，或??后??中标志已取??
  if (lastSelRow_Ele == undefined || lastSelRow_Ele == null || lastSelRow_Ele.className=="rowHead") {
    return -1;
  }
  return lastSelRow_Ele.innerHTML.replace(/<\/?[^>]+>/gi, '');
}

function te_selColumn(event, ele) {
  var et = event.target!=null?event.target.tagName:event.srcElement.tagName;
  if (et != "TD") {
    return;
  }
  var tb=document.getElementById('databody');
  var eleCl=ele.className;
  var targetDataCl="dataCell";
  if (eleCl=="colHead") {
    ele.className="colHead colHeadFocus";
    targetDataCl="dataCell dataCellFocus";
  } else {
    ele.className="colHead";
  }
  var selIndex=ele.cellIndex;
  for(var i=1; i < tb.rows.length; i++) {
    if (targetDataCl == "dataCell" && tb.rows[i].cells[0].className == "rowHead rowHeadFocus") {
      continue;
    }
    tb.rows[i].cells[selIndex].className=targetDataCl;
  }
}

function showcontextmenu(obj) {
  document.getElementById('contextmenu').style.display="block";
  document.getElementById('contextmenu').style.left=(findPosX(obj) + 5) + "px";
  document.getElementById('contextmenu').style.top=findPosY(obj) + "px";
  return false;
}

function hidecontextmenu() {
  document.getElementById('contextmenu').style.display="none";
}

function addCondition() {
  var tblBody = document.getElementById("filter_body");

  var newNode = document.getElementById('filter_row0').cloneNode(true);
  var refNode = document.getElementById('filter_button');
  tblBody.insertBefore(newNode, refNode);
}

function delFilter(obj) {
  var tblBody = document.getElementById("filter_body");
  if (tblBody.rows.length <= 2) {
    return;
  }
  var curNode = obj.parentNode.parentNode;
  tblBody.removeChild(curNode);
}

function alertArray(arr) {
  var s = arr[0];
  for(var i=1;i<arr.length;i++) {
    s+=", " + arr[i];
  }
  alert(s);
}

function freezeBackground(){
  var freezeLayer=document.createElement("DIV");
  freezeLayer.id="FreezeLayer";
  freezeLayer.className="freezeLayer";
  freezeLayer.style.width="100%";
  freezeLayer.style.height="100%";
  freezeLayer.style.zIndex="900";

  // ie hack, avoid select not freeezed
  if (!!(window.attachEvent && !window.opera)) {
    var iehack=document.createElement("iframe");
    iehack.src="javascript:void(0);";
    iehack.style.position="absolute";
    iehack.style.visibility="inherit";
    iehack.style.left=iehack.style.top="0px";
    iehack.style.width=iehack.style.height="100%";
    iehack.style.zIndex="-1";
    iehack.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";
    freezeLayer.appendChild(iehack);
  }
  document.body.appendChild(freezeLayer);
}

function unFreezeBackground() {
  if(document.getElementById("FreezeLayer")!=null){
    document.body.removeChild(document.getElementById("FreezeLayer"));
  }
}

function submitConn(argReqID) {
  var u = document.mainForm.allowedUsers_tmp.options;
  var s = "";
  li = u.length - 1;
  var appendDot=0;
  for (i = 0 ; i < li; i++ ) {
    if(appendDot==1){
      s+=",";
    }
    s+=u[i].value;
    appendDot=1;
  }
  document.mainForm.allowedUsers.value=s;
  _get_message_form(argReqID);
}

function fb_submitField() {
  if(!submitField()){
    return false;
  }
}

function setChecked(ele) {
  ele.parentNode.childNodes[0].checked = true;
}

function setupCalendar(fieldName) {
  Calendar.setup({
     inputField:fieldName,
     ifFormat:"%Y-%m-%d %H:%M:%S",
     showsTime:true,
     button:"c_"+fieldName
  });
}

function setupCalendar2(fieldName) {
  Calendar.setup({
     inputField:fieldName,
     ifFormat:"%Y-%m-%d %H:%M:%S",
     showsTime:true,
     button:fieldName
  });
}

function setSelectByAjax(url, ele, dKey, dValue) {
  var selValue=ele.value;
  ajaxRequest(url, function(){
    if (req.readyState == 4) {
      if (req.status == 200) {
        ele.options.length=0;
        var obj=eval('(' + req.responseText + ')');
        if (dKey != undefined && dValue != undefined) {
          ele.options[0]=new Option(dValue, dKey, true, selValue==dKey);
          for (var i=0; i<obj.length/2;i++) {
            ele.options[i+1]=new Option(obj[i*2+1], obj[i* 2], true, selValue==obj[i* 2]);
          }
        } else {
          for (var i=0; i<obj.length/2;i++) {
            ele.options[i]=new Option(obj[i*2+1], obj[i* 2], true, selValue==obj[i* 2]);
          }
        }
      }
    }
  });
}

function getFormList(id) {
  var ts = (new Date()).getTime();
  var ele=document.getElementById(id);
  var url="/tmworks/rview?requestID=showallforms&timestamp="+ts;
  setSelectByAjax(url, ele, "-1", "not Required");
}

function getQueryList(id) {
  var ts = (new Date()).getTime();
  var ele=document.getElementById(id);
  var url="/tmworks/rview?requestID=showallquerys&timestamp="+ts;
  setSelectByAjax(url, ele, "-1", "not Required");
}

function getCatalogList(id) {
  var ts = (new Date()).getTime();
  var ele=document.getElementById(id);
  var url="/tmworks/rview?requestID=showallcats&timestamp="+ts;
  setSelectByAjax(url, ele, "-1", "Default Catalog");
}

function refreshmenu() {
  var sform=parent.frames.bar.document.headform;
  sform.requestID.value="refresh";
  sform.target="menu";
  setCookie("NavAccordion", parent.frames.menu.defaultNavAccordion.Accordion.elementsVisible.join("|"));
  sform.submit();
}

function feedback() {
  if (document.mainForm.content.value == "") {
    alert("The message must be input.");
    return;
  }
  _get_message_form('contact2');
}

function showRedirect(status, statusText){
  if(status==500){
    alert("Error Occured. We are sorry for the inconvenience. \n\nPlease try after some time or refresh the page and try again.");
    loadoff();
    return;
  }
  alert(status+" : " + statusText);
  location.href="/tmworks/rview";
}

function copyurl() {
  document.getElementById('dburl').value=document.getElementById('l_dburl').firstChild.nodeValue;
}

function checkVersion() {
  var ajax = new Ajax.Request("/tmworks/rview?requestID=checkversion", {
    method: 'get',
    onComplete: function(ajax) {
      if(ajax.responseText != "") {
        $(updatemsg).innerHTML=ajax.responseText;
      }
    }}
  );
}

function setBusy(flag) {
  if(!parent.frames || !parent.frames.bar || !parent.frames.bar.document.getElementById('busyflag')) {
    return;
  }
  if(flag==undefined) {
    flag = true;
  }
  if(flag) {
    parent.frames.bar.document.getElementById('busyflag').style.display="";
  } else {
    parent.frames.bar.document.getElementById('busyflag').style.display="none";
  }
}

function setReady() {
  setBusy(false);
  //
}

function changepftip() {
  var ele=document.getElementById("pageFlow");
  var tipEle=document.getElementById("pageflowtip");
  var selId=ele.selectedIndex;
  if(selId==0) {
    tipEle.innerHTML="Execute sql scripts with parameters of the form specified.";
    $("tiprow").show();
  } else if(selId==1) {
    tipEle.innerHTML="Get a updatable resultset with paremeters of the form specified.Click <a href='javascript:;' onclick='javascript:openQB(\"copyToEditor\");'>here</a> to open Query Builder.<br/><b>Please notice that your database may not support this by reason of JDBC limitation</b>.";
    $("tiprow").hide();
  }
}

var lastOpenRowNo=-1;
function op_editrow(row, rowNum) {
  if(document.getElementById("opupdateform_"+rowNum)) {
    removeOPEditRow(rowNum);
    return;
  }
  if(lastOpenRowNo != -1) {
    removeOPEditRow(lastOpenRowNo);
  }

  setBusy();
  // ajax to get the row Form for update
  document.getElementById('requestID').value="opeditrow1";
  document.getElementById('rowNo').value=rowNum;
  ajaxPost(ROOT_URL, document.mainForm, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        var tableEle=document.getElementById('databody');
        // get row
        var tableRows=tableEle.rows;
        var rowLen=tableRows.length;
        var selRowIndex=-1;
        for(var i=0; i<rowLen; i++) {
          if(row==tableRows[i]) {
            selRowIndex=i;
            break;
          }
        }
        var rowEle=tableEle.insertRow(selRowIndex+1);
        rowEle.id="opupdateform_"+rowNum;
        rowEle.className="opupdateform";
        var cellEle=rowEle.insertCell(0);
        cellEle.innerHTML=req.responseText;
        cellEle.setAttribute("colSpan", tableEle.rows[0].cells.length);
        lastOpenRowNo=rowNum;
        setBusy(false);
      }
    }
  });
}

function op_updateform(rowNo) {
  setBusy();
  document.getElementById('requestID').value="opupdaterow";
  document.getElementById('rowNo').value=rowNo;
  ajaxPost(ROOT_URL, document.mainForm, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        var ele=document.getElementById('error');
        ele.style.display="block";
        ele.innerHTML=req.responseText+"<img src='/tmworks/tmview/img/close.gif' onclick='javascript:hideElement(\"error\")' style='float:right;cursor:pointer'>";
        setBusy(false);
        document.body.scrollTop=0;
        setBusy(false);
      }
    }
  });
}

function removeOPEditRow(rowNo) {
  var ele=document.getElementById("opupdateform_"+rowNo);
  if(ele && ele.parentNode){
    ele.parentNode.removeChild(ele);
  }
}

function op_delrow(rowNum) {
  if (!confirm("The selected row data will be lost. Do you really want to do this?\nPress OK to delete or press Cancel to return back.")) {
    return;
  }
  setBusy();
  document.getElementById('requestID').value="opdelrow";
  document.getElementById('rowNo').value=rowNum;
  ajaxPost(ROOT_URL, document.mainForm, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        $('dataset').update(req.responseText);
        setBusy(false);
      }
    }
  });
}

function registProduct() {
  if ($(document.mainForm.registName).value.blank() || $(document.mainForm.registCompany).value.blank() || $(document.mainForm.licenseKey).value.blank()) {
    alert("Please input the registName, registOrganization and the license key!\n\nThe software license certificate is sent by email to the address you provided \nwithin 24 hours (normally much faster), After the payment has been received.");
    return;
  }
  ajaxPost(ROOT_URL, document.mainForm, function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        if(confirm(req.responseText)){
          if(window.opener) {
            window.opener.location.reload();
            window.opener.close();
          } else {
            window.location=ROOT_URL;
          }
        }
      }
    }
  });
}

function checkFormEffect() {
  if(docid('updatescriptenable').checked) {
    docid('actionscripttdiv').style.display=''
  } else {
    docid('actionscripttdiv').style.display='none';
  }
}

function loadableFormInit() {
  var eles=$('mainForm').getElements();
  eles.each(function(s, index) {
    if(eles[index].readAttribute('disabledf')!='disabled') {
      eles[index].enable();
    } else {
      eles[index].disable();
    }
  });
}

// specify the updatescript and get the resultset to fill current form
var formIndex=0;
var formDataArray=null;
function effectForm(updatescript) {
  setBusy();
  $('requestID').value='effectForm';
  var qs = $('mainForm').serialize();
  qs +="&sql=" + encodeURIComponent(updatescript);
  $('mainForm').disable();
  new Ajax.Request("/tmworks/rview", {
    method:'post',
    parameters:qs,
    evalJSON:'force',
    onComplete: function(ajax) {
      setBusy(false);

      // enable elements which not initial diabled
      loadableFormInit();

      var h = $H(ajax.responseJSON);
      var formwarning=h.get("oak_form_warning");
      var fwEle=$("oak_form_warning");
      if (formwarning) {
        fwEle.parentNode.style.display="";
        fwEle.update("<img src='/tmworks/tmview/img/form/close_hover.gif' width='12px' alt='close the tip layer' title='close the tip layer' height='12px' style='vertical-align:middle' onclick='javascript:this.parentNode.parentNode.style.display=\"none\";'/>&nbsp;" + formwarning);
      } else {
        fwEle.parentNode.style.display="none";
      }

      var a=$A(h.get("data"));
      formDataArray=a;
      formIndex=0;
      var d=$H(a[0]);
      d.each(function(pair) {
        if($(pair.key)) {
          $(pair.key).value=pair.value;
        }
      });
    }
  });
}

function form_prev() {
  if(!formDataArray || formIndex == 0) {
    return;
  }
  var d=$H(formDataArray[--formIndex]);
  d.each(function(pair) {
    if($(pair.key)) {
      $(pair.key).value=pair.value;
    }
  });
  $('formIndex').update(formIndex+1);
}

function form_next() {
  if(!formDataArray || formIndex==formDataArray.size()-1){
    return;
  }
  var d=$H(formDataArray[++formIndex]);
  d.each(function(pair) {
    if($(pair.key)) {
      $(pair.key).value=pair.value;
    }
  });
  $('formIndex').update(formIndex+1);
}

function initFormLoadAction(formId) {
  effectForm(formId);
}

function qb_tabToQueryText(ele) {
  var columnsEle=document.getElementById('conditions');
  html_TabClick(ele,'queryText_table');
  if(columnsEle.rows.length>1) {
    qb_genSQL();
  } else {
    if(codepress) {
      codepress.setCode("No Column selected, please drop a table to the sql workshop first.");
    }
  }
  return false;
}

function changepsd() {
  $('mainForm').request({
    onComplete: function(ajax){
      var ele=document.getElementById('error');
      ele.style.display="block";
      ele.innerHTML=ajax.responseText+"<img src='/tmworks/tmview/img/close.gif' onclick='javascript:hideElement(\"error\")' style='float:right;cursor:pointer'>";
      setBusy(false);
      document.body.scrollTop=0;
    }
  });
}

// this is a beta function
function reviewDBURL() {
  // if sql server, get DatabaseName value to Catalog
  if ($('connSource').value==DB_SQLSERVER) {
    var s=$('dburl').value;
    var i=0;
    if((i=s.toLowerCase().indexOf("databasename="))>0) {
      var n=s.indexOf(";", i);
      if (n > i+13) {
        $('connName').value=s.substring(i+13, n);
      } else {
        $('connName').value=s.substring(i+13);
      }
    }
  }
}

function copyVariable(ele) {
  if(codepress) {
    codepress.insertCode(ele.innerHTML);
  }
}

function switchElement(eleId) {
  var ele=document.getElementById(eleId);
  if (ele.style.display!="none") {
    ele.style.display="none";
  } else {
    ele.style.display="";
  }
}

// depends the form, alert general error
function checkFormInput() {
  var form=$('mainForm');
  var ret=true;
  var fields=form.getInputs();
  var msg="The form contains following errors for submitting:\n";
  for (var i=0; i<fields.length; i++) {
    var isreq = fields[i].readAttribute('isreq');
    if (isreq && isreq=="true" && !fields[i].present()) {
      msg +=fields[i].readAttribute('name') + " must be filled out\n";
      ret=false;
    }
  }
  if (!ret) {
    alert(msg);
  }
  return ret;
}

function field_setnull(ele) {
  var target=$(ele).next();
  if (ele.checked) {
    ele.value=target.value;
    target.value="(NULL)";
    target.setStyle({background:'grey'});
  } else {
    target.value=ele.value;
    target.setStyle({background:'#FFFFFF'});
  }
}

// common navagiation functions
function nav_dashboard() {
  var sform=parent.frames.bar.document.headform;
  sform.requestID.value="home";
  sform.target="content";
  sform.submit();
}

function configFocusInput() {
  document.observe("dom:loaded", function() {
    var mainForm=$('mainForm');
    var inputs=mainForm.getElements();
    var first=true;
    inputs.each(function(s, index) {
      if (inputs[index].className=="config-textfield" || inputs[index].className=="config-textarea" || inputs[index].className=="config-picklist") {
        inputs[index].observe("focus", function(){
          this.style.backgroundColor="#FFFFAA";
         });
         inputs[index].observe("blur", function(){
          this.style.backgroundColor="#FFFFFF";
         });
         if (first) {
           inputs[index].focus();
           first = false;
         }
      }
    });
  });
}

function _hack_ie_select(html) {
  if (!!(window.attachEvent && !window.opera)) {
    html+="<iframe src='javascript:;' style='filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0);position:absolute;visibility:inherit;width:100%;height:100%;left:0px;top:0px;z-index:-1'></iframe>";
  }
  return html;
}
// tt: tip type, param:parameter for get the tip message.
// tt:0 -- Help Properties
// tt:1 -- Form Description
// tt:2 -- Query Description
// tt:3 -- User View Description
// tt:4 -- Operation Description
// tt:5 -- Query Record Description
// tt:6 -- Chart Report Description
function openHelpTip(ele, tt, param) {
 var tp=$("tippanel");
 if(!tp) {
   tp=$(document.createElement("DIV"));
   tp.id="tippanel";
   document.body.appendChild(tp);
 }
 var pos=$(ele).cumulativeOffset();
 tp.style.left=pos.left+"px";
 tp.style.top=(pos.top+15)+"px";
 tp.update(_hack_ie_select("<img src='/tmworks/tmview/img/loading_b.gif' align='center'/>"));
 tp.show();
 new Ajax.Request(ROOT_URL, {
   method: 'post',
   parameters:{requestID:'helptip', tipType:tt, param:param},
   onSuccess: function(transport) {
     tp.update(_hack_ie_select(transport.responseText));
   }
 });
}

function closeHelpTip() {
  $("tippanel").hide();
}

function dupuserview(dupId) {
  document.mainForm.requestID.value="dupuserview";
  document.mainForm.param1.value=dupId;
  document.mainForm.submit();
}

function dupop(dupId) {
  document.mainForm.requestID.value="dupop";
  document.mainForm.param1.value=dupId;
  document.mainForm.submit();
}

function dupqr(dupId) {
  document.mainForm.requestID.value="dupqr";
  document.mainForm.param1.value=dupId;
  document.mainForm.submit();
}

function duprp(dupId) {
  document.mainForm.requestID.value="duprp";
  document.mainForm.param1.value=dupId;
  document.mainForm.submit();
}

function go(argReqID) {
  setBusy(true);
  document.menuform.requestID.value=argReqID;
  document.menuform.submit();
}

function getInfoType(argType) {
  document.menuform.requestID.value='conninfo';
  document.menuform.infotype.value=argType;
  document.menuform.submit();
}

function search_table(dbname, viewName) {
  setBusy(true);
  document.menuform.dbname.value=dbname;
  document.menuform.viewname.value=viewName;
  document.menuform.submit();
}

function submitOp(argReqID, argOpID) {
  document.menuform.requestID.value=argReqID;
  document.menuform.opID.value=argOpID;
  document.menuform.submit();
}

function submitMonitor(argReqID, argMonID) {
  document.menuform.requestID.value=argReqID;
  document.menuform.monID.value=argMonID;
  document.menuform.submit();
}
function submitReport(argRepID) {
  document.menuform.requestID.value="viewreport";
  document.menuform.repID.value=argRepID;
  document.menuform.submit();
}

var rq=new Array();
var paramsArr=new Array();
var lockstate=false;

function handleRequest(u, f, _49, _4a, _4b, _4c){
  if(lockstate==true){
    return;
  }
  if(_4c) {
    lockstate=true;
  }
  if(_4a!=false&&_4a!="false"){
    loadon(_4a);
  }

  if(window.XMLHttpRequest){
    var _4d=getXmlObj();
    rt=rq.length;
    rq[rt]=_4d;
    var _4e=paramsArr.length;
    paramsArr[_4e]=_49;
    rq[rt].onreadystatechange=new Function("if( rq["+rt+"].readyState == 4) { if(rq["+rt+"].status < 300 ) { loadoff();lockstate=false;"+f+"(rq["+rt+"].responseXML, paramsArr["+_4e+"]); } else {showRedirect(rq["+rt+"].status,rq["+rt+"].statusText);}}");
    if(_4b&&_4b!=null){
 			handleForm(rq[rt],u,_4b);
		} else {
			rq[rt].open("GET",u,true);
			rq[rt].send(null);
		}
		return rq[rt];
	}
	if(!navigator.__ice_version&&window.ActiveXObject) {
		try{
			var _4d=getXmlObj(_4b);
			rt=rq.length;
			rq[rt]=_4d;
			var _4e=paramsArr.length;
			paramsArr[_4e]=_49;
			rq[rt].onreadystatechange=new Function("if( rq["+rt+"].readyState == 4) { var toSend = rq["+rt+"]; if(rq["+rt+"].responseXML) {toSend = rq["+rt+"].responseXML} if(rq["+rt+"].status >= 300){showRedirect(rq["+rt+"].status, rq["+rt+"].statusText);} else { loadoff();lockstate=false;"+f+"(toSend, paramsArr["+_4e+"]); }}");
			if(_4b&&_4b!=null){
				handleForm(rq[rt],u,_4b);
			} else {
				rq[rt].load(u);
			}
			return true;
		} catch(e) {
			alert(e);
		}
	}
	return false;
}

function getXmlObj(_5d) {
  var req = Try.these(
    function() {return new XMLHttpRequest()},
    function() {return new ActiveXObject('Msxml2.XMLHTTP')},
    function() {return new ActiveXObject('Microsoft.XMLHTTP')}
  ) || false;
  return req;
}

function getHtmlForForm(_5f,f,_61,_62,_63, params){
  if(!_61){
    _61="";
  }
  return getHtml(_5f.action,f,_61,_62,_5f,_63, params);
}

function getHtml(url,fn,_66,_67,_68,_69, params){
  if(lockstate==true){
    return;
  }
  if(_69){
    lockstate=true;
  }
  if(_67!=false&&_67!="false"){
    loadon(_67);
  }
  if(params) {
    url+=params;
  }
  var _6a=null;
  if(window.XMLHttpRequest){
    _6a=getXmlObj(true);
  } else {
    if(!navigator.__ice_version&&window.ActiveXObject){
      _6a=getXmlObj(true);
    } else {
      return false;
    }
  }

  rt=rq.length;
  rq[rt]=_6a;
  var _6b=paramsArr.length;
  paramsArr[_6b]=_66;
  if(_6a){
    rq[rt].onreadystatechange=new Function(" if (rq["+rt+"].readyState==4) { if(rq["+rt+"].status < 300) {loadoff();lockstate=false;"+fn+"(rq["+rt+"].responseText, paramsArr["+_6b+"]);  } else {showRedirect(rq["+rt+"].status,rq["+rt+"].statusText);}}");
    if(_68&&_68!=null) {
      handleForm(rq[rt],url,_68);
    } else {
      rq[rt].open("GET",url,true);
      rq[rt].setRequestHeader("Content-type","text/html");
      rq[rt].setRequestHeader("Content-length",0);
      rq[rt].send(null);
    }
  }
  return true;
}

function viewOpener() {
  var sunWin = window.open('/tmworks/tmview/jsp/opener.html','','scrollbars=yes,menubar=no,height=600,width=800,resizable=yes,toolbar=no,location=no,status=no');
}

var currType="init";
function changeCreateType(id){
  if(id==currType){
    return;
  }
  $(id+"DIV").style.display="";
  $(currType+"DIV").style.display="none";
  $(id+"Icon").className="createapp-type-active";
  $(currType+"Icon").className="createapp-type-inactive";
  $("createType").value=id;
  currType=id;
}


if (window.attachEvent) window.attachEvent('onload',setReady);
else if (navigator.userAgent.match(/AppleWebKit/)) window.addEventListener('load',setReady,false);
else window.addEventListener('DOMContentLoaded',setReady,false);