/***
 * window.onload Stack
 */
function go() {
document.location = document.BAAform.choice.options[document.BAAform.choice.selectedIndex].value
}

function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} 
	else {
		window.onload = function() {
			if (oldonload) oldonload();
			func();
		}
	}
}

/**
 * Module:	Remote Calendar
 * Creator:	Andreas Nebiker (andreas.nebiker@netarchitects.com)
 * Version:	1.06
 *			-> See RemoteCalendarControl for Details
 */

function getCoords (element) {
	var objCoords = new Object();
	objCoords.x = element.offsetLeft;
	objCoords.y = element.offsetTop;
	
	while (element = element.offsetParent) {
		objCoords.x += element.offsetLeft;
		objCoords.y += element.offsetTop;
	}
	
	return objCoords;
}

function getWindowSizes () {
	var objSizes = new Object();

	// all except ie
	if (self.innerHeight) { 														
		objSizes.x = self.innerWidth;
		objSizes.y = self.innerHeight;
	}
	// ie 6 strict mode
	else if (document.documentElement && document.documentElement.clientHeight) {	
		objSizes.x = document.documentElement.clientWidth;
		objSizes.y = document.documentElement.clientHeight;
	}
	// other ies
	else if (document.body) { 														
		objSizes.x = document.body.clientWidth;
		objSizes.y = document.body.clientHeight;
	}
	
	return objSizes;
}
 
function calendarDropdownDisplay (element) {
	var elemDropdown;
	if (element && element.getElementsByTagName('ul')[0]) {
		elemDropdown = element.getElementsByTagName('ul')[0];
		elemDropdown.style.display = 'block';
	}
}

function calendarDropdownHide (element) {
	var elemDropdown;
	if (element && element.getElementsByTagName('ul')[0]) {
		elemDropdown = element.getElementsByTagName('ul')[0];
		elemDropdown.style.display = 'none';
	}
}

function initCalendar () {
	if (!document.getElementById) return false;
	if (!document.getElementsByTagName) return false;
		
	var arrCalendars = new Array();
	var arrDropdowns = new Array('selectmonth', 'selectquarter', 'selectyear');
	var arrDivs = document.getElementsByTagName('div');
	var arrEvents = new Array();
	var arrErrors = new Array();
	var a,e,i;
	
	// navigation
	for (var i = 0; i < arrDropdowns.length; i++) {
		if (document.getElementById(arrDropdowns[i])) {
			arrDropdowns[i] = document.getElementById(arrDropdowns[i]);
			arrDropdowns[i].onmouseover	= function() {
				calendarDropdownDisplay(this);
			}
			arrDropdowns[i].onmouseout = function() {
				calendarDropdownHide(this)
			}
		}
	}
	
	// calendars, entries and errors
	if (arrDivs.length > 0) {
		for (var i = 0; i < arrDivs.length; i++) {
		
			// get errors
			if (arrDivs[i].className && arrDivs[i].className.indexOf('calerror') != -1) {
				arrErrors.push(arrDivs[i]);
			}
		
			// get calendars
			if ( (arrDivs[i].className && arrDivs[i].className.indexOf('calendar') != -1) || (arrDivs[i].className && arrDivs[i].className.indexOf('catlist') != -1) ) {
				arrCalendars.push(arrDivs[i]);
			}
			
			// get & set events			
			if (arrDivs[i].className && arrDivs[i].className.indexOf('calevent') != -1) {
				if (arrDivs[i].getElementsByTagName('dl')[0]) {
					arrDivs[i].info = arrDivs[i].getElementsByTagName('dl')[0];
					
					arrDivs[i].onmouseover = function () {
						var entry 		= (this.info)? this: this.parentNode;
						var info 		= entry.info;	
						var overflowY	= 0;
						var overflowX	= 0;
						var scrollX 	= (document.documentElement.scrollTop == 0)?	document.body.scrollTop: document.documentElement.scrollTop;
						var scrollY 	= (document.documentElement.scrollLeft == 0)?	document.body.scrollLeft: document.documentElement.scrollLeft;
							
						// display infobox
						entry.style.zIndex = '1000';
					 	info.style.display = 'block';						
					
						// move infobox up if it would not be visible in its original spot
						overflowY = getCoords(info).y + info.offsetHeight - (scrollX + getWindowSizes().y);	
						if (overflowY > 0) {
							info.style.top = parseInt(info.style.top - overflowY) - 1 + 'px';
						}
						
						// move infobox left if it would not be visible in its original spot
						overflowX = getCoords(info).x + info.offsetWidth - (scrollY + getWindowSizes().x);	
						if (overflowX > 0) {
							info.style.left = parseInt(info.style.left - overflowX) - 1 + 'px';
						}
					}
					
					arrDivs[i].onmouseout = function () {
						var entry	= (this.info)? this: this.parentNode;
						var info	= entry.info;
						
						// hide infobox and reset temporary changes
						info.style.display	= 'none';
						entry.style.zIndex	= '0';
						info.style.top 		= null;
						info.style.left 	= null;
					}
					
					arrDivs[i].info.onmouseover	= arrDivs[i].onmouseover;
					arrDivs[i].info.onmouseout	= arrDivs[i].onmouseout;
				}
			}
		}
		
		// set errors
		if (arrErrors.length > 0) {
			for (e = 0; e < arrCalendars.length; e++) {
				for (var a = 0; a < arrCalendars[e].childNodes.length; a++) {
					if (arrCalendars[e].childNodes[a].style) arrCalendars[e].childNodes[a].style.opacity = '.7';
				}
			}
			for (e = 0; e < arrErrors.length; e++) {
				arrErrors[e].style.display = 'block';
				arrErrors[e].style.opacity = '1';				
			}
		}
	}
}

addLoadEvent(initCalendar);

/***
 * IE Objectload Fix
 */ 
 
// replace the contents of object-tags by themselves
function fixIEObjectLoad() {
	var arrObjects = document.getElementsByTagName('object');
	for (var i = 0; i < arrObjects.length; i++) {
		if (arrObjects[i].outerHTML)
			arrObjects[i].outerHTML = arrObjects[i].outerHTML;
	}
}

// run after page has fully loaded	
addLoadEvent(fixIEObjectLoad);

/* k */

// detectbrowser

var detect = navigator.userAgent.toLowerCase(); // check browser

// check browser 
function checkbrowser(string) {
	if(detect.indexOf(string)>0) return true; 
	return false;
}

// get element by id 
function getId(id)  {
	return document.getElementById(id);
}

/* --------------------------------------------------------------  */
/* Search Box Functions --------------------------------------------  */
/* --------------------------------------------------------------  */


function switchSearch(){
	

	alert(document.getElementById("searchtype").value);

	var val = document.getElementById("searchtype").value;
	
	switch (val){
	
		case "pg":			document.all.search.action = "";				
							break;
		case "collegues":	document.all.search.action = "";
							break;
	}
	alert(document.all.search.action);
	//document.all.search.submit();
}






/* --------------------------------------------------------------  */
/* Top Menu Functions --------------------------------------------  */
/* --------------------------------------------------------------  */


function showMenu(obj){
	
  if(checkbrowser('msie') && !checkbrowser('opera')) {
    if(!getId("diviframe")) {
      var iframe = document.createElement("iframe");
      iframe.id = "diviframe";
      document.body.appendChild(iframe);
    }
    iframe.style.top = getId(obj).offsetTop;
    iframe.style.left = getId(obj).offsetLeft;
    iframe.style.width = getId(obj).offsetWidth;
    iframe.style.height = getId(obj).offsetHeight;
    iframe.style.display = 'block';
  }
	getId(obj).style.visibility='visible';
}

function hideMenu(obj){
	if(getId("diviframe")) document.body.removeChild(getId("diviframe"));
	getId(obj).style.visibility='hidden';
}

function placeMenu(){
  var pos1 = document.all['topa1'];		// depending on A tag position
  with (document.all['topdiv1'].style) {	// plave div tag
      posLeft = getLeft(pos1) - 9;
      posTop = getTop(pos1) + 18;	  
  }
  
  var pos2 = document.all['topa2'];
  
  if (pos2){
  	  with (document.all['topdiv2'].style) {
      	posLeft = getLeft(pos2) - 6;
      	posTop = getTop(pos2) + 18;	  
  	  }  	
  } 
  
  var pos3 = document.all['topa3'];
  
  if (pos3){
  	  with (document.all['topdiv3'].style) {
      	posLeft = getLeft(pos3) - 9;
      	posTop = getTop(pos3) + 18;	  
  	  }  	
  }   
  
 	  
}

function getLeft(l){
  if (l && l.offsetParent) return (l.offsetLeft + getLeft(l.offsetParent));
  else return (l.offsetLeft);
}

function getTop(l){
  if (l && l.offsetParent) return (l.offsetTop + getTop(l.offsetParent));
  else return (l.offsetTop);
}


/* --------------------------------------------------------------  */
/* Line Menu Functions ------------------------------------------  */
/* --------------------------------------------------------------  */

var offsetX = 0;
var offsetY = 0;

var navline1X, navline2X, navline3X, navarrow1X, navarrow2X, navarrow3X = 0;
var navline1Y, navline2Y, navline3Y, navarrow1Y, navarrow2Y, navarrow3Y = 0;


function findOffsetTop (obj) {
	var curtop = 0;
	if (obj && obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	} else if (obj && obj.y) {
		curtop += obj.y;
	}
	return (curtop);
} 

function findOffsetLeft (obj) {
	var curleft = 0;
	if (obj && obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	} else if (obj && obj.y) {
		curleft += obj.x;
	}
	return curleft;
}

function initNavline() {
	offsetY = (findOffsetTop(document.images['position']) - 95);
	offsetX = (findOffsetLeft(document.images['position']));
	
	navline1X = offsetX + 178;
	navline2X = offsetX + 424;
	navline3X = offsetX + 674;
	navarrow1X = offsetX + 183;
	navarrow2X = offsetX + 431;
	navarrow3X = offsetX + 681;	
	navline1Y = offsetY;
	navline2Y = offsetY;
	navline3Y = offsetY;
	navarrow1Y = offsetY;
	navarrow2Y = offsetY;
	navarrow3Y = offsetY;
	
	var BALogoLink = 'BA';
	if(getId(BALogoLink)) getId(BALogoLink).style.left = (offsetX + 862);
	if(getId(BALogoLink)) getId(BALogoLink).style.top = (offsetY - 81);
	if(getId(BALogoLink)) getId(BALogoLink).style.visibility = "visible";
	showAllNavDiv();
}

addLoadEvent(initNavline);

//var navelement = "";

//function showAllNavDiv() {
//	if(navelement) showNavDiv(navelement);
//}

function showNavDiv(divName) {
	zx = getId(divName);
	if (zx){
		zx.style.left = eval(divName + 'X');
		zx.style.top = eval(divName + 'Y');
		zx.style.visibility = "visible";
	}
}

/* --------------------------------------------------------------  */
/* Variables ----------------------------------------------------  */
/* --------------------------------------------------------------  */
leftMenuBGColorMouseOver = '#FFFFFF';
leftMenuBGColorMouseOut = '#EFEFEF';

/* --------------------------------------------------------------  */
/* General Functions --------------------------------------------  */
/* --------------------------------------------------------------  */
function leftMenuMouseOver(mytag) {
	mytag.style.backgroundColor = leftMenuBGColorMouseOver;
	return true;
}

function leftMenuMouseOut(mytag) {
	mytag.style.backgroundColor = leftMenuBGColorMouseOut;
	return true;
}

function GetTime () 
{ 
	var dt 	= new Date();
	var def = dt.getTimezoneOffset()/60;
	var gmt = (dt.getHours() + def);

	var baselTz		= 1 + getDSTOffset("EU", 1);
	var nutleyTz	= getDSTOffset("US", def+5)-5;
	var tokyoTz		= 9;
	var dhakaTz	= getDSTOffset("EU", 1);

	var ending 	= ":" + IfZero(dt.getMinutes()) + ":" +  IfZero(dt.getSeconds());
	var basel 	= check24(((gmt + baselTz) > 24) ? ((gmt + baselTz) - 24) : (gmt + baselTz));
	var tokyo 	= check24(((gmt + tokyoTz) > 24) ? ((gmt + tokyoTz) - 24) : (gmt + tokyoTz));
	var nutley 	= check24(((gmt + nutleyTz) > 24) ? ((gmt + nutleyTz) - 24) : (gmt + nutleyTz));
	var dhaka 	= check24(((gmt + dhakaTz) > 24) ? ((gmt + dhakaTz) - 24) : (gmt + dhakaTz));

	var localHours 	= dt.getHours();
	var local 		= IfZero(dt.getHours()) + ending;
	var localTime	= "Local: "+local;
	var baselTime	= "Basel: "+basel+ending;
	var tokyoTime	= "Tokyo: "+tokyo+ending;
	var nutleyTime	= "Nutley: "+nutley+ending;
	var dhakaTime	= "dhaka: "+dhaka+ending;

	var space = "&nbsp;";
	
	var timeBar = baselTime + space + nutleyTime + space + dhakaTime + space + tokyoTime + space + localTime;
	
	document.all.timeBar.innerHTML = timeBar;
}

// add Zero to number 0-9
function IfZero(num) {
	return ((num <= 9) ? ("0" + num) : num);
}

// get selected date
function getDate(curdate, month, day, hour) {
	return Date.UTC(curdate.getUTCFullYear(), month, day, hour);
}

// DST for selected areas (daylight saving time)
function getDST(area, dif, utctime) {
	var curdate = new Date();
	var curyear = curdate.getUTCFullYear();

	switch(area) {
		case "EU":
    		var dstDayB = 31 - (Math.floor(5*curyear/4) + 1) % 7;
    		dstDayA = 31 - (Math.floor(5*curyear/4) + 4) % 7;
		  	var dstStart = getDate(curdate, 2, dstDayA, 1);   // GMT time
			var dstEnd = getDate(curdate, 9, dstDayB, 1);     // GMT time

			if(utctime >= dstStart && utctime < dstEnd) return 1;

			return 0;
		break;
		
		case "US":
			//valid till 2006
			//var dstDayA = 7 - (Math.floor(5*curyear/4) + 4) % 7;
			//var dstDayB = 31 - (Math.floor(5*curyear/4) + 1) % 7;
			//valid from 2007
			var dstDayA = 14 - (Math.floor(5*curyear/4) + 1) % 7;
 			var dstDayB = 7 - (Math.floor (5*curyear/4) + 1) % 7;
			var dstStart = getDate(curdate, 2, dstDayA, 2);
			var dstEnd = getDate(curdate, 10, dstDayB, 3);

			utctime = utctime-(dif*3600000);
			
			if(utctime >= dstStart && utctime < dstEnd) return 1;
			return 0;
 		break;
		
		case "EST":
			var dstDayB = 6 - (Math.floor(5*curyear/4) + 4) % 7;
			dstDayA = 31 - (Math.floor(5*curyear/4) + 1) % 7;
			var dstStart = getDate(curdate, 2, dstDayB, 2);   // GMT time
			var dstEnd = getDate(curdate, 9, dstDayA, 2);     // GMT time

			utctime = utctime-(dif*3600000);

			if(utctime <= dstStart || utctime >= dstEnd) return 1;
			return 0;
 		break;
		 
		case "BRST":
    		var dstDayB = 17 - (Math.floor(5*curyear/4) + 1) % 7;
    		dstDayA = 24 - (Math.floor(5*curyear/4) + 4) % 7;  
		  	var dstStart = getDate(curdate, 1, dstDayA, 0);   // GMT time
			var dstEnd = getDate(curdate, 9, dstDayB, 0);     // GMT time

			if(utctime <= dstStart || utctime >= dstEnd) return 1;

			return 0;
 		break; 
		  
		default:
 			return 0;
		break;
	}
}

function getInfoTime(area, hour, utctime){
	this.TimeUTCOffset = hour;
	this.TimeZoneOffset = getDST(area, hour, utctime);
}

// init
function initTime() {
	this.dt = new Date();
	this.dif = this.dt.getTimezoneOffset()/60;
	this.UTCTime = Date.UTC(this.dt.getUTCFullYear(), this.dt.getUTCMonth(), this.dt.getUTCDate(), this.dt.getUTCHours());
	this.ending = ":" + IfZero(this.dt.getMinutes());// + ":" +  IfZero(this.dt.getSeconds());
}

// get Hour for selected place
function toGetHourForPlace(date, place) {
  var hour = date.getUTCHours()+place.TimeUTCOffset+place.TimeZoneOffset;
  return IfZero((hour>=24)?hour-24:((hour<0)?24-hour:hour));
}

function PGTime() { 

	if ($('timeBox_head_time')) {
	
	
		var hTz, aTz, bTz, cTz, dTz;
		var hTime, aTime, bTime, cTime, dTime;
		var hName, aName, bName, cName, dName;
		
		var init = new initTime();
		  
		if (document.all.siteId) {
			
			var siteId = document.all.siteId.value;
			
			var local 	= init.dt.getHours() + init.ending;
			var basel 	= new getInfoTime("EU", 1, init.UTCTime);
			var nutley 	= new getInfoTime("US", -5, init.UTCTime);
			var dhaka 	= new getInfoTime("EST", 6, init.UTCTime);
			var deewhy 	= new getInfoTime("EST", 10, init.UTCTime);  
		
			if (siteId=="pg") {
			  	
				var saopaulo = new getInfoTime("US", -3, init.UTCTime);
				//var saopaulo = new getInfoTime("US", -2, init.UTCTime);
				
				hName="Basel";
				aName="Dhaka time"
				bName="Nutley";
				cName="Dee Why";
				dName="Sao Paulo";
			}
			
			if(siteId=="pgl"){
			
				var saopaulo = new getInfoTime("US", -8, init.UTCTime);
				
				hName="Basel";
				aName="dhaka";
				bName="Nutley";
				cName="Dee Why";
				dName="Palo Alto";
			}
		}
		
		var hTimeH = toGetHourForPlace(init.dt, basel); 
		var aTimeH = toGetHourForPlace(init.dt, dhaka); 
		var bTimeH = toGetHourForPlace(init.dt, nutley); 
		var cTimeH = toGetHourForPlace(init.dt, deewhy); 
		var dTimeH = toGetHourForPlace(init.dt, saopaulo); 
			
		hTime =  hTimeH + init.ending;
		aTime =  aTimeH + init.ending;
		bTime =  bTimeH + init.ending;
		cTime =  cTimeH + init.ending;
		dTime =  dTimeH + init.ending;
		
		var localHours 	= init.dt.getHours();
		var local 		= init.dt.getHours() + init.ending;
		var localTime	= local;
		
		var head_time, A_name, A_time, B_name, B_time, C_name, C_time, D_name, D_time;
		
		//if basel tz
		if (localHours == hTimeH) {
			//head_time=localTime;
			A_name=aName;
			A_time=aTime;
			B_name=bName;
			B_time=bTime;
			C_name=cName;
			C_time=cTime;
			D_name=dName;
			D_time=dTime;
		}
		
		else if(localHours == bTimeH){
			//head_time=bTime;
			A_name=aName;
			A_time=aTime;
			B_name=hName;
			B_time=hTime;
			C_name=cName;
			C_time=cTime;
			D_name=dName;
			D_time=dTime;
		}
		else if(localHours == cTimeH){
			//head_time=cTime;
			A_name=aName;
			A_time=aTime;
			B_name=bName;
			B_time=bTime;
			C_name=hName;
			C_time=hTime;
			D_name=dName;
			D_time=dTime;
		}
		else if(localHours == dTimeH){
			//head_time=dTime;
			A_name=aName;
			A_time=aTime;
			B_name=bName;
			B_time=bTime;
			C_name=cName;
			C_time=cTime;
			D_name=hName;
			D_time=hTime;
		}
		else {
			//head_time=aTime;
			A_name=hName;
			A_time=hTime;
			B_name=bName;
			B_time=bTime;
			C_name=cName;
			C_time=cTime;
			D_name=dName;
			D_time=dTime;
		}
		
		
		head_time=localTime;
		
		
		$('timeBox_head_time').innerHTML = head_time;
		$('timeBox_A_name').innerHTML = A_name;
		$('timeBox_A_time').innerHTML = A_time;
		//document.all.timeBox_B_name.innerHTML = B_name;
		//document.all.timeBox_B_time.innerHTML = B_time;
		//document.all.timeBox_C_name.innerHTML = C_name;
		//document.all.timeBox_C_time.innerHTML = C_time;
		//document.all.timeBox_D_name.innerHTML = D_name;
		//document.all.timeBox_D_time.innerHTML = D_time;
		
		// end
		
		setTimeout("PGTime()", 1000);
	}
}

//addLoadEvent(PGTime);

/* --------------------------------------------------------------  */
/* Form Validation ----------------------------------------------  */
/* --------------------------------------------------------------  */

function checkSearch(myForm) {
	var re= new RegExp("\\w{2}");
	
	if (re.test(myForm.query.value)==false) {
		alert("At least two characters are required!");
		myForm.query.focus();
		return false;
	}
}

function submitSearchCollegue(){
	var re= new RegExp("\\w{2}");
	
	var result=re.test(document.searchCollegueForm.sName.value);
	if(result==false){
		alert("At least two characters are required!");
		return false;
	}
	else{
		searchCollegueForm.submit();
		return true;
	}
}

function checkSearchCollegueInput(myForm){

	var re= new RegExp("\\w{2}");
	
	if(re.test(myForm.sName.value)==false){
		alert("At least two characters are required!");
		myForm.sName.focus();
		return false;
	}

}

function checkSearchCollegueInputAdvanced(myForm){

	var re= new RegExp("\\w{2}");
	
	if(re.test(myForm.sName.value)==false && re.test(myForm.gName.value)==false && re.test(myForm.dept.value)==false && re.test(myForm.l.value)==false){
		alert("Fill in at least one field with at least two characters!");
		myForm.sName.focus();
		return false;
	}
	else{
		myForm.submit();
		return true;
	}

}

/* function to Trincate long URLs displayed next to Find Similar link on the search page */

function truncSearchUrl(str){
        var maxLen = 85;
        var startStrLen = 55;
        var endStrLen = 30;
        
        if (str.length > parseInt(maxLen)){            
            document.write(str.substr(0,startStrLen) + "..." + str.substr(str.length-endStrLen,str.length));            
        }
		else { 
			document.write(str);
		}
} 

function loadPage(cmd){
	//alert(cmd)
	//var url = 'http://www.banglaacademy.com/app/ba_manager/ba_manager.php';                                    
	var url = '/app/ba_manager/ba_manager.php';                                    

	
  var params = 'cmd=' + cmd; 
  /*$('ba_content').innerHTML    = "<div width=100%><img src='/app_contents/common/image/loading.gif'></div>";                        
  var ajax = new Ajax.Updater(                                 
  {success: 'ba_content'},                                      
  url,                                                         
  {method: 'get', parameters: params, onFailure: reportError});*/
  location.href =url+'?'+params;
                                                             
  } 
  

  
function reportError(request)
{
	alert(request.responseText)
}                                                            