

function action(thing)
{
	//var ajax = true;
	if (thing.href=='#')
	{
		thing.href = '';
		//alert(thing.href+'?_layout=ajax');
	}
}

function getElementPosition(elemID)
{
	var offsetTrail = document.getElementById(elemID);
	var offsetLeft = 0;
	var offsetTop = 0;
	while (offsetTrail)
	{
		offsetLeft += offsetTrail.offsetLeft;
		offsetTop += offsetTrail.offsetTop;
		offsetTrail = offsetTrail.offsetParent;
	}
	if (navigator.userAgent.indexOf('Mac') != -1 && typeof document.body.leftMargin != 'undefined')
	{
		offsetLeft += document.body.leftMargin;
		offsetTop += document.body.topMargin;
	}
	return {left:offsetLeft,top:offsetTop};
}

function _sendBrowserSettings(path)
{
	//alert(path+'page/core/browserSettings?innerWidth='+window.innerWidth+'&innerHeight='+window.innerHeight);
	getData({url:path+'page/core/browserSettings?innerWidth='+window.innerWidth+'&innerHeight='+window.innerHeight,ContentElement:''});
}

function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;

//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += "    ";

if(typeof(arr) == 'object') { //Array/Hashes/Objects
 for(var item in arr) {
  var value = arr[item];
 
  if(typeof(value) == 'object') { //If it is an array,
   dumped_text += level_padding + "'" + item + "' ...\n";
   dumped_text += dump(value,level+1);
  } else {
   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
  }
 }
} else { //Stings/Chars/Numbers etc.
 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
} 


function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue)
{
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)", "i") : null;
    var oCurrent;
    var oAttribute;
    for(var i=0; i<arrElements.length; i++){
        oCurrent = arrElements[i];
        oAttribute = oCurrent.getAttribute && oCurrent.getAttribute(strAttributeName);
        if(typeof oAttribute == "string" && oAttribute.length > 0){
            if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
                arrReturnElements.push(oCurrent);
            }
        }
    }
    return arrReturnElements;
}

function TextScroll(scrollname, div_name, up_name, down_name)
{
    this.div_name = div_name;
    this.name = scrollname;
    this.scrollCursor = 0;
    this.speed = 5;
    this.timeoutID = 0;
    this.div_obj = null;
    this.up_name = up_name;
    this.dn_name = down_name;

{
        if (document.getElementById) {
            div_obj = document.getElementById(this.div_name);
            if (div_obj) {
                this.div_obj = div_obj;
                this.div_obj.style.overflow = 'hidden';
            }
            div_up_obj = document.getElementById(this.up_name);
            div_dn_obj = document.getElementById(this.dn_name);
            if (div_up_obj && div_dn_obj) {
                div_up_obj.setAttribute("onmouseover", scrollname + ".scrollUp();")
                div_up_obj.setAttribute("onmouseout", scrollname + ".stopScroll();")

div_dn_obj.setAttribute("onmouseover", scrollname + ".scrollDown();")
                div_dn_obj.setAttribute("onmouseout", scrollname + ".stopScroll();")
            }
        }
    }

this.stopScroll = function() {
        clearTimeout(this.timeoutID);
    }

this.scrollUp = function() {
        if (this.div_obj) {
            this.scrollCursor = (this.scrollCursor - this.speed) < 0 ? 0 : this.scrollCursor - this.speed;
            this.div_obj.scrollTop = this.scrollCursor;
            this.timeoutID = setTimeout(this.name + ".scrollUp()", 60);
        }
    }

this.scrollDown = function() {
	if (this.div_obj)
	{
		this.scrollCursor += this.speed;
		this.div_obj.scrollTop = this.scrollCursor;
		if (this.div_obj.scrollTop == this.scrollCursor) {
		this.timeoutID = setTimeout(this.name + ".scrollDown()", 60);
		} else {
		this.scrollCursor = this.div_obj.scrollTop;
		}
	}
}

this.resetScroll = function() {
        if (this.div_obj) {
            this.div_obj.scrollTop = 0;
            this.scrollCursor = 0;
        }
    }
}


function _roundCorners()
{
	var x = 0;
	var rcs = getElementsByAttribute(document, '*', 'rounded');
	for (var i=0;i<rcs.length;i++)
	{
		if (rcs[i].getAttribute('id')==null)
		{
			rcs[i].setAttribute('id','_assigned_'+x);
			x++;
		}
		Nifty(rcs[i].tagName+'#'+rcs[i].getAttribute('id'),rcs[i].getAttribute('rounded'));
	}
}


function _Ajax()
{
	var xmlHttp;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		// Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
		  	{
		  		xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		  	}
			catch (e)
		  	{
		  		alert("Your browser does not support AJAX!");
		  		xmlHttp = false;
		  	}
		}
	}
	return xmlHttp;
}


var lastflipwho = '';
var lastclickwho = '';
function flip(who)
{
	var btn = document.getElementById(who);
	if (btn)
	{
		btn.style.backgroundPosition = "0 39";
		btn.className = 'button_on';
	}
}

function unflip(who)
{
	var btn = document.getElementById(who);
	if (btn)
	{
		if (lastclickwho!=who)
		{
			btn.style.backgroundPosition = "0 00";
			btn.className = 'button';
		}
		else
		{
			btn.style.backgroundPosition = "0 39";
			btn.className = 'button_on';
		}
	}
}

function click(who)
{
	if (lastclickwho!='')
	{
		var btn = document.getElementById(lastclickwho);
		btn.style.backgroundPosition = "0 0";
		btn.className = 'button';
	}
	var btn = document.getElementById(who);
	if (btn)
	{
		lastclickwho = who;
		btn.style.backgroundPosition = "0 39";
		btn.className = 'button_on';
	}
}


function getXML(ajax)
{
	/*if (document.implementation && document.implementation.createDocument)
	{
		//xmlDoc = ajax.responseXML;
		//In case to be the internet explorer
		//return xmlDoc;
		return ajax.responseXML;
	}
	else if (window.ActiveXObject)
	{
	
		//Create a xml tag in run time
		var testandoAppend = document.createElement('xml');
		//Put the requester.responseText in the innerHTML of the xml tag
		testandoAppend.setAttribute('innerHTML',ajax.responseText);
		//Set the xml tag's id to _formjAjaxRetornoXML
		//testandoAppend.setAttribute('id','_formjAjaxRetornoXML');
		document.body.appendChild(testandoAppend);
		//document.getElementById('_formjAjaxRetornoXML').innerHTML = ajax.responseText;
		//xmlDoc = document.getElementById('_formjAjaxRetornoXML');
		//return xmlDoc;
		var xmlDoc = testandoAppend.XMLDocument;
		document.body.removeChild(testandoAppend);
		return xmlDoc;
	}
	else
	{
		//If the browser doesnt support xml
		alert("Your browser can't handle this script");
		return false;
	}*/
	try //Internet Explorer
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(ajax.responseText);
		return xmlDoc;
	}  
	catch(e)
	{
		try // Firefox, Mozilla, Opera, etc.
		{
			parser=new DOMParser();
			xmlDoc=parser.parseFromString(ajax.responseText,"text/xml");
			return xmlDoc;
			//return ajax.responseXML;
		}
		catch(e)
		{
			alert(e.message);
			return;
		}
	}
}


function getData(options)
{
	//alert(options.ContentElement);
	var ajax = _Ajax();
	if (ajax)
	{
		ajax.onreadystatechange=function()
    	{
    		if(ajax.readyState==4)
      		{	
      			//alert(ajax.responseText);
      			//alert(ajax.status);
      			//alert(options.url);
      			//alert(ajax.getResponseHeader('Content-Type'));
      			if (ajax.status==200)
      			{
      			//alert(ajax.responseText);
      			if (ajax.getResponseHeader('Content-Type')=='text/xml')
      			{
				//alert(ajax.responseText);
      			//var xml = Xparse(ajax.responseText);
      			//xml = xml.contents[1];
      			/*try //Internet Explorer
				{
					var doc = new ActiveXObject("Microsoft.XMLDOM");
					doc.loadXML(ajax.responseText);
					var element = doc.childNodes[1];
				}  
				catch(e)
				{
					var doc = ajax.responseXML;   // Assign the XML file to a var
					var element = doc.childNodes[0];
				}*/
				try //Internet Explorer
				{
					xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
					xmlDoc.async="true";
					xmlDoc.loadXML(ajax.responseText);
					element = xmlDoc.childNodes[1];
					//return xmlDoc;
				}
				catch(e)
				{
					parser = new DOMParser();
					xmlDoc = parser.parseFromString(ajax.responseText,"text/xml");
					element = xmlDoc.childNodes[0];
					//return xmlDoc;
				}
      			
				//var element = doc.getElementsByTagName('data').item(0);   // Read the first element
				//alert(element.childNodes.length);
      			//alert(options.ContentElement);
      			for (var i=0; i<element.childNodes.length; i++)
      			{
      				if (typeof(element.childNodes[i].tagName)!='undefined')
      				{
      					if (element.childNodes[i].tagName=='content' && typeof(options.ContentElement)!='undefined' && options.ContentElement!='')
						{
							if (typeof(options.ContentElement)!='object')
							{
								if (!(options.ContentElement = document.getElementById(options.ContentElement)))
								{
									alert('Your browser is outdated.');
								}
								
							}

							var span = document.createElement('SPAN');
							span.innerHTML = element.childNodes[i].childNodes[0].nodeValue;
							options.ContentElement.innerHTML = element.childNodes[i].childNodes[0].nodeValue;
							//options.ContentElement.innerHTML = '';
							//options.ContentElement.appendChild(span);
							
							/*for (var y=0;y<options.ContentElement.childNodes.length;y++)
							{
								alert(options.ContentElement.childNodes[y].tagName);
							}*/
							
							/*var s = options.ContentElement.getElementsByTagName('script');
							if (s.length>0)
							{
								for (var i=0;i<s.length;i++)
								{
									//alert(s[i].text);
									eval(s[i].text);
								}
							}*/
							//alert(options.ContentElement.childNodes.length);
							system.loadScripts(options.ContentElement);
							system.classes['specials'].loadSpecials(options.ContentElement);
							
							//alert(options.ContentElement.tagName);
							//reattachHingeEvents(options.ContentElement);
							//document.getElementById(options.ContentElement).innerHTML = element.childNodes[i].childNodes[0].data;
						}
						else if (element.childNodes[i].tagName=='script')
						{
							if (element.childNodes[i].getAttribute('src')!='')
							{
								system.loadJsCssFile(element.childNodes[i].getAttribute('src'),'js');
							}
							for (var ii=0;ii<element.childNodes[i].childNodes.length;ii++)
							{
								//document.appendChild(element.childNodes[i].childNodes[ii]);
								if (typeof(element.childNodes[i].childNodes[ii].nodeValue)!='null')
								{	
									//alert(element.childNodes[i].childNodes[ii].nodeValue);
									eval(element.childNodes[i].childNodes[ii].nodeValue);
								}
							}
							//var ajax = document.createElement('SCRIPT');
							//document.appendChild(element.childNodes[i]);
							//alert(element.childNodes[i].childNodes[0].nodeValue);
							//ajax.src = element.childNodes[i].childNodes[0].nodeValue;
							//document.getElementsByTagName('head')[0].appendChild(ajax);
							//ajaxDIV.innerHTML = element.childNodes[i].childNodes[0].nodeValue;
							/*var s = ajaxDIV.getElementsByTagName('script');
							if (s.length>0)
							{
								for (var i=0;i<s.length;i++)
								{
									//alert(s[i].text);
									eval(s[i].text);
								}
							}*/
						}
						else
						{
							//if ((typeof(options.ContentElement)!='undefined' && options.ContentElement=='') || typeof(options.ContentElement)=='undefined')
							//{
							  if (document.getElementById(element.name))
							  {
								document.getElementById(element.name).innerHTML = element.childNodes[i].childNodes[0].nodeValue;
							  }
							//}
						}
      				}
      			}
      			      			      			
      			if (typeof(options.callBack)!='undefined')
      			{
      				//eval(options.callBack);
      				options.callBack();
      			}
      			}
      			}
      			else
      			{
      				//alert('There was a problem communicating with the server.');
      			}
      		}
    	}
		if(options.url.indexOf('_layout=')==-1)
		{
    	if (options.url.indexOf('?')!=-1)
    	{
    		options.url = options.url + '&_layout=core.ajax';
    	}
    	else
    	{
    		options.url = options.url + '?_layout=core.ajax';
    	}
    	}
    	if (typeof options.post!='undefined')
    	{
    		ajax.open("POST",options.url,true);
    		ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
 		 	ajax.send(options.post);
    	}
  		else
  		{
  			ajax.open("GET",options.url,true);
  			ajax.send(null);
  		}
  		
  		if (typeof(options.showTicker)!='undefined')
  		{
  			if (typeof(options.ContentElement)!='undefined')
  			{
  				document.getElementById(options.ContentElement).innerHTML = '<div style="text-align:center;width:100%;"><img src="'+options.showTicker+'"/></div>';
  			}
  		}
	}
}



var currentPage = '';
function getpage(page)
{
	document.getElementById('Lcontent').innerHTML = document.getElementById('Lloading').innerHTML;
	var ajax = Ajax();
	if (ajax)
	{
		ajax.onreadystatechange=function()
    	{
    		if(ajax.readyState==4)
      		{
      			var xmldoc = getXML(ajax);//ajax.responseXML;//
      			//var xml = xml2array(ajax.responseXML);
      			//var xml = Xparse(ajax.responseText);
      			//alert(dump(xml));
      			if (xmldoc)
      			{
					var root = xmldoc.getElementsByTagName('root').item(0);
					for (var iNode = 0; iNode < root.childNodes.length; iNode++) {
					   var part = root.childNodes.item(iNode);
					   for (i = 1; i < part.childNodes.length; i=i+2) {
						  var element = part.childNodes.item(i);
						  if (document.getElementById(element.tagName))
						  {
							document.getElementById(element.tagName).innerHTML = element.childNodes[0].nodeValue;
						  }
					   }
					}
				}
				else
				{
					document.getElementById('Lcontent').innerHTML = 'Failed! Please use Firefox';
				}
      		}
    	}
  		ajax.open("GET",page,true);
  		ajax.send(null);
  		currentPage = page;
	}
}

function submitform(obj,action,method)
{
      var getstr = "";
      for (i=0;i<obj.length;i++)
      {
      	getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
      }
    var ajax = Ajax();
	if (ajax)
	{
		document.getElementById('Lcontent').innerHTML = document.getElementById('Lloading').innerHTML;
		ajax.onreadystatechange=function()
    	{
    		if(ajax.readyState==4)
      		{
      			//var xmldoc = ajax.responseXML;
      			var xmldoc = getXML(ajax);//ajax.responseXML;//
      			if (xmldoc)
      			{
					var root = xmldoc.getElementsByTagName('root').item(0);
					for (var iNode = 0; iNode < root.childNodes.length; iNode++) {
					   var part = root.childNodes.item(iNode);
					   for (i = 1; i < part.childNodes.length; i=i+2) {
						  var element = part.childNodes.item(i);
						  if (document.getElementById(element.tagName))
						  {
							document.getElementById(element.tagName).innerHTML = element.childNodes[0].nodeValue;
						  }
					   }
					}
				}
				else
				{
					document.getElementById('Lcontent').innerHTML = 'Failed! Please use Firefox';
				}
      		}
    	}
    	if (action=='')
    	{
    		action = currentPage;
    	}
  		ajax.open('POST', action, true);
      	ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
     	ajax.setRequestHeader("Content-length", getstr.length);
      	ajax.setRequestHeader("Connection", "close");
      	ajax.send(getstr);
  	}
}


var hinges = new Object();
var unclicks = new Object();
var unclickExceptions = new Object();
var hingesToCheck = new Array();
var incrementId = 1;
function loadHinges(parent)
{
	if (typeof(parent)=='undefined')
	{
		parent = document.body;
	}
	var hinge = '';
	var ops = '';
	var event = '';
	var count = 0;
	var oldOp  ='';
	var operations = '';
	if (parent.tagName=='body')
	{
		oldOp = parent.getAttribute('onclick');
			if (oldOp!=null)
			{
				parent.setAttribute('onclick','checkUnclicks(this);'+oldOp);
			}
			else
			{
				parent.setAttribute('onclick','checkUnclicks(this);');
			}
	}
	for (var i=0;i<parent.childNodes.length;i++)
	{
		if (typeof(parent.childNodes[i].id)=='undefined' || parent.childNodes[i].id=='')
		{
			//parent.childNodes[i].id = incrementId;
			//incrementId++;
		}
		if (typeof(parent.childNodes[i].id)!='undefined' && parent.childNodes[i].id!='')//getAttribute('hingesOnId')!='')
		{
			//on id..
			hinge = parent.childNodes[i].getAttribute('hingesOnId');//'id event [] [] [] []'
			if (hinge!='' && hinge!=null)
			{
				//alert(parent.childNodes[i].id);
				ops = new Array();
				ops = hinge.substring(hinge.indexOf('['));
				hinge = hinge.substring(0,hinge.indexOf(' '));//hinge.split(' ');
				ops = ops.split('] [');
				
				if (document.getElementById(hinge))
				{
					for (var ox=0;ox<ops.length;ox++)
					{
						//alert(ops[ox]);
						if (ops[ox].indexOf('[')==0)
						{
							ops[ox] = ops[ox].substring(1);
						}
						if (ops[ox].substring(ops[ox].length-1)==']')
						{
							ops[ox] = ops[ox].substring(0,(ops[ox].length-1));
						}
						event = ops[ox].substring(0,ops[ox].indexOf(':'));
						ops[ox] = ops[ox].substring(ops[ox].indexOf(':')+1);
						event = event.split(',');

						for (var ex=0;ex<event.length;ex++)
						{
							//alert(event[ex]);
							oldOp = document.getElementById(hinge).getAttribute(event[ex]);
							if (typeof(oldOp)=='string')
							{
								document.getElementById(hinge).setAttribute(event[ex],oldOp+"checkHinges(this,'"+event[ex]+"');");
								//document.getElementById(hinge).setAttribute(event[ex],"alert('sdsd');");
							}
							else
							{
								document.getElementById(hinge).setAttribute(event[ex],"checkHinges(this,'"+event[ex]+"');");
							}
							
							if (typeof hinges[hinge]=='undefined')
							{
								hinges[hinge] = new Array();
								count = 0;
							}
							else
							{
								count = hinges[hinge].length;
							}
							//alert("-"+event[ex]+"-");
							if (event[ex]!='')
							{
								hinges[hinge][count] = {id: parent.childNodes[i].getAttribute('id'), event: event[ex], operations: ops[ox]};
								//alert(parent.childNodes[i].getAttribute('id'));
								hingesToCheck[hingesToCheck.length] = {id: hinge, event: event};
							}
						}
						//alert(hinge);
					}
					//alert(hinge+' '+hingesToCheck.length+' '+event);
					
					/*operations = '';
					for (var o=2;o<hinge.length;o++)
					{
						operations = operations +' '+ hinge[o];
					}
					if (operations.indexOf('[')==1)
					{
						operations = operations.substring(2,operations.length-1);
						hinge[2] = operations.split('] [');
					}*/
					/*if (typeof hinges[hinge[0]]=='undefined')
					{
						hinges[hinge[0]] = new Array();
						count = 0;
					}
					else
					{
						count = hinges[hinge[0]].length;
					}
					hinges[hinge[0]][count] = {id: parent.childNodes[i].getAttribute('id'), event: hinge[1], operations: hinge[2]};
					hingesToCheck[hingesToCheck.length] = {id: hinge[0], event: hinge[1]};
					*/
				}
			}
			//on unclick...
			//onunclick="everything|body|elements functions"
			//register all unclicks and put a check into all onclicks... also onclick on body...
			hinge = parent.childNodes[i].getAttribute('onunclick');
			if (hinge!='' && hinge!=null)
			{
				
				hinge = hinge.split(' ');
				hinge[0] = hinge[0].split(',');
				//exceptions = new Array();
				for (var u=0;u<hinge[0].length;u++)
				{
					if (hinge[0][u].indexOf('!')==0)
					{
						hinge[0][u] = hinge[0][u].substring(1);
						if (typeof unclickExceptions[parent.childNodes[i].getAttribute('id')]=='undefined')
						{
							unclickExceptions[parent.childNodes[i].getAttribute('id')] = new Array();
							count = 0;
						}
						else
						{
							count = unclickExceptions[parent.childNodes[i].getAttribute('id')].length;
						}
						unclickExceptions[parent.childNodes[i].getAttribute('id')][count] = hinge[0][u];
					}
					else
					{
						if (typeof unclicks[hinge[0][u]]=='undefined')
						{
							unclicks[hinge[0][u]] = new Array();
							count = 0;
						}
						else
						{
							count = unclicks[hinge[0][u]].length;
						}
						unclicks[hinge[0][u]][count] = {id: parent.childNodes[i].getAttribute('id'), operations: hinge[1]};
					}
				}
			}
			oldOp = parent.childNodes[i].getAttribute('onclick');
			if (typeof(oldOp)=='string')
			{
				//alert(oldOp);
				parent.childNodes[i].setAttribute('onclick','checkUnclicks(this);'+oldOp);
			}
			else
			{
				parent.childNodes[i].setAttribute('onclick','checkUnclicks(this);');
			}
		}
		if (parent.childNodes[i].childNodes.length>0)
		{
			loadHinges(parent.childNodes[i]);
		}
	}
}

function checkUnclicks(object)
{
	var check = '';
	var operation = '';
	var exception = false;
	if (object.tagName=='body')
	{
		check = 'body';
	}
	else
	{
		check = object.getAttribute('id');
	}
	
	if (typeof unclicks[check]!='undefined')
	{
		for (var i=0;i<unclicks[check].length;i++)
		{			
			//operation = unclicks[check][i].operations.replace(/[swing]/gi,"document.getElementById('"+unclicks[check][i].id+"')");
			operation = unclicks[check][i].operations.replace(/swing/gi,unclicks[check][i].id);
			eval(operation);
		}
	}
	check = 'everything';
	if (typeof unclicks[check]!='undefined')
	{
		for (var i=0;i<unclicks[check].length;i++)
		{
			if (typeof unclickExceptions[unclicks[check][i].id]!='undefined')//object.getAttribute('id')
			{
				for (var ei=0;ei<unclickExceptions[unclicks[check][i].id].length;ei++)
				{
					if (unclickExceptions[unclicks[check][i].id][ei]==object.getAttribute('id'))
					{
						exception = true;
					}
				}
			}
			if (exception==false)
			{
				//operation = unclicks[check][i].operations.replace(/[swing]/gi,"document.getElementById('"+unclicks[check][i].id+"')");
				operation = unclicks[check][i].operations.replace(/swing/gi,unclicks[check][i].id);
				eval(operation);
			}
		}
	}
}

function settleHinges()
{
	//alert(hingesToCheck.length);
	for (var i=0;i<hingesToCheck.length;i++)
	{
		//alert('settle '+hingesToCheck[i].id);
		checkHinges(document.getElementById(hingesToCheck[i].id),'onsettle');//hingesToCheck[i].event);
	}
}

function checkHinges(object,event)
{
	var operation = '';
	var hingeCount = 0;

	//alert(object.getAttribute('id'));
	//alert(hinges[object.getAttribute('id')].length);
	for (var i=0;i<hinges[object.getAttribute('id')].length;i++)
	{
		//alert(hinges[object.getAttribute('id')][i].event + ' ' + event);
		//alert(hinges[object.getAttribute('id')][i].id+' '+hinges[object.getAttribute('id')][i].event+' '+event);
		if (hinges[object.getAttribute('id')][i].event==event)
		{
			//alert(hinges[object.getAttribute('id')][i].event+' '+hinges[object.getAttribute('id')][i].id);
			//do function here..
			//for (var o=0;o<hinges[object.getAttribute('id')][i].operations.length;o++)
			if (hinges[object.getAttribute('id')][i].operations.length!='')
			{
				operation = hinges[object.getAttribute('id')][i].operations;
				//operation = operation.replace(/[hinge]/gi,"document.getElementById('"+object.getAttribute('id')+"')");
				//operation = operation.replace(/[swing]/gi,"document.getElementById('"+hinges[object.getAttribute('id')][i].id+"')");
				var bpos = -1;
				while (operation.indexOf('[swing')>=0)
				{
					if ((bpos=operation.indexOf('[swing_'))>=0)//element sub..
					{
						var sub = operation.substring(bpos+7);
						sub = sub.substring(0,sub.indexOf(']'));
						operation = operation.replace('[swing_'+sub+']',"document.getElementById('"+hinges[object.getAttribute('id')][i].id+"_"+sub+"')");
					}
					else if ((bpos=operation.indexOf('[swing]'))>=0)//element sub..
					{
						operation = operation.replace('[swing]',"document.getElementById('"+hinges[object.getAttribute('id')][i].id+"')");
					}
					else
					{
						//operation = operation.replace(/swing/gi,"document.getElementById('"+hinges[object.getAttribute('id')][i].id+"')");
					}
				}
				while (operation.indexOf('[hinge')>=0)
				{
					if ((bpos=operation.indexOf('[hinge_'))>=0)//element sub..
					{
						var sub = operation.substring(bpos+7);
						sub = sub.substring(0,sub.indexOf(']'));
						operation = operation.replace('[hinge_'+sub+']',"document.getElementById('"+object.getAttribute('id')+"_"+sub+"')");
					}
					else
					{
						//operation = operation.replace(/swing/gi,"document.getElementById('"+hinges[object.getAttribute('id')][i].id+"')");
					}
				}
				operation = operation.replace(/swing/gi,"document.getElementById('"+hinges[object.getAttribute('id')][i].id+"')");
				operation = operation.replace(/hinge/gi,"document.getElementById('"+object.getAttribute('id')+"')");
				try
				{
					eval(operation)
				}
				catch(err)
				{
					//alert(err);
				}
				hingeCount++;
			}
			//cascade to lower hinges.
			for (var o=0;o<hinges[object.getAttribute('id')].length;o++)
			{
				//alert(hinges[object.getAttribute('id')][o].event);
			}
			if (typeof(hinges[hinges[object.getAttribute('id')][i].id])!='undefined')
			{
				//alert(object.getAttribute('id'));
				//checkHinges(document.getElementById(hinges[object.getAttribute('id')][i].id),event);
			}
		}
	}
}

function _loadHinge(swing,hingedef)
{
	document.getElementById(swing).setAttribute('hingesOnId',hingedef);
}

function reattachHingeEvents(parent)
{
	var ex = 0;
	var hinge = '';
	var event = '';
	var pObj = '';
	for (var x=0;x<parent.childNodes.length;x++)
	{
		if (parent.childNodes[x].getAttribute('id')!=null)
		{
			if (hinges[parent.childNodes[x].getAttribute('id')].length>0)
			{
				pObj = parent.childNodes[x];
				hinge = hinges[parent.childNodes[x].getAttribute('id')];
				for (ex=0;ex<hinge.length;ex++)
				{
					event = hinge[ex];
					oldOp = pObj.getAttribute(event.event);
					if (oldOp!=null)
					{
						pObj.setAttribute(event.event,oldOp+"checkHinges(this,'"+event.event+"');");
					}
					else
					{
						pObj.setAttribute(event.event,"checkHinges(this,'"+event.event+"');");
					}
				}
			}
		}
		reattachHingeEvents(parent.childNodes[x]);
	}
}

function addHinge(element,hinge)
{
	//var old = document.getElementById(element).getAttribute('hingesOnId');
	//if (old.length)
	document.getElementById(element).setAttribute('hingesOnId',hinge);
	//loadHinges(document.getElementById(element));
}

function newDialog(options)
{	
	var body = document.getElementsByTagName('body');
	if (!document.getElementById('dialogTemp'))
	{
		var dTemp = document.createElement('DIV');
		dTemp.id = 'dialogTemp';
		body[0].appendChild(dTemp);
	}
	
	var d = document.createElement('DIV');
	d.className="_dialogBackground";
	d.id="dialogBackground";
	var dContainer = document.createElement('DIV');
	dContainer.className="_dialogContentContainer";
	dContainer.id="dialogContentContainer";
	
	var dVert = document.createElement('DIV');
	dVert.className="_dialogVertical";
	
	var dContent = document.createElement('DIV');
	dContent.className="_dialogContent";
	dContent.id = 'dialogContent';
	
	dContainer.appendChild(dContent);
	//dContainer.appendChild(dVert);
	//dVert.appendChild(dContent);

	body[0].appendChild(d);
	body[0].appendChild(dContainer);
	getData({url:options.url,ContentElement:'dialogContent'});//,callback:new function(){dialogFillContent();}
}

function dialogFillContent()
{
	//alert('sdsd');
}

function hideDialog()
{
	var body = document.getElementsByTagName('body');
	body[0].removeChild(document.getElementById('dialogContentContainer'));
	body[0].removeChild(document.getElementById('dialogBackground'));
}


var system = {
	classes: new Object(),
	
	loadFiles: function()
	{
		system.loadJsCssFile(system.systemToRoot+'core/js/special.js','js');
		//system.loadJsCssFile(system.systemToRoot+'core/js/jquery.js','js');
	},
	
	initiate: function()
	{
		//document.onreadystatechange=function()
    	//{
    	//	alert(document.readyState);
    	//}
		loadHinges();
		settleHinges();
		system.classes['specials'] = new specials();
		//var ong = new specials();
	},
	
	loadJsCssFile: function (filename, filetype)
	{
		if (filetype=="js")
		{
			var fileref=document.createElement('script');
			fileref.setAttribute("type","text/javascript");
			fileref.setAttribute("src", filename);
		}
		else if (filetype=="css")
		{
			var fileref=document.createElement("link");
			fileref.setAttribute("rel", "stylesheet");
			fileref.setAttribute("type", "text/css");
			fileref.setAttribute("href", filename);
		}
		if (typeof fileref!="undefined")
		{
			document.getElementsByTagName("head")[0].appendChild(fileref);
		}
	},
	
	loadScripts: function(obj)
	{
		for (var y=0;y<obj.childNodes.length;y++)
		{
			if (obj.childNodes[y].tagName=='SCRIPT')
			{
				if (obj.childNodes[y].getAttribute('href')==null)
				{
					eval(obj.childNodes[y].innerHTML);
				}
			}
			else
			{
				system.loadScripts(obj.childNodes[y]);
			}
		}
	},
	
	serializeForm: function(form)
	{
		var string = '';
		for (var y=0;y<form.childNodes.length;y++)
		{
			if (form.childNodes[y].tagName=='INPUT' || form.childNodes[y].tagName=='BUTTON' || form.childNodes[y].tagName=='TEXTAREA')
			{
				string = string + '&'+form.childNodes[y].name+'='+form.childNodes[y].value;
			}
			else
			{
				string = string + system.serializeForm(form.childNodes[y]);
			}
		}
		return string;
	}
}

//var system = new system();
window.onload = system.initiate;

