var G={gecko:navigator.product=='Gecko',ie6:(!!document.all && !(typeof window.XMLHttpRequest=='object')),
w:window,d:document,
init:function(){for(var n in G)if(G[n].init)G[n].init()},
clean:function(a){var i=0,o=a.childNodes;while(i<o.length){if(o[i] && o[i].nodeType==3 && !o[i].data.search(/^\s+$/))a.removeChild(o[i]);i++}},
set:function(a,b){for(var o in b)a[o]=b[o];return a},
create:function(a,b,c,d){var o=(d||G.d).createElement(a);G.set(o,b);G.set(o.style,c);return o},
append:function(a,b,c,d){var o=b.tagName?b:G.create(b,c,d);a.appendChild(o);return o},
mid:function(a,b,c){var o=a.split(b);return(o.length<2)?'':o[1].split(c)[0]},
last:function(a,b){var o=a.split(b);return o[o.length-1]},
_:function(){return G.w.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP')},
load:function(a,b){var o=G._();o.open('GET',a,false);o.send(null);return b?o.responseText:o.responseXML},
get:function(a){return G.load(a,1)}
},
$=function(a,b){return (b||G.d).getElementById(a)},
$$=function(a,b){return (b||G.d).getElementsByTagName(a)}
G.w.onload=G.init
G.edit={
blocks:' h1 h2 h3 p ol ul li div table tr th td ',
inline:' img span strong em br b i a ',
init:function(){
	var m=this,o=$$('div'),i
	m.all=m.blocks+m.inline
	m.style=G.d.styleSheets[0].href
	for(i=0;i<o.length;i++)if(o[i].className=="rich-text")m.prepare(o[i])
},
prepare:function(a){
	var m=this,tb=$$('div',a)[0],sr=$$('textarea',a)[0],o,od
	G.set(tb,{className:'rte-bar',innerHTML:m.toolbar()})
	o=G.append(a,'iframe',{frameBorder:0},{width:'100%',height:sr.offsetHeight+'px'})
sr.style.display='none';a.source=sr;a.rte=o.contentWindow;od=a.rte.document;od.designMode='On'
	od.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">')
	od.write('<html><head><meta http-equiv="content-type" content="text/html;charset=UTF-8" />')
	od.write('<link rel="stylesheet" type="text/css" href="'+m.style+'" />')
	od.write('</head><body id="rte-body">'+sr.value+'</body></html>')
	od.close()
},
toolbar:function(){
	var m=this,f=m.button,x=m.option,v=[
f('Bold'),f('Italic'),f('Left','justifyleft'),f('Center','justifycenter'),f('Right','justifyright'),
f('Unordered list','insertunorderedlist'),f('Ordered list','insertorderedlist'),
'<select onchange="G.edit.change(this)">',x('','[format]'),x('h2','Header 2'),x('h3','Header 3'),x('p','Normal'),'</select>',
f('Insert link','insert-link'),f('Insert image','insert-image'),f('Source','view-toggle')]
	return v.join('\n')
},
button:function(a,b){
	var v=b?b:a.toLowerCase()
	return '<b title="'+a+'" class="'+v+'" unselectable="on" onclick="G.edit.exec(this,\''+v+'\')"></b>'
},
option:function(a,b){
	return '<option value="'+a+'">'+b+'</option>'
},
exec:function(a,b,c){
	var m=this,op=a.parentNode.parentNode,o=op.rte,v,os,ob
	switch(b){
	case 'insert-link':
		v=prompt('Hyperlink:','http://')
		if(v && v!='' && v!='http://')o.document.execCommand('createlink',false,v)
		break
	case 'insert-image':
		v=prompt('Image URL:','')
		if(v && v!='')o.document.execCommand('insertimage',false,v)
		break
	case 'view-toggle':
		os=$$('textarea',op)[0]
		ob=(os.style.display=='none')
		if(ob){
			if(G.gecko)m.removeEmpty(o.document.body)
			os.value=m.clean(o.document.body)
		}
		else o.document.body.innerHTML=os.value
		os.style.display=ob?'block':'none'
		$$('iframe',op)[0].style.display=ob?'none':'block'
		break
	default:
		o.document.execCommand(b,false,null)
	}
	o.focus()
},
change:function(a){
	var o=a.parentNode.parentNode.rte,v=a.options[a.selectedIndex].value
	o.document.execCommand('formatblock',false,'<'+v+'>')
	a.selectedIndex=0
	o.focus()
},
removeEmpty:function(a){
	var i=0,o=a.childNodes
	while(i<o.length){if(o[i] && o[i].nodeType==3 && !o[i].data.search(/^\s+$/))a.removeChild(o[i]);i++}
},
clean:function(a,b){
	var m=this,v=[],o=a.childNodes,i,good=b?b:m.all
	for(i=0;i<o.length;i++)v.push(m.cleanNode(o[i],good))
	return v.join('')
},
cleanNode:function(a,b){
	var m=this,nn,q,bt,it
	if(a.nodeType==3)return a.data.replace(/</g,'&lt;').replace(/>/g,'&gt;')
	nn=a.nodeName.toLowerCase()
	it=m.inline.indexOf(' '+nn+' ')>-1
	if(b.indexOf(' '+nn+' ')==-1)return m.clean(a,b)
	switch(nn){
	case 'h1':return '<h2>'+m.clean(a,b)+'</h2>'
	case 'br':return '<br />'
	case 'img':return '<img src="'+a.src+'" alt="'+a.alt+'"'+(a.className?' class="'+a.className+'"':'')+' />'
	case 'a':return '<a href="'+a.href+'" title="'+a.title+'"'+(a.className?' class="'+a.className+'"':'')+(a.target?' target="'+a.target+'"':'')+'>'+m.clean(a,m.inline)+'</a>'
	case 'p':return '<p'+m.attributes(a)+'>'+m.clean(a,m.inline)+'</p>\n'
	default:return '<'+nn+m.attributes(a)+'>'+m.clean(a,it?m.inline:m.all)+'</'+nn+'>'
	}
},
attributes:function(a){
	var m=this,v=[],ac=a.className,as=m.allowedStyle(a)
	if(ac && !ac.indexOf('Mso')==0)v.push(' class="'+ac+'"')
	if(a.align=='center'||a.align=='right')v.push(' align="'+a.align+'"')
	if(a.nodeName=='a' && a.target!='')v.push(' target="'+a.target+'"')
	if(as!='')v.push(' style="'+as+'"')
	return v.join('')
},
allowedStyle:function(a){
	var m=this,o=a.style,v=[],i,q
	if(!o)return ''
	if(o.textAlign=='center')v.push('text-align:center')
	if(o.textAlign=='right')v.push('text-align:right')
	if(o.fontWeight=='bold')v.push('font-weight:bold')
	if(o.fontStyle=='italic')v.push('font-style:italic')
	return v.join(';')
},
onSave:function(){
	var m=this,o=$$('div'),i
	for(i=0;i<o.length;i++)if(o[i].className=="rich-text")m.prepareSave(o[i])
},
prepareSave:function(a){
	var m=this,v=a.rte.document.body,t=a.source,ob
	ob=(t.style.display=='block')
	if(ob)v.innerHTML=t.value
	if(G.gecko)m.removeEmpty(v)
	t.value=m.clean(v).replace(/&/g,'&amp;')
}
}
G.form={
init:function(){var m=this,o=$('notesForm');if(!o)return;o.onsubmit=m.submit},
submit:function(){
	var m=G.form,o=$('notesForm')
	if(m.validate(o)){
	m.processing()
	return true
 }
	else{$('main').scrollIntoView();return false}
},
processing:function(){
	$('submitActions').style.display='none'
	$('submitMessage').style.display='block'
},
validate:function(o){
	var m=G.form,v
	switch(o.className){
	case 'DbConfig':
		v=m.notEmpty(o.DomainURL) && m.notEmpty(o.DatabaseURL)
		break
	case 'Folder':
	case 'Item':
		v=m.notEmpty(o.Subject);break
	case 'Document':
		v=m.processUpload();break
	case 'Contact':
		v=m.notEmpty(o.Subject) && m.notEmpty(o.Company) && m.notEmpty(o.Email)
		break
	case 'Comment':
		G.edit.onSave()
		v=m.notEmpty(o.CommentBody)
		break
	default:
		v=m.notEmpty(o.Subject) && m.notEmpty(o.Description)
	}
	if(v)G.edit.onSave()
	return v
},
processUpload:function(){
	var m=this, o=$('filesAttached'),i,v=$('fileUpload').value
	if(o)o=$$('input',o)
	if(!o || o.length==0)return m.notEmpty($('fileUpload'))
	else{for(i=0;i<o.length;i++)o[i].checked='checked'}
	return true
},
notEmpty:function(a){var o=a.parentNode,v=a.value=='';o.className=v?'not-valid':'';return !v},
hasValue:function(a){
	var i,v,o=a[0].parentNode.parentNode
	for(i=0;i<a.length;i++){if(a[i].checked) v=true}
	o.className=v?'':'not-valid'
	return v
}
}
G.auto={
init:function(){
    var m=this,o=$$('span'),i
    for(i=0;i<o.length;i++){if(o[i].className=='tah')m.prepare(o[i])}
},
prepare:function(a){var m=this,o=$$('input',a)[0];o.onfocus=m.focus;o.onblur=m.blur},
focus:function(){
    var m=G.auto,o=this,op=this.parentNode
    m.target=o
    m.items=','+$$('span',op)[0].innerHTML+','
    m.div=$$('div',op)[0]
    m.observer=setInterval(m.observe,500)
},
blur:function(){var m=G.auto;clearInterval(m.observer);setTimeout(m.done,100)},
done:function(){G.auto.div.style.display=''},
observe:function(){
    var m=G.auto,v=G.last(m.target.value,','),o,i,q=[],t=m.div
    if(v!='')o=m.items.match(new RegExp(','+v+'[^,]*','gi'))
    if(!o){t.style.display='';return}
    t.innerHTML=''
    for(i=0;i<o.length;i++)G.append(t,'b',{innerHTML:o[i].substr(1),onclick:m.click})
    m.div.style.display='block'
},
click:function(){
    var m=G.auto,o=m.target,v=o.value.split(','),n
    v[v.length-1]=this.innerHTML
    o.value=v.join(',')
    n=o.value.length
    m.setCursor(o,n,n)
},
setCursor:function(a,b,c){
    var r,q='character'
    if(a.setSelectionRange){
        a.setSelectionRange(b,c)
        a.focus()
    }
    else if(a.createTextRange){
        r=a.createTextRange()
        r.collapse(true)
        r.moveEnd(q,c)
        r.moveStart(q,b)
        r.select()
    }
}
}
G.tree={
init:function(){
var m=this,o=$$('div'),i;
for(i=0;i<o.length;i++){if(o[i].className=='tree')m.prepare(o[i])}
},
prepare:function(a){
	var m=this,o=$$('ul',a)[0],i,p,q
	if(!o)return
	if(G.gecko)G.clean(o)
	q=o.childNodes
	//alert(q.length)
	for(i=0;i<q.length;i++)$$('b',q[i])[0].onclick=m.click
	q=$$('a',o);for(i=0;i<q.length;i++)q[i].onclick=m.set
	try{m.prepare($$('div',a)[0])}catch(e){}
},
set:function(){var m=G.tree,o=this,q=m.active;if(q)q.className='';o.className='on';m.active=o},
click:function(){
	//alert('click')
	var m=G.tree,o=this,s=$$('div',o.parentNode)[0],cn=o.className,n=cn==''
	if(cn=='none')return
	o.className=n?'min':'';s.className=n?'open':''
	if(s.innerHTML=='...')m.load(o.parentNode.id,s)
},
load:function(a,b){
	var o=G.get(G.base+'json?open&unid='+b.parentNode.id);
	G.tree.add(o.split('[%path%]').join(G.base),b)
},
add:function(a,b){
	var  m=G.tree,o=eval(a),i,q,p,n=o.length
	b.innerHTML=''
	if(n==0){b.className='';$$('b',b.parentNode)[0].className='none';return}
	q=G.create('ul')
	for(i=0;i<n;i++)m.add2(q,o[i])
	q.childNodes[i-1].className='last'
	b.appendChild(q)
},
add2:function(a,b){
	var m=this,o=G.create('li',{id:b.id}),f=G.append
	f(o,'b',{onclick:m.click})
	f(o,'i',{className:b.type})
	f(o,'a',{href:b.href,innerHTML:b.label,onclick:m.set})
	f(o,'div',{innerHTML:'...'})
	a.appendChild(o)
}
}
G.dialog=function(a,b){
var w=window,dd=document.documentElement,o=$('if-dlg'),os=o.style,tp,lf
os.display='block'
tp=parseInt((w.pageYOffset||dd.scrollTop)+((w.innerHeight||dd.clientHeight)-o.offsetHeight)/2)+'px'
lf=parseInt((w.pageXOffset||dd.scrollLeft)+((w.innerWidth||dd.clientWidth)-o.offsetWidth)/2)+'px'
G.set(os,{top:tp,left:lf})
o.src=G.base+'.dlg-'+a+"?readform&field="+b
}
G.dw={
del:function(a,b){
if(confirm('Are you sure you want to delete this document?'))location=G.base+'exec?open&action=delete&unid='+a+'&returnto='+b
},
empty:function(a,b){
if(confirm('Are you sure you want to everything in this Trash folder?'))location=G.base+'exec?open&action=empty&unid='+a+'&returnto='+b
}
}
G.rollback=function(a){
if(confirm('Are you sure you want to roll back to this version?'))location=a
}
G.mplayer={
init:function(){
	if($('notesForm'))return
	var o=$$('a'),i,v=[],p,t=$('media-player');if(!t)return
	for(i=0;i<o.length;i++){
		p=o[i].href
		switch(p.slice(-4)){
		case '.mp3':
			v.push('<div class="box"><h3>Audio: '+o[i].innerHTML+'</h3><object width="300" height="45" type="audio/mpeg" data="'+p+' "><param name="filename" value="'+p+'" /><param name="autostart" value="0" /></object></div>')
			break;
		}
	}
	t.innerHTML=v.join('<br />')
}
}

