﻿
//Show/Hide the tab header once clicked
function yjcOnTabClick(celHeader) 
{
  var tblHeader  = celHeader.parentElement.parentElement.parentElement;
  var tblTabBox = tblHeader.parentElement.parentElement.parentElement.parentElement;     //The outmost table of tabbox
  
  var activeTab = tblTabBox.getAttribute('activetab');

  if (celHeader.className != "TabHeader_Active") {
      document.getElementById('h' + activeTab).className = "TabHeader_Inactive";
      celHeader.className="TabHeader_Active";

      document.getElementById(activeTab).style.display="none";
      document.getElementById(celHeader.id.substr(1)).style.display="";
      tblTabBox.setAttribute("activetab", celHeader.id.substr(1));
  }
}

//DateBox client function
function yjcPickDate(obj) {
    $(obj).datepicker('show');
}



//TODO: this function sometimes causes error because cannot find top for windows that have been closed.
//Change MDI's status
function setStatus(sMsg)
{
    if (top.document.all("statusBar")){
        top.document.all("statusBar").innerText = sMsg;
        top.document.all('statusBar').innerText='';
    }
}
//The focus user input to obj
function setFocus(obj) {

    var srcIdx = obj.sourceIndex;
    var curObj, curObjID, curTab, curTabHeader;
    var strExec = '';
    
    if (obj != null ) {
	    curObj = obj;
	    curObjID = obj.id.toUpperCase();
	    curObjNM = obj.tagName.toUpperCase();
	    
        if (!(curObjNM== "INPUT" || curObjNM == "SELECT" || curObjNM== "TEXTAREA" || curObjNM == "A"|| (curObjNM == "OBJECT" && curObjID.substr(0,2) == "WG"))){return;}
        
		if (obj.disabled == false && obj.type != "hidden") {
			for (i=0; i<srcIdx; i++){
			    curObj = document.all(i);
			    curObjID = curObj.id.toUpperCase();
			    curObjNM = curObj.tagName.toUpperCase();
				if (curObjNM == "DIV" && curObjID.substr(0,7).toUpperCase() == "TABPAGE"){    //Enter TabPage
					curTab = curObj;
					curTabHeader=document.all('h' + curTab.id);
					continue;
				}
			}
            window.setTimeout(function() {
			    if (curTab != null && curTab.contains(obj)) yjcOnTabClick(document.all('h'+curTab.id));
			        try { document.all(srcIdx).focus(); } catch(e) {}
			        if (obj.tagName.toUpperCase() == 'INPUT' || obj.tagName.toUpperCase() == 'TEXTAREA') {
			            if (obj.tagName=='INPUT' && (obj.type=='button' || obj.type=='submit')) {}
			            else { try {document.all(srcIdx).select();} catch(e){} }
			        }
            },30);
		}
    }
}

function debug(sMsg,sData)
{
    var top =  (screen.height)/2- height/2;
    var left = (screen.width)/2 - width/2;
    var width= "800px";
    var height="400px";
    //making arguments
    var arg = new Array;
    arg[0] = sMsg;
    arg[1] = sData;
    return window.showModalDialog("/Common/debug.htm",arg,'dialogHeight:' + height + ';dialogWidth:' + width + ';center:yes;resizable:no; help:no; status:no');
}

//Trim a string
function trim (str) {
    var i = 0;
    if (typeof str != "string") return str;
		str = str.replace(/^\s\s*/, ''),
		ws = /\s/,
		i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
}

//Trim the right side
function rtrim(strSrc)
{
    if(!strSrc) {return "";}
	var i = 0;
	var limit = strSrc.length;
	for (i=0; i<limit; i++)
	{
		var index = limit-i-1;
		var data = strSrc.charAt(index);
		if (data == " ")
		{
			strSrc = strSrc.substring(0, index);
		} else
		{
			return strSrc;
		}
	}
	return strSrc;
}

// Move Forward from obj1 to obj2 (only if enter was pressed)
function mf(obj1, obj2) {
	var i;
	var key;
	var isShift;
	var isCtrl;
	if (event == null)
	{
	    key=13;
	    isShift=false;
	    isCtrl=false;
	}else{
	    key = event.keyCode;
	    isShift = event.shiftKey;
	    isCtrl = event.ctrlKey;
	}
	
	var curObj;
	var curObjNM;
	var curObjID;
	var curTab;
	var curTabHeader;
		
	if (key == 13) {
	    if (obj1 != null && obj1.tagName.toUpperCase() == "TEXTAREA" && !isCtrl){return;}
		if (obj2 != null ) {
			if (obj2.disabled == false && obj2.readOnly != true && obj2.type != "hidden" ) {
				setFocus(obj2);
				return;
			}
} else {
		    // reverse travers
			if (isShift == true ) {
			    // logic for finding the control and the containing tab must be separated
			    // when traversing backwards because otherwise only the tab after the target control is returned
			    // find the previous control
				for (i=obj1.sourceIndex-1; i>=0; i--){
				    curObj = document.all(i);
				    curObjID = curObj.id.toUpperCase();
				    curObjNM = curObj.tagName.toUpperCase();
				    
					if (curObj.disabled == false && curObj.readOnly != true && curObj.type != "hidden") {
						if (curObjNM== "INPUT" || curObjNM == "SELECT" || curObjNM== "TEXTAREA" || curObjNM == "A"|| (curObjNM == "OBJECT" && curObjID.substr(0,2) == "WG")){
							break;
						}
					}
				}
                // exit if there is no previous object				
				if (curObj==null) {return;}
				setFocus(curObj);
				return;
            // forward traverse
			} else {
			    // go to object directly if next object for focus has been pre-defined
			    var NextFocus;
			    NextFocus = obj1.attributes.getNamedItem("NextFocus");
			    if (NextFocus != null) {
				    curObj = document.getElementById(NextFocus.value);
				    curObjID = curObj.id.toUpperCase();
				    curObjNM = curObj.tagName.toUpperCase();

					if (curObj.disabled == false && curObj.readOnly != true && isElementVisible(curObj)) {
						if (curObjNM== "INPUT" || curObjNM == "SELECT" || curObjNM== "TEXTAREA" || curObjNM == "A"|| (curObjNM == "OBJECT" && curObjID.substr(0,2) == "WG")){
							setFocus(curObj);
							return;
						}
					}
			    }
			    
				for (i=obj1.sourceIndex+1; i<document.all.length; i++){
				    curObj = document.all(i);
				    curObjID = curObj.id.toUpperCase();
				    curObjNM = curObj.tagName.toUpperCase();

				    if (curObj.disabled == false && curObj.readOnly != true && isElementVisible(curObj)) {
						if (curObjNM== "INPUT" || curObjNM == "SELECT" || curObjNM== "TEXTAREA" || curObjNM == "A"|| (curObjNM == "OBJECT" && curObjID.substr(0,2) == "WG")){
							setFocus(curObj);
							return;
						}
					}
	            }
	            //In case of last control, lose its focus to perform default action
	            window.focus();
			}
		}
	} 
}

//Check an element is visible to user
function isElementVisible(obj) {
    while (obj != 'undefined' && obj != 'null' && obj.style) {
        if (obj.style.display != 'none' && obj.style.visibility != 'hidden' && obj.type != 'hidden') {
            obj = obj.parentNode;
        } else {
            return false;
        }
    }
    return true;
}
