var fixflashid = 0;
var bodyclass = '';
var http_request;
var ajaxcallback;
var hashtimer=null;
var hashtag='';
var pagelinkfade=0;
var pagelinkget=0;

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;
}

function cmsutil_pagelinkcallback()
{
	if( pagelinkfade == 2 && pagelinkget == 2 )
	{
		pagelinkfade = 0;
		pagelinkget = 0;
//		jQuery('.layoutcontent').html(jQuery('#layoutajaxresult .layoutcontent').html());
//		document.getElementById('layoutcontent').innerHTML = pageretrievedhtml.match(/<!-- LAYOUTCONTENT_START -->[\s\S]*<!-- LAYOUTCONTENT_END -->/m);

		html = pageretrievedhtml.match(/<!-- LAYOUTBREADCRUMB_START -->[\s\S]*<!-- LAYOUTBREADCRUMB_END -->/m);
		jQuery('.layoutbreadcrumb').html(html+'');
		cmsutil_pagelinksetup('.layoutbreadcrumb a');

		html = pageretrievedhtml.match(/<!-- LAYOUTCONTENT_START -->[\s\S]*<!-- LAYOUTCONTENT_END -->/m);
		jQuery('.layoutcontent').html(html+'');
		cmsutil_pagelinksetup('.layoutcontent a');

		//		jQuery('#layoutajaxresult').html('');
		jQuery('.layoutcontent').fadeIn(1000);
		if( typeof nav_animate_stop == 'function' ) { nav_animate_stop(); }
	}
}

function cmsutil_checkhashtag()
{
	link = document.location.href;
	
	matches = link.match(/#(\w.*)/);
	if( matches ) { hash = matches[1]; } else { hash = ''; }

	if( hash != hashtag )
	{
		hashtag = hash;
		if( hash.length == 0 ) { cmsutil_navigate(document.location.href); }
		else { cmsutil_navigate(jQuery.base64Decode(hash)); }
	}
	
	hashtimer = setTimeout('cmsutil_checkhashtag()',500);
}

function cmsutil_navigate( href )
{
	jQuery('.layoutcontent').fadeOut(1000,function() {
		pagelinkfade = 2;
		cmsutil_pagelinkcallback();
	});
	
//	jQuery('#layoutajaxresult').load(href+' .layoutcontent',function() {
	jQuery.get(href,function( data ) {
//		alert(data);
		pageretrievedhtml = data;
		pagelinkget = 2;
		cmsutil_pagelinkcallback();
	});
	
	if( typeof nav_animate_start == 'function' ) { nav_animate_start(href); }
}

function cmsutil_pagelinksetup( selector, loadspeed )
{
	if( document.body.innerHTML.indexOf('<!-- LAYOUTCONTENT_START -->') < 1 ) { return; }
	
	if( hashtimer == null ) { hashtimer = setTimeout('cmsutil_checkhashtag()',500); }
	
	jQuery(selector).bind('click',function() {
		href = jQuery(this).attr('href');
		if( href.substring(0,4) == 'http' || href.substring(0,10) == 'javascript' || href.indexOf('.php') < 1 ) { return true; }

		pagelinkget = 1;
		pagelinkfade = 1;
		
		hashtag = jQuery.base64Encode(href);
		document.location.href = '#'+hashtag;
		
		cmsutil_navigate(href);
		
		return false;
	});

}

