var isDOM=document.getElementById?1:0;
var isIE=document.all?1:0;
var isNS4=navigator.appName=='Netscape'&&!isDOM?1:0;

function getRef(i, p) {
	p = !p ? document : p.navigator ? p.document:p;
	return isIE ? p.all[i]:isDOM ? (p.getElementById ? p : p.ownerDocument ).getElementById(i) : isNS4 ? p.layers[i] : null;
}

function goBack() {
		window.history.back();
}

var passminlen = 3;
var datesep = '/';
var timesep = ':';

function validate(field, type, name) {
		switch (type) {
				case 'string':
					if (field.value == '') {
						alert('Please enter a valid '+name);
						field.focus();
						return false;
					}
					break;
					
				case 'email':
					if ((field.value.indexOf('@') == -1 
							|| field.value.indexOf('.') == -1 
							|| field.value.indexOf('.', field.value.indexOf('@')) <= field.value.indexOf('@')+1
							|| field.value.length < 6)
							&& field.value != 'admin' ) {
						
						alert('Please enter a valid '+name);
						field.focus();
						return false;
					}
					break;
					
				case 'password':
					if (field.value == ''
							|| (field.value.length < passminlen && field.value != 'admin')) {
						alert('Please enter a valid '+name);
						field.focus();
						return false;
					}
					break;
					
				case 'number':
					for (var x=0; x<field.value.length; x++) {
						var ch = field.value.charAt(x);
						
						if (( ch < '0' || ch > '9' ) && ch != '.') {
							alert('Please enter a valid '+name);
							field.focus();
							return false; 
						}
					}
					break;
					
				case 'non0number':
					if (field.value == '' || Number(field.value) == 0) {
						alert('Please enter a valid '+name);
						field.focus();
						return false;
					}
					
					for (var x=0; x<field.value.length; x++) {
						var ch = field.value.charAt(x);
						
						if (( ch < '0' || ch > '9' ) && ch != '.') {
							alert('Please enter a valid '+name);
							field.focus();
							return false; 
						}
					}
					break;
					
				case 'date_mdy':
					var d = new Date(field.value.substr(6, 4)
														, Number(field.value.substr(0, 2))-1
														, field.value.substr(3, 2));
					
					var d2 = ((d.getMonth() < 9)?'0':'')+Number(d.getMonth()+1).toString()+datesep
										+((d.getDate() < 10)?'0':'')+Number(d.getDate()).toString()+datesep
										+Number(d.getFullYear()).toString();
					
					if ((field.value != d2 
							|| field.value.charAt(2) != datesep
							|| field.value.charAt(5) != datesep
							|| field.value.length != 10) && field.value != '') {
						alert('Please enter a valid '+name);
						field.focus();
						return false; 
					}
					break;
					
				case 'date_dmy':
					var d = new Date(field.value.substr(6, 4)
														, Number(field.value.substr(3, 2))-1
														, field.value.substr(0, 2));
					
					var d2 = ((d.getDate() < 10)?'0':'')+Number(d.getDate()).toString()+datesep
										+((d.getMonth() < 9)?'0':'')+Number(d.getMonth()+1).toString()+datesep
										+Number(d.getFullYear()).toString();
					
					if ((field.value != d2 
							|| field.value.charAt(2) != datesep
							|| field.value.charAt(5) != datesep
							|| field.value.length != 10) && field.value != '') {
						alert('Please enter a valid '+name);
						field.focus();
						return false; 
					}
					break;
					
				case 'time24':
					if (field.value.charAt(2) != timesep
							|| field.value.length != 5
							|| Number(field.value.substr(0, 2)) > 23
							|| Number(field.value.substr(3, 2)) > 59) {
						alert('Please enter a valid '+name);
						field.focus();
						return false; 
					}
					break;
					
				case 'radio':
					if (field.value == null) {
						alert('Please select a valid '+name);
						return false; 
					}
					break;
					
				case 'url':
					if (field.value.substr(0, 7) != 'http://' 
							|| field.value.indexOf('.') == -1 
							|| field.value.indexOf(' ') != -1 
							|| field.value.length < 11) {
						
						alert('Please enter a valid '+name);
						field.focus();
						return false;
					}
					break;
			
		}
		
		return true;
}

function valPassword(pass, confirm) {
		if (pass.value != confirm.value) {
			alert('The password confirmation does not match');
			pass.focus();
			return false;
		}
			
		return true;
}

function ConfirmDel(url, name) {
		if (confirm('Are you sure you want to delete this '+name))
			window.location.href = url;
}

function valLogin() {
	var f = window.document.loginform;
	ret = validate(f.username, 'string', 'username')
				&& validate(f.pass, 'password', 'password')
				;
				
	return ret;
}

function lxSelectMove(source, destine) {

	var src = getRef(source);
	var dst = getRef(destine);
	var temp = new Array();
	
	for (var x=0; x<src.length; x++)
		if (src.options[x].selected) {
			dst.options[dst.length] = new Option(src.options[x].text, src.options[x].value, false, false);
			temp.push(src.options[x].value);
		}
		
	for (x=0; x<temp.length; x++)
		for (y=0; y<src.length; y++)
			if (Number(src.options[y].value) == temp[x]) {
				src.remove(y);
				break;
			}
}

function lxSelectList(listname) {

	var lname = getRef(listname);
	
	for (var x=0; x<lname.length; x++)
		lname.options[x].selected = true;
}

function openWindow(URL,width,height,name){ 
  var win = window.open(URL,escape(name),"width="+width+",height="+height+",toolbar=0,status=0,menubar=0,resizable=0,left=200px,top=200px,scrollbars=1");
	win.focus();
} 


//New function to check inputs type "text" and "textareas". V 1.0

var GMaxLengthChar = 20; //Global default length Max. for each word.
var LastObjVisited;
var LastLenVisited;

// You moust call this function in each input "text" and "textarea".
// The correct form to call this function is adding two events inside the input (or textarea),
// the events are "onblur" and "onKeyUp". 

//For example: 
// <input name="InputName" id="InputName" maxlength="100" type="text" onblur="Chars_counter('InputName',100,20);" onKeyUp="Chars_counter('InputName',100,20);"/>
// or
// <textarea name="TextAreaName" id="TextAreaName" cols="40" rows="10" onblur="Chars_counter('TextAreaName',100,30);" onKeyUp="Chars_counter('TextAreaName',100,30);"></textarea>

// Don`t forget to put the "maxlength" property in the input text!!!.

// "field" is the input´s name, "length" is the maximun
// length of the characters and "MaxLengthWord" is the max. length for each word.
// if you don`t put this value, it will use the "GMaxLengthChar" value.
function Chars_counter(field,length,MaxLengthWord) {

	var MaxLengthChar = (typeof(MaxLengthWord) != 'undefined') ? MaxLengthWord : GMaxLengthChar;

	var inputObj = getRef(field);
	var long = length - inputObj.value.length;
	LastObjVisited = inputObj;
	LastLenVisited = length;
	if(long < 0) {
		inputObj.value=inputObj.value.substr(0,length);
		alert('The maximum number of characters is '+length);
		return false;
	}

	var words_tmp = inputObj.value.split(' ');
	var words = new Array();

	if(inputObj.type == 'text'){
		var char = ' ';
		var words = words_tmp;
	}
	else if(inputObj.type == 'textarea'){
		var char = (navigator.userAgent.indexOf("Firefox")!=-1) ? '\n' : '\r\n';
		for(y=0; y<words_tmp.length; y++){
			var current_word = words_tmp[y].split(char);
			for(z=0; z<current_word.length; z++){
				words.push(current_word[z]);
			}
		}
	}	
//alert(words);
	if(words.length > 0){
		for(i=0; i<words.length; i++){
			if(words[i].length > MaxLengthChar){
				var start = inputObj.value.indexOf(words[i]);
				var new_text = SplitWord(words[i],char, MaxLengthChar);
				inputObj.value = inputObj.value.substr(0,start)+new_text+inputObj.value.substr(start+words[i].length);
			}
		}
	}
	return true;
}

//IMPORTANT!!!!
//you moust call this function into your validation function
function checkOnSubmit(obj, length){

	return Chars_counter(obj.name,length);

}

//Auxiliary function.
function SplitWord(word,char,MaxLengthChar){
	if(word.length > 0 && word.length > MaxLengthChar){
		return word.substr(0,MaxLengthChar) + char + SplitWord(word.substr(MaxLengthChar),char,MaxLengthChar);
	}
	else
		return word;
}

//#################

// functions for "cookies"

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 setCookie(name, value) {
	var _8=new Date();
	_8.setMonth(_8.getMonth()+3);
	document.cookie=escape(name)+"="+escape(value)+"; expires="+_8.toGMTString()+"; path=/";
}

function CheckCookie(){
	setCookie('cookie_test', 1, '2 Dec 2020 23:59:59 GMT');	
	if(getCookie('cookie_test') != 1){
		alert('Cookies should be enabled in order to view this page properly.');
	}
}

//###########################################################################
nav=navigator.userAgent;
if (nav.indexOf('MSIE 3')>0) {IE3=true} else {IE3=false};


function setseq(L,Raux,boxaux) {
	if (IE3) {
	  NewAlert("Sorry, MSIE 3 does not support dynamic lists. nYou must use MSIE 4+ or Netscape 3+ to use this function");
	} else {
	var R = getRef(Raux);
	var box = getRef(boxaux);
	
	var len=R.options.length;
	R.options.length++;
	i=L.selectedIndex;
	R.options[len].text=L.options[i].text;
	R.options[len].value=i;
	setnums(R,box);
	}
}

function setnums(s,boxname) {
	var len=s.options.length;
	result="";
	for (i=0;i<len;i++) {
		result+=s.options[i].text+":"
	};
	boxname.value=result;
}

function clearSequence (field,field2) {
	if (IE3) {
	  NewAlert("Sorry, MSIE 3 does not support dynamic lists. nYou must use MSIE 4+ or Netscape 3+ to use this function");
	} else {
		var box = getRef(field2);
		var s = getRef(field);

		s.options.length=0;
	  box.value="";
	};
};

function moveUp (field,field2) {
 	if (IE3) {
	  NewAlert("Sorry, MSIE 3 does not support dynamic lists. nYou must use MSIE 4+ or Netscape 3+ to use this function");
	} else {
					var box = getRef(field2);
					var s = getRef(field);
          i=s.selectedIndex;
          if ((i==-1)||(i==0)) {return}
          tmpval=s.options[i].value;
          tmptext=s.options[i].text;
          s.options[i].value=s.options[i-1].value;
          s.options[i].text=s.options[i-1].text;
          s.options[i-1].value=tmpval;
          s.options[i-1].text=tmptext;
          s.selectedIndex=i-1;
          setnums(s,box);
        }       
}

function moveDown (field,field2) {
 	if (IE3) {
	  NewAlert("Sorry, MSIE 3 does not support dynamic lists. nYou must use MSIE 4+ or Netscape 3+ to use this function");
	} else {
					var box = getRef(field2);
					var s = getRef(field);

					i=s.selectedIndex;
          if ((i==-1)||(i==s.options.length-1)) {return}
          tmpval=s.options[i].value;
          tmptext=s.options[i].text;
          s.options[i].value=s.options[i+1].value;
          s.options[i].text=s.options[i+1].text;
          s.options[i+1].value=tmpval;
          s.options[i+1].text=tmptext;
          s.selectedIndex=i+1;
          setnums(s,box);
        }       
}

function deleteField (field,field2) {
 	if (IE3) {
	  NewAlert("Sorry, MSIE 3 does not support dynamic lists. nYou must use MSIE 4+ or Netscape 3+ to use this function");
	} else {
					var box = getRef(field2);
					var s = getRef(field);
		
          i=s.selectedIndex;
          if (i==-1) {return};
          for (j=i;j<s.options.length-1;j++) {
            s.options[j].value=s.options[j+1].value;
            s.options[j].text=s.options[j+1].text;
          }
					s.options.length=s.options.length-1;         
					if((s.options.length-1) >= 0){
						s.options[s.options.length-1].selected=true;
					}
					setnums(s,box);
        }       
}

function valChars(field, char, empty,maxlength,minlength){
		maxlength = (maxlength != '') ? maxlength : 20;
		minlength = (minlength != '') ? minlength : 3;
		if (empty == 1 && field == "") {
      NewAlert("ERROR: Field Name cannot be empty!")
      return false
    }else if(field.length > maxlength || field.length < minlength ){
			  NewAlert("Field Name -> max. chars = "+maxlength+" | min. chars = "+minlength)
				return false;
		}

		var position;
		var enter = "\n"
		var chars = "abcdefghijklmnopqrstuvwxyzñ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZÑáéíóúÁÉÍÓÚ_-" + String.fromCharCode(13) + enter + char;
		var count = 0
		for (var i=0; i < field.length; i++) {
			position = field.substring(i, i + 1)
			if (chars.indexOf(position) != -1) {
				count++
			}
			else {
				NewAlert("ERROR: Field Name allows only numbers, letters and the character '_'.")
				return false;
			}
		}
  return true;		
	}

  function maxLength(field,maxchars,maxlength){
		//alert(field+','+maxchars+','+maxlength)
		if(field.length > maxchars){
			alert(field +" it is not a valid value, please reviews "+field+" value.\r\n Max characters lenght: "+maxchars)
			return false;
		}
		if(field > maxlength){
			alert(field +" it is not a valid value, please reviews "+field+" value.\r\n Max value: "+maxlength)
			return false;
		}
		return true;
	}
   
	function nanCheck(field){
		if(field != ''){
			if(isNaN(field*1)){ 
				NewAlert("Please, enter a valid maximun character length"); 
				return false; 
			}
			else{
			  return true;	
			}
		}
	}

var Flag_Up_New_Alert = false;

function NewAlert(msg){
	alert(msg);
	/*var divA = getRef('div_alert');
	var prel = getRef('preload');
	var main = getRef('main');
	var text = getRef('alert_msg');
	var button = getRef('alert_button_ok');
	var Mbody = getRef('body_main');	 	

	prel.style.display = 'none';
	if(msg != ''){
		Flag_Up_New_Alert = true;
//		Mbody.className = 'no-loading_alert';
		main.className = 'no-loading_alert';
		divA.style.display = 'block';
		text.innerHTML = msg;
		button.focus();
	}
	else{
		Flag_Up_New_Alert = false;
		divA.style.display = 'none';
		text.innerHTML = '';
//		Mbody.className = 'default';
		main.className = 'default';
	}
	return true;*/
}

function DisplayPreload(js){
	var prel = getRef('preload');
	var main = getRef('main');	
	var Mbody = getRef('body_main');	 	
	if(js == '' && !Flag_Up_New_Alert){
		prel.className = 'loading';
		prel.style.display = 'none';
//		Mbody.className = 'default';		
		main.className = 'default';
	}
	return true;
}

var preloaded = new Array();  
function preload_images() {
		for (var i = 0; i < arguments.length; i++){
				preloaded[i] = document.createElement('img');
				preloaded[i].setAttribute('src',arguments[i]);
		}  
}

//###################################################################
