// JavaScript Document
var onLoadFunctions = new Array();

window.onload = function()
{
	var n = onLoadFunctions.length;
	for( var i = 0; i < n; i++ )
	{
		onLoadFunctions[i]();
	}
}

function addOnLoad( f )
{
	onLoadFunctions[onLoadFunctions.length] = f;
}


function txt2swf()
{
	if(typeof sIFR == "function"){
	
	// This is the preferred "named argument" syntax
		sIFR.replaceElement(named({sSelector:"h2", sFlashSrc:"helvetica.swf", sColor:"#000000", sLinkColor:"", sBgColor:"", sHoverColor:"", nPaddingTop:0, nPaddingBottom:0, sFlashVars:""}));
		sIFR.replaceElement(named({sSelector:"strong", sFlashSrc:"helvetica.swf", sColor:"#000000", sLinkColor:"", sBgColor:"", sHoverColor:"", nPaddingTop:0, nPaddingBottom:0, sFlashVars:""}));
	
	// This is the older, ordered syntax
		//sIFR.replaceElement("h2", "helvetica.swf", "#FF0099", "#000000", 0, 0, 0, 0, 0, 0);
	};
}

//addOnLoad(txt2swf);

var ahrefRules = new Array();
// Se define la primera regla como la regla general para los elementos <A />
ahrefRules[0] = {pattern: "#", target: "href", validate: function(){}};
ahrefRules[1] = {pattern: "lightbox", target: "rel", validate: lightboxGallery};
ahrefRules[2] = {pattern: "changeModel", target: "rel", validate: href2javascript};
/*
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: "buy", target: "target", validate: buyProduct};
ahrefRules[7] = {pattern: "chProd", target: "rel", validate: chProduct};
ahrefRules[8] = {pattern: "calendar", target: "href", validate: calendar};

//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.href;
		var r = Math.random();
		var char = "\\?";

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

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

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 );
		}
		form.submit();
		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()
	{
		postParams = Form.serialize($(this.rel));

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

function buyProduct( a )
{

	a.onclick = function()
	{
		toCarrito(a.rel);
		
	};
}

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

	a.onclick = function()
	{	
		$('form_product').action="toCarrito.php?method=add&item="+this.title;
		var url = this.href;
		var r = Math.random();
		var char = "\\?";

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

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

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] );
		}
	}

}

addOnLoad(onLoad);

function chgStyle(obj,classpassed){
	document.getElementById(obj).className=classpassed;
}

function selModel(idModel){
	alert(idModel);
	$('form_product').action="toCarrito.php?method=add&item="+idModel;
	alert(idModel);
}
function calendar( a )
{
	a.onclick = function()
	{
		//alert("entro");
		//alert(this.rel);
		cal[this.rel].popup();
		return false;
	};
}