function open_window(url, width, height)
{
    handle = window.open(url, "KCTPopup", "height=" + height + ",width=" + width + ",status=yes,toolbar=no,scrollbars=yes,menubar=no,location=no");
    handle.focus();
}

function confirm_open_window(url, message, width, height)
{
    if( confirm(message) == true )
    {
        handle = window.open(url, "KCTPopup", "height=" + height + ",width=" + width + ",status=yes,toolbar=no,menubar=no,location=no");
        handle.focus();
    }
}
function setMenuDisplayOrder() {
    $("div[id*='_tMenu']").css('zIndex', 1);
    $("div[id*='_cMenu']").css('zIndex', 1);
}
function enableTimer(msec, parent, action, fxn) {
    if (typeof (setMenuDisplayOrder) == "function")
        setMenuDisplayOrder();

    if (action == 1) // close parent
        window.setTimeout("timerAction('" + parent + "'," + action + ");", msec);
    else if (action == 3) {         // close parent and redirect    
        $("#" + parent).hide();
        window.setTimeout("timerAction('" + parent + "'," + action + ",'" + fxn + "');", msec);
    }
    else if (action == 2) {         // run fxn    
        if (typeof (fxn) == "string")
            window.setTimeout("fxn", msec);
    }
}
function timerAction(parent, action, fxn) {
    if (action == 1) {              // close parent   
        var dialog = $find(parent); // telerik RadWindow
        dialog.close();
    }
    else if (action == 3) {         // close parent    
        $("#" + parent).hide();
        window.setTimeout("location.href='" + fxn + "';", 1000);
    }
}
function toolbar_CancelMove(oToolbar, x, y, oEvent)
{
    oEvent.cancel = true;
}
function togglePanelVisibility(pnlId, imgSrc) {
    var obj = $("#" + pnlId).toggle("fast");
    imgSrc.src = (imgSrc.src == imgSrc.upSrc ? imgSrc.downSrc : imgSrc.upSrc);
}
function SnapToObject(parent, child, offsetX, offsetY) {
    if (!offsetX)
        offsetX = 0;
    if (!offsetY)
        offsetY = 0;
    var oparent = document.getElementById(parent);
    var ochild = document.getElementById(child);
    
    if (oparent && ochild) {
        var pos = findRelPos(oparent);
        if (oparent.parentNode.parentNode != null && oparent.parentNode.parentNode.style.position == 'relative') {
            ochild.style.left = offsetX + 'px';
            ochild.style.top = offsetY + 'px';
        }
        else {
            ochild.style.left = (pos[0] + offsetX) + 'px';
            ochild.style.top = (pos[1] + offsetY) + 'px';
        }
    }
}
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}
function findRelPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) 
	{
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		
		if( obj.position == 'relative' )
		        return [curleft,curtop];
		
		while (obj = obj.offsetParent) 
		{		    
		    curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
			
			if( obj.position == 'relative' )
		        return [curleft,curtop];		    
		}
	}	
	return [curleft,curtop];
}
function findPosX(obj)
{
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
}
function findPosY(obj)
{
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
} 
function filterCurrency(str)
{
    var re = /^\$|,/g; //removes dollar sign and comma
    return str.replace(re, '');
}
function formatCurrency(num)
{
	num = filterCurrency(num.toString());
	if(isNaN(num))
		num = "0";
	var sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	var cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
		cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0, num.length-(4*i+3))+ ',' + num.substring(num.length-(4*i+3));
	pass = ((sign)?'':'-') + '$' + num + '.' + cents;	
	return (pass);
}
function RadioGroupChange(ctrl, group)
{
    var ctrls = document.getElementsByTagName('input');
    for( var i = 0; i < ctrls.length; i++ )
    {
        if( ctrls[i].type == 'radio' && ctrls[i].getAttribute('group') == group )
        {
            if( ctrls[i].id != ctrl.id )
                ctrls[i].checked = false;
        }
    }    
}		
function CheckChange(controlID, checked, match, fireEvent, matchFirst)
{
    var ctrl = document.getElementById(controlID);
    if( ctrl )
    {
        if( ctrl.type == 'radio' || ctrl.type == 'checkbox' )
        {
            ctrl.checked = checked;
            if( fireEvent )
                ctrl.click();   
        }    
    }
    else
    {
        if( !match )
        {
            var ctrls = document.getElementsByTagName('input');
            for( var i = 0; i < ctrls.length; i++ )
            {
                if( (ctrls[i].type == 'radio' || ctrls[i].type == 'checkbox') && ctrls[i].id.indexOf(controlID) > -1 )
                {
                    ctrls[i].checked = checked;
                    if( fireEvent )
                        ctrls[i].click();   
                    
                    if( matchFirst )    
                        return;
                }    
            }    
        }
    }
}			
			
function UpdateTotal(parentID, totalID)
{
    var oTotal = document.getElementById(totalID);
    var oParent = document.getElementById(parentID);
    if( oTotal )
    {
        if( oTotal.tagName == "SPAN" )
            oTotal.innerHTML = "0.00";
                
        var totalamount = 0.00;        
        oParent = oParent != null ? oParent : document;
        var ctrls = oParent.getElementsByTagName('INPUT');
        
        for( var i = 0; i < ctrls.length; i++ )
        {             
            if( ctrls[i].type == 'radio' && ctrls[i].checked )
            {
                if( ctrls[i].getAttribute('amount') != null )
                {
                    var amount = filterCurrency(formatCurrency(ctrls[i].getAttribute('amount')));
                    totalamount = totalamount + eval(amount.toString());
                }
            }
            else if( ctrls[i].type == 'CHECKBOX' && ctrls[i].checked )
            {                
                if( ctrls[i].getAttribute('amount') != null )
                    totalamount = totalamount + eval(ctrls[i].getAttribute('amount').toString());
            }
        }
        oTotal.innerHTML = formatCurrency(totalamount);
    }    
}

/* not finished */
function showCtrl(currentCtrlID, ctrlID, show, dragCurrentPos)
{
    if( ctrlID != '' )
    {
        var ctrl = document.getElementById(ctrlID);
        if( ctrl )
        {
            ctrl.style.display = show ? 'block' : 'none';
            if( dragCurrentPos )
            {
                currCtrl = document.getElementById(currentCtrlID);
                
            }
        }
    }
}

function setVisibility(ctrlID, show, transition) {
    if( arguments.length < 3 )
        transition = 'fast';
    
    if (show)
        $("#" + ctrlID).show(transition);
    else
        $("#" + ctrlID).hide(transition);

    $("#" + ctrlID).find("span[evaluationfunction]")
                .each(function() {
                    this.enabled = show;
                    ValidatorValidate(this);
                });
    ValidatorUpdateIsValid();
}


function window_move(oDrag, oCtrl)
{				
	if( oDrag.value == 'true' )
	{			
	    oCtrl.style.top = window.event.y; //(window.event.y - div[i].offsetTop); // window.event.y - 15; //
		oCtrl.style.left = window.event.x; //(window.event.x - div[i].offsetLeft);// window.event.x - 15; //		
	}
}

function object_move(oDrag, oCtrl)
{
    oDrag.value = 'true';
    oCtrl.dragDrop();	
}

function object_stop(oDrag)
{
	oDrag.value = 'false';
}

function getStyle(oElm, strCssRule){
	var strValue = "";
	if(document.defaultView && document.defaultView.getComputedStyle){
		strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
	}
	else if(oElm.currentStyle){
		strCssRule = strCssRule.replace(/-(w)/g, function (strMatch, p1){
			return p1.toUpperCase();
		});
		strValue = oElm.currentStyle[strCssRule];
	}
	return strValue;
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

function isFirefox()
{
    return BrowserDetect.browser == "Firefox";
}

function isMozilla()
{
    return isFirefox(); 
}

function isIE()
{
    return BrowserDetect.browser == "Explorer";
}

function _getClientBounds() 
{
    var clientWidth;
    var clientHeight;
    
    switch(Sys.Browser.agent) 
    {
        case Sys.Browser.InternetExplorer:
            clientWidth = document.documentElement.clientWidth;
            clientHeight = document.documentElement.clientHeight;
            break;
        case Sys.Browser.Safari:
            clientWidth = window.innerWidth;
            clientHeight = window.innerHeight;
            break;
        case Sys.Browser.Opera:
            clientWidth = Math.min(window.innerWidth, document.body.clientWidth);
            clientHeight = Math.min(window.innerHeight, document.body.clientHeight);
            break;
        default:  // Sys.Browser.Firefox, etc.
            clientWidth = Math.min(window.innerWidth, document.documentElement.clientWidth);
            clientHeight = Math.min(window.innerHeight, document.documentElement.clientHeight);
            break;
    }
    
    return new Sys.UI.Bounds(0, 0, clientWidth, clientHeight);
}

function hideCurrentToolTip() {
    var tooltip = GetActiveToolTip();
    tooltip.hide();
}
function showCurrentToolTip() {
    var tooltip = GetActiveToolTip();
    tooltip.show();
}
function GetActiveToolTip() {
    var tooltip = Telerik.Web.UI.RadToolTip.getCurrent();
    return tooltip;
}
function showPageModulePopup(pageModuleID, moduleMode, title, args, height, width) {
    var url = __KCT_System_Module_Location;

    var mmode = 0; // NA
    if (isNaN(parseInt(moduleMode, 10))) {
        switch (moduleMode) {
            case "add":
                mmode = 1;
                break;
            case "edit":
                mmode = 2;
                break;
            case "view":
                mmode = 3;
                break;
            case "delete":
                mmode = 4;
                break;
        }
    }
    else
        mmode = parseInt(moduleMode, 10);

    args += (args.length > 0 ? "&" : "") + "MM=" + mmode.toString();
    if (pageModuleID.indexOf('$') == 0)
        url += "?" + args + "&PMSIDU=" + pageModuleID;
    else
        url += "?" + args + "&PMID=" + pageModuleID;

    setMenuDisplayOrder();
    var oWnd = radopen(url, title.replace(" ", ""));
    oWnd.set_title(title);
    oWnd.set_width(width);
    oWnd.set_height(height);

    oWnd.set_behaviors(Telerik.Web.UI.WindowBehaviors.Move + Telerik.Web.UI.WindowBehaviors.Close
        + Telerik.Web.UI.WindowBehaviors.Maximize + Telerik.Web.UI.WindowBehaviors.Reload);

    oWnd.setUrl(oWnd.get_navigateUrl());

    if (typeof (PageModule_OnClientClose) == "function")
        oWnd.add_close(PageModule_OnClientClose);
}
//
// This is for the ModuleViewer menu
//
var _confirmedClick = false;
function onModuleViewer_MenuItemClicking(sender, eventArgs) {
    var item = eventArgs.get_item();
    var key = item.get_attributes().getAttribute("dataKey");

    var fxn = item.get_attributes().getAttribute("jsfxn");

    if (key == "Module.Delete") {
        deletePageModule(sender, eventArgs);
    }
    else if (fxn != '') {
        eval(fxn);
    }
}

function deletePageModule(sender, eventArgs) {
    if (!_confirmedClick) {
        var item = eventArgs.get_item();
        var evt = eventArgs.get_domEvent();
        sender.close();        
        //sender.hide();

        _confirmedClick = blockConfirm('Are you sure you want to delete this Page Module?', evt, 330, 100, '', 'Delete Confirmation', item);
        if (!_confirmedClick)
            eventArgs.set_cancel(true);

        //_confirmedClick = false;
    }
    else
        _confirmedClick = false;
}
function GetRadWindow() {
    var oWindow = null;
    var oManager = typeof(GetRadWindowManager) == "function" ? GetRadWindowManager() : null;

    if (window.radWindow) oWindow = window.radWindow;
    else if (window.frameElement && window.frameElement.radWindow) oWindow = window.frameElement.radWindow;
    else if (oManager) oWindow = oManager.getActiveWindow();
        
    return oWindow;
}
function closePopup() {
    var oWindow = GetRadWindow();
    oWindow.close();
}
function closePopupWithArg(arg) {
    var oWindow = getRadWindow();
    oWindow.hide();
    oWindow.close(arg);
}
function closePopupWithRefresh() {
    closePopup();
}
