var fixflashid = 0;
var bodyclass = '';
var http_request;
var ajaxcallback;

function fixflash_start()
{
   if( fixflash_isIE() )
   {
      document.write('<div id="fixflash' + fixflashid + '"><!-- ');
   }
}

function fixflash_end()
{
   if( fixflash_isIE() )
   {
      document.write('</div>');
      var theObject = document.getElementById("fixflash" + fixflashid++);
      var theCode = theObject.innerHTML;
      theCode = theCode.substring(4 ,9+theCode.indexOf("</object>"));
      document.write(theCode);
   }
}

function fixflash_isIE()
{
   var strBrwsr= navigator.userAgent.toLowerCase();
   if( strBrwsr.indexOf("msie") > -1 && strBrwsr.indexOf("mac") < 0 )
   {
      if( parseInt(strBrwsr.charAt(strBrwsr.indexOf("msie")+5)) < 6 ) { return false; }
      if( strBrwsr.indexOf("win98") > -1 ||
          strBrwsr.indexOf("win 9x 4.90") > -1 ||
          strBrwsr.indexOf("winnt4.0") > -1 ||
          strBrwsr.indexOf("windows nt 5.0") > -1 ) { return false; }

      return true;
   }
   else { return false; }
}

function printpage()
{
   obj = document.getElementById('body');
   bodyClass = obj.className;
   obj.className = bodyClass + ' condprint';
   self.setTimeout('window.print()',1);
   self.setTimeout('revertpage()',1000);
}

function revertpage()
{
   obj = document.getElementById('body');
   obj.className = bodyclass;
}

function messagebox( message )
{
	y = showoverlay();
	obj = document.getElementById('layoutmsgbox_text');
	obj.innerHTML = message;
	obj = document.getElementById('layoutmsgbox');
	obj.style.top = y+'px';
	obj.style.display = 'block';
}

function showoverlay()
{
	obj = document.getElementById('layoutoverlay');
	pagesize = getPageSize();
	pagescroll = getPageScroll();

	obj.style.top = '0px';
	obj.style.left = '0px';
	obj.style.width = '100%';
	obj.style.height = pagesize[1] + "px";
	obj.style.display = 'block';

	obj = document.getElementById('body');
	obj.className = obj.className + ' condoverlay';

	return pagescroll[1] + (pagesize[3] / 20);
}

function hideoverlay()
{
	obj = document.getElementById('layoutmsgbox');
	obj.style.display = 'none';
	obj = document.getElementById('layoutoverlay');
	obj.style.display = 'none';

	obj = document.getElementById('body');
	obj.className = obj.className.replace(' condoverlay','');
}

function getPageSize()
{
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 

	return arrayPageSize;
}

function getPageScroll()
{
	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('',yScroll) 
	return arrayPageScroll;
}


function cmsutil_ajax( data, callback )
{
	http_request = false;
	ajaxcallback = callback;

	if( window.XMLHttpRequest )
	{ // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) { http_request.overrideMimeType('text/html'); }
	}
	else if( window.ActiveXObject )
	{ // IE
		try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch (e)
		{
			try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
		}
	}

	if (!http_request) { return false; }

	postdata = '';
	for( i in data )
	{
		if( postdata != '' ) { postdata += '&'; }
		postdata += i + '=' + encodeURIComponent(data[i]);
	}

	http_request.onreadystatechange = cmsutil_ajax_response;
	http_request.open('POST','temp.php',true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", postdata.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(postdata);
}

function cmsutil_ajax_response()
{
	if( http_request.readyState == 4 && http_request.status == 200 )
	{
		result = http_request.responseText;

		var data = new Array();
		varlist = result.split('&');
		for( i=0; i<varlist.length; i++ )
		{
			keyval = varlist[i].split('=');
			data[keyval[0]] = decodeURIComponent(keyval[1]);
		}
		if( ajaxcallback ) { ajaxcallback(data); }
	}
}


function cmsutil_calupdate( id )
{
   seld = document.getElementById(id+'-day').value;
   selm = document.getElementById(id+'-month').value;
   sely = document.getElementById(id+'-year').value;

   start = (cmsutil_weekday(1,selm,sely)+6)%7;
   num = cmsutil_daysinmonth(selm,sely);

   if( seld < 1 || seld > num )
   {
      seld = 0;
      document.getElementById(id+'-day').value = 0;
   }

	if( seld == 0 ) { c = 'selected'; } else { c = 'available'; }
	obj = document.getElementById(id+'-box-na');
	if( obj ) { obj.className = c; }
	 
	for( i=0; i<42; i++ )
	{
		d = i-start+1;
		if( d >= 1 && d <= num )
		{
			if( d == seld ) { c = 'selected'; } else { c = 'available'; }
			val = d;
		}
		else { val = ''; c = ''; }
		document.getElementById(id+'-box-'+i).className = c;
		document.getElementById(id+'-box-'+i).innerHTML = val;
	}

	if( selm > 0 ) { disp = 'block'; } else { disp = 'none'; }
	document.getElementById(id+'-daygrid').style.display = disp;

	document.getElementById(id+'-yearlabel').innerHTML = sely;

	obj = document.getElementById(id+'-enabled');
	if( !obj || obj.checked ) { disp = 'block'; } else { disp = 'none'; }
	obj = document.getElementById(id+'-area');
	if( obj ) { obj.style.display = disp; }
	
	cmsutil_calupdatevalue(id);
}


function cmsutil_calsetvalue( id, datetime )
{
	document.getElementById(id+'-year').value = datetime.substring(0,4);
	document.getElementById(id+'-month').value = cmsutil_inttrim(datetime.substring(5,7));
	document.getElementById(id+'-day').value = cmsutil_inttrim(datetime.substring(8,10));
	document.getElementById(id+'-hour').value = datetime.substring(11,13);
	document.getElementById(id+'-minute').value = datetime.substring(14,16);
	cmsutil_calupdate(id);
}


function cmsutil_calupdatevalue( id )
{
	seld = document.getElementById(id+'-day').value;
	selm = document.getElementById(id+'-month').value;
	sely = document.getElementById(id+'-year').value;
	selh = document.getElementById(id+'-hour').value;
	selmn = document.getElementById(id+'-minute').value;

	obj = document.getElementById(id+'-value');
	if( obj ) { obj.value = cmsutil_intpad(sely,4) + '-' + cmsutil_intpad(selm,2) + '-' + cmsutil_intpad(seld,2) + ' ' + cmsutil_intpad(selh,2) + ':' + cmsutil_intpad(selmn,2) + ':00'; }
}

function cmsutil_calselect( id, box )
{
	obj = document.getElementById(id+'-day');
	if( box == 'na' ) { obj.value = '0'; } else { obj.value = document.getElementById(id+'-box-'+box).innerHTML; }
	cmsutil_calupdate(id);
}

function cmsutil_calyearchange( id, i )
{
   y = parseInt(document.getElementById(id+'-year').value) + i;

   document.getElementById(id+'-year').value = y;
   cmsutil_calupdate(id);
}

function cmsutil_daysinmonth( m, y )
{
   if( m == 2 )
   {
      if( cmsutil_leapyear(y) ) { return 29; } else { return 28; }
   }
   else if( m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12 ) { return 31; }
   else { return 30; }
}

function cmsutil_weekday( d, m, y )
{
   var dateobj = new Date();
   dateobj.setDate(d);
   dateobj.setMonth(m-1);
   dateobj.setYear(y);
   return dateobj.getDay();
}


function cmsutil_leapyear( y )
{
   if( y%4 == 0 )
   {
      if( y%400 == 0 ) { return true; }
      else if( y%100 == 0 ) { return false; }

      return true;
   }

   return false;
}


function cmsutil_intpad( num, len )
{
	while( num.length < len ) { num = '0'+num; }
	return num;
}


function cmsutil_inttrim( num )
{
	while( num.length > 1 && num.substring(0,1) == '0' ) { num = num.substring(1,num.length); }
	return num;
}
