var http;
var showErrors = true;
var timeOut;
var xmlHttp = createXmlHttpRequestObject();
var serverAddress = "inc/validate.php?type=ajax";

var cache = new Array();

function createXmlHttpRequestObject() {
	var xmlHttp;
	try {
		xmlHttp = new XMLHttpRequest();
	}
	catch(e) {
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
								"MSXML2.XMLHTTP.5.0",
								"MSXML2.XMLHTTP.4.0",
								"MSXML2.XMLHTTP.3.0",
								"MSXML2.XMLHTTP",
								"Microsoft.XMLHTTP");
		for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) {
			try {
				xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			}
			catch (e) {}
		}
	}
	if (!xmlHttp) {
		displayError("Problem creating XMLHttpRequest Object.");
	} else {
		return xmlHttp;
	}
}

function displayError(message) {
	if (showErrors){
		showErrors = false;
		alert("Error: \r\n" + message);
	}
}

/* Validation */

function validate(inputValue, fieldID, vType, formname) {
	if (xmlHttp) {
		if (fieldID) {
			inputValue = encodeURIComponent(inputValue);
			fieldID = encodeURIComponent(fieldID);
			vType = encodeURIComponent(vType);
            formname = encodeURIComponent(formname);
			cache.push("inputValue=" + inputValue + "&fieldID=" + fieldID + "&vType=" + vType + "&formname=" + formname);
		}
		try {
			if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length > 0) {
				var cacheEntry = cache.shift();
				xmlHttp.open("POST", serverAddress, true);
				xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
				xmlHttp.onreadystatechange = handleValidation;
				xmlHttp.send(cacheEntry);
			}
		}
		catch(e) {
			displayError(e.toString());
		}
	}
}

function handleValidation() {
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.status == 200) {
			try {
				readValidationResponse();
			}
			catch(e) {
				displayError(e.toString());
			}
		} else {
			displayError(xmlHttp.statusText);
		}
	}
}

var failures = new Array();

function readValidationResponse() {
	var response = xmlHttp.responseText;
	if (response.indexOf("ERRNO") >= 0 || response.indexOf("error:") >= 0 || response.length == 0) {
		throw(response.length == 0 ? "Server error." : response);
	}
	responseXml = xmlHttp.responseXML;
	xmlDoc = responseXml.documentElement;
	result = xmlDoc.getElementsByTagName("result")[0].firstChild.data;
	fieldID = xmlDoc.getElementsByTagName("fieldid")[0].firstChild.data;
    formname = xmlDoc.getElementsByTagName("formname")[0].firstChild.data;
    if (result == 0) {
        failures[fieldID] = 1;
    } else {
        failures[fieldID] = 0;
    }
    submitbutton = document.forms[formname].submit;
    //document.getElementById("errors").innerHTML = ifitemfails();
    submitbutton.disabled = ifitemfails();
	message = document.getElementById(fieldID + "Failed");
	message.className = (result == "0") ? "msgholder error" : "msgholder hidden";
	setTimeout("validate();", 500);
}

function ifitemfails() {
    for (var i in failures)
    {
      if (failures[i] == 1)
        return true;
    }
    return false;
}

/* Display Article */

function showDetails(id) {
    url = "getDetails.php";
    if (xmlHttp) {
		try {
			if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0)) {
				xmlHttp.open("POST", url, true);
				xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
				xmlHttp.onreadystatechange = fillHolder;
                xmlHttp.send("id="+id);
			}
		}
		catch(e) {
			displayError(e.toString());
		}
	}
}

function showImage(params, url) {
    if (xmlHttp) {
		if (params) {
			//params = encodeURIComponent(params);
			cache.push(params);
		}
		try {
			if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length > 0) {
				var cacheEntry = cache.shift();
				xmlHttp.open("POST", url, true);
				xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
				xmlHttp.onreadystatechange = fillImageHolder;
				xmlHttp.send(cacheEntry);
			}
		}
		catch(e) {
			displayError(e.toString());
		}
	}
}

function fillHolder() {
	if (xmlHttp.readyState == 4) {
		if ((xmlHttp.status) && (xmlHttp.status == 200)) {
			try {
	            var response = xmlHttp.responseText;
            	if (response.indexOf("ERRNO") >= 0 || response.indexOf("error:") >= 0 || response.length == 0) {
            		throw(response.length == 0 ? "Server error." : response);
            	}
            	rXml = xmlHttp.responseXML;
            	xmlDoc = rXml.documentElement;
            	result = xmlDoc.getElementsByTagName("result")[0].firstChild.data;
                bleh = xmlDoc.getElementsByTagName("id")[0].firstChild.data;
            	message = document.getElementById(bleh);
            	message.innerHTML = result + "<div class='close'><a href='javascript:void(0);'>[Pinche para cerrar]</a></div>";
                message.className = "visible";
            }
			catch(e) {
				displayError(e);
			}
		} else {
			displayError(xmlHttp.statusText);
		}
	}
}

function fillImageHolder() {
	if (xmlHttp.readyState == 4) {
		if ((xmlHttp.status) && (xmlHttp.status == 200)) {
			try {
	            var response = xmlHttp.responseText;
            	if (response.indexOf("ERRNO") >= 0 || response.indexOf("error:") >= 0 || response.length == 0) {
            		throw(response.length == 0 ? "Server error." : response);
            	}
            	rXml = xmlHttp.responseXML;
            	xmlDoc = rXml.documentElement;
            	result = xmlDoc.getElementsByTagName("result")[0].firstChild.data;
            	message = document.getElementById("image");
            	message.innerHTML = result;
                message.scrollTop = 0;
            }
			catch(e) {
				displayError(e);
			}
		} else {
			displayError(xmlHttp.statusText);
		}
	}
}

function setFocus(element) {
	document.getElementById(element).focus();
}

function disabledefault() {
    if( document.links ) var links = document.links;
    else var links = document.getElementsByTagName('a');
    for (var i=0;links[i];i++) {
        var a = links[i];
        if (!a.href) continue;
        if (a.getAttribute('rel') == 'disabled') {
            if( a.preventDefault ) a.preventDefault();
            return false;
        }
    }
}

function addEvent(obj, evType, fn)
{
	if (obj.addEventListener)
	{
		obj.addEventListener(evType, fn, true);
		return true;
	}
	else if (obj.attachEvent)
	{
		var r = obj.attachEvent('on'+evType, fn);
		return r;
	}
	else return false;
}

addEvent(window,'load',disabledefault);

function enabletextbox(value) {
    item = document.getElementById(value);
    eval(item+".disabled = false;");
}

function fncEnable(chknum){
    if(document.frm["request"+chknum].checked == true) {
        document.frm["quantity"+chknum].disabled = false;
    } else {
        document.frm["quantity"+chknum].disabled = true;
    }
}

// <input type=button name="CheckAll"   value="Check All"
	//onClick="checkAll(document.myform.list)">
// <input type=button name="UnCheckAll" value="Uncheck All"
	//onClick="uncheckAll(document.myform.list)">
//
function checkAll(field)
{
f = field;
for (i = 0; i < f.length; i++)
	f[i].checked = true ;
}

function uncheckAll(field)
{
f = field;
for (i = 0; i < f.length; i++)
	f[i].checked = false ;
}