// Copyright (c) 1996-2009 Golden Telecom. All Rights Reserved.
// Author: Igor Lidin

// configuration
var wPopupN	= 'voffice_popup'
var wPopupW	= 480
var wPopupH	= 320
var wInfoN	= 'voffice_info'
var wInfoW	= 730
var wInfoH	= 520

var wTimeout	= 30

var wButtons	= new Array('bnext','bprev','bsave','bsetdel','bsetoff','bseton');

// control elements
var fT		// checks for type
var fR		// checks with regexp
var fA		// checks for exist-non-empty
var fe		// checks for non-emptyness

var fc		// submit-on-change fields
var fu		// submit-on-update fields
var fr		// disable-related fields
var fs		// select-related fields
var fm		// move-through fields
var fa		// no-autocomplete fields
var ft		// error triggers
var fi		// images to preload

// commands
var cmd_redir	// do redirect
var cmd_logout	// do logout
var cmd_alert	// do alert
var cmd_preload	// do preload images
var cmd_print	// do print

// windows
var wPopup	// popup
var wInfo	// help
var wPrint	// print

// control storage
var cr=[]	// elements with regexp

// objects
var de,di,da,ds,dS,dc,dh,db,df

// form objects
var xn,xb,xs,xm

// flags
var cmp,cmn,cmc,cms,cmk,cme

// window events ##############################################################

// called on document load
function winLoad()
{
 window.onbeforeunload = function(e) { winUnload(); return }
 if(window.opera && document.forms['f'])
  document.forms['f'].addEventListener('submit', function(e) { winUnload() }, false)

 if(window.usLoad) usLoad()
 if(window.suLoad) suLoad()
}

// called before document unload
function winUnload()
{
 window.onfocus = function(e) { window.onfocus = null; if(window.event) e=window.event; winReload(); return (e.returnValue=true) }

 if(window.usUnload) usUnload()
 if(window.suUnload) suUnload()
}

// called on document re-load (e.g. after non-changing submit)
function winReload()
{
 if(window.usReload) usReload()
 if(window.suReload) suReload()
}

// ############################################################################

function usLoad()
{
 if(window.focus)	window.focus()

 attachObjects()
 attachLinks()
 attachButtons()
 attachControls()
 attachCommands()
}

function usUnload()
{
 formDisable()
}

function usReload()
{
 formEnable()
 formUpdate()
}

// ############################################################################

function attachCommands()
{
 if(cmd_logout)		winLogout()
 if(cmd_preload)	winPreload()

 if(!window.setTimeout)	return
 if(cmd_redir)		setTimeout('winRedirect(cmd_redir)',	wTimeout)
 if(cmd_alert)		setTimeout('winAlert(cmd_alert)',	wTimeout)
 if(cmd_print)		setTimeout('winPrint()',		wTimeout)
}

function attachObjects()
{
 if(window.navigator && window.navigator.userAgent)
  if(window.navigator.userAgent.indexOf('Maxthon') > -1)
   window.maxthon = 1

 if(document.getElementsByName)	de=1
 if(document.getElementById)	di=1
 if(document.all)		da=document.all
 if(document.selection)		ds=document.selection
 if(window.getSelection)	dS=1
 if(window.clipboardData)	dc=window.clipboardData
 if(document.documentElement)	dh=document.documentElement
 if(document.body)		db=document.body
 if(document.forms)		df=document.forms['f']
}

function attachLinks()
{
 var e,i

 if(e=findLink('link_help'))
  if(e.length>0)	for(i=0;i<e.length;i++) e[i].onclick=winOpenPopup
  else			e.onclick=winOpenPopup

 if(e=findLink('link_popup'))
  if(e.length>0)	for(i=0;i<e.length;i++) e[i].onclick=winOpenPopup
  else			e.onclick=winOpenPopup

 if(e=findLink('link_info'))
  if(e.length>0)	for(i=0;i<e.length;i++) e[i].onclick=winOpenInfo
  else			e.onclick=winOpenInfo

 if(e=findLink('link_print'))
  if(e.length>0)	for(i=0;i<e.length;i++) e[i].onclick=winOpenPrint
  else			e.onclick=winOpenPrint
}

function attachButtons()
{
 var i,e,ee

 xn = findControl('bnext')
 xb = findControl('bprev')
 xs = findControl('bsave')
 xm = findControl('bmode')

 if(e = findControl('bclose'))	e.onclick=winClose
 if(e = findControl('bprint'))
  if(window.print)		e.onclick=winPrint
  else				btnDisable(e)

 if(xm)
  for (i in wButtons)
   if(e = findControl(wButtons[i]))
    e.onclick = function() { xm.value = this.name }
}

function attachControls()
{
 if(!df) return

 var i,j,p,e

 df.onsubmit		= formSubmit
 df.onkeypress		= formCheckKeys
 df.onclick		= formUpdate
 df.onkeyup		= formUpdate
 df.onmousedown		= formUpdate

 if(fa && df.setAttribute)
  for(i=0;i<fa.length;i++)
   if(e=df[fa[i]])
    e.setAttribute('autocomplete', 'off', 0)
 if(fc)
  for(i=0;i<fc.length;i++)
   if(df[fc[i]])
    df[fc[i]].onclick	= formSave
 if(fu)
  for(i=0;i<fu.length;i++)
   if(df[fu[i]])
    df[fu[i]].onchange	= formSave
 if(fm)
  for(i=0;i<fm.length;i++)
   {
    e=df[fm[i]]
    if(p) { p.moveNext=e; e.movePrev=p }
    e.onpaste		= formCheckPaste
    // workaround maxthon bug: repeating keydown/keyup events twice
    if(window.maxthon)
     {
      e.onkeydown	= function(g) { if(e.xTr = !e.xTr) return; formCheckMove1(g) }
      e.onkeyup		= function(g) { if(e.xTr = !e.xTr) return; formCheckMove2(g) }
     }
    else
     {
      e.onkeydown	= formCheckMove1
      e.onkeyup		= formCheckMove2
     }
    // workaround opera bug: not-repeating keydown event on keyboard repeat
    if(window.opera && e.addEventListener) e.addEventListener('keypress',formCheckMove3,false)
    p=e
   }
 if(fs)
  for(i=0;i<fs.length;i++)
   if(e=df[fs[i]])
    e.onclick = function()
     { var c,j; c = df[this.name]; for(j=0;j<c.length;j++) c.item(j).checked = this.checked }
 if(fi && document.images)
  for(i=0;i<fi.length;i++)
   { e=new Image(); e.src=fi[i] }

 if(fr)
  for(i=0;i<fr.length;i++)
   if(df[fr[i][0]])
    for(j=0;j<fr[i].length;j++)
     fr[i][j]=df[fr[i][j]]
 if(fe)
  for(i=0;i<fe.length;i++)
     fe[i]=df[fe[i]]
 if(ft)
  for(i=0;i<ft.length;i++)
   ft[i][0]=findControl(ft[i][0])
 if(fA)
  for(i=0;i<fA.length;i++)
   for(j=0;j<fA[i].length;j++)
     fA[i][j]=df[fA[i][j]]
 if(fT)
  for(i=0;i<fT.length;i++)
   if((e=df[fT[i][0]]) && fT[i][1] && (e.xType=fT[i][1]))
    e.onkeypress=formCheckType
 if(fR)
  for(i=0;i<fR.length;i++)
   if((e=df[fR[i][0]]) && fR[i][1] && (e.xRegexp=new RegExp(fR[i][1])))
    cr[cr.length]=e

 // Should call formUpdate after onload due to bug in IE
 if(ds) db.onload = function () { return formUpdate() }

 formFocus()
 formUpdate()
}

function formFocus()
{
 var c,e
 if(!(c=df.elements)) return
 for(i=0;i<c.length;i++)
 {
  e=c[i]
  if(e.length || !e.type || e.type=='hidden' || e.type=='submit' || e.type=='button' || e.type=='radio' || e.disabled || !e.focus) continue
  e.focus()
  break
  }
}

function formEnable()
{
 if(!df)	return

 df.onsubmit	= formSubmit
 df.onkeypress	= formCheckKeys
 df.onclick	= formUpdate
 df.onkeyup	= formUpdate
 df.onmousedown	= formUpdate

 var e,b; for(b in wButtons)
  if(e = df[wButtons[b]])
   btnEnable(e)
}

function formDisable()
{
 if(!df)	return

 df.onsubmit	= null
 df.onkeypress	= null
 df.onclick	= null
 df.onkeyup	= null
 df.onmousedown	= null

 var e,b; for(b in wButtons)
  if(e = df[wButtons[b]])
   btnDisable(e)
}

function formSubmit(e)
{
 if(window.event) e=window.event

 return (e.returnValue=true)
}

function formCheckPaste(e)
{
 if(!dc) return true
 var s,t,r,p
 if(window.event)	{ e=window.event; s=e.srcElement }
 else if(e)		{ s=e.target }
 e.returnValue=false
 r=/[^a-z0-9-]/g
 t=dc.getData('Text').toLowerCase().replace(r,'')
 while(s && t.length)
 {
  p=t.indexOf('-')
  if(p==0) { t=t.substr(1); p=t.indexOf('-') }
  if(p<0 || p>s.maxLength) p=s.maxLength
  s.value=t.substr(0,p)
  t=t.substr(p)
  s=s.moveNext
 }
 return false
}

function formCheckMove1(e)
{
 var k,s,l,m,p
 if(window.event)	{ e=window.event; k=e.keyCode; s=e.srcElement }
 else if(e)		{ k=e.keyCode; s=e.target }
 if(!k || !s) return true

 cmk=1
 if(cmp)		{ cmp=0; cme=s=s.movePrev; elemPosEnd(s) }
 if(cmn)		{ cmn=0; cme=s=s.moveNext; elemPosBeg(s) }
 if(cms)		{ cms=0; elemSelect(s) }

 if(e.ctrlKey || e.altKey) return true

 l=s.value.length;	 if(l && elemSelected(s)) return true
 p=elemPosAt(s)

 if     ( p==0 && (k==8 || k==37 || k==57387) && s.movePrev )
  { cmc=1; cmp=1; return (e.returnValue=false) }
 else if( p==l && k==39 && s.moveNext)
  { cmc=1; cmn=1; return (e.returnValue=false) }
 else if( k>=48 && k<=122 )
  {
   m=s.maxLength
   if(p==m || (p<0 && l==m))
    if(s.moveNext)			{ s=s.moveNext; elemPosBeg(s); elemSelect(s) }
    else				{ cmc=1; return (e.returnValue=false) }
   else if(l==m)			{ cmc=1; cms=1; return (e.returnValue=false) }
   else if(p==m-1 && s.moveNext)	{ cmn=1; cms=1 }
  }

 return true
}

function formCheckMove2(e)
{
 var s
 if(window.event)	{ e=window.event; s=e.srcElement }
 else if(e)		{ s=e.target }
 if(!s) return true

 if(cmk)		{ cmk=0 }
 if(cme)		{ cme=null }
 if(cmp)		{ cmp=0; s=s.movePrev; elemPosEnd(s) }
 if(cmn)		{ cmn=0; s=s.moveNext; elemPosBeg(s) }
 if(cms)		{ cms=0; elemSelect(s) }
 if(cmc)		{ cmc=0; return (e.returnValue=false) }
 return true
}

function formCheckMove3(e)
{
 if(cmk)		{ cmk=0; return true }
 formCheckMove1(e);	{ cmk=0 }
 if(cme)		{ e.xTarget=cme; cme=null }
 return true
}

function formCheckKeys(e)
{
 var k
 if(window.event)	{ e=window.event; k=e.keyCode; s=e.srcElement }
 else if(e)		{ k=e.keyCode; s=e.target }

 if(k != 13 || !xn || s.tagName=='TEXTAREA') return true
 if(!xn.disabled)	xn.click()

 return (e.returnValue=false)
}

function formCheckType(e)
{
 var s,c,k,o,f
 if(window.event)	{ e=window.event; s=e.srcElement; k=e.keyCode }
 else if(e)		{ s=e.target; k=e.charCode }
 if(e.xTarget)		{ s=e.xTarget }
 c=s.xType

 if(!k || !s || !c) return true

 if((c=='a' || c=='l' || c=='s' || c=='r') && k>=65 && k<=90)	{ k+=32;  f=1 }
 if((c=='A' || c=='L' || c=='S' || c=='R') && k>=97 && k<=122)	{ k-=32;  f=1 }

 if((c=='r') && k>=1040 && k<=1071)				{ k+=32;  f=1 }
 if((c=='r') && k==1025)					{ k=1105; f=1 }

 if((c=='R') && k>=1072 && k<=1103)				{ k-=32;  f=1 }
 if((c=='R') && k==1105)					{ k=1025; f=1 }

 if     (c=='d') o=(k>=48 && k<=57)						// 0-9
 else if(c=='a') o=(k>=97 && k<=122)						// a-z
 else if(c=='A') o=(k>=65 && k<=90)						// A-Z
 else if(c=='l') o=(k>=48 && k<=57 || k>=97 && k<=122)				// 0-9 a-z	lowercase
 else if(c=='L') o=(k>=48 && k<=57 || k>=65 && k<=90)				// 0-9 A-Z	uppercase
 else if(c=='p') o=(k>=48 && k<=57 || k>=97 && k<=122 || k>=65 && k<=90)	// 0-9 a-z A-Z
 else if(c=='q') o=(k>=32 && k<=126)						// 7bit ascii
 else if(c=='s') o=(k>=32 && k<=126)						// 7bit ascii	lowercase
 else if(c=='S') o=(k>=32 && k<=126)						// 7bit ascii	uppercase
 else if(c=='r') o=(k>=32)							// 8bit ascii	lowercase
 else if(c=='R') o=(k>=32)							// 8bit ascii	uppercase
 else		 o=true

 if(o && f)
  if(s.setSelectionRange)
   {
    o=false
    var ss=s.selectionStart
    var se=s.selectionEnd
    var st=s.value.substring(0,ss)+String.fromCharCode(k)+s.value.substring(se)
    if(st.length <= s.maxLength) { s.value=st; s.setSelectionRange(ss+1,ss+1) }
   }
  else if(window.event && !window.opera)
   e.keyCode=k
  else if(e.initKeyEvent)
   {
    var ne = document.createEvent("KeyEvents")
    ne.initKeyEvent
	(
	 e.type,true,true,document.defaultView,
	 e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,
	 0,k
        )
    e.preventDefault()
    e.target.dispatchEvent(ne)
   }
  else
   o=false

 return o ? true : (e.returnValue=false)
}

function formUpdate()
{
 if(!xn) return true

 var ok=true
 var ee=new Object()

 var i
 var n,e
 var t,o,j

 // check for related controls
 if(fr)
  for(i=0;i<fr.length;i++)
   {
    t=fr[i]; e=t[0]
    o=(!e || e.disabled || (e.type=='checkbox' && !e.checked))
    if     (!o && e.xRelOff) { e.xRelOff=o; for(j=1;j<t.length;j++) ctlEnable (t[j]) }
    else if(o && !e.xRelOff) { e.xRelOff=o; for(j=1;j<t.length;j++) ctlDisable(t[j]) }
   }

 // check for non-empty
 if(fe)
  for(i=0;i<fe.length;i++)
   {
    e=fe[i]
    if(e.length)
     {
      if(ee[e[0].name])				continue
      o=false; for(j=0;j<e.length;j++) if(e[j].checked) { o=true; break }
      if(!o)					ok=!(ee[e[0].name]=true)
     }
    else
     {
      if(ee[e.name])				continue
      if((e.type=='checkbox' && !e.checked) || (!e.value.length))
						ok=!(ee[e.name]=true)
     }
   }

 // check for exist-non-empty
 if(fA)
  for(i=0;i<fA.length;i++)
   {
    t=fA[i]
    o=false
    for(j=0;j<t.length;j++)
     {
      e=t[j]
      if(e.type=='checkbox')
       {
        if(e.checked)				{ o=true; break }
       }
      else
       if(e.value.length)			{ o=true; break }
     }
    if(!o) ok=false
   }

 // check with regexp
 for(i=0;i<cr.length;i++)
  {
   e=cr[i]
   if(!ee[e.name] && !e.disabled && !e.xRegexp.test(e.value))
    ok=!(ee[e.name]=true)
  }

 if	(ok && xn.disabled)	btnEnable(xn)
 else if(!ok && !xn.disabled)	btnDisable(xn)

 // check for error triggers
 if(ft)
  for(i=0;i<ft.length;i++)
   {
    t=ft[i]; e=t[0]
    o=false; for(j=1;j<t.length;j++) if(ee[t[j]]) { o=true; break }
    if     (!o && e.xErrOff) { e.xErrOff=o; elemEnable (e) }
    else if(o && !e.xErrOff) { e.xErrOff=o; elemDisable(e) }
   }

 return true
}

function ctlEnable(e)
{
 if(!e || !e.className) return
 e.className=e.className.replace(' off','')
 e.disabled=false
}
function ctlDisable(e)
{
 if(!e || !e.className) return
 e.className+=' off'
 e.disabled=true
}

function btnEnable(e)
{
 e.disabled=false
 if(e.className) e.className=e.className.substr(0,4)
}
function btnDisable(e)
{
 // e.blur()
 e.disabled=true
 if(e.className) e.className=e.className.substr(0,4)+'d'
}

function elemEnable(e)
{
 if(!e) return
 e.className=e.className=='err'?'':e.className.replace(' err','')
}
function elemDisable(e)
{
 if(!e) return
 e.className+=' err'
}

function elemEmpty(e)
{
 var i,r

 if(e.length)
 {
  for(i=0;i<e.length;i++) if(!elemEmpty(e[i])) return false
  return true
 }

 r =
 ( (e.type=='checkbox' || e.type=='radio') && !e.checked )
  ||
 ( (e.type=='text' || e.type=='password' || e.type=='hidden') && (!e.value.length) )
  ||
 ( (e.type=='button' || e.type=='submit' || e.type=='reset') && e.disabled )
 return r
}

function elemSelect(e)
{
 var l=e.value.length;		if(!l) return
 if(e.setSelectionRange)	// works (Mozilla, Opera)
  e.setSelectionRange(0,l)
 else if(e.select)		// works (IE)
  e.select()
}

function elemSelected(e)
{
 if(e.setSelectionRange)	return e.selectionStart!=e.selectionEnd
 else if(ds)			return ds.createRange().text.length!=0
 else				return false
}

function elemPosAt(e)
{
 var r; if(!e.value.length)	return 0
 if(e.setSelectionRange)	return e.selectionStart
 else if(ds)			{ r=ds.createRange(); return r.moveStart('character',-r.moveStart('character',-32)) }
 else				return -1
}

function elemPosBeg(e)
{
 if(window.opera)		// Opera SUXX on
  df.onclick = df.onmousedown = null

 var r,v
 if(e.setSelectionRange)	// works (Mozilla, Opera)
  {
   e.focus()
   e.setSelectionRange(0,0)
  }
 else if(e.createTextRange)	// works (IE, Opera)
  {
   r=e.createTextRange()
   r.collapse(true)
   r.select()
  }
 else if(da)			// works (Old Opera)
  {
   v=e.value; e.value=''
   e.focus(); e.value=v
  }
 else				// moves to end (NS, Old Mozilla)
  {
   v=e.value; e.value=''
   if(e.focus) e.focus()
   e.value=v
  }

 if(window.opera)				// Opera SUXX off
  df.onclick = df.onmousedown = formUpdate
}

function elemPosEnd(e)
{
 if(window.opera)				// Opera SUXX on
  df.onclick = df.onmousedown = null

 var r,v
 var l=e.value.length

 if(e.setSelectionRange)			// works (Mozilla, Opera)
  {
   e.focus()
   e.setSelectionRange(l,l)
  }
 else if(e.createTextRange)			// works (IE, Opera)
  {
   r=e.createTextRange()
   r.collapse(false)
   r.select()
  }
 else if(da)					// works (Old Opera)
  {
   e.select()
   e.value=e.value
   e.focus()
  }
 else						// works
  {
   v=e.value; e.value=''
   if(e.focus) e.focus()
   e.value=v
  }

 if(window.opera)				// Opera SUXX off
  df.onclick = df.onmousedown = formUpdate
}

function formSave(e)
{
 if(xs)			xs.value='1'
 if(xn && !xn.disabled) xn.click()
 else			df.submit()
 return true
}

function winPreload()
{
 if(!document.images) return
 var e=new Array(); var i

 var r=['btn_057','btn_057_d','btn_100','btn_100_d','btn_111','btn_111_d','hdr_logo','hdr_bg','ftr_bg','ich_exit','ich_up','icl_ru','icl_en','icp_help']
 for(i=0;i<r.length;i++) { e[i]=new Image(); e[i].src='/i/rol/'+r[i]+'.gif' }

 var w=['btn_070_a','btn_070_d','btn_100_a','btn_100_d','btn_111_a','btn_111_d','head_logo','head_bg_1','head_bg_2','head_lb','head_lt','icp_help']
 for(i=0;i<w.length;i++) { e[i+15]=new Image(); e[i+15].src='/i/wifi/'+w[i]+'.gif' }

 var m=['btn_080_a','btn_080_d','btn_100_a','btn_100_d','btn_120_a','btn_120_d','head_logo','head_bg','head_bg_l','head_bg_r','foot_bg','foot_bg_l','foot_bg_r','icp_help']
 for(i=0;i<m.length;i++) { e[i+27]=new Image(); e[i+27].src='/i/mail/'+m[i]+'.gif' }
}

function winOpenX(u,i,w,h,m)
{
 h=window.open(u,i,
	'width='+w+',height='+h+
	',left='+(screen.availWidth-w)/2+',top='+(screen.availHeight-h)/2+
	',menubar='+(m?'yes':'no')+
	',location=no,resizable=yes,scrollbars=yes,status=yes,toolbar=no')
 if(h)		h.xPopup=1
 if(h.focus)	h.focus()
 return h
}

function winOpenPopup(e)
{
 var u
 if(window.event)	{ e=window.event; u=this.href	}
 else if(e)		{ u=e.currentTarget.href		}
 if(!u)			return true

 if(wPopup && wPopup.closed==false)	// Opera returns null if window is closed
	wPopup.location=u		// Opera fails on window.location.replace()
 else
	wPopup=winOpenX(u,wPopupN,wPopupW,wPopupH)
 e.returnValue=false
 return false
}

function winOpenInfo(e)
{
 var u
 if(window.event)	{ e=window.event; u=this.href	}
 else if(e)		{ u=e.currentTarget.href	}
 if(!u)			return true
 wInfo=winOpenX(u,wInfoN,wInfoW,wInfoH)
 e.returnValue=false
 return false
}

function winOpenPrint(e)
{
 var u
 if(window.event)	{ e=window.event; u=this.href	}
 else if(e)		{ u=e.currentTarget.href	}
 if(!u)			return true
 wPrint=winOpenX(u,wInfoN,wInfoW,wInfoH,true)
 e.returnValue=false
 return false
}

function winClose()
{
 if(window.opener && window.opener.focus) window.opener.focus()
 if(window.close) window.close()
 return true
}

function winPrint()
{
 if(window.print) window.print()
 if(window.event) event.returnValue=false
 return false
}

function winAlert(t)
{
 if(window.alert) window.alert(t)
}

function winLogout()
{
 var x,e

 if(document.execCommand && document.queryCommandSupported && ds && document.queryCommandSupported('ClearAuthenticationCache'))
 { document.execCommand('ClearAuthenticationCache'); return true }
 if(window.opera)
 { return false }
 if(window.XMLHttpRequest)
 { x = new XMLHttpRequest() }
 else if(window.ActiveXObject)
 { x = new ActiveXObject('Microsoft.XMLHTTP') }
 if(x)
 {
  try
  { x.open('GET', '/rol/auth', true, ' ', ' '); x.send(''); x.abort() }
  catch(e)
  { alert(e); return false }
  return true
 }
 return false
}

function winRedirect(u)
{
 if(window.navigate)		window.navigate(u)
 else if(window.location)	window.location=u
}

function findId(i)
{
 var e
 if(di)		e=document.getElementById(i)
 else if(da)	e=da.item(i,0)
 return e
}

function findElem(i)
{
 var e
 if(de)		e=document.getElementsByName(i)
 else if(da)	e=da[i]
 return e
}

function findControl(i)
{
 var e
 if(di)		e=document.getElementById(i)
 else if(da)	e=da.item(i,0)
 else if(df)	e=df[i]
 return e
}

function findLink(i)
{
 var e
 if(de)				e=document.getElementsByName(i)
 else if(da)			e=da(i)
 else if(document.links)	e=document.links[i]
 else if(document.anchors)	e=document.anchors[i]
 return e
}

function dumpElem(e)
{
 if(!e)		{ alert('<undef>'); return; }
 if(e.length)	{ alert('<collection>['+e.length+']'); return }

 var t = '<object>'

 if(e.tagName)	t+='\ntag: '+e.tagName
 if(e.type)	t+='\ntype: '+e.type
 if(e.id)	t+='\nid: '+e.id
 if(e.name)	t+='\nname: '+e.name
 if(e.value)	t+='\nvalue: '+e.value
 if(e.size)	t+='\nsize: '+e.size
 if(e.tabIndex)	t+='\ntabIndex: '+e.tabIndex
 if(e.checked)	t+='\n[checked]'
 if(e.selected)	t+='\n[selected]'
 if(e.disabled)	t+='\n[disabled]'
 if(e.status)	t+='\nstatus: '+e.status
 alert(t)
}
