/// <reference path="jquery-1.4.1-vsdoc.js" />

var K12Api = {
	instances: {},
	
	getObjectByServerControlID: function(controlID)
	{
		return this.instances[controlID];
	},
	
	registerObject: function(serverControlID, obj)
	{
		this.instances[serverControlID] = obj;
	}
};

function $K12(serverControlID)
{
	return K12Api.getObjectByServerControlID(serverControlID) || null;
}

function $$K12(serverControlID, property)
{
	return document.getElementById($K12(serverControlID)[property]) || {};
}

if (!document.getBoxObjectFor) {
  document.getBoxObjectFor = function(el) {
	var b = el.getBoundingClientRect();
	return { x: b.left, y: b.top, width: b.width, height: b.height };
  };
}

function getWindowSize() 
{
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return {width: myWidth, height: myHeight}
}

function getScrollXY() 
{
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return {x: scrOfX, y: scrOfY };
}

// add avent to object
function addEventTo(obj, event, handler)
{
    var altEN = 'on' + event;

    if (obj.attachEvent)
        obj.attachEvent(altEN, handler);
    else if (obj.addEventListener)
        obj.addEventListener(event, handler, false);
    else
        alert ("You browser doesn't support " + altEN + " event.");
}

// remove event from object
function removeEvent(obj, event, handler)
{
    var altEN = 'on' + event;

    if (obj.detachEvent)
        obj.detachEvent(altEN, handler);
    else if (obj.removeEventListener)
        obj.removeEventListener(event, handler, false);
    else
        alert ("You browser doesn't support " + altEN + " event.");
}

// return new class name by class name and state
function GetClassNameByState(name, isEnabled) {
    if (name.indexOf('-loading') != -1)
        name = name.substr(0, name.indexOf('-loading'));
        
	if (name.indexOf('-disabled') != -1)
		return isEnabled ? name.substr(0, name.indexOf('-disabled')) : name;
	else
		return isEnabled ? name : name + '-disabled';
}

// enable/disable link button (function is adding or removing disabled attribute, 
// and changes css class name to classname-disabled or classname)
function EnableButton(btnID, state)
{
	if (btnID && $('#' + btnID).length > 0)
	{
		if (!$('#' + btnID).attr("prevhref"))
			$('#' + btnID).attr("prevhref", $('#' + btnID).attr("href"));
				
		if (state)
		{
			$('#' + btnID).attr("href", $('#' + btnID).attr("prevhref"));
			$('#' + btnID).removeAttr("disabled");
		}
		else
		{
			$('#' + btnID).removeAttr("href");
			$('#' + btnID).attr("disabled", "disabled");
		}

		$('#' + btnID).attr("class", GetClassNameByState($('#' + btnID).attr("class"), state));
	}
}

function ShowHideButton(btnID, state) {
	if (btnID && $('#' + btnID).length > 0) {
        if (state) {
            jQuery('#' + btnID).show();
        }
        else {
            jQuery('#' + btnID).hide();
        }
    }
}

function ToolBarLoading(btnID, state)
{
	if (btnID)
	{
		var btn = jQuery("#" + btnID);
		var name = btn.attr("class");
		
		if (name.indexOf('-loading') != -1)
			btn.attr("class", state ? name : name.substr(0, name.indexOf('-loading')));
		else
			btn.attr("class", state ? name + '-loading' : name);
	}
}

function ToolBarLoadingDisabled(btnID, state) {
	if ($('#' + btnID).length > 0) {
        //		var name = $(btnID).className
        //		if (name.indexOf('-loading') != -1)
        //			$(btnID).className = state ? name : name.substr(0, name.indexOf('-loading'));
        //		else
        //			$(btnID).className = state ? name + '-loading' : name;

        var btn = jQuery("#" + btnID);
        var name = btn.attr("class");

        if (!$('#' + btnID).attr("prevhref"))
        	$('#' + btnID).attr("prevhref", $('#' + btnID).attr("href"));

        $('#' + btnID).removeAttr("href");
        $('#' + btnID).attr("disabled", "disabled");

        if (name.indexOf('-disabled') != -1)
            name = name.substr(0, name.indexOf('-disabled'));        

        if (name.indexOf('-loading') != -1)
            btn.attr("class", state ? name : name.substr(0, name.indexOf('-loading')));
        else
            btn.attr("class", state ? name + '-loading' : name);
    }
}

function SingleSelect(s, e) {
    var boolProcessSelection = true;
    if (document.all) {
        if (e.htmlEvent.getAttribute("onclick") != null)
            boolProcessSelection = false;
    }
    else {
        if (e.htmlEvent.explicitOriginalTarget.attributes != null && e.htmlEvent.explicitOriginalTarget.attributes["onclick"] != null)
            boolProcessSelection = false;
    }
    if (!boolProcessSelection) {
        e.cancel = true;
    }
    else {
        if (!s._isRowSelected(e.visibleIndex)) {
            s.SelectAllRowsOnPage(false);
            /*
            for (i = 0; i < s.cpRowCount; i++) {
                s.SelectRow(i, false)
            }*/
            
        }
        s.SelectRow(e.visibleIndex, !s._isRowSelected(e.visibleIndex));       
    }
}

function CheckAll(s, e) {
	xgvGrid.SelectAllRowsOnPage(s.GetChecked());
}

function SelectAll(s, e, grid) {
    grid.SelectAllRowsOnPage(s.GetChecked());
}

function MultiSelect(s, e) {
    var boolProcessSelection = true;
    if (document.all) {
        if (e.htmlEvent.getAttribute("onclick") != null)
            boolProcessSelection = false;
    }
    else {
         if (e.htmlEvent.explicitOriginalTarget.attributes != null && e.htmlEvent.explicitOriginalTarget.attributes["onclick"] != null)
            boolProcessSelection = false;
    }
    if (!boolProcessSelection) {
        e.cancel = true;
    }
    else {
        if (typeof (cbxCheckAll) != "undefined")
            cbxCheckAll.SetChecked(false);
        /*    
        for (i = 0; i < s.cpRowCount; i++) {
            s.SelectRow(i, false)
        }*/
        s.SelectRow(e.visibleIndex, !s._isRowSelected(e.visibleIndex));
    }
    
}

function ResolveUrl(url) 
{
    if (url.indexOf("~/") == 0) {
        url = baseUrl + url.substring(2);
    }
    return url;
}

function TogglePanel()
{
	var container = jQuery("#divTogglePanelContainer");
	var leftPanel = jQuery("#divTogglePanelLeft");
	var rightPanel = jQuery("#divTogglePanelRight");
	var delta = jQuery.browser.opera ? 0 : 200;
	
	if (leftPanel && rightPanel)
	{
		if (leftPanel.css('display') == 'none')
		{
			jQuery(".toggle-button img")
				.each(function(){ this.src = ResolveUrl('~/Images/panelOpen.gif'); })
				
			leftPanel.show();
			leftPanel.animate({ width: 200 }, 1000, function(){ 
				rightPanel.width(container.width() - delta);
				RefreshGrids();
			});
		}
		else
		{
			jQuery(".toggle-button img")
				.each(function(){ this.src = ResolveUrl('~/Images/panelClosed.gif'); })

			leftPanel.animate({ width: 0 }, 1000, function(){
				leftPanel.hide();
				rightPanel.width(container.width());
				RefreshGrids();			
			});
		}
	}
}

function RefreshGrids()
{
	if (typeof(dvxCCAssigned) != 'undefined')
		dvxCCAssigned.Refresh();
	
	if (typeof(dvxGridOrders) != 'undefined')
		dvxGridOrders.Refresh();
		
	if (typeof(dvxQuotes) != 'undefined')
		dvxQuotes.Refresh();
	
	if (typeof(xgvGrid) != 'undefined')
		xgvGrid.Refresh();
		
	if (typeof(dvxSections) != 'undefined')
		dvxSections.Refresh();
}

function EnableFileMenu(menuID, state) {
    menuID.SetItemEnabled("0", state, !state);
    menuID.SetItemImageUrl("0", state ? baseUrl + "Images/menuIcon_18.gif" : baseUrl + "Images/menuIcon_18_disabled.gif");
}

function SetFileMenus(_fileMenuTop, _fileMenuBot, _xgvGrid) {
    EnableFileMenu(_fileMenuTop, false)
    EnableFileMenu(_fileMenuBot, false)

    if (_xgvGrid != null && _xgvGrid.pageRowCount > 0 && jsGlobal.IsAuthenticated) {
        EnableFileMenu(_fileMenuTop, true)
        EnableFileMenu(_fileMenuBot, true)
    }
}

function SetMenuVisibleByName(menu, name, isVisible) {
    menu.GetItem(0).GetItemByName(name).SetEnabled(isVisible);
}

function ShowHideDiv(divId, IsOpened, Animate) {
    if (Animate) {
        if (IsOpened)
            $("#" + divId).animate({ height: "show" }, 500);
        else
            $("#" + divId).animate({ height: "hide" }, 500);        
    }
    else {
        if (IsOpened)
            $("#" + divId).show();
        else
            $("#" + divId).hide();
    }
}

jQuery(document).ready(function () {

    jQuery(".toggleBox .toggle_container").hide();

    jQuery(".toggleBox h2.trigger").toggle(function () {
        jQuery(this).addClass("active");
    }, function () {
        jQuery(this).removeClass("active");
    });

    jQuery(".toggleBox h2.trigger").click(function () {
        jQuery(this).next(".toggleBox .toggle_container").slideToggle("slow");
    });

});
