String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); };
String.prototype.ltrim = function() { return this.replace(/\s*((\S+\s*)*)/, "$1"); };
String.prototype.rtrim = function() { return this.replace(/((\s*\S+)*)\s*/, "$1"); };

Array.prototype.inArray = function(searchTerm)
{
	var i = this.length;

	if (i > 0)
	{
		do
		{
			if (this[i] === searchTerm)
			{
				return true;
			}
		} while (i--);
	}
	return false;
}


var userAgent=navigator.userAgent.toLowerCase();

var isIE=(typeof(window.VBArray)!='undefined');

var isIE5=/*@cc_on @_jscript_version == 5.1 ? true : @*/false;
var isIE55=/*@cc_on @_jscript_version == 5.5 ? true : @*/false;
var isIE6=/*@cc_on @_jscript_version == 5.6 ? true : @*/false;
var isIE7=/*@cc_on @_jscript_version == 5.7 ? true : @*/false;
var isIE8=/*@cc_on @_jscript_version == 5.8 ? true : @*/false;
var isOpera=typeof(window.opera)!="undefined";
var isSafari=/a/.__proto__=='//';
var isChrome=/source/.test((/a/.toString+''));

var tableRowDisplayType=((userAgent.indexOf('msie')+1)?'block':'table-row');
var tableDisplayType=((userAgent.indexOf('msie')+1)?'block':'table');


if (typeof($)=='undefined')
{
	eval('function $(objId) { return document.getElementById(objId); }');
}


// IE 7 checkbox onchange bugfix
window.jscript/*@cc_on=@_jscript_version@*/
if (typeof(window.jscript)!='undefined' && jscript==5.7)	//if IE7
{
	attachToEvent(window,'load',fixIE7CheckboxOnchange);
}


function IEVersion(){
	var _n=navigator,_w=window,_d=document;
	var version="NA";
	var na=_n.userAgent;
	var ieDocMode="NA";
	var ie8BrowserMode="NA";
	if(/msie/i.test(na) && (!_w.opera))
	{
		if(_w.attachEvent && _w.ActiveXObject)
		{		
			version = (na.match( /.+ie\s([\d.]+)/i ) || [])[1];
			if(parseInt(version)==7)
			{
				if(_d.documentMode)
				{
					version = 8;
					if(/trident\/\d/i.test(na))
					{
						ie8BrowserMode = "Compat Mode";
					}
					else
					{
						ie8BrowserMode = "IE 7 Mode";
					}
				}
			}
			else if(parseInt(version)==8)
			{
				if(_d.documentMode){ ie8BrowserMode = "IE 8 Mode";}
			}
			ieDocMode = (_d.documentMode) ? _d.documentMode : (_d.compatMode && _d.compatMode=="CSS1Compat") ? 7 : 5;
		}
	}
	
	return {
		"UserAgent" : na,
		"Version" : version,
		"BrowserMode" : ie8BrowserMode,
		"DocMode": ieDocMode
	}
}

function fixIE7CheckboxOnchange()
{
	var inputs = document.getElementsByTagName("input"), i=-1, l=inputs.length;
	while (++i!==l)
	{
		var inputs_i=inputs[i];

		if ((inputs_i.type=="checkbox") && inputs_i.onchange)
		{
			inputs_i._onchange=inputs_i.onchange;
			inputs_i.onchange=null;
			inputs_i.onpropertychange=function() {if (event.propertyName=='checked') this._onchange();};
		}
	}
}

function addWindowOnLoad(functionName)
{
	if (typeof(__windowOnLoad)=='undefined')
	{
		__windowOnLoad=new Array();
		if (typeof(window.onload)!='undefined' && window.onload!=null)
		{
			__windowOnLoad[0]=window.onload;
		}
		window.onload=function()
		{
			var i;
			for (i=0;i<__windowOnLoad.length;i++)
			{
				if (typeof(__windowOnLoad[i])=='function')
				{
					__windowOnLoad[i]();
				}
				else
				{
					eval(__windowOnLoad[i]);
				}
			}
		}
	}
	__windowOnLoad[__windowOnLoad.length]=functionName;
}


function attachToEvent(obj,eventName,func)
{
	if(obj.addEventListener)
	{
		obj.addEventListener(eventName,func,false);
	}
	else
	{
		if(obj.attachEvent)
		{
			obj.attachEvent('on'+eventName,func);
		}
	}
}

function addFlash(contentId,content)
{
	var index;

	if (typeof(__objectContent)=='undefined')
	{
		__objectContent=new Array();
	}
	index=__objectContent.length;
	__objectContent[index]=new Array();
	__objectContent[index]['id']=contentId;
	__objectContent[index]['content']='type="application/x-shockwave-flash" '+content;
}


function addObject(contentId,content)
{
	var index;

	if (typeof(__objectContent)=='undefined')
	{
		__objectContent=new Array();
	}
	index=__objectContent.length;
	__objectContent[index]=new Array();
	__objectContent[index]['id']=contentId;
	__objectContent[index]['content']=content;
}


function putObject()
{
	var i;

	if (typeof(__objectContent)=='undefined' || __objectContent.length<1)
	{
		return;
	}
	for (i=0;i<__objectContent.length;i++)
	{
		document.getElementById(__objectContent[i]['id']).innerHTML='<object " '+__objectContent[i]['content']+'</object>';
	}
}

addWindowOnLoad('putObject();');


function getObjXY(Obj)
{
	var Cord,leftpos,toppos,aTag,IE;

	IE=(typeof(Obj.currentStyle)!='undefined');
	Cord = new Array();
	leftpos = Obj.offsetLeft;
	toppos = Obj.offsetTop;
	
	if ((IE?Obj.currentStyle['position']:Obj.style.position)!='absolute')
	{
		aTag = Obj;
		do
		{
			aTag = aTag.offsetParent;
			leftpos += aTag.offsetLeft;
			toppos += aTag.offsetTop;
			if (aTag.style.position=='absolute')
			{
				leftpos -= aTag.offsetLeft;
				toppos -= aTag.offsetTop;
				break;
			}
		} while(aTag.tagName!="BODY" && aTag.tagName!="HTML" && (IE?aTag.currentStyle['position']:aTag.style.position) == 'static');
	}
	Cord[0]=leftpos;
	Cord[1]=toppos;
	return Cord;
}


function getElementsByClassName(oElm, strTagName, oClassNames)
{
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var arrRegExpClassNames = new Array();
	if(typeof oClassNames == "object")
	{
		for(var i=0; i<oClassNames.length; i++)
		{
			arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
		}
	}
	else
	{
		arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
	}
	var oElement;
	var bMatchesAll;
	for(var j=0; j<arrElements.length; j++)
	{
		oElement = arrElements[j];
		bMatchesAll = true;
		for(var k=0; k<arrRegExpClassNames.length; k++){
			if(!arrRegExpClassNames[k].test(oElement.className))
			{
				bMatchesAll = false;
				break;
			}
		}
		if(bMatchesAll)
		{
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}


function resetFileInput(formObj)
{
	var origValue= new Array();
	var index;

	for (index=0;index<formObj.elements.length;index++)
	{
		origValue[index]=new Array();
		origValue[index][0]=formObj.elements[index].type;
		origValue[index][1]=formObj.elements[index].value;
		if (origValue[index][0]!='file' && origValue[index][0]!='submit' && origValue[index][0]!='reset')
		{
			origValue[index][2]=formObj.elements[index].disabled;
		}
		if (origValue[index][0]=='radio')
		{
			origValue[index][3]=formObj.elements[index].checked;
		}
	}
	formObj.reset();
	for (index=0;index<formObj.elements.length;index++)
	{
		if (origValue[index][0]!='file' && origValue[index][0]!='submit' && origValue[index][0]!='reset')
		{
			formObj.elements[index].value=origValue[index][1];
			formObj.elements[index].disabled=origValue[index][2];
			if (origValue[index][0]=='radio')
			{
				formObj.elements[index].checked=origValue[index][3];
			}
		}
	}
}


function objInDocument(obj)
{
	var testObj;
	var id;
	var setId;
	var result;

	obj.objInDocument='objInDocument';
	setId=(typeof(obj.id)!='string');

	if (setId)
	{
		id='objInDocument';
		obj.id=id;
		setId=true;
	}
	else
	{
		id=obj.id;
		setId=false;
	}

	testObj=document.getElementById(obj.id);
	if(!(typeof(testObj)!='undefined' && testObj!=null && typeof(testObj.objInDocument)!='undefined' && typeof(testObj.objInDocument)!='null' && testObj.objInDocument=='objInDocument'))
	{
		result=false;
	}
	else
	{
		result=true;
	}

	if (setId)
	{
		obj.id=null;
	}
	obj.objInDocument=null;
	return result;
}


function cleanOptions(obj)
{
	var index;

	if (typeof(obj)!='object')
	{
		obj=$(obj);
	}

	obj.selectedIndex=-1;
	if (obj.options.length>0)
	{
		for (index=(obj.options.length-1);index>=0;index--)
		{
			obj.options[index]=null;
		}
	}
}


function removeOption(obj,index)
{
	if (typeof(obj)!='object')
	{
		obj=$(obj);
	}

	if (typeof(obj.options[index])!='undefined')
	{
		if (objInDocument(obj))
		{
			obj.options[index]=null;
		}
		else
		{
			opener.document.getElementById(obj.id).remove(index);
		}
	}
}


function removeSelectedOptions(obj)
{
	var index=0;
	if (typeof(obj)!='object')
	{
		obj=$(obj);
	}

	for (index=(obj.options.length-1);index>=0;index--)
	{
		if (obj.options[index].selected==true)
		{
			removeOption(obj,index);
		}
	}
}


function addOptionItems(obj,items)
{
	var index=0;
	if (typeof(obj)!='object')
	{
		obj=$(obj);
	}

	foreach(items,
		function(item,index)
		{
			obj.options[obj.options.length]=new Option(item,index,false,false);
		}
	);
}


function addOptionItem(obj,text,value,defaultSelected,selected)
{
	if (typeof(obj)!='object')
	{
		obj=$(obj);
	}
	if (typeof(defaultSelected)=='undefined')
	{
		defaultSelected=false;
	}
	if (typeof(selected)=='undefined')
	{
		selected=false;
	}

	if (objInDocument(obj))
	{
		obj.options[obj.options.length]=new Option(text,value,defaultSelected,selected);
	}
	else
	{
		if (typeof(document.all)!='undefined')
		{
			var newOption=opener.document.createElement("option");
			newOption.value=value;
			newOption.text=text;
			newOption.defaultSelected=defaultSelected;
			newOption.selected=selected;
			obj.add(newOption);
		}
		else
		{
			obj.options[obj.options.length]=new Option(text,value,defaultSelected,selected);
		}
	}
}


function addUniqueOptionItem(obj,text,value,defaultSelected,selected)
{
	var index=0;
	var unique=true;

	if (typeof(obj)!='object')
	{
		obj=$(obj);
	}

	for (index=(obj.options.length-1);index>=0;index--)
	{
		if (obj.options[index].value==value)
		{
			unique=false;
			break;
		}
	}

	if(unique)
	{
		addOptionItem(obj,text,value,defaultSelected,selected);
		return true;
	}
	return false;
}


function copySelectedOptionItems(sourceObj,targetObj,_unique)
{
	var unique=false;
	var index=0;

	if (typeof(sourceObj)!='object')
	{
		sourceObj=$(sourceObj);
	}
	if (typeof(targetObj)!='object')
	{
		targetObj=$(targetObj);
	}
	if (typeof(_unique)!='undefined')
	{
		unique=_unique;
	}

	if (sourceObj.options.length>0)
	{
		for (index=0;index<sourceObj.options.length;index++)
		{
			if (unique)
			{
				addUniqueOptionItem(targetObj,sourceObj.options[index].text,sourceObj.options[index].value,false,sourceObj.options[index].selected);
			}
			else
			{
				addOptionItem(targetObj,sourceObj.options[index].text,sourceObj.options[index].value,false,sourceObj.options[index].selected);
			}
		}
	}
}


function moveSelectedOptionItems(sourceObj,targetObj,_unique)
{
	var unique=false;
	var index=0;

	if (typeof(sourceObj)!='object')
	{
		sourceObj=$(sourceObj);
	}
	if (typeof(targetObj)!='object')
	{
		targetObj=$(targetObj);
	}
	if (typeof(_unique)!='undefined')
	{
		unique=_unique;
	}
	copySelectedOptionItems(sourceObj,targetObj,unique);
	removeSelectedOptions(sourceObj);
}


function getSelectedOptionValue(obj)
{
	var result='';
	var index=0;

	if (typeof(obj)!='object')
	{
		obj=$(obj);
	}

	if (obj.options.length>0)
	{
		for (index=(obj.options.length-1);index>=0;index--)
		{
			if (obj.options[index].selected==true)
			{
				result+=obj.options[index].value+',';
			}
		}
	}

	if (result!='')
	{
		result=result.substr(0,result.length-1);
	}
	return result;
}


function selectAllOptions(obj)
{
	var index=0;

	if (typeof(obj)!='object')
	{
		obj=$(obj);
	}

	if (obj.options.length>0)
	{
		for (index=(obj.options.length-1);index>=0;index--)
		{
			obj.options[index].selected=true;
		}
	}
}


function selectOptionsByValue(obj,values)
{
	var index=0;

	if (typeof(obj)!='object')
	{
		obj=$(obj);
	}

	if (obj.options.length>0)
	{
		for (index=(obj.options.length-1);index>=0;index--)
		{
			if (values.inArray(obj.options[index].value)==true)
			{
				obj.options[index].selected=true;
			}
		}
	}
}


function selectOptionItemByValue(obj,selectedValue)
{
	var optionIndex=0;
	if (typeof(obj)!='object')
	{
		obj=$(obj);
	}
	if (obj.options.length==0)
	{
		return;
	}

	for (optionIndex=0;optionIndex<obj.options.length;optionIndex++)
	{
		if (obj.options[optionIndex].value==selectedValue)
		{
			obj.options[optionIndex].selected=true;
		}
	}
}

function selectOptionItemByText(obj,text)
{
	var optionIndex=0;
	if (typeof(obj)!='object')
	{
		obj=$(obj);
	}
	if (obj.options.length==0)
	{
		return;
	}

	for (optionIndex=0;optionIndex<obj.options.length;optionIndex++)
	{
		if (obj.options[optionIndex].text==text)
		{
			obj.options[optionIndex].selected=true;
		}
	}
}

function foreach(variable,_function)
{
	var key;
	var item;

	for (key in variable)
	{
		item=variable[key];
		if (typeof(item)!='function')
		{
			if (_function(item,key)===false)
			{
				break;
			}
		}
	}
}

function formatNumber(number)
{
	var decimalSeparator=',';
	var thousandSeparator='.';
	var i,piece,offset,result;

	if (number=='' || number=='0')
	{
		return 0;
	}

	number=number+'';
	number=number.replace(new RegExp('[\\'+thousandSeparator+']*', "g"),'').split(decimalSeparator);
	number[0]=number[0].replace(/^0[0]*/,'');

	piece=Math.floor(number[0].length/3);
	offset=number[0].length%3;
	result=number[0].substr(0,offset)+(offset>0 && number[0].length>3?thousandSeparator:'');
	for (i=0; i<piece; i++)
	{
		result=result+number[0].substr(offset+i*3,3)+(i!=(piece-1)?thousandSeparator:'');
	}
	number=result+(typeof(number[1])!='undefined' && number[1]!=''?decimalSeparator+number[1]:'');
	return number;
}

function onEvent_formatNumber()
{
	var decimalSeparator=',';
	var thousandSeparator='.';
	var number,i,piece,offset,result;

	if (this.value=='' || this.value=='0')
	{
		return;
	}

	number=this.value.replace(new RegExp('[\\'+thousandSeparator+']*', "g"),'').split(decimalSeparator);
	number[0]=number[0].replace(/^0[0]*/,'');

	if (typeof(this.originalMaxLenght)!='undefined' && this.originalMaxLenght<number[0].length)
	{
		number[0]=number[0].substr(0,this.originalMaxLenght);
	}

	piece=Math.floor(number[0].length/3);
	offset=number[0].length%3;
	result=number[0].substr(0,offset)+(offset>0 && number[0].length>3?thousandSeparator:'');
	for (i=0; i<piece; i++)
	{
		result=result+number[0].substr(offset+i*3,3)+(i!=(piece-1)?thousandSeparator:'');
	}
	this.value=result+(typeof(number[1])!='undefined' && number[1]!=''?decimalSeparator+number[1]:'');
}

function initFormatedFields(fields)
{
	var key,field;

	if (fields.length<1)
	{
		return true;
	}
	for (key=0;key<fields.length;key++)
	{
		field=document.getElementById(fields[key]);
		if (field.maxLength>3)
		{
			field.originalMaxLenght=field.maxLength;
			if (field.size==field.maxLength)
			{
				field.size=field.maxLength+(Math.floor(field.maxLength/3));
			}
			field.maxLength=field.maxLength+(Math.floor(field.maxLength/3));
			field.onkeyup=onEvent_formatNumber;
			field.onblur=onEvent_formatNumber;
			field.onblur();
		}
	}
}

function removeFormat(fields)
{
	var thousandSeparator='.';
	var key,field;

	if (fields.length<1)
	{
		return true;
	}
	for (key=0;key<fields.length;key++)
	{
		field=document.getElementById(fields[key]);
		field.value=field.value.replace(new RegExp('[\\'+thousandSeparator+']*', "g"),'');
	}
}

function setInnerHTML(obj,innerHTML)
{
	if (typeof(obj)!='object')
	{
		obj=document.getElementById(obj);
	}

	if (isIE || isIE7)	// IE bugfix
	{
		var objId=obj.id;
		var objIdFix=false;

		if (objId=='')
		{
			objId='_sSIHTMLFix';
			obj.id=objId;
			objIdFix=true;
		}

		obj.innerHTML='';
		var outerHTML=obj.outerHTML.substr(0,obj.outerHTML.length-(obj.tagName.length+3))+innerHTML+'<'+'/'+obj.tagName+'>';
		obj.outerHTML=outerHTML;

		obj=document.getElementById(objId);


		if (objIdFix)
		{
			obj.id='';
		}
	}
	else
	{
		obj.innerHTML=innerHTML;
	}

	return obj;
}

function setSelectInnerHTML(obj,innerHTML)
{
	if (typeof(obj)!='object')
	{
		obj=$(obj);
	}

	obj.innerHTML=innerHTML;

	if (isIE7)	// IE 7 bugfix
	{
		obj.outerHTML=obj.outerHTML;
	}
}


function getStyleAttributeValue(obj,attributeName)
{
	var attributeValue;

	if (isIE)
	{
		attributeValue=obj.currentStyle[attributeName];
	}
	else
	{
		attributeValue=eval('obj.style.'+attributeName);
	}
	return attributeValue;
}


function elementHasClass(obj,className)
{
	if (typeof(obj)!='object')
	{
		obj=document.getElementById(obj);
	}

	if (obj.className)
	{
		var classNames=obj.className.split(' ');
		var i;

		className=className.toLowerCase();
		for (i=0;i<classNames.length;i++)
		{
			if (classNames[i].toLowerCase()==className)
			{
				return true;
			}
		}
	}

	return false;
}


function addElementClass(obj,className)
{
	if (typeof(obj)!='object')
	{
		obj=document.getElementById(obj);
	}

	if (elementHasClass(obj,className))
	{
		return;
	}

	obj.className+=' '+className;
}


function removeElementClass(obj,className)
{
	if (typeof(obj)!='object')
	{
		obj=document.getElementById(obj);
	}

	if (!obj.className || !elementHasClass(obj,className))
	{
		return false;
	}

	var classNames=obj.className.split(' ');
	var i;
	var result=false;

	className=className.toLowerCase();
	for (i=0;i<classNames.length;i++)
	{
		if (classNames[i].toLowerCase()==className)
		{
			classNames.splice(i,1);
			result=true;
		}
	}

	obj.className=classNames.join(' ');
	return result;
}


function getCheckedRadioValue(radioObj)
{
	if (typeof(radioObj)!='object')
	{
		return false;
	}

	var radioLength=radioObj.length;

	if(radioLength==undefined)
	{
		if(radioObj.checked)
		{
			return radioObj.value;
		}
		else
		{
			return null;
		}
	}

	for(var i=0;i<radioLength;i++)
	{
		if(radioObj[i].checked)
		{
			return radioObj[i].value;
		}
	}
	return null;
}