// JavaScript Document

var ahrefRules = new Array();
// Se define la primera regla como la regla general para los elementos <A />
ahrefRules[0] = {pattern: "*", target: "href", validate: href2javascript};
ahrefRules[1] = {pattern: "javascript: void(0);", target: "href", validate: function(){}};
ahrefRules[2] = {pattern: "#", target: "href", validate: function(){}};
ahrefRules[3] = {pattern: "_blank", target: "target", validate: function(){}};
ahrefRules[4] = {pattern: "submit", target: "target", validate: submit2ajax};
ahrefRules[5] = {pattern: "xml", target: "target", validate: xml2fields};
ahrefRules[6] = {pattern: "lightbox", target: "rel", validate: lightboxGallery};
ahrefRules[7] = {pattern: "copy", target: "target", validate: copyFields};
//ahrefRules[0] = "";

function href2javascript( a )
{
	a._link = a.href;
	a.href = "javascript: void(0);";
	a._target = a.target;
	a.target = '';

	a.onclick = function()
	{
		var url = this._link;
		var r = Math.random();
		var char = "\\?";

		if( url.search(char) !== -1 )
		{
			url = url + "&rand=" + r;
		}
		else
		{
			url = url + "?rand=" + r;
		}

		if( !this._link.match("javascript: void(0);") && !this._link.match("#") )
		{
			loading(this._target);
			sendAjaxForm( '', url, this._target, 'get' );
			//new Ajax.Updater(this._target, url, {asynchronous:true, method: 'get', evalScripts:true});
		}
	};
}

function submit2ajax( a )
{
	a._link = a.rel; // Define el id del formulario
	a.href = "javascript: void(0);";
	a._target = a.target; // Debe ser igual a 'submit'
	a.target = '';

	a.onclick = function()
	{
		var url = this._link;
		var r = Math.random();
		var inputs = $$('input');
		//alert(inputs);

		var form = $(this._link);
		form.submit = function()
		{
			//prompt("",this.action);
			sendAjaxForm( url, this.action, this.target );
		}
		
		if(validateRestrictions(inputs, form))
		{
			form.submit();
		}

	};
}

function validateRestrictions( inputs, form )
{
	var flag = false;
	var restrictions = new Array();
	var j = 0;
	for( var i = 0; i < inputs.length; i++)
	{
		//var fieldname = inputs[i].name.split('');
		var matchStr = "restrictions_";
		if( inputs[i].name.match(matchStr) )
		{
			var fieldName = inputs[i].name;
			var value = inputs[i].value;
			var fieldSplit = fieldName.split(matchStr);
			var fieldRestriction = fieldSplit[1].replace('[]', '');
			
			var restrictionParams = value.split(';');
			if( restrictionParams.length == 3)
			{
				//alert(fieldRestriction);
				var evalObject = "new " + restrictionParams[0] + "('" + fieldRestriction + "','" + restrictionParams[1] + "', '" + restrictionParams[2] + "')";
				//alert(evalObject);
				restrictions[j] = eval(evalObject);
				j++;
				
			}
			else
			{
				alert("La restriccion para el campo " + fieldRestriction + " no esta correctamente configurada, revise por favor.");
			}
		}
	}
	//alert(form.id);
	flag = doValidations(form.id, restrictions);
	//flag = false;
	return flag;
}

function xml2fields( a )
{
	a._link = a.href; // Define el id del formulario
	a.href = "javascript: void(0);";
	a._target = a.target; // Debe ser igual a 'xml'
	a.target = '';

	a.onclick = function()
	{
		//alert('test');
		postParams = Form.serialize($(this.rel));

		new Ajax.Request(this._link, {asynchronous:true, parameters:postParams, onSuccess: getXMLData});
	};
}

function lightboxGallery( a )
{
	//a._link = a.href; // Define el id del formulario
	//a.href = "javascript: void(0);";
	//a._target = a.target; // Debe ser igual a 'xml'
	//a.target = '';

	a.onclick = function()
	{
		myLightbox.start(this); return false;
	};
}

function onLoad()
{
	ahref2ajax( document );
	MM_preloadImages('./css/img/loading.gif');
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function ahref2ajax( element )
{
	var aElements = element.getElementsByTagName('a');
	var n = aElements.length;

	// Recorre todos los elementos <A />
	for( var i=0; i<n;i++)
	{
		// Verifica que ninguna de las reglas coincida con las caracteristicas del elemento aElements[i] distinto del primer elemento
		var flag = true;
		for( var j=1; j<ahrefRules.length; j++)
		{
			var a = eval("aElements[i]." + ahrefRules[j].target + ".match('" + ahrefRules[j].pattern + "')");
			var b = (a != ahrefRules[j].pattern);
			if( !b )
			{
				ahrefRules[j].validate(aElements[i]);
			}
			flag = flag & b;
		}
		
		if( flag )
		{
			ahrefRules[0].validate( aElements[i] );
		}
	}

}

function copyFields( a )
{
	//a._link = a.href;
	//a.href = "javascript: void(0);";
	//a._target = a.target;
	//a.target = '';

	a.onclick = function()
	{
		var str = "";
		str += $('customer').value + "\t";
		str += $('phone').value + "\t";
		str += $('address').value + "\t";
		str += $('email').value + "\t";
		str += $('sector').value + "\t";

		str += $('domain').value + "\t";
		str += $('typeServer').value + "\t";
		str += $('creationDate').value + "\t";
		str += $('lastUpdate').value + "\t";
		str += $('expirationDate').value + "\t";
		str += $('ns1').value + "\t";
		str += $('ns2').value + "\t";

		str += "\t"; //Contact
		str += "\t"; //Job
		str += "\t"; //Email
		str += "\t"; //Employees

		copy_clip(str);

		$('customer').value = "";
		$('phone').value = "";
		$('address').value = "";
		$('email').value = "";

		$('domain').value = "";
		$('typeServer').value = "";
		$('creationDate').value = "";
		$('lastUpdate').value = "";
		$('expirationDate').value = "";
		$('ns1').value = "";
		$('ns2').value = "";

		$('customer').focus();
		
		return false;
	};
}
