
function setcookie(doc, name, value, expires, path, domain, secure) {
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime(today.getTime());

	if (expires) {
		expires = expires * 1000;
	}
	var expires_date = new Date(today.getTime() + (expires));

	doc.cookie = name + "=" + escape( value ) +
		((expires) ? ";expires=" + expires_date.toGMTString() : "" ) +
		((path) ? ";path=" + path : "" ) +
		((domain) ? ";domain=" + domain : "" ) +
		((secure) ? ";secure" : "" );
}


function x2a(xml) {
	var xmlDoc;

	//Internet Explorer
	try
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	  	xmlDoc.async="false";
	  	xmlDoc.loadXML(xml);
	} catch(e) {
	  	//Firefox, Mozilla, Opera, etc.
		try {
	  		parser = new DOMParser();
	    	xmlDoc = parser.parseFromString(xml,"text/xml");
	  	} catch(e) {
	  	}
	}

	var result = new Object();

	if (xmlDoc != undefined) {
		var r = xmlDoc.getElementsByTagName("transaction");

		if (r.length == 1) {
			var d = xmlDoc.documentElement;

			for (var i = 0; i < d.childNodes.length; i++) {
				if (d.childNodes[i].nodeName == "#text") continue;

			    for (var j = 0; j < d.childNodes[i].attributes.length; ++j) {
					result[d.childNodes[i].attributes[j].name] = d.childNodes[i].attributes[j].value;
				}

				if (d.childNodes[i].childNodes && d.childNodes[i].childNodes.length > 0) {
					result[d.childNodes[i].nodeName] = d.childNodes[i].childNodes[0].nodeValue;
				}
			}
		}
	}

	return result;
}

jQuery.validator.addMethod("regex", function(value, element, param) {
	return param.test(value);
}, "Invalid format");


jQuery.validator.addMethod("notEqualTo", function(value, element, param) {
	return $(param).val()?(value != $(param).val()):(value != param);
}, "error");
