function vsmHttpRequest(url, callback_function, error_function, response_xml, formid, method, plainform) { 
	var http_request = false; 
	if (window.XMLHttpRequest) { // Mozilla, Safari,... 
		http_request = new XMLHttpRequest(); 
	} else if (window.ActiveXObject) { // IE 
		try { 
			http_request = new ActiveXObject("Msxml2.XMLHTTP"); 
		} catch (e) { 
			try { 
				http_request = new ActiveXObject("Microsoft.XMLHTTP"); 
			} catch (e) {} 
		} 
	} 

	if (!http_request) return false; 

	http_request.onreadystatechange = function() { 
				vsmAjaxReturn(http_request,error_function,callback_function,response_xml);
	}
	// Arma data
	var data = null;
	if (formid == null) {
		if (plainform) data=plainform;
	} else {
		formObj = document.getElementById(formid);
		if(formObj) {
			if(formObj.method && !method) method = formObj.method;
			data= vsmForm2URI(formObj);
		}
	}
	// formObj.action+= '?'+ data;
	// Ejecuta
	if(!method) method='GET';
	http_request.open(method, url, true);
	if(method.toUpperCase()=='POST') http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	http_request.send(data); 
}

function vsmAjaxReturn(http_request,error_function,callback_function,response_xml){
	try { 
		if (http_request.readyState == 4) { 
			switch(http_request.status) {
			case 200:
				err = http_request.getResponseHeader("error");
				if (err != null &&  err.length > 0){
					try {
						p=error_function.split("(");
						f=p[0];a='';if (p.length>1)a=','+p[1].slice(0,p[1].length-1);
						eval(f+'(err'+a+')');
					} catch(e) {
						alert('Function ' + error_function + ': '+e.description);
					}
				} else{
					try {
						p=callback_function.split("(");
						f=p[0];a='';if (p.length>1)a=','+p[1].slice(0,p[1].length-1);
						if (response_xml) {
							eval(f + '(http_request.responseXML'+a+')'); 
						} else { 
							eval(f+'(http_request.responseText'+a+')'); 
						} 
					} catch(e) {
						alert('Function ' + callback_function + ': '+e.description);
					}
				}
				break;
			default: 
				alert('There was a problem with the request. (Code: ' + http_request.status + ')'); 
			} 
		} 
	} catch (e) {
		alert('Exception: ' + e.description); 
	}

}


function vsmAjaxForm(formObj, callback_function, error_function, response_xml) { 
	var http_request = false; 
	if (window.XMLHttpRequest) { // Mozilla, Safari,... 
		http_request = new XMLHttpRequest(); 
	} else if (window.ActiveXObject) { // IE 
		try { 
			http_request = new ActiveXObject("Msxml2.XMLHTTP"); 
		} catch (e) { 
			try { 
				http_request = new ActiveXObject("Microsoft.XMLHTTP"); 
			} catch (e) {} 
		} 
	} 

	if (!http_request) return false; 

	http_request.onreadystatechange = function() { 
		vsmAjaxReturn(http_request,error_function,callback_function,response_xml);
	}
	// Arma data
	var data = null;
	var method;
	var url;
//	formObj = document.getElementById(formid);
	if(formObj) {
		if(formObj.method) {
			method = formObj.method;
		} else {
			method = 'GET';
		}
		data = vsmForm2URI(formObj);
		method = method.toUpperCase();
		url = formObj.action;
		if(method=='POST') {
			http_request.open(method, url, true);
			http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			http_request.send(data); 
		} else {
			http_request.open(method, url+'?'+data, true);
			http_request.send(null); 
		}
	}
}

function vsmForm2URI (formObj) {
	data= '';
	for (var i = 0; i < formObj.length; i++) {
		var fieldObj = formObj[i];
		switch(fieldObj.type) {
			case 'checkbox':
			case 'radio':
				if (fieldObj.checked) data+= fieldObj.name + '=' + escape(fieldObj.value) + '&';
				break;
			case 'select-one':
				data+= fieldObj.name + '=' + escape(fieldObj.options[fieldObj.selectedIndex].value) + '&';
				break;
			case 'reset':
			case 'submit':
			case 'button':
				break;
			default: 
				data+= fieldObj.name + '=' + escape(fieldObj.value) + '&';
				break;
		}
	}
	if(data.length >0) data = data.slice(0, -1); // Quita el ultimo caracter (&);d
	return data;
}

function setCookie(name, value, expires, path, domain, secure) {
  var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
  document.cookie = curCookie;
}

function getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

function writeFlash(src,w,h) {
	args = arguments;
	callArgs = "'codebase','http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0','width','"+ w + "','height','" + h + "','src','" + src + "','movie','" + src +"',";
	for (var i=3; i < args.length; i++){
		callArgs += "'" + args[i] + "',";
	}
	if (callArgs.indexOf('quality')<0)
		callArgs += "'quality','high',";

	if (callArgs.indexOf('bgcolor')<0)
		callArgs += "'bgcolor','#ffffff',";

	if (callArgs.indexOf('wmode')<0)
		callArgs += "'wmode','transparent',";
	callArgs=callArgs.substr(0,callArgs.length-1);
	eval("AC_FL_RunContent("+callArgs+")")
}

var vsmStrmImage = new Array();
function vsmImageStreaming(){
	var y = document.images;
	var sf = false;
	ch = document.documentElement.clientHeight;
	if (window.navigator.userAgent.toLowerCase().indexOf('safari') == -1){
		st = document.documentElement.scrollTop;
	}else{
		sf = true;
		st = document.body.scrollTop;
	}		
	for (i=0;i<y.length;i++){
		vsmsrc = y[i].getAttribute('vsmsrc');
		l = y[i].src.length;
		if (vsmsrc && y[i].src.substring(l-12) == '/lib/1x1.gif'){
			pos = vsmFindPos(y[i]);
			pos2 = y[i].offsetHeight+pos[1]; 
			if ((pos[1] > st-200 && pos[1] < ch+st+200) || (pos2 > st-200 && pos2 < ch+st+200) || sf){
				if(vsmStrmImage[vsmsrc] == undefined){
					vsmStrmImage[vsmsrc] = new Image();
					vsmStrmImage[vsmsrc].src = vsmsrc;
					if (vsmStrmImage[vsmsrc].complete){
						y[i].src = vsmsrc;
					}else{
						vsmStrmImage[vsmsrc].obj = y[i];
						vsmStrmImage[vsmsrc].onload =function(){
							this.obj.src = this.src;
						}
					}
				}
			}
		}
	}
}

function vsmFindPos( oElement ) {
  if( typeof( oElement.offsetParent ) != 'undefined' ) {
    for( var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent ) {
      posX += oElement.offsetLeft;
      posY += oElement.offsetTop;
    }
    return [ posX, posY ];
  } else {
    return [ oElement.x, oElement.y ];
  }
}

var vsmActivePanel;
function vsmShowPanel(obj) {
	if(typeof(obj) != 'object') obj = document.getElementById(obj);
	if(obj) {
		if(vsmActivePanel) vsmHidePanel(vsmActivePanel);
		vsmActivePanel = obj;
		vsmActivePanel.style.display = '';
	}
}

function vsmHidePanel() {
	if(vsmActivePanel) {
		vsmActivePanel.style.display = 'none';
		vsmActivePanel = null;
	}
}