/////////////////////////////////
// API Non critical functions. //
/////////////////////////////////

function _getX(t) { return parseInt(t.x) ? t.x : _getAX(t); }
function _getY(t) { return parseInt(t.y) ? t.y : _getAY(t); }
function _getAX(t, p) { var i = 0;while (t) { i += t["offsetLeft"]; t = t.offsetParent;}return i;}
function _getAY(t, p) { var i = 0;while (t) { i += t["offsetTop"]; t = t.offsetParent;}return i;}

function CreateNotice(n){
	var cn=document.createElement('div');cn.className="BigPopNotice";
	cn.innerHTML=n.getAttribute('NoticeValue');cn.style.position="Absolute";
	cn.style.width=n.offsetWidth*4-16;n._onclick=n.onclick;
	n.onclick=function(){this.removeChild(this.ChildNotice);this.onclick=this._onclick;}
	n.ChildNotice=cn;n.appendChild(cn);cn.style.top=_getY(n)+1;cn.style.left=_getX(n)+1;
	//-(HttEventNotice.offsetHeight/2)+16;//-Target.offsetHeight;
	//+Target.offsetWidth;//-(HttEventNotice.offsetWidth/2)+16;//+(Target.offsetWidth*2);
}

function GetSelected(obj) { // Return an array of selected items from a list.
	//var sa = new Array();for(var i=0;i<obj.options.length;i++){
	/*if(obj.options[i].selected){sa[sa.length] = (Option);}}*/
	return 13;
}

function trim(str) {
   return str.replace(/^\s*|\s*$/g,"");
}

function PredictContactDetails(value) {
	if(value.indexOf('@')>0){var prefix=value.split('@')[0].replace(/[._-]/g, ' ').split(' ');
	var domain=value.split('@')[1];if(prefix.length>1){for(var i=0;i<prefix.length;i++){
	prefix[i]=prefix[i].substring(0,1).toUpperCase()+prefix[i].substring(1, prefix[i].length);}
	prefix=prefix.join(' ');}else{prefix=prefix[0].substring(0,1).toUpperCase()+
	prefix[0].substring(1, prefix[0].length);}var c=new Object;c.Name=prefix;c.Email=value;
	c.Website="http://www."+domain;return c;}	
}

function ThrowMessageBox(obj, err) { // create the error message
	var ErrMessage = document.createElement('p');
	ErrMessage.TargetObject = obj;
	ErrMessage.className = 'notice';
	ErrMessage.style.position = 'absolute';
	ErrMessage.style.left = (_getX(obj)+15) + 'px';
	ErrMessage.style.top = (_getY(obj)+obj.offsetHeight) + 'px';
	ErrMessage.style.zIndex = 1000;
	ErrMessage.onmouseover = function() { this.style.cursor = 'pointer'; }
		
	// write the error message in.
	ErrMessage.innerHTML = '<img src="/img/pointer2.gif" style="position: absolute;margin-top: -13px;">';
	ErrMessage.innerHTML += err;
	
	// render the object.
	obj.parentNode.appendChild(ErrMessage);
}

///////////////////////////////////////////////////
// needs updating to calculate from font, size,- //
// and any transforms such as italic.            //
///////////////////////////////////////////////////
function TextWidth(t) { // Returns pixel width of a string.  
	var z="W,10,M,9,ADGHOQRU,7,BCKNPSTVXY,6,FELJ,5,I,4".split(",");var ta="";
	var f=0;for(var i=0;i<t.length;i++){ta+=t.substring(i,i+1)+',';}ta=ta.substring(0,ta.length-1).split(",");
	for(var i=0;i<ta.length;i++){for(var ii=0;ii<z.length;ii+=2){if(z[ii].indexOf(ta[i].toUpperCase())!=-1){
	f=f+parseInt(z[ii+1]);}}}return f;
};

/////////////////
// PROTOTYPES. //
/////////////////
Number.prototype.between = function (min, max) { return this >= min && this <= max; }
function middle(a,b){return(a>b)?Math.floor((a/2)+(b/2)):Math.floor((b/2)+(a/2))}





/////////////////////////////
// Depreciating functions. //
/////////////////////////////
function getObj(n) { 
	var args=getObj.arguments;for(var i=0;i<args.length;i++){arg+="[Arg :"+i+"] ==> "+args[i]+"\r\n" }
	alert("getObj method has been dissolved, please use 'COMPOSE.FindObj(obj, document)'.\r\n"+arg);
	return COMPOSE.FindObj(n);
};
function _findObj(n) { 
	var args=_findObj.arguments;for(var i=0;i<args.length;i++){arg+="[Arg :"+i+"] ==> "+args[i]+"\r\n" }
	alert("_findObj method has been dissolved, please use 'COMPOSE.FindObj(obj, document)'.\r\n"+arg);
	return COMPOSE.FindObj(n);
};
function COMPOSE_FindObj(n,d) { 
	var args=displayRemove.arguments;for(var i=0;i<args.length;i++){arg+="[Arg :"+i+"] ==> "+args[i]+"\r\n" }
	alert("COMPOSE_FindObj method has been dissolved, please use 'COMPOSE.FindObj(obj, document)'.\r\n"+arg);
	return COMPOSE.FindObj(n,d);
};
function removeAttribute() {
	var args=displayRemove.arguments,arg="";for(var i=0;i<args.length;i++){arg+="[Arg :"+i+"] ==> "+args[i]+"\r\n" }
	alert("removeAttribute method has been dissolved.\r\n"+arg);
};
function displayRemove(target) {
	var args=displayRemove.arguments,arg="";for(var i=0;i<args.length;i++){arg+="[Arg :"+i+"] ==> "+args[i]+"\r\n" }
	alert("displayRemove method has been dissolved.\r\n"+arg);
};
function toHex(d) {
	var args=displayRemove.arguments,arg="";for(var i=0;i<args.length;i++){arg+="[Arg :"+i+"] ==> "+args[i]+"\r\n" }
	alert("toHex method has been dissolved.\r\n"+arg);
	
	var h=new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");	
	return h[d];
};
function RGB2HEX(r,g,b) {
	var args=displayRemove.arguments,arg="";for(var i=0;i<args.length;i++){arg+="[Arg :"+i+"] ==> "+args[i]+"\r\n" }
	alert("RGB2HEX method has been dissolved.\r\n"+arg);
	
	r=toHex(Math.floor(r/16))+toHex(r%16);g=toHex(Math.floor(g/16))+toHex(g%16);
	b=toHex(Math.floor(b/16))+toHex(b%16);return r+g+b;
};
function HEX2RGB(hex) {
	var args=displayRemove.arguments,arg="";for(var i=0;i<args.length;i++){arg+="[Arg :"+i+"] ==> "+args[i]+"\r\n" }
	alert("HEX2RGB method has been dissolved.\r\n"+arg);
	
	hex=hex.replace('#','');var r=hex.substring(0,2);var g=hex.substring(2,4);
	var b=hex.substring(4,6);return parseInt(r,16)+','+parseInt(b,16)+','+parseInt(g,16);
};
function findAlphaShader(object) {
	var args=displayRemove.arguments,arg="";for(var i=0;i<args.length;i++){arg+="[Arg :"+i+"] ==> "+args[i]+"\r\n" }
	alert("findAlphaShader method has been dissolved.\r\n"+arg);
	
	if (object.filters) this._alpha = object.filters.alpha.opacity;
	if (object.style.MozOpacity) this._alpha = object.style.MozOpacity;
	if (object.style.opacity) this._alpha = object.style.opacity;
};
function doIt(obj) {
	var args=displayRemove.arguments,arg="";for(var i=0;i<args.length;i++){arg+="[Arg :"+i+"] ==> "+args[i]+"\r\n" }
	alert("doIt method has been dissolved.\r\n"+arg);
	
	// fix the object style first.
	with (obj.style)
	{
		border = "1px Solid #01025C";
		backgroundColor = "#f4f4f4";
		color = "#140041";
		margin = "4px 2px";
		font = "11px Tahoma";
		padding = "3px 20px";
	}
			
	// create the top/left shadows
	var a = document.createElement('div');
	with (a.style)
	{
		borderTop = '1px Solid #e3e3e3';
		borderLeft = '1px Solid #e3e3e3';
		borderBottom = '1px Solid #9b9b9b';
		borderRight = '1px Solid #9b9b9b';
		position = 'Absolute';
		width = (obj.offsetWidth-4) + 'px';
		height = (obj.offsetHeight-4) + 'px';
		top = (_getY(obj)+1) + 'px';
		left = (_getX(obj)+1) + 'px';
	}
				
	// create the bottom/right shadows
	var b = document.createElement('div');
	with (b.style)
	{
		borderTop = '1px Solid #eeeeee';
		borderLeft = '1px Solid #eeeeee';
		borderBottom = '1px Solid #d1d1d1';
		borderRight = '1px Solid #d1d1d1';
		position = 'Absolute';
		width = (obj.offsetWidth-6) + 'px';
		height = (obj.offsetHeight-6) + 'px';
		top = (_getY(obj)+2) + 'px';
		left = (_getX(obj)+2) + 'px';
	}

	// render the object.
	obj.parentNode.appendChild(a);
	obj.parentNode.appendChild(b);
};