function IsDate(dateStr) {
    if(dateStr=='undefined') return false;    
    if(dateStr==null) return false;    
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;	
	var matchArray = dateStr.match(datePat);
	
	if (matchArray == null) {
		return false;
	}
	
	day = matchArray[1];
	month = matchArray[3];
	year = matchArray[5];
	
	if (month < 1 || month > 12) { // check month range
		return false;
	}
	
	if (day < 1 || day > 31) {
		return false;
	}
	
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		return false;
	}
	
	if (month == 2) { // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day==29 && !isleap)) {
			return false;
		}
	}
	return true;
}

function IsNumeric(sText){   
   var ValidChars = "0123456789.";
   var Char;
   if(sText=='') return false;
   for (i = 0; i < sText.length; i++)
      {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
         {
         return false;
         }
      }
   return true;
}

function dateAdd(p_Interval, p_Number, p_Date){
	//if(!IsDate(p_Date)){return "invalid date: '" + p_Date + "'";}
	if(isNaN(p_Number)){return "invalid number: '" + p_Number + "'";}	

	p_Number = new Number(p_Number);
	var dt = new Date(p_Date);
	switch(p_Interval.toLowerCase()){
		case "yyyy": {// year
			dt.setFullYear(dt.getFullYear() + p_Number);
			break;
		}
		case "q": {		// quarter
			dt.setMonth(dt.getMonth() + (p_Number*3));
			break;
		}
		case "m": {		// month
			dt.setMonth(dt.getMonth() + p_Number);
			break;
		}
		case "y":		// day of year
		case "d":		// day
		case "w": {		// weekday
			dt.setDate(dt.getDate() + p_Number);
			break;
		}
		case "ww": {	// week of year
			dt.setDate(dt.getDate() + (p_Number*7));
			break;
		}
		case "h": {		// hour
			dt.setHours(dt.getHours() + p_Number);
			break;
		}
		case "n": {		// minute
			dt.setMinutes(dt.getMinutes() + p_Number);
			break;
		}
		case "s": {		// second
			dt.setSeconds(dt.getSeconds() + p_Number);
			break;
		}
		case "ms": {		// second
			dt.setMilliseconds(dt.getMilliseconds() + p_Number);
			break;
		}
		default: {
			return "invalid interval: '" + p_Interval + "'";
		}
	}
	return dt;
}

function dayDiff(dt1,dt2){    
    return   Math.floor((dt2 - dt1) / 86400000);
}

function datePart(p_Interval, p_Date){
	//if(!IsDate(p_Date)){return "invalid date: '" + p_Date + "'";}

	var dtPart = new Date(p_Date);
	switch(p_Interval.toLowerCase()){
		case "yyyy": return dtPart.getFullYear();
		case "q": return parseInt(dtPart.getMonth()/3)+1;
		case "m": return dtPart.getMonth()+1;
		case "y": return dateDiff("y", "1/1/" + dtPart.getFullYear(), dtPart);			// day of year
		case "d": return dtPart.getDate();
		case "w": return dtPart.getDay();	// weekday
		case "ww":return dateDiff("ww", "1/1/" + dtPart.getFullYear(), dtPart);		// week of year
		case "h": return dtPart.getHours();
		case "n": return dtPart.getMinutes();
		case "s": return dtPart.getSeconds();
		case "ms":return dtPart.getMilliseconds();	// millisecond	// <-- extension for JS, NOT available in VBScript
		default: return "invalid interval: '" + p_Interval + "'";
	}
}

var popUpWin=0;
function popUpWindow(URLStr, left, top, width, height,scr,rsz)
{
if(popUpWin)
{
    if(!popUpWin.closed) popUpWin.close();
}
popUpWin = open(URLStr, 'popUpWin', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars='+scr+',resizable='+rsz+',copyhistory=no,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}

function IsEmailValid(checkThisEmail)	{
    var myEMailIsValid = true;
    var myAtSymbolAt = checkThisEmail.indexOf('@');
    var myLastDotAt = checkThisEmail.lastIndexOf('.');
    var mySpaceAt = checkThisEmail.indexOf(' ');
    var myLength = checkThisEmail.length;

    if (myAtSymbolAt < 1 ) 
     {myEMailIsValid = false}

    if (myLastDotAt < myAtSymbolAt) 
     {myEMailIsValid = false}

    if (myLength - myLastDotAt <= 2) 
     {myEMailIsValid = false}

    if (mySpaceAt != -1) 
     {myEMailIsValid = false}
     
    return myEMailIsValid
}

//calendar user control'unun shared scripts
var extracallscript='';
function CalendarObj_Click(objId,objCal,objHRef,callscr){    
    var textObj=MM_findObj(objId);
    extracallscript=callscr;
	objCal.setReturnFunction("CalendarObj_RetFunc");
	objCal.select(objHRef.id,'dd/MM/yyyy',textObj);
}

function CalendarObj_RetFunc(objHRef,objId,y,m,d){
    var xDay=new String(d);
	var xMon=new String(m);
	if (xDay<10){
        xDay='0' + xDay;
    }
    if (xMon<10){
        xMon='0' + xMon;
    }		    
    //alert(xDay + '/' + xMon + '/' + y);
    MM_findObj(objId).value=xDay + '/' + xMon + '/' + y;    
	if(extracallscript!='') {	    
	    eval(extracallscript);
	}
    
}

function CalendarObj_Value(objId)    {    
    if(MM_findObj(objId+'_chkDate') && MM_findObj(objId+'_chkDate').checked==false) {        
        return '01/01/1900'
    }
    return MM_findObj(objId+'_txtDate').value; 
}

function CalendarObj_ValueSet(objId,value)    {            
	var xDay = datePart('d',value);
	var xMon = datePart('m',value);	
	if (xDay<10){
        xDay='0' + xDay;
    }
    if (xMon<10){
        xMon='0' + xMon;
    }        
    MM_findObj(objId+'_txtDate').value=xDay + '/'+ xMon + '/'+ datePart('yyyy',value)    
}

function CalendarObj_DateValue(objId)    {
    var dtStr=CalendarObj_Value(objId);
    return ConvertStrToDate(dtStr)
}

// dd/mm/yyyy
function ConvertStrToDate(argDateStr) {
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	var matchArray = argDateStr.match(datePat); // is the format ok?	
	day = matchArray[1];
	month = matchArray[3];
	year = matchArray[5];
	
    return new Date(month + '/'+ day + '/'+ year) ;

}

function emptycombo(cmb)   {
	//Clears the state combo box contents.
	for (var count = cmb.options.length-1; count >-1; count--)
	{
		cmb.options[count] = null;
	}
}

Number.prototype.formatMoney = function(c, d, t){
	var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
	return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}

function ObjectPositionLeft(obj) {
    var curleft = 0;      
      if (obj.offsetParent) {
            do {
                  curleft += obj.offsetLeft;     
            } while (obj = obj.offsetParent);
      }
      return curleft;
}

function ObjectPositionTop(obj) {    
      var curtop = 0;
      if (obj.offsetParent) {
            do {                  
                  curtop += obj.offsetTop;
            } while (obj = obj.offsetParent);
      }
      return curtop;
}

function cmb_getseltext(cmb)   {
	//Clears the state combo box contents.
	for (var count = 0; count<cmb.options.length; count++)
	{
		if(cmb.options[count].selected) return cmb.options[count].text
	}
	return null
}

function disableAnchor(obj, disable){
  if(disable){
    var href = obj.getAttribute("href");
    if(href && href != "" && href != null){
       obj.setAttribute('href_bak', href);
    }
    obj.removeAttribute('href');    
  }
  else{
    if(obj.attributes['href_bak']) obj.setAttribute('href', obj.attributes['href_bak'].nodeValue);    
  }
}