/*Behaviours for Template*/

var ParthiTimerID = 0;
var ParthiTimerInterval = 1000; //once every 500 ms

var ParthiClockID = "site_clock_text";
var MinToMSFactor = 60000;
var HoursToMSFactor = 3600000;

var ISTUTCOffset = 5.5; //Indian Standard Time UTC offset

var PageInitEvent = null;
var PageResizeEvent = null;
var OldOnLoadEvent = null;

var SiteBodyID = "site_body";
var SiteBodyLeftID = "site_body_left";
var SiteBodyMiddleID = "site_body_middle";
var SiteBodyRightID = "site_body_right";
var SiteBodyMargin = 5;

var MainFrameID = "main_frame";
var BodyFrameID = "body";
var SideBarID = "sidebar";
var PageContentID = "page_content";
var PageInnerContentID = "page_inner_content";
var FooterID = "footer";

var MaxNumIterations = 5;
var CurNumIterations = 0;

OldOnLoadEvent = window.onload;
window.onload = SiteInit;

function SiteInit()
{
	if (OldOnLoadEvent != null)
	{
		OldOnLoadEvent();
	}

	UpdateParthiTime();
	//SiteResize();
	
	SetContentSize();


	if (PageInitEvent != null)
	{
		PageInitEvent();	
	}	

	var PageContent = document.getElementById(PageContentID);

	if (PageContent != null)
	{
		PageContent.style.visibility = "visible";
	}
	//SiteResize();
}

function SetContentSize()
{
	var PageContent = document.getElementById(PageContentID);
	var PageInnerContent = document.getElementById(PageInnerContentID);
	var SideBar = document.getElementById(SideBarID);
	var Footer = document.getElementById(FooterID);

	if (Footer != null)
	{
		Footer.style.visibility = "hidden";
	}
	
	if ((PageContent != null) && (SideBar != null) && (PageInnerContent != null))
	{
		//reset PageContent height to that of its contents
		//PageContent.style.height = "";		

		var SideBarHeight = SideBar.offsetHeight;
		//alert(PageContent.offsetHeight);
		//alert(SideBarHeight);
		if (PageInnerContent.offsetHeight > PageContent.offsetHeight)
		{
			PageContent.style.height = "";
			//reset PageContent height to that of its contents
		}
		
		if (SideBar.offsetHeight > PageContent.offsetHeight)
		{
			var PageContentHeight = SideBar.offsetHeight;
			
			PageContent.style.height = PageContentHeight  + "px";
			if (PageContent.offsetHeight > PageContentHeight)
			{
				//needed for IE 6
				var HeightDiff = PageContent.offsetHeight-PageContentHeight;

				PageContentHeight = PageContentHeight - HeightDiff; 
				if (PageContentHeight  > 0)
				{			
					PageContent.style.height = PageContentHeight  + "px";			
				}
			}			
		}
	}
	
	
	if (Footer != null)
	{
		Footer.style.visibility = "visible";
	}	
}

function SiteResize()
{
 	SetContentSize();

	if (PageResizeEvent != null)
	{
		PageResizeEvent();
	}
}

function UpdateParthiTime()
{
    if (ParthiTimerID > 0)
    {
    	clearTimeout(ParthiTimerID);
    	ParthiTimerID = 0;
    }

	var CurrentTime = new Date();
	
	/*convert time to IST*/
	// convert to msec since Jan 1 1970
	var LocalTime = CurrentTime.getTime();	
	
	// obtain local UTC offset and convert to msec
	var LocalOffset = CurrentTime.getTimezoneOffset()*MinToMSFactor;
	// obtain UTC time in msec
	var TimeUTC = LocalTime + LocalOffset;	
	// obtain and add destination's UTC time offset
	var ISTTime = TimeUTC + (HoursToMSFactor*ISTUTCOffset);	
	var ParthiTime = new Date(ISTTime);
	
	var h = ParthiTime.getHours();
	var m = ParthiTime.getMinutes();
	var s = ParthiTime.getSeconds();
	
	var IsMorning;
	
	/*convert time to AM/PM format*/
	if (h < 12)
	{
		IsMorning = true;
	}
	else
	{
		h = h-12;
		IsMorning = false;	
	}

	if (h==0)
	{
		h = 12;
	}
	
	// add a zero in front of numbers < 10
	if (m < 10) 
  	{
  		m = "0" + m;
  	}
  	
	if (s < 10) 
  	{
  		s = "0" + s;
  	}
	
	var ClockText = "Parthi Time " + h + ":"+ m + ":" + s;
	if (IsMorning)
	{
		ClockText = ClockText + " AM";	
	}
	else
	{
		ClockText = ClockText + " PM";
	}
	
	document.getElementById(ParthiClockID).innerHTML = ClockText; 	
	ParthiTimerID = setTimeout("UpdateParthiTime()", ParthiTimerInterval);
}

/*General Utility functions*/

function GetElementParent(ElementID)
{
	var Object = document.getElementById(ElementID);
		
	if (Object == null)
	{
		return null;
	}
	else
	{
		if (Object.parentElement == null)
		{
			if (Object.parentNode == null)
			{
				return null;
			}
			else
			{
				return Object.parentNode;
				//works in FireFox
			}
		}
		else
		{
			//works in IE
			return Object.parentElement;
		}		
	}
}

function NeedToScrollElement(ElementID)
{
	return (GetScrollElementDistance(ElementID) > 0);
}

function GetScrollElementDistance(ElementID)
{
	var Object = document.getElementById(ElementID);
		
	if (Object == null)
	{
		return 0;
	}
	else
	{
		if (Object.parentElement == null)
		{
			if (Object.parentNode == null)
			{
				return 0;
			}
			else
			{
				//works in FireFox
				var ScrollDistance = Object.offsetHeight-Object.parentNode.offsetHeight;	
				if (ScrollDistance >= 0)
				{
					return ScrollDistance;
				}
				else
				{
					return 0;
				}
			}
		}
		else
		{
			//works in IE
			var ScrollDistance = Object.offsetHeight-Object.parentElement.offsetHeight;	
			if (ScrollDistance >= 0)
			{
				return ScrollDistance;
			}
			else
			{
				return 0;
			}
		}
	}
}

function ResetScrollElement(ElementID)
{
	var Object = document.getElementById(ElementID);
	if (Object != null)
	{
		Object.style.marginTop = "0px";
	}
}

function ScrollElement(ElementID, ScrollVerticalPx)
{
	var Object = document.getElementById(ElementID);
	if (Object != null)
	{
		var CurMarginTop;	
		if (Object.style.marginTop == "")
		{
			CurMarginTop = 0;
		}
		else
		{
			CurMarginTop = parseInt(Object.style.marginTop);
		}
		Object.style.marginTop = (CurMarginTop + ScrollVerticalPx) + "px";
	}
}

function BlendElements(CurDivID, NewDivID, millisec) 
{ 
    var speed = Math.round(millisec / 100); 
    var timer = 0; 
     
    //fade in image 
    for(i = 0; i <= 100; i++) 
    { 
        setTimeout("ChangeElementOpacity(" + (100-i) + ",'" + CurDivID + "')", (timer * speed)); 
        setTimeout("ChangeElementOpacity(" + i + ",'" + NewDivID+ "')", (timer * speed)); 
        timer++; 
    } 
}

function BlendChildElements(CurDivID, NewDivID, millisec) 
{ 
    var speed = Math.round(millisec / 100); 
    var timer = 0; 
     
    //fade in image 
    for(i = 0; i <= 100; i++) 
    { 
        setTimeout("ChangeElementChildrenOpacity(" + (100-i) + ",'" + CurDivID + "')", (timer * speed)); 
        setTimeout("ChangeElementChildrenOpacity(" + i + ",'" + NewDivID+ "')", (timer * speed)); 
        timer++; 
    } 
}

function SetElementOpacity(id, opacStart, opacEnd, millisec) 
{ 
    //speed for each frame 
    var speed = Math.round(millisec / 100); 
    var timer = 0; 

    //determine the direction for the blending, if start and end are the same nothing happens 
    if (opacStart > opacEnd) 
    { 
        for (i = opacStart; i >= opacEnd; i--) 
        { 
            setTimeout("ChangeElementOpacity(" + i + ",'" + id + "')", (timer * speed)); 
            timer++; 
        } 
    } 
    else if (opacStart < opacEnd) 
    { 
        for (i = opacStart; i <= opacEnd; i++) 
        { 
            setTimeout("ChangeElementOpacity(" + i + ",'" + id + "')", (timer * speed)); 
            timer++; 
        } 
    } 
} 

function SetObjectOpacity(Object, opacStart, opacEnd, millisec) 
{ 
    //speed for each frame 
    var speed = Math.round(millisec / 100); 
    var timer = 0; 

    //determine the direction for the blending, if start and end are the same nothing happens 
    if (opacStart > opacEnd) 
    { 
        for (i = opacStart; i >= opacEnd; i--) 
        { 
            setTimeout(function() {ChangeOpacity(i, Object);}, (timer * speed)); 
            timer++; 
        } 
    } 
    else if (opacStart < opacEnd) 
    { 
        for (i = opacStart; i <= opacEnd; i++) 
        { 
            setTimeout(function() {ChangeOpacity(i, Object);}, (timer * speed)); 
            timer++; 
        } 
    } 
} 

function SetElementChildrenOpacity(id, opacStart, opacEnd, millisec) 
{ 
    //speed for each frame 
    var speed = Math.round(millisec / 100); 
    var timer = 0; 

    //determine the direction for the blending, if start and end are the same nothing happens 
    if (opacStart > opacEnd) 
    { 
        for (i = opacStart; i >= opacEnd; i--) 
        { 
            setTimeout("ChangeElementChildrenOpacity(" + i + ",'" + id + "')", (timer * speed)); 
            timer++; 
        } 
    } 
    else if (opacStart < opacEnd) 
    { 
        for (i = opacStart; i <= opacEnd; i++) 
        { 
            setTimeout("ChangeElementChildrenOpacity(" + i + ",'" + id + "')", (timer * speed)); 
            timer++; 
        } 
    } 
} 

//change the opacity for different browsers 
function ChangeElementChildrenOpacity(opacity, ObjectID) 
{ 
	var Object = document.getElementById(ObjectID);
	var CurChild = 0;
	
	do
	{
		ObjectChild = Object.childNodes[CurChild];
		if (ObjectChild != null)
		{
			ChangeOpacity(opacity, ObjectChild);
		}
		CurChild++;
	}
	while(ObjectChild != null);
}

function ChangeElementOpacity(opacity, ObjectID) 
{ 
	var Object = document.getElementById(ObjectID);
	if (Object != null)
	{
	    var ObjectStyle = Object.style; 
	    ObjectStyle.filter = "alpha(opacity=" + opacity + ")"; //IE
	    ObjectStyle.opacity = (opacity / 100); //Opera, FireFox
	    ObjectStyle.MozOpacity = (opacity / 100); //older mozilla browsers
	    ObjectStyle.KhtmlOpacity = (opacity / 100);  //Konquerer
	}
}

function ChangeOpacity(opacity, Object) 
{ 
	if (Object != null)
	{
	    var ObjectStyle = Object.style; 
	    ObjectStyle.filter = "alpha(opacity=" + opacity + ")"; //IE
	    ObjectStyle.opacity = (opacity / 100); //Opera, FireFox
	    ObjectStyle.MozOpacity = (opacity / 100); //older mozilla browsers
	    ObjectStyle.KhtmlOpacity = (opacity / 100);  //Konquerer
	}
}

function SetElementDisplay(ObjectID, DisplayValue)
{
	var Object = document.getElementById(ObjectID);
	if (Object != null)
	{
		Object.style.display = DisplayValue;
	}
}

function IsIE()
{
	var agt=navigator.userAgent.toLowerCase();
	return ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
}

// file: pagequery_api.js
// javascript query string parsing utils
// pass location.search to the constructor: var page = new PageQuery(location.search)
// get values like: var myValue = page.getValue("param1") etc.
// djohnson@ibsys.com {{djohnson}}
// you may use this file as you wish but please keep this header with it thanks

function PageQuery(q) 
{
	if(q.length > 1) this.q = q.substring(1, q.length).replace(/\"/g,"");
	else this.q = null;
	this.keyValuePairs = new Array();
	if(this.q) {
		for(var i=0; i < this.q.split("&").length; i++) {
			this.keyValuePairs[i] = this.q.split("&")[i];
		}
	}
	this.getKeyValuePairs = function() { return this.keyValuePairs; }
	this.getValue = function(s) {
		for(var j=0; j < this.keyValuePairs.length; j++) {
			if(this.keyValuePairs[j].split("=")[0] == s)
				return this.keyValuePairs[j].split("=")[1];
		}
		return "";
	}
	this.getParameters = function() {
		var a = new Array(this.getLength());
		for(var j=0; j < this.keyValuePairs.length; j++) {
			a[j] = this.keyValuePairs[j].split("=")[0];
		}
		return a;
	}
	this.getLength = function() { return this.keyValuePairs.length; }
}