// Array of max days in month in a year and in a leap year
monthMaxDays	= [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
monthMaxDaysLeap= [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
hideSelectTags = [];
function getRealYear(dateObj)
{
	return (dateObj.getYear() % 100) + 
         (((dateObj.getYear() % 100) < 39) ? 2000 : 1900);
}
function getDaysPerMonth(month, year)
{
	/* 
	Check for leap year. These are some conditions 
        to check year is leap year or not...
	1.Years evenly divisible by four are normally 
          leap years, except for... 
	2.Years also evenly divisible by 100 are not 
          leap years, except for... 
	3.Years also evenly divisible by 400 are 
          leap years. */
	if ((year % 4) == 0)
	{
		if ((year % 100) == 0 && (year % 400) != 0)
			return monthMaxDays[month];
	
		return monthMaxDaysLeap[month];
	}
	else
		return monthMaxDays[month];
}
function createCalender(year, month, day)
{
	 // current Date
	var curDate = new Date();
	var curDay = curDate.getDate();
	var curMonth = curDate.getMonth();
	var curYear = getRealYear(curDate)
	 // if a date already exists, we calculate some values here
	if (!year)
	{
		var year = curYear;
		var month = curMonth;
	}
	var yearFound = 0;
	for (var i=0; i<document.getElementById('selectYear').options.length; 
             i++)
	{
		if (document.getElementById('selectYear').options[i].value 
                    == year)
		{
			document.getElementById('selectYear').selectedIndex = 
                        i;
			yearFound = true;
			break;
		}
	}
	if (!yearFound)
	{
		document.getElementById('selectYear').selectedIndex = 0;
		year = document.getElementById('selectYear').options[0].value;		
	}
	document.getElementById('selectMonth').selectedIndex = month;
	 // first day of the month.
	var fristDayOfMonthObj = new Date(year, month, 1);
	var firstDayOfMonth = fristDayOfMonthObj.getDay();
	continu		= true;
	firstRow	= true;
	var x	= 0;
	var d	= 0;
	var trs = []
	var ti = 0;
	while (d <= getDaysPerMonth(month, year))
	{
		if (firstRow)
		{
			trs[ti] = document.createElement("TR");
			if (firstDayOfMonth > 0)
			{
				while (x < firstDayOfMonth)
				{
				trs[ti].appendChild(document.createElement
                                ("TD"));
				x++;
				}
			}
			firstRow = false;
			var d = 1;
		}
		if (x % 7 == 0)
		{
			ti++;
			trs[ti] = document.createElement("TR");
		}
		if (day && d == day)
		{
			var setID = 'calenderChoosenDay';
			var styleClass = 'choosenDay';
			var setTitle = 'this day is currently selected';
		}
		else if (d == curDay && month == curMonth && year == curYear)
		{
			var setID = 'calenderToDay';
			var styleClass = 'toDay';
			var setTitle = 'this day today';
		}
		else
		{
			var setID = false;
			var styleClass = 'normalDay';
			var setTitle = false;
		}
		var td = document.createElement("TD");
		td.className = styleClass;
		if (setID)
		{
			td.id = setID;
		}
		if (setTitle)
		{
			td.title = setTitle;
		}
		td.onmouseover = new Function('highLiteDay(this)');
		td.onmouseout = new Function('deHighLiteDay(this)');
		if (targetEl)
			td.onclick = new Function(
                           'pickDate('+year+', '+month+', '+d+')'
                           );
		else
			td.style.cursor = 'default';
		td.appendChild(document.createTextNode(d));
		trs[ti].appendChild(td);
		x++;
		d++;
	}
	return trs;
}
function showCalender(elPos, tgtEl)
{
	targetEl = false;
	if (document.getElementById(tgtEl))
	{
		targetEl = document.getElementById(tgtEl);
	}
	else
	{
		if (document.forms[0].elements[tgtEl])
		{
			targetEl = document.forms[0].elements[tgtEl];
		}
	}
	var calTable = document.getElementById('calenderTable');
	var positions = [0,0];
	var positions = getParentOffset(elPos, positions);	
	calTable.style.left = positions[0]+'px';		
	calTable.style.top = positions[1]+'px';			
	calTable.style.display='block';
	var matchDate = new RegExp('^([0-9]{2})-([0-9]{2})-([0-9]{4})$');
	var m = matchDate.exec(targetEl.value);
	if (m == null)
	{
		trs = createCalender(false, false, false);
		showCalenderBody(trs);
	}
	else
	{
		if (m[1].substr(0, 1) == 0)
			m[1] = m[1].substr(1, 1);
		if (m[2].substr(0, 1) == 0)
			m[2] = m[2].substr(1, 1);
		m[2] = m[2] - 1;
		trs = createCalender(m[3], m[2], m[1]);
		showCalenderBody(trs);
	}
	hideSelect(document.body, 1);
}
function showCalenderBody(trs)
{
	var calTBody = document.getElementById('calender');
	while (calTBody.childNodes[0])
	{
		calTBody.removeChild(calTBody.childNodes[0]);
	}
	for (var i in trs)
	{
		calTBody.appendChild(trs[i]);
	}
}
function setYears(sy, ey)
{
	 // current Date
	var curDate = new Date();
	var curYear = getRealYear(curDate);
	if (sy)
		startYear = curYear;
	if (ey)
		endYear = curYear;
	document.getElementById('selectYear').options.length = 0;
	var j = 0;
	for (y=ey; y>=sy; y--)
	{
	document.getElementById('selectYear')[j++] = new Option(y, y);
	}
}
function hideSelect(el, superTotal)
{
	if (superTotal >= 100)
	{
		return;
	}
	var totalChilds = el.childNodes.length;
	for (var c=0; c<totalChilds; c++)
	{
		var thisTag = el.childNodes[c];
		if (thisTag.tagName == 'SELECT')
		{
		if (thisTag.id != 'selectMonth' && thisTag.id != 'selectYear')
		{
		var calenderEl = document.getElementById('calenderTable');
		var positions = [0,0];
		var positions = getParentOffset(thisTag, positions);	// nieuw
		var thisLeft	= positions[0];
		var thisRight	= positions[0] + thisTag.offsetWidth;
		var thisTop	= positions[1];
		var thisBottom	= positions[1] + thisTag.offsetHeight;
		var calLeft	= calenderEl.offsetLeft;
		var calRight	= calenderEl.offsetLeft + calenderEl.offsetWidth;
		var calTop	= calenderEl.offsetTop;
		var calBottom	= calenderEl.offsetTop + calenderEl.offsetHeight;
		if (
		(
		// check if it overlaps horizontally 
		(thisLeft >= calLeft && thisLeft <= calRight)
		||
		(thisRight <= calRight && thisRight >= calLeft)
		||
		(thisLeft <= calLeft && thisRight >= calRight)
		)
		&&
		(
		// check if it overlaps vertically 
		(thisTop >= calTop && thisTop <= calBottom)
		||
		(thisBottom <= calBottom && thisBottom >= calTop)
		||
		(thisTop <= calTop && thisBottom >= calBottom)
		)
		)
		{
		hideSelectTags[hideSelectTags.length] = thisTag;
		thisTag.style.display = 'none';
		}
		}
		}
		else if(thisTag.childNodes.length > 0)
		{
			hideSelect(thisTag, (superTotal+1));
		}
	}
}
function closeCalender()
{
	for (var i=0; i<hideSelectTags.length; i++)
	{
		hideSelectTags[i].style.display = 'block';
	}
	hideSelectTags.length = 0;
	document.getElementById('calenderTable').style.display='none';
}
function highLiteDay(el)
{
	el.className = 'hlDay';
}
function deHighLiteDay(el)
{
	if (el.id == 'calenderToDay')
		el.className = 'toDay';
	else if (el.id == 'calenderChoosenDay')
		el.className = 'choosenDay';
	else
		el.className = 'normalDay';
}
function pickDate(year, month, day)
{
	month++;
	day	= day < 10 ? '0'+day : day;
	month	= month < 10 ? '0'+month : month;
	if (!targetEl)
	{
		alert('target for date is not set yet');
	}
	else
	{
		targetEl.value= day+'-'+month+'-'+year;
		closeCalender();
	}
}
function getParentOffset(el, positions)
{
	positions[0] += el.offsetLeft;
	positions[1] += el.offsetTop;
	if (el.offsetParent)
	  positions = getParentOffset(el.offsetParent, positions);
	return positions;
}

function check_values()
{
     if (document.EventCalender.datum1.value == "") 
     {
          alert("Please choose the date")
          return false;
     }
	
	
}

function xstooltip_findPosX(obj) 
{
  var curleft = 0;
  if (obj.offsetParent) 
  {
    while (obj.offsetParent) 
        {
            curleft += obj.offsetLeft
            obj = obj.offsetParent;
        }
    }
    else if (obj.x)
        curleft += obj.x;
    return curleft;
}
function xstooltip_findPosY(obj) 
{
    var curtop = 0;
    if (obj.offsetParent) 
    {
        while (obj.offsetParent) 
        {
            curtop += obj.offsetTop
            obj = obj.offsetParent;
        }
    }
    else if (obj.y)
        curtop += obj.y;
    return curtop;
}

function tolscript(tooltipId, parentId, posX, posY)
{
    it = document.getElementById(tooltipId); 
    if ((it.style.top == '' || it.style.top == 0) 
        && (it.style.left == '' || it.style.left == 0))
    {
        // need to fixate default size (MSIE problem)
        it.style.width = it.offsetWidth + 'px';
        it.style.height = it.offsetHeight + 'px';
        
        img = document.getElementById(parentId); 
    
        // if tooltip is too wide, shift left to be within parent 
        if (posX + it.offsetWidth > img.offsetWidth) posX = img.offsetWidth - it.offsetWidth;
        if (posX < 0 ) posX = 0; 
        
        x = xstooltip_findPosX(img) + posX;
        y = xstooltip_findPosY(img) + posY;
        
        it.style.top = y + 'px';
        it.style.left = x + 'px';
    }
   
    it.style.visibility = 'visible'; 
}
function tolhid(tooltipId)
{
    it = document.getElementById(tooltipId);    
    it.style.visibility = 'hidden'; 
}
function val()
{
msg="";
if (document.contactform.datum1.value == "") 
 msg=msg+"Please Choose the Date\n";
if (document.contactform.last_name.value == "") 
 msg=msg+"Please Enter Name\n";
if (document.contactform.Orgn_name.value == "") 
 msg=msg+"Please Enter Organization Name\n";
if (document.contactform.designation.value == "") 
 msg=msg+"Please Enter Designation\n";
if (document.contactform.nationality.value == "") 
 msg=msg+"Please Enter Nationality\n";
if (document.contactform.PhNo.value == "") 
 msg=msg+"Please Enter Phone No\n";
if (document.contactform.MNo.value == "") 
 msg=msg+"Please Enter Mobile No\n";
if (document.contactform.email.value == "") 
 msg=msg+"Please Enter Mail Id\n";
if (document.contactform.PreAdd.value == "") 
 msg=msg+"Please Enter Present Address\n";
if (document.contactform.PerAdd.value == "") 
 msg=msg+"Please Enter Permanent Address\n";
if (document.contactform.Edes.value == "") 
 msg=msg+"Please Enter Event Description\n";
if (msg=="")
 return true;
else
 alert(msg)
 return false;
}

function validate(form_id,email) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   var address = document.forms[form_id].elements[email].value;
   if(reg.test(address) == false) {
      alert('Invalid Email Address');
      document.contactform.email.focus();
      return false;
   }
}


function ValidatePhno()
{
    if(!ValidateNo(document.contactform.PhNo.value,"1234567890+- "))    
    {
        alert("Please Enter Only Number");
        document.contactform.PhNo.focus();
        return false;
    }
}

function ValidateMno()
{
    if(!ValidateNo(document.contactform.MNo.value,"1234567890+- "))    
    {
        alert("Please Enter Only Number");
        document.contactform.MNo.focus();
        return false;
    }
}


function ValidateNo(NumStr, String)
{    
for(var Idx=0; Idx<NumStr.length; Idx++)    
{       
 var Char = NumStr.charAt(Idx);        
 var Match = false;        
 for(var Idx1=0; Idx1<String.length; Idx1++)
 {
  if(Char == String.charAt (Idx1))
  Match = true;
 }
 if (!Match)
 return false;
}
return true;
} 