var ajaxWaitMsg = '<small style="color:green;font-size:9px;text-decoration: blink;">Loading...</small>';

// Standard AJAX Functions //
function GetXmlHttpObject() {
    var xmlHttp=null;
    try {
      // Firefox, Opera 8.0+, Safari
      xmlHttp=new XMLHttpRequest();
      if (xmlHttp.overrideMimeType) {
         	// set type accordingly to anticipated content type
            //xmlHttp.overrideMimeType('text/xml');
            xmlHttp.overrideMimeType('text/html');
         }
    } catch (e) {
      // Internet Explorer
      try {
        xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    return xmlHttp;
}

function openUrl(url, targetDivID) {
    var xmlHttp;
    xmlHttp = GetXmlHttpObject();
    var target;
    if (targetDivID == '') target = document.body
    else target = document.getElementById(targetDivID);
    if (xmlHttp == null) {
        alert ("Your browser does not support AJAX!");
    }   else {
        target.innerHTML = ajaxWaitMsg;
        url = encodeURI(url);
        xmlHttp.onreadystatechange = function() {ajaxResponse(xmlHttp, target);}
        xmlHttp.open("GET", url, true);
        xmlHttp.send(null);
    }
}


function urlPost(formName, url, targetDivID) {
    var form = document.getElementById(formName);
    var parameters = '';
    for (i=0; i<form.elements.length; i++) {
      if (parameters != '') parameters += '&';
      parameters += form.elements[i].name;
      parameters += '=';
      parameters += encodeURIComponent(form.elements[i].value);
    }
    var xmlHttp;
    xmlHttp = GetXmlHttpObject();
    var target;
    if (targetDivID == '') target = document.body
    else target = document.getElementById(targetDivID);
    if (xmlHttp == null) {
        alert ("Your browser does not support AJAX!");
    }   else {
        target.innerHTML = ajaxWaitMsg;
        url = encodeURI(url);
        xmlHttp.onreadystatechange = function() {ajaxResponse(xmlHttp, target);}
        xmlHttp.open("POST", url, true);
        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttp.setRequestHeader("Content-length", parameters.length);
        xmlHttp.setRequestHeader("Connection", "close");
        xmlHttp.send(parameters);
    }
}

function urlPostNT(formName, url, readyFunc, readyFuncParams) {
    var form = document.getElementById(formName);
    var parameters = '';
    for (var i = 0; i < form.elements.length; i++) {
      if (parameters != '') parameters += '&';
      parameters += form.elements[i].name;
      parameters += '=';
      parameters += encodeURIComponent(form.elements[i].value);
    }
    var xmlHttp;
    xmlHttp = GetXmlHttpObject();
    if (xmlHttp == null) {
        alert ("Your browser does not support AJAX!");
    }   else {
        url = encodeURI(url);
        xmlHttp.onreadystatechange = function() {eval(readyFunc + '(xmlHttp, ' + readyFuncParams + ')');}
        xmlHttp.open("POST", url, true);
        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttp.setRequestHeader("Content-length", parameters.length);
        xmlHttp.setRequestHeader("Connection", "close");
        xmlHttp.send(parameters);
    }
}



function ajaxResponse(xmlHttp, target) {
    if (xmlHttp.readyState==4) {
        var xmlDoc = xmlHttp.responseText;
        target.innerHTML = xmlDoc;
    }
}

function openUrlNT(url, readyFunc, readyFuncParams) {
    var xmlHttp;
    xmlHttp = GetXmlHttpObject();
    if (xmlHttp == null) {
        alert ("Your browser does not support AJAX!");
    }   else {
        url = encodeURI(url);
        if (readyFuncParams) {
            xmlHttp.onreadystatechange = function() {eval(readyFunc + '(xmlHttp, ' + readyFuncParams + ')');}
        } else {
            xmlHttp.onreadystatechange = function() {eval(readyFunc + '(xmlHttp)');}
        }
        xmlHttp.open("GET", url, true);
        xmlHttp.send(null);
    }
}


// Validation Functions //

function escapeForm(formName) {
    var form = document.getElementById(formName);
    for (var i=0; i<form.length; i++) {
        form.elements[i].value = escape(form.elements[i].value);
    }
}

function trim(string) {
    return(string.replace(/^\s+|\s+$/g, ''));
}

function trimComma(str) {
	for (var i=str.length-1;str.charAt(i)=="," || str.charAt(i)==" ";i--) {
	    str = str.substring(0,i);
	}
	return str;
}

function isEmpty(string) {
    if (!string) return true;
    string = trim(string);
    return string.length == 0;
}

function isOverMaxLength(string, maxLength) {
    string = trim(string);
    return string.length > maxLength;
}

function isUnderMinLength(string, minLength) {
    string = trim(string);
    return string.length < minLength;
}

function isDecimal(string) {
    string = trim(string);
    var ok;
    if (language == 'el') ok = /^\d+\,\d+$/.test(string);
    else /^\d+\.\d+$/.test(string);
    return ok;

}

function isInteger(string) {
    string = trim(string);
    return /^\d/.test(string);

}

function isEmail(string) {
    if (!string) return true;
    string = trim(string);
	return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(string));
}

function daysInFebruary (year){
	return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   	}
   	return this
}

function isDate(dtStr) {
    if (isEmpty(dtStr)) return true;
    dtStr = trim(dtStr);
    if (dtStr.indexOf('-') >= 0) var dtCh= "-";
    else if (dtStr.indexOf('/') >= 0) var dtCh= "/";
    else return false;
	var minYear=1900;
	var maxYear=2100;
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var str1=dtStr.substring(0,pos1)
	var str2=dtStr.substring(pos1+1,pos2)
	var str3=dtStr.substring(pos2+1)
	if (language == 'el') {
	    var strDay = str1;
	    var strMonth = str2;
	    var strYear = str3;
	} else {
	    var strDay = str3;
	    var strMonth = str2;
	    var strYear = str1;
	}

	var strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	var month=parseInt(strMonth)
	var day=parseInt(strDay)
	var year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		//alert("The date format should be : mm/dd/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		//alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		//alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		//alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	//if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		//alert("Please enter a valid date")
	//	return false
	//}
	return true
}


// Object visibility Functions //


function objHide(obj) {
	if (document.layers) {
		obj.visibility = 'hide';
		obj.display = 'none';
	} else if (document.all) {
		obj.style.visibility = 'hidden';
		obj.style.display = 'none';
	} else if (document.getElementById) {
		obj.style.visibility = 'hidden';
		obj.style.display = 'none';
	}
}

function objShow(obj) {
	if (document.layers) {
		obj.visibility = 'show';
		obj.display = 'block';
	} else if (document.all) {
		obj.style.visibility = 'visible';
		obj.style.display = 'block';
	} else if (document.getElementById) {
		obj.style.visibility = 'visible';
		obj.style.display = 'block';
	}
}

function objIsVisible(obj) {
	if (document.layers) {
		if (obj.visibility == 'hide') return false;
	} else if (document.all) {
		if (obj.style.visibility == 'hidden') return false;
	} else if (document.getElementById) {
		if (obj.style.visibility == 'hidden') return false;
	}
	return true;
}

