function NiftyCheck() {
	if (!document.getElementById || !document.createElement)
		return(false);
	isXHTML = /html\:/.test(document.getElementsByTagName('body')[0].nodeName);
	if (Array.prototype.push == null) {
		Array.prototype.push = function() {
			this[this.length] = arguments[0];
			return(this.length);
		}
	}
	return(true);
}

function Rounded(selector, wich, bk, color, opt) {
	var i,prefixt,prefixb,cn = "r",ecolor = "",edges = false,eclass = "",b = false,t = false;

	if (color == "transparent") {
		cn = cn + "x";
		ecolor = bk;
		bk = "transparent";
	} else if (opt && opt.indexOf("border") >= 0) {
		var optar = opt.split(" ");
		for (i = 0; i < optar.length; i++)
			if (optar[i].indexOf("#") >= 0) ecolor = optar[i];
		if (ecolor == "") ecolor = "#666";
		cn += "e";
		edges = true;
	} else if (opt && opt.indexOf("smooth") >= 0) {
		cn += "a";
		ecolor = Mix(bk, color);
	}

	if (opt && opt.indexOf("small") >= 0) cn += "s";
	prefixt = cn;
	prefixb = cn;

	if (wich.indexOf("all") >= 0) {
		t = true;
		b = true
	}
	else if (wich.indexOf("top") >= 0) t = "true";
	else if (wich.indexOf("tl") >= 0) {
		t = "true";
		if (wich.indexOf("tr") < 0) prefixt += "l";
	}
	else if (wich.indexOf("tr") >= 0) {
		t = "true";
		prefixt += "r";
	}

	if (wich.indexOf("bottom") >= 0) b = true;
	else if (wich.indexOf("bl") >= 0) {
		b = "true";
		if (wich.indexOf("br") < 0) prefixb += "l";
	}
	else if (wich.indexOf("br") >= 0) {
		b = "true";
		prefixb += "r";
	}

	var v = getElementsByNiftyId(selector);

	var l = v.length;
	for (i = 0; i < l; i++) {
		if (edges) AddBorder(v[i], ecolor);
		if (t) AddTop(v[i], bk, color, ecolor, prefixt);
		if (b) AddBottom(v[i], bk, color, ecolor, prefixb);
	}
}

function AddBorder(el, bc) {
	var i;
	if (!el.passed) {
		if (el.childNodes.length == 1 && el.childNodes[0].nodeType == 3) {
			var t = el.firstChild.nodeValue;
			el.removeChild(el.lastChild);
			var d = CreateEl("span");
			d.style.display = "block";
			d.appendChild(document.createTextNode(t));
			el.appendChild(d);
		}
		for (i = 0; i < el.childNodes.length; i++) {
			if (el.childNodes[i].nodeType == 1) {
				el.childNodes[i].style.borderLeft = "1px solid " + bc;
				el.childNodes[i].style.borderRight = "1px solid " + bc;
			}
		}
	}
	el.passed = true;
}

function AddTop(el, bk, color, bc, cn) {
	var i,lim = 4,d = CreateEl("b");

	if (cn.indexOf("s") >= 0) lim = 2;
	if (bc) d.className = "artop";
	else d.className = "rtop";
	d.style.backgroundColor = bk;
	for (i = 1; i <= lim; i++) {
		var x = CreateEl("b");
		x.className = cn + i;
		x.style.backgroundColor = color;
		if (bc) x.style.borderColor = bc;
		d.appendChild(x);
	}
	el.style.paddingTop = 0;
	el.insertBefore(d, el.firstChild);
}

function AddBottom(el, bk, color, bc, cn) {
	var i,lim = 4,d = CreateEl("b");

	if (cn.indexOf("s") >= 0) lim = 2;
	if (bc) d.className = "artop";
	else d.className = "rtop";
	d.style.backgroundColor = bk;
	for (i = lim; i > 0; i--) {
		var x = CreateEl("b");
		x.className = cn + i;
		x.style.backgroundColor = color;
		if (bc) x.style.borderColor = bc;
		d.appendChild(x);
	}
	el.style.paddingBottom = 0;
	el.appendChild(d);
}

function CreateEl(x) {
	if (isXHTML) return(document.createElementNS('http://www.w3.org/1999/xhtml', x));
	else return(document.createElement(x));
}


function getElementsByNiftyId(selector) {
	var i,selid = "",selclass = "",tag = selector,f,s = [],objlist = [];

	if (selector.indexOf(" ") > 0) {  //descendant selector like "tag#id tag"
		s = selector.split(" ");
		var fs = s[0].split("#");
		if (fs.length == 1) return(objlist);
		f = document.getElementById(fs[1]);
		if (f) return(f.getElementsByTagName(s[1]));
		return(objlist);
	}
	if (selector.indexOf("#") > 0) { //id selector like "tag#id"
		s = selector.split("#");
		tag = s[0];
		selid = s[1];
	}
	if (selid != "") {
		f = document.getElementById(selid);
		if (f) objlist.push(f);
		return(objlist);
	}
	if (selector.indexOf(".") > 0) {  //class selector like "tag.class"
		s = selector.split(".");
		tag = s[0];
		selclass = s[1];
	}
	var v = document.getElementsByTagName(tag);
	// tag selector like "tag"
	if (selclass == "")
		return(v);
	for (i = 0; i < v.length; i++) {
		if (v[i].className.indexOf(selclass) >= 0) {
			objlist.push(v[i]);
		}
	}
	return(objlist);
}


function Mix(c1, c2) {
	var i,step1,step2,x,y,r = new Array(3);
	if (c1.length == 4)step1 = 1;
	else step1 = 2;
	if (c2.length == 4) step2 = 1;
	else step2 = 2;
	for (i = 0; i < 3; i++) {
		x = parseInt(c1.substr(1 + step1 * i, step1), 16);
		if (step1 == 1) x = 16 * x + x;
		y = parseInt(c2.substr(1 + step2 * i, step2), 16);
		if (step2 == 1) y = 16 * y + y;
		r[i] = Math.floor((x * 50 + y * 50) / 100);
	}
	return("#" + r[0].toString(16) + r[1].toString(16) + r[2].toString(16));
}

window.onload = function() {
	if (!NiftyCheck())
		return;

	Rounded("div#topmenu", "bottom", "#ffffff", "transparent", "border #98ACC1");
	Rounded("div#content", "all", "#ffffff", "#ffffff", "border #98ACC1");
	Rounded("div#footer", "all", "#ffffff", "#F3F5F7", "border #98ACC1");
	Rounded("div.quickTip", "top", "#ffffff", "#F3F5F7", "border #98ACC1");
	Rounded("div.quickTip", "bottom", "#ffffff", "#ffffff", "border #98ACC1");
	Rounded("div.fieldSet", "all", "#ffffff", "#f3f5f7", "small border #98ACC1");
	Rounded("div.formInfo", "all", "#ffffff", "#f3f7f5", "small border #98C1AC");
	Rounded("div.formErrors", "all", "#ffffff", "#fff7f5", "small border #bb5555");
	Rounded("div.generalDetails", "all", "#ffffff", "#fff7f5", "small border #98ACC1");
	Rounded("div.generalTicket", "all", "#ffffff", "#fff7f5", "small border #98ACC1");
	Rounded("div.addTicketMessage", "all", "#ffffff", "#fff7f5", "small border #98ACC1");
	Rounded("li.menuListItem", "top","#ffffff","#ffffff","small border #98ACC1");
    paintTables();
}

function paintTables() {
	var tables = document.getElementsByTagName('table');
	var cCN = 0;
	for (var i = 0; i < tables.length; i++) {
		if (tables[i].className == 'infoTable') {
			trs = tables[i].getElementsByTagName('tr');
			for (var j = 0; j < trs.length; j++) {
				if (trs[j].className == 'tableCaption') continue;
				trs[j].className = 'tr' + cCN;
				cCN = 1 - cCN;
			}
		}
	}
}
      
function messageExpand(srcElmt) {
	var divElmt = document.getElementById('div_' + srcElmt);
	var linkElmt = document.getElementById(srcElmt);
	if (divElmt.className == 'messageBody') {
		if (divElmt.style.display == 'none') {
			divElmt.style.display = '';
			linkElmt.innerHTML = '&lt&lt';
		}
		else {
			divElmt.style.display = 'none';
			linkElmt.innerHTML = '&gt&gt';
		}
	}
}

function processForm(element, command) {
//	try {

        var form = element.form;

		if (command == 'searchall') {
			form.elements['query'].value = '';
			command = 'search';
		}

        if (form.elements.length > 0) {
            for (i = 0; i < form.elements.length; i++) {
                if (form.elements[i] != null && form.elements[i].type == "text") {
                    form.elements[i].value = trim(form.elements[i].value);
                }
            }
        }

        if (typeof form.onsubmit == 'function' && !form.onsubmit()) {
			return false;
        }

        form._action.value = command;
		form.submit();
//	} catch (e) {
//		return false;
//	}
}

function processFormRTE(element, command,RTEname,textarea) {
        updateRTEs();
        var richEditorName = RTEname;
        var message;
        if (document.getElementById(richEditorName).contentDocument == null) {
            message = document.getElementById(richEditorName).contentWindow.document.body.innerHTML;
        } else {
            message = document.getElementById(richEditorName).contentDocument.body.innerHTML;
        }
        document.getElementById(textarea).value = message;

        return processForm(element, command);
}

function save(formName, step, page) {
 setFields(formName, step, page, 'save');
 submitForm(formName);
}

function goTo(formName, page) {
 setFields(formName, page, 'set');
 submitForm(formName);
}

function submitForm(formName) {
 var form = getForm(formName);
 if (form.onsubmit()) {
  form.submit();
 }
}

function setFields(formName, page, action) {
 var form = getForm(formName);
 form.pageId.value = page;
 form._action.value = action;
}

function getForm(formName) {
 var form = document.getElementById(formName);
 if (form == null) {
  form = document.forms[formName];
 }
 return form;
}