var timeToUpdateBalance = 10000;
var imagenAjax = 'graphics/ajax.gif';
var methodForm;

function getCookie(name){
	var cname = name + "=";               
	var dc = document.cookie;             
	if (dc.length > 0) {        
		begin = dc.indexOf(cname);       
		if (begin != -1) {           
			begin += cname.length;
			end = dc.indexOf(";", begin);
			if (end == -1) end = dc.length;
			return unescape(dc.substring(begin, end));
		} 
	}
	return null;
}

function Set_Cookie( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires ) expires = expires * 1000 * 60 * 60 * 24;
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
	( ( path ) ? ";path=" + path : "" ) + 
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}

function eraseCookie(name){ Set_Cookie(name,"",-1); }

function isdefined(objToTest) {
	if (null == objToTest) return false;
	if ("undefined" == typeof(objToTest)) return false;
	return true;
}

function isFunction(a){ return typeof a == 'function'; }

function mailDecode(coded, key){
	// Email obfuscator script 2.1 by Tim Williams, University of Arizona
	// Random encryption key feature by Andrew Moulden, Site Engineering Ltd
	// This code is freeware provided these four comment lines remain intact
	// A wizard to generate this code is at http://www.jottings.com/obfuscator/
	eLength = coded.length
	eLink = ""
	for (i=0; i < coded.length; i++) {
		if (key.indexOf(coded.charAt(i))==-1) {
			ltr = coded.charAt(i)
			eLink += (ltr)
		} else {     
			ltr = (key.indexOf(coded.charAt(i))-eLength+key.length) % key.length
			eLink += (key.charAt(ltr))
		}
	}
	return eLink;
}

function hss(objToProcess, status){ 
	try { document.getElementById(objToProcess).style.display=status;} 
	catch(err){	alert("EXHSS: "+objToProcess);}
}

function gvv(objToProcess){ 
	try { return document.getElementById(objToProcess).value;} 
	catch(err){	alert("EXGVV: "+objToProcess);}
}

function goo(objToProcess){ 
	try { return document.getElementById(objToProcess);} 
	catch(err){	alert("EXGOO: "+objToProcess);}
}

function svv(objToProcess, strValue){ 
	try { document.getElementById(objToProcess).value = strValue;} 
	catch(err){	alert("EXSVV: "+objToProcess);}
}

function sii(objToProcess, strValue){ 
	try { document.getElementById(objToProcess).innerHTML = strValue; } 
	catch(err){	alert("EXSII: "+objToProcess);}
}

function gii(objToProcess){ 
	try { return document.getElementById(objToProcess).innerHTML; } 
	catch(err){	alert("EXGII: "+objToProcess);}
}

function cambiaIdioma(lang) {
	Set_Cookie("idioma",lang,3)
	window.parent.location.reload();
}

function pm(name, enlace, displaytext){
	if (!isdefined(enlace)) enlace='marketext.com';
	if (!isdefined(displaytext)) displaytext = name + '@' + enlace;
	document.write('<a href=mailto:' + name + '@' + enlace + '>' + displaytext + '</a>');
}

function setHiddenDiv(divID){
	if($("#" + divID).css("display")=='none'){
		$("#" + divID).fadeIn();
        $("#" + divID + "_img").removeClass('leftTitleRightDn');
        $("#" + divID + "_img").addClass('leftTitleRightUp');
	}else{
		$("#" + divID).fadeOut();
        $("#" + divID + "_img").removeClass('leftTitleRightUp');
        $("#" + divID + "_img").addClass('leftTitleRightDn');
	}
}

function loadBalance(empresa, username){
	if (isdefined(document.getElementById('balance_updatable'))){
		$.ajax({
			type: "POST",
			url: "getbalance.php",
			data: '&apiid=' + empresa + '&username=' + username,
			error: function(objeto, errData1, errdata2){
				// alert(((isdefined(document.getElementById('ajaxError')))?$("#ajaxError").attr("value"):"Communications Error, Try Again"));
				setTimeout("loadBalance('" + empresa + "', '" + username + "')", timeToUpdateBalance);
			},
			success: function(datos){
				if (checkSessionData(datos)){
					var arrDatos = datos.split("---");
					$('#balance_updatable').attr("innerHTML", arrDatos[0]);
					processMessage(datos);
				}
				setTimeout("loadBalance('" + empresa + "', '" + username + "')", timeToUpdateBalance);
			}
		});
	}
}

function processMessage(datos){
	var arrDatos = datos.split("---");
	if (parseInt(arrDatos[1])>0){
		if (!isdefined(document.getElementById('msg_pop')))
			$("body").append("<div id='msg_pop' style='display:none'>" + arrDatos[2] + "</div>");
		if ($("#msg_pop").css("display")=='none'){
			setMessagePopUp(arrDatos[3],arrDatos[4]);
			$("#msg_pop").slideDown('slow'); 
		}else{
			oldIDs = $("#ids_msg_pop").attr("value");
			arrIDs = arrDatos[3].split(",");
			var incoming=0;
			var arrNew = Array();
			for(var n=0; n < arrIDs.length; n++){
				obj = document.getElementById("msg_pop_id_" + arrIDs[n]);
				if (!isdefined(obj)){
					arrNew[incoming] = arrIDs[n];
					incoming++;
				}
			}
			if (incoming>0){
				arrDatos[2] = arrDatos[2].replace(/msg_pop/ig,'tmp_msg_pop');
				$("body").append("<div id='tmp_msg_pop' style='display:none'>" + arrDatos[2] + "</div>");
				var newInnerHTML = "";
				for (var n=0; n < arrNew.length; n++){
					newInnerHTML += "<div id='msg_pop_id_" + arrNew[n] + "' style='display:none;'>" + 
									$("#tmp_msg_pop_id_" + arrNew[n]).attr("innerHTML") + "</div>";
				}
				newInnerHTML = newInnerHTML.replace(/tmp_msg_pop/ig,'msg_pop');
				$("#msg_pop_content").attr("innerHTML", $("#msg_pop_content").attr("innerHTML") + newInnerHTML);
				coma = (oldIDs.length>0)?",":"";
				setMsgArrows(oldIDs + coma + arrDatos[3],arrDatos[4]);
				$('#tmp_msg_pop').remove()
			}
		}
	}
}

function setMessagePopUp(ids,access){
	$("#msg_pop").hide();
	$("#msg_pop").css("left", ($(this).width()) - (parseInt($("#msg_pop").css('width')) + 20) + "px"); 
	$("#msg_pop").css("top", ($(this).height()) - (parseInt($("#msg_pop").css('height')) + 20) + "px");
	$("#msg_pop").draggable(); setMsgArrows(ids,access);
	$("#msg_pop #close_msg_pop").click(function (){ $("#msg_pop").slideUp('slow'); setTimeout("$('#msg_pop').remove();",500)});
}

function setMsgArrows(ids,access){
	tmpIDs = Array(); arrIDs = ids.split(",");
	for(var n=0; n < arrIDs.length; n++){
		var existe=false; for (var m=0; m < tmpIDs.length; m++) if (tmpIDs[m]==arrIDs[n]) existe=true;
		if(!existe) tmpIDs[tmpIDs.length]=arrIDs[n];
	}; ids = tmpIDs.join(","); arrIDs = ids.split(",");
	$("#pop_msg_last, #pop_msg_next").css("display","block");
	if (arrIDs.length==1) $("#pop_msg_last, #pop_msg_next").css("display","none");
	if ($("#msg_pop_id_"+arrIDs[0]).css("display")=='block') $("#pop_msg_last").css("display","none");
	if ($("#msg_pop_id_"+arrIDs[arrIDs.length-1]).css("display")=='block') $("#pop_msg_next").css("display","none");
	var anterior="";
	var siguiente="";
	for(var n=0; n < arrIDs.length; n++){
		if($("#msg_pop_id_" + arrIDs[n]).css("display") == 'block'){
			if (isdefined(arrIDs[n-1])) anterior=arrIDs[n-1];
			if (isdefined(arrIDs[n+1])) siguiente=arrIDs[n+1];
			$.ajax({
				type: "POST",
				url: "update_message_status.php",
				data: '&access=' + access + '&id=' + arrIDs[n],
				error: function(objeto, errData1, errdata2){
					alert(((isdefined(document.getElementById('ajaxError')))?$("#ajaxError").attr("value"):"Communications Error, Try Again"));
				},
				success: function(data){checkSessionData(data,access);}
			})
			n=arrIDs.length;
		}
	}
	$("#ids_msg_pop").attr("value",ids);
	return anterior + "," + siguiente;
}

function pasaMsg(direccion,access){
	ids=$("#ids_msg_pop").attr("value");
	siguiente = setMsgArrows(ids,access).split(",");
	arrIDs = ids.split(","); var idGeneral = ""; var coma="";
	for(var n=0; n < arrIDs.length; n++){
		idGeneral += coma + "#msg_pop_id_"+arrIDs[n]; coma = ",";
	}
	$(idGeneral).css('display','none');
	$("#msg_pop_id_" + siguiente[direccion]).css('display','block');
	setMsgArrows(ids,access);
}

function showCountries(){
	$('#modalContentTest').modal({onOpen: countryOpen, onClose: modalClose, close: true});
}
function countryOpen (dialog){
	dialog.overlay.fadeIn('slow', function () {
		dialog.container.show('slow', function () {
			dialog.data.fadeIn('fast');
			ajaxLoader("countries_list.php", 'send_aux', '', ''); 
		});
	});
}

function modalClose (dialog) {
	dialog.data.hide('fast', function () {
		dialog.container.hide('fast', function () {
			dialog.overlay.fadeOut('slow', function () {
				closeModal();
			});
		});
	});
}

function closeModal(){
	$.modal.close();
}

function goURL(url, params){
	if (!isdefined(params)) params='';
	location.href= url + '?access=' + $("#access").attr("value") + params;
}

function IsNumeric(sText, ValidChars){
	if (!isdefined(ValidChars)) ValidChars = "0123456789.";
	var IsNumber=true;
	if (sText.length == 0) return false;
	for (i = 0; i < sText.length && IsNumber == true; i++) { 
		var Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
		}
	}
	return IsNumber;
}

Array.prototype.inArray = function (value) {
  var i = this.length;
  if (i > 0) {
	 do {
		if (this[i] === value) return true;
	 } while (i--);
  }
  return false;
}

function ajaxLoader(programa, id, parametros, displaytext, displayid, whenAjaxEnd, o) {
	methodForm = 'POST';
    esNS = document.getElementById&&!document.all;
	loadingData = "<img border='0' src='"+imagenAjax+"'>&nbsp;&nbsp;"
	if (isdefined(displaytext)) loadingData+= displaytext; else loadingData+=". . . Loading / Cargando . . ."; 
	if (isdefined(displayid)) sii(displayid,loadingData); else sii(id,loadingData);
	x=defAjaxHandler();
	if (x) {
		if (!isdefined(o)) {
			o=function() {
				if (x.readyState == 4 && x.status == 200) {
					if (isdefined(displayid)) sii(displayid,''); SetContainerHTML(id, x.responseText, true);
					if (isdefined(whenAjaxEnd) && whenAjaxEnd!="") eval(whenAjaxEnd);
				};
			};
		};
		manageAjax(x,o,programa,parametros);
	};
};

function defAjaxHandler() {
	var axx = false;
	if (window.XMLHttpRequest) { 
		 axx = new XMLHttpRequest();
		 if (axx.overrideMimeType) {
			axx.overrideMimeType('text/html');
		 };
	  } else if (window.ActiveXObject) { 
		 try{
			axx = new ActiveXObject("Msxml2.XMLHTTP");
		 } catch (e) {
			try{
			   axx = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {};
		 };
	  };
	  if (!axx) {
		 alert('Cannot create XMLHTTP instance');
		 return false;
	};
	return (axx);
};

function manageAjax(x,o,programa,parametros) {
	x.onreadystatechange = o;
	if (methodForm=='POST') {
		if(parametros!='') parameters='id' +'=' + parametros+ "&rand=" + Math.random(); else parameters=''+ "&rand=" + Math.random();
		url=programa;
		x.open('POST', url, true);
		x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		x.setRequestHeader("Content-length", parameters.length);
		x.setRequestHeader("Connection", "close");
		x.send(parameters);
	} else {
		if(parametros!='') url=programa+'?id' +'=' + parametros + "&rand=" + Math.random(); else url=programa + "&rand=" + Math.random();
		x.open("GET", url, true); x.send(null);
	};
};


function SetContainerHTML(id,html,processScripts) {
	mydiv = goo(id);
	mydiv.innerHTML = html;
	if(processScripts!=false) {
		var elementos = mydiv.getElementsByTagName('script');
		for(i=0;i<elementos.length;i++) {
			var elemento = elementos[ i ];
			nuevoScript = document.createElement('script');
			nuevoScript.text = elemento.innerHTML;
			nuevoScript.type = 'text/javascript';
			if(elemento.src!=null && elemento.src.length>0)
				nuevoScript.src = elemento.src;
			elemento.parentNode.replaceChild(nuevoScript,elemento);
		};
	};
};

function emailCheck (emailStr) { 
	var emailPat=/^(.+)@(.+)$/; 
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"; 
	var validChars="\[^\\s" + specialChars + "\]"; 
	var quotedUser="(\"[^\"]*\")"; 
	var ipDomainPat=/^[(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})]$/; 
	var atom=validChars + '+'; 
	var word="(" + atom + "|" + quotedUser + ")"; 
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$"); 
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$"); 
	var matchArray=emailStr.match(emailPat); 
	if (matchArray==null) return false;
	var user=matchArray[1] ;
	var domain=matchArray[2] ;
	if (user.match(userPat)==null) return false ;
	var IPArray=domain.match(ipDomainPat) 
	if (IPArray!=null) { 
	    for (var i=1;i<=4;i++) if (IPArray[i]>255) return false ;
	    return true ;
	} 
	var domainArray=domain.match(domainPat) ;
	if (domainArray==null) return false; 
	var atomPat=new RegExp(atom,"g") ;
	var domArr=domain.match(atomPat) ;
	var len=domArr.length ;
	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>4) return false ;
	if (len<2) return false; 
	return true; 
} 

function valalfa(e){
	tecla = (document.all) ? e.keyCode : e.which;  if (tecla == 8) return true;
    patron = /[A-Za-z0-9 ]/; te = String.fromCharCode(tecla);
    return patron.test(te);
}

function valnum(e){
    tecla = (document.all) ? e.keyCode : e.which;  if (tecla == 8) return true;
    patron = /[0-9]/;  te = String.fromCharCode(tecla);
    return patron.test(te);
}

function valfloat(e){
    tecla = (document.all) ? e.keyCode : e.which;  if (tecla == 8) return true;
    patron = /[0-9.]/;  te = String.fromCharCode(tecla);
    return patron.test(te);
}

function bl_enter(e) {
    tecla = (document.all) ? e.keyCode : e.which;  
	if (tecla == 13) return false;
}

function bl_space(e) {
    tecla = (document.all) ? e.keyCode : e.which;  
	if (tecla == 32) return false;
}

function logout(text, access){
	if (typeof($("#delContacts").attr("innerHTML")) == 'undefined'){
		if (confirm(text)) window.location.href="logout.php?access=" + access
	}else{
		$("#delContacts").css({"display":"none"});
		confirm(text, function () { window.location.href="logout.php?access=" + access; });
	}
}

function insertAtCursor(myFieldName, myValue) {
	myField = document.getElementById(myFieldName);
	if (document.selection) {
		myField.focus();
		sel = document.selection.createRange();
		sel.text = myValue;
	}else if (myField.selectionStart || myField.selectionStart == '0') {
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		myField.value = myField.value.substring(0, startPos)+ myValue+ myField.value.substring(endPos, myField.value.length);
	} else {
		myField.value += myValue;
	}
}

function checkSessionData(data, access){
	if (access=='' || typeof(access) == 'undefined') access = $("#access").attr("value");
	if (data.search(/--NoSessionLogId--/i)!=-1){
		window.location.href='no_session.php?access=' + access;
		return false;
	}
	return true;
}

function getFormData(formName){
	var frmData = "";
	for (i=0; i<goo(formName).elements.length; i++) { 
		objeto = goo(formName).elements[i];
		if (isdefined(objeto.id)){
			if (objeto.type=="checkbox" || objeto.type=="radio" ){
				valor=(objeto.checked)?1:0;
				frmData+="&"+objeto.id+"="+valor;
			}else
				frmData+="&"+objeto.id+"="+objeto.value;
		}
	}
	return frmData;
}

function checkboxes(name) {
	var sel_checks = new Array();
	var elts_a= document.getElementsByName(name);
	var elts_cnt_a  = (typeof(elts_a.length) != 'undefined')?elts_a.length:0;
	if (elts_cnt_a) {
		counter_a = 0;
		for (var i_a = 0; i_a < elts_cnt_a; i_a++) {
			if ( elts_a[i_a].checked) {
				sel_checks[counter_a] = elts_a[i_a].value;
				counter_a++;
			};
		};
	};
	return sel_checks;
};

function addOption(id,text,value){
	var list = goo(id); 
	var long = list.length; 
	list[long] = new Option(text, value); 
}

function getDocumentation(){
	if (!isdefined(document.getElementById('modalDocumentation'))){
		$(document.body).append("<div id='modalDocumentation' style='display:none'><br />" +
								"	<table style='width:100%; height:3px'>" +
								"   	<tr><td style='vertical-align:top'> " + 
								"			<div id='doc_aux' style='width:100%; vertical-align:top; text-align:center; overflow:auto; height:277px;'></div>" +
								"		</td></tr>" +
								"	</table>" + 
								"</div>");
	}
	$('#modalDocumentation').modal({onOpen: docsOpen, onClose: modalClose, close: true});
}

function docsOpen(dialog){
	dialog.overlay.fadeIn('slow', function () {
		dialog.container.animate({'width':'450px', 'height':'300px', 'top':$(window).height()/2-300/2, 'left': $(window).width()/2-450/2}),
		dialog.container.show('slow', function () {
			dialog.data.fadeIn('fast');
			ajaxLoader("documentation.php", 'doc_aux', '&access=' + $("#access").attr("value"), ''); 
		});
	});
}

function displayDate(){
	var now = new Date();
	laCookie = getCookie("idioma");
	if (laCookie==null) laCookie = "en";
	
	if (laCookie=="es"){
	  var dias = new Array('Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado');
	  var meses = new Array('Enero',   'Febrero',   'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre',
						  'Octubre', 'Noviembre', 'Diciembre');}
	if (laCookie=="en"){
	  var dias = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
	  var meses = new Array('January',   'February',   'March', 'April', 'May', 'June', 'July', 'August', 'September',
						  'October', 'November', 'December');}
	if (laCookie=="de"){
	  var dias = new Array('Sonntag ', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag');
	  var meses = new Array('Januar',   'Februar',   'März', 'April', 'Mag', 'Juni', 'Jule', 'August', 'September',
						  'Oktober', 'November', 'Dezember');}
						  
						  
	var fecha = ((now.getDate() < 10) ? "0" : "") + now.getDate();
	
	function setYear2K(ano){
		return (ano < 1000) ? ano + 1900 : ano;
	}
	
	fechaactual = dias[now.getDay()] + ", " + meses[now.getMonth()] + " " + fecha + " - " + (setYear2K(now.getYear()));
	$("#system_date").html(fechaactual + " - ");
	WorkingClock();
}

function WorkingClock() {
    var digital = new Date();
    var horas = digital.getHours();
    var minutos = digital.getMinutes();
    var segundos = digital.getSeconds();
    var apm = "AM";
    if (horas > 11) apm = "PM";
    if (horas > 12) horas = horas - 12;
    if (horas == 0) horas = 12;
    if (minutos <= 9) minutos = "0" + minutos;
    if (segundos <= 9) segundos = "0" + segundos;
    dispTime = horas + ":" + minutos + ":" + segundos + " " + apm;
	$("#pendule").html(dispTime);
    setTimeout("WorkingClock()", 1000);
}

function capLock(e, obj, text){
	kc = (e.keyCode)?e.keyCode:e.which; sk = (e.shiftKey)?e.shiftKey:((kc==16)?true:false);
	if (((kc>=65&&kc<=90)&&!sk) || ((kc>=97&&kc<=122)&&sk)){
        if($(obj).data("qtip")){
			$(obj).qtip("show");
		}else{
			$(obj).qtip({
				content: { text: "<p align='center'><img src='graphics/attention.png'>&nbsp;<strong>" + text },
				show: { when: false, ready: true },
				hide: false, 
				position: { corner: { target: 'leftTop', tooltip: 'bottomLeft' } },
				style: {  width: 250, padding: 5, 
				border: { width: 2, radius: 5, color: '#FDDB64'},tip: 'bottomLeft' }
			});
		}
	}else{
        if($(obj).data("qtip")) $(obj).qtip("hide");
	}
}

function removeCapTip(obj){
    if ($(obj).data("qtip")) $(obj).qtip("hide");
}

function getScriptName(){
	scriptNameArray = window.location.pathname.split( '/' );
	scriptNameArray = scriptNameArray[scriptNameArray.length - 1].split( '?' );
	scriptName = scriptNameArray[0];
	return scriptName;
}