 var CURSOR_WAIT="url('/np/images/wait.ani'), wait";


function ltrim ( s )
{
	return s.replace( /^\s*/, "" )
}

function rtrim ( s )
{
	return s.replace( /\s*$/, "" );
}

function trim ( s )
{
	return rtrim(ltrim(s));
}


//cross browser functions

function getElement(e)
{
	var temp;
	if (document.getElementById) {  //IE5 and NS6
		temp = document.getElementById(e);
		if ( temp == null )
           temp = document.getElementsByName(e)[0];
	}
	else if (document.layers) {  //NS4
		temp = eval('document.' + e);
	}
	else if (document.all && !document.getElementById) {  //IE4
		 temp = eval('document.all.' + e);
	}
	return temp;
}

function setHide(e){
   if (document.layers) {  //NS4
      getElement(e).visibility="hide";
   } else {
      getElement(e).style.display="none";
   }
      getElement(e).visibility="hide";
      getElement(e).style.display="none";
}

function setVisible(e){
   if (document.layers) {  //NS4
      getElement(e).visibility="show";
   } else {
      getElement(e).style.display="inline";
   }
      getElement(e).visibility="show";
      getElement(e).style.display="inline";
}


 function cursorWait(element){
   document.body.style.cursor =CURSOR_WAIT;
   element.style.cursor =CURSOR_WAIT;
   return true;
 }
 
 
 function selectOption(name, value){
   if(value==null)
      return false;
 	var oSelect = getElement(name);
 	var oOptions = oSelect.options;
   if(oOptions==null)
      return false;
 	var length = oOptions.length;
// 	for(var i=0; i<length; i++){
//      oOptions[i].selected=false;
// 	}

 	for(var i=0; i<length; i++){
 	   if(oOptions[i].value==null)
 	      continue;
 		if(oOptions[i].value.toLowerCase()==value.toLowerCase()){
 			oOptions[i].selected=true;
 			//oOptions[i].setAttribute("selected", true);
 			return true;
 		}
 	}
 	return false;
 }

 function selectOptionInsert(name, value, display){
   var bol = selectOption(name, value);
   if(bol)
      return true;
 	var oSelect = getElement(name);
   var oOption = document.createElement('option');
   oOption.setAttribute('value', value);
   oOption.innerHTML=display;
   oSelect.appendChild(oOption);
   oOption.setAttribute("selected", true);
 	return true;
 }

 function getSelected(name){
 	var oSelect = getElement(name);
 	var oOptions = oSelect.options;
 	if(oOptions==null)
 	   return null;
 	var length = oOptions.length;
 	for(var i=0; i<length; i++){
 		if(oOptions[i].selected){
 			return oOptions[i].value;
 		}
 	}
 	return null;
}

 function getSelectedLabel(name){
 	var oSelect = getElement(name);
 	var oOptions = oSelect.options;
 	var length = oOptions.length;
 	for(var i=0; i<length; i++){
 		if(oOptions[i].selected){
 			return oOptions[i].innerHTML;
 		}
 	}
 	return null;
}

//todo need to make this cross browser
 function getAllByName(name){
    return document.getElementsByName(name);
 }

 function getAllChecked(name){
    var list = getAllByName(name);
    var list2 = new Array();
    for(var i=0; i<list.length; i++){
      if(list[i].checked==true){
         list2[list2.length]=list[i];
      }
    }
    return list2;
 }

 function isChecked(name, value){
    var list = getAllByName(name);
    for(var i=0; i<list.length; i++){
      if(list[i].checked==true && list[i].value==value){
         return true;
      }
    }
    return false;
 }

//the following are for toggle
var isIE = navigator.appName.indexOf("Microsoft") != -1;
var isIE5 = navigator.userAgent.indexOf('MSIE 5.0') > 0;
var isOpera = navigator.userAgent.indexOf("Opera") != -1;

var registeredSections = new Array();


var Show_List_Gif = '/np/images/show_list.gif';
var Hide_List_Gif = '/np/images/hide_list.gif';
var Show_List_Gif_Attributes = 'border=0 width=18 height=12';
var Hide_List_Gif_Attributes = 'border=0 width=18 height=12';

var Show_List_Gif_V2 = '/np/images/version2_images/bullet-right.png';
var Hide_List_Gif_V2 = '/np/images/version2_images/bullet-down.png';

var Show_List_Gif_Attributes_V2 = 'border=0 style=background-position: 14px 8px;';
var Hide_List_Gif_Attributes_V2 = 'border=0 style=background-position: 14px 8px;';

function toggleSectionDisplayTable(toggleImage, headerId, tableId, shift) {
    var t = document.getElementById(tableId);
    var headerRow = document.getElementById('header_' + headerId + '_' + tableId);
    var startIndex = -1;
    var endIndex = -1;
    for (var i = 0; i < t.rows.length; i++) {
        var r = t.rows[i];
        if ( r == headerRow ) {
            startIndex = i+shift;
        } else if (endIndex < startIndex && r.id) {
            if (r.id.indexOf('header_') > -1 || r.id.indexOf('btn') > -1) {
                endIndex = (i == 0 ? 0 : (i-1));
            }
        }
    }

    if (startIndex < 0) return;
    if (endIndex < 0) endIndex = t.rows.length;
    var elementOn = t.rows[startIndex].style.display != 'none';
    toggleImage.src = elementOn ? Show_List_Gif_V2 : Hide_List_Gif_V2;
    var toggleTable = document.getElementById(tableId+'_toggle');
    for (var i = 0; i < toggleTable.rows.length; i++) {
        var r = toggleTable.rows[i];
        toggleDisplayElementOnly(r);
    }
    toggleDisplayElementOnly(t.rows[startIndex]);
}

function toggleSectionDisplayV2(toggleImage, headerId, tableId, shift) {
    var t = document.getElementById(tableId);
    var headerRow = document.getElementById('header_' + headerId + '_' + tableId);
    var startIndex = -1;
    var endIndex = -1;
    for (var i = 0; i < t.rows.length; i++) {
        var r = t.rows[i];
        if ( r == headerRow ) {
            startIndex = i+shift;
        } else if (endIndex < startIndex && r.id) {
            if (r.id.indexOf('header_') > -1 || r.id.indexOf('btn') > -1) {
                endIndex = (i == 0 ? 0 : (i-1));
            }
        }
    }

    if (startIndex < 0) return;
    if (endIndex < 0) endIndex = t.rows.length;
    var elementOn = t.rows[startIndex].style.display != 'none';
    toggleImage.src = elementOn ? Show_List_Gif_V2 : Hide_List_Gif_V2;

    for (var i = startIndex; i < t.rows.length && i < endIndex; i++) {
        var r = t.rows[i];
        toggleDisplayElementOnly(r);
    }
}

function toggleSectionDisplay(toggleImage, headerId, tableId, shift) {
    var t = document.getElementById(tableId);
    var headerRow = document.getElementById('header_' + headerId + '_' + tableId);
    var startIndex = -1;
    var endIndex = -1;
    for (var i = 0; i < t.rows.length; i++) {
        var r = t.rows[i];
        if ( r == headerRow ) {
            startIndex = i+shift;
        } else if (endIndex < startIndex && r.id) {
            if (r.id.indexOf('header_') > -1 || r.id.indexOf('btn') > -1) {
                endIndex = (i == 0 ? 0 : (i-1));
            }
        }
    }

    if (startIndex < 0) return;
    if (endIndex < 0) endIndex = t.rows.length;

    var elementOn = t.rows[startIndex].style.display != 'none';
    toggleImage.src = elementOn ? Show_List_Gif : Hide_List_Gif;

    for (var i = startIndex; i < t.rows.length && i < endIndex; i++) {
        var r = t.rows[i];
        toggleDisplayElementOnly(r);
    }
}

function registerTwistableSection(headerId, mainTableId) {
    var obj = new Object();
    obj.headerId = headerId;
    obj.mainTableId = mainTableId;
    registeredSections[registeredSections.length] = obj;
}

function toggleAllSectionsDisplay(on) {
    for (var i = 0; i < registeredSections.length; i++) {
        var obj = registeredSections[i];
        var img;
        img = document.getElementById('img_' + obj.headerId);
        if (on && img.src.indexOf(Show_List_Gif) >= 0) {
            toggleSectionDisplay(img, obj.headerId, obj.mainTableId);
        } else if (!on && img.src.indexOf(Hide_List_Gif) < 0) {
            toggleSectionDisplay(img, obj.headerId, obj.mainTableId);
        }
    }
}

function toggleDisplayElementOnly(element) {
  if (isIE && !isOpera) {
    if (element.style.display != 'none') {
      element.style.display = 'none';
    } else {
      element.style.display = 'block';
    }
  } else {
    if (element.style.display != 'none') {
      element.style.display = 'none';
    } else {
      element.style.display = 'table-row';
    }
  }
}
//end code for toggle

//the following are for simple toggle

function toggleV2(id, img){
	   var toggle1 = getElement(id+"_toggle1");
	   var toggle2 = getElement(id+"_toggle2");
	   if(toggle1.style.display=="none"){
	      toggle1.style.display="block";
	      if(toggle2!=null)
	         toggle2.style.display="none";
	      img.src = Hide_List_Gif_V2;
	   } else {
	      toggle1.style.display="none";
	      if(toggle2!=null)
	         toggle2.style.display="block";
	      img.src = Show_List_Gif_V2;
	   }
	}

function toggle(id, img){
   var toggle1 = getElement(id+"_toggle1");
   var toggle2 = getElement(id+"_toggle2");
   if(toggle1.style.display=="none"){
      toggle1.style.display="block";
      if(toggle2!=null)
         toggle2.style.display="none";
      img.src = Show_List_Gif;
   } else {
      toggle1.style.display="none";
      if(toggle2!=null)
         toggle2.style.display="block";
      img.src = Hide_List_Gif;
   }
}

function toggle2Changed(name, id){
   var selected = getAllChecked(name);
   var display="";
   for(var i=0; i<selected.length; i++){
      if(i!=0){
         display += "|";
      }
      display += selected[i].title;
   }
   var toggle1 = getElement(id+"_toggle1");
   toggle1.innerHTML="&nbsp;"+display;
}

function toggle2ChangedTextArea(name, id){
   var toggle1 = getElement(id+"_toggle1");
   toggle1.innerHTML="&nbsp;"+getElement(name).value;
}

//end simple toggle

//start read-only select

var optionCacheNames = new Array();
var optionCacheValueLists = new Array();
var optionCacheDisplayLists = new Array();

function lockSelectTag(name){
   var index = findOptionCacheIndex(name);
   if(index!=null)
      return;
   optionCacheNames[optionCacheNames.length]=name;
   var values = new Array();
   var displays = new Array();

 	var oSelect = getElement(name);
 	var oOptions = oSelect.options;
 	var length = oOptions.length;
 	for(var i=0; i<length; i++){
 		values[values.length]=oOptions[i].value;
 		displays[displays.length]=oOptions[i].innerHTML;
 	}
   optionCacheValueLists[optionCacheValueLists.length]=values;
   optionCacheDisplayLists[optionCacheDisplayLists.length]=displays;

   for(var i=length-1; i>=0; i--){
      if(!oOptions[i].selected)
    	  oSelect.remove(i);
   }
}

function unlockSelectTag(name){
   var index = findOptionCacheIndex(name);
   if(index==null)
      return;
   var values = optionCacheValueLists[index];
   var displays = optionCacheDisplayLists[index];
   var selectedValue = getSelected(name);
   var oSelect = getElement(name);
 	var oOptions = oSelect.options;
   var length2 = oOptions.length;
   for(var i=length2-1; i>=0; i--){
     oOptions.remove(i);
   }
   var length = values.length;
   for(var i=0; i<length; i++){
     var oOption = document.createElement("OPTION");
     oSelect.options.add(oOption);
     oOption.innerText = displays[i];
     oOption.value = values[i];
     if(oOption.value==selectedValue)
        oOption.selected=true;
   }
   optionCacheNames.splice(index,1);
   optionCacheValueLists.splice(index,1);
   optionCacheDisplayLists.splice(index,1);
}

function findOptionCacheIndex(name){
   for(var i=0; i<optionCacheNames.length; i++){
      if(optionCacheNames[i]==name)
         return i;
   }
   return null;
}

function parse(str, token){
  var parsed = new Array();
  var index1 = 0;
  var index2 = str.indexOf(token);
  var j=0;

  while (-1!= index2){
     if(index1!=index2)
	parsed[j++]=trim(str.substring(index1, index2));
     index1 = index2 +1;
     index2 = str.indexOf(token, index1);
  }
  if(index1<str.length)
     parsed[j++]=trim(str.substring(index1, str.length));

  return parsed;
}
//end read-only select

function selectByKeyPress(){
   var keyCode = window.event.keyCode;
 	var oSelect = window.event.srcElement;
 	var oOptions = oSelect.options;
   if(oOptions==null)
      return false;
   var selectedIndex = oSelect.selectedIndex;
 	var length = oOptions.length;
 	var keyPressed = String.fromCharCode(keyCode);
   var reg=new RegExp("^\\s*" + keyPressed, "i");     //i for ignore case
   var reg2 = new RegExp("&nbsp;", "g");
 	for(var i=selectedIndex+1; i<length; i++){ //if not selected, selectedIndex is -1
 	   var display = oOptions[i].innerHTML;
 	   display = display.replace(reg2, "");
 		if(reg.test(display)){
 		   if(selectedIndex!=-1){
 			   oOptions[selectedIndex].setAttribute("selected", false);
 			}
 			oOptions[i].setAttribute("selected", true);
 			return false;
 		}
 	}
   for(var i=0; i<selectedIndex; i++){ //if not selected, selectedIndex is -1
 	   var display = oOptions[i].innerHTML;
 	   display = display.replace(reg2, "");
      if(reg.test(display)){
         oOptions[selectedIndex].setAttribute("selected", false);
         oOptions[i].setAttribute("selected", true);
         return false;
      }
   }
   return false;

}

function cleanWordFormatting(textIn) { 
	textIn = textIn.replace(/<(\/)?strong>/ig, '<$1B>');
	textIn = textIn.replace(/<(\/)?em>/ig, '<$1I>');
//	textIn = textIn.replace(/<P class=[^>]*>/gi, '<P>'); 
//	textIn = textIn.replace(/<LI class=[^>]*>/gi, '<LI>');
	textIn = textIn.replace(/<\\?\??xml[^>]>/gi, "");
	textIn = textIn.replace(/<\/?\w+:[^>]*>/gi, ""); 
	textIn = textIn.replace(/<SPAN[^>]*>/gi, ' '); 
	textIn = textIn.replace(/<\/SPAN>/gi, ''); 
	textIn = textIn.replace(/\r\n/g, ' '); 
	textIn = textIn.replace(/\n/g, ' '); 
	textIn = textIn.replace(/\r/g, ' '); 
	textIn = textIn.replace(/<P/gi, '\n<P'); 
	textIn = textIn.replace(/<H/gi, '\n<H'); 
	textIn = textIn.replace(/<\/H/gi, '<\/H'); 
	textIn = textIn.replace(/<P>\n/gi, '');
	textIn = textIn.replace(/<T/gi, '\n<T'); 
	textIn = textIn.replace(/<TD>\n/gi, '<TD>'); 
	textIn = textIn.replace(/<\/TR>/gi, '\n<\/TR>'); 
	textIn = textIn.replace(/<\/TR>\n/gi, '<\/TR>'); 
	textIn = textIn.replace(/<UL/gi, '\n<UL'); 
	textIn = textIn.replace(/<\/UL>/gi, '\n<\/UL>'); 
	textIn = textIn.replace(/<OL/gi, '\n<OL'); 
	textIn = textIn.replace(/<\/OL>/gi, '\n<\/OL>'); 
	textIn = textIn.replace(/<LI/gi, '\n<LI'); 
	textIn = textIn.replace(/<DL/gi, '\n<DL'); 
	textIn = textIn.replace(/<\/DL>/gi, '<\/DL>\n'); 
	textIn = textIn.replace(/<DD/gi, '\n<DD'); 
	
	//
	// Replace smart quotes.
	//
	textTemp = escape(textIn);
	textTemp = z2ReplaceString(textTemp, "%u2019", "'");
	textTemp = z2ReplaceString(textTemp, "%u201C", "\"");
	textTemp = z2ReplaceString(textTemp, "%u201D", "\"");
	textTemp = z2ReplaceString(textTemp, "%u2022", "");
	textTemp = z2ReplaceString(textTemp, "%u2026", "...");
	textIn = unescape(textTemp);
	return textIn; 
}

function z2ReplaceString(str1, str2, str3) { 
  while(str1.indexOf(str2) != -1) {
     str1 = str1.replace(str2, str3);
  } 
  return str1;     
}

function getAttribute(content, name){
	var v = getAttribute2(content, name);
	if(v==null)
		return null;
	v = v.replace( /&amp;/g, "&" );
	v = v.replace( /&lt;/g, "<" );
	v = v.replace( /&gt;/g, ">" );
	v = v.replace( /&quot;/g, "\"" );
	v = v.replace( /&apos;/g, "'" );
	return v;
}

function getAttribute2(content, name){
    var c = content.toUpperCase();
    var aName= name.toUpperCase();
    var startIndex = c.indexOf(aName);
    if(startIndex ==-1) return null;
    startIndex = c.indexOf("=", startIndex);
    if(startIndex ==-1) return null;
    c = content.substring(startIndex+1, c.length);
    trim(c);
    var firstChar = c.substring(0,1);
    var stopIndex;
    if(firstChar=="\""){
      stopIndex = c.indexOf("\"", 1);
      if(stopIndex==-1)
        return null;
      else return c.substring(1,stopIndex);
    }
    else if(firstChar=="'"){
      stopIndex = c.indexOf("'", 1);
      if(stopIndex==-1)
        return null;
      else return c.substring(1,stopIndex);
    }
    else{
      stopIndex = c.indexOf(" ");
      if(stopIndex==-1)
        stopIndex=c.indexOf(">");
      if(stopIndex==-1)
        return null;
      else return c.substring(0,stopIndex);
    }
}
function displayError(n, e){
   window.status = "Error #"+n +" : " + e.number + ' - ' + e.description;
	//debug("Error #"+n +" : " + e.number + ' - ' + e.description);
}
var debugWin = null;
function debug(msg) {
    if ((debugWin == null) || (debugWin.closed)) {
      debugWin = window.open("","debug_window","scrollbars=yes,resizable=yes,height=100,width=300");
      debugWin.document.open("text/plain");
    }
    debugWin.document.writeln(msg);
    debugWin.scrollTo(0,10000);
    // debugWin.document.close();  // uncomment this to see only last message
}

function doUpload(type, directory){
   var url = "/np/admin/systemsetting/uploadFileSelect.do?type="+type;
   if(directory!=null && directory!='' && directory !='null'){
      url += "&directory="+directory;
   }
   openWindow(480, 200, url, "upload_pop", "scrollbars=yes,resize=yes")
}

function openWindow(width, height, t1, t2, t3){
  var leftPos = (screen.availWidth-width) / 2;
  var topPos = (screen.availHeight-height) / 2;
  var t4 = 'width='+width+', height='+height+', top='+topPos+', left='+leftPos+','+t3;
  popup = window.open(t1, t2, t4);
  popup.focus();
  return popup;
}

function expandWindow(){
	var heightDelta=document.body.scrollHeight - document.body.clientHeight;
	var widthDelta=document.body.scrollWidth - document.body.clientWidth;
   window.resizeBy(widthDelta, heightDelta);
}

