function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function expand_dom(vs_dom) {
	ns4 = (document.layers)? true:false
	ie4 = (document.all)? true:false
  imgnonevis = new Image();
  imgnonevis.src = "images/icons/icon_hide.gif";
  imgvis = new Image();
  imgvis.src = "images/icons/icon_show.gif";
	if (ie4) {
		if (document.getElementById(vs_dom).style.display=="none") {
			document.getElementById(vs_dom).style.display = ""
			document["srchshow"].src = imgnonevis.src;
		} else {
			document.getElementById(vs_dom).style.display = "none";
			document["srchshow"].src = imgvis.src;
		}
	} else {
		if (document.getElementById(vs_dom).style.display=="none") {
			document.getElementById(vs_dom).style.display = "table-row"
			document["srchshow"].src = imgnonevis.src;
		} else {
			document.getElementById(vs_dom).style.display = "none";
			document["srchshow"].src = imgvis.src;
		}
	}

}

/**
 * Sets/unsets the pointer and marker in browse mode
 *
 * @param   object   the table row
 * @param   string   the action calling this script (over, out or click)
 * @param   string   the default background color
 * @param   string   the color to use for mouseover
 * @param   string   the color to use for marking a row
 *
 * @return  boolean  whether pointer is set or not
 */
//-----------------------------------------------------------------------------
function setPointer(theRow, theAction, theDefaultColor, thePointerColor, theMarkColor) {
		var theCells = null;

		// 1. Pointer and mark feature are disabled or the browser can't get the
		//    row -> exits
		if ((thePointerColor == '' && theMarkColor == '')
				|| typeof(theRow.style) == 'undefined') {
				return false;
		}

		// 2. Gets the current row and exits if the browser can't get it
		if (typeof(document.getElementsByTagName) != 'undefined') {
				theCells = theRow.getElementsByTagName('td');
		}
		else if (typeof(theRow.cells) != 'undefined') {
				theCells = theRow.cells;
		}
		else {
				return false;
		}

		// 3. Gets the current color...
		var rowCellsCnt  = theCells.length;
		var domDetect    = null;
		var currentColor = null;
		var newColor     = null;
		// 3.1 ... with DOM compatible browsers except Opera that does not return
		//         valid values with "getAttribute"
		if (typeof(window.opera) == 'undefined'
				&& typeof(theCells[0].getAttribute) != 'undefined') {
				currentColor = theCells[0].getAttribute('bgcolor');
				domDetect    = true;
		}
		// 3.2 ... with other browsers
		else {
				currentColor = theCells[0].style.backgroundColor;
				domDetect    = false;
		} // end 3

		// 4. Defines the new color
		// 4.1 Current color is the default one
		if (currentColor == ''
			|| currentColor.toLowerCase() == theDefaultColor.toLowerCase()) {
			if (theAction == 'over' && thePointerColor != '') {
			  newColor = thePointerColor;
			} else if (theAction == 'click' && theMarkColor != '') {
			  newColor = theMarkColor;
			}
		}
		// 4.1.2 Current color is the pointer one
		else if (currentColor.toLowerCase() == thePointerColor.toLowerCase()) {
				if (theAction == 'out') {
						newColor = theDefaultColor;
				}
				else if (theAction == 'click' && theMarkColor != '') {
						newColor = theMarkColor;
				}
		}
		// 4.1.3 Current color is the marker one
		else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {
				if (theAction == 'click') {
						newColor = (thePointerColor != '')
									   ? thePointerColor
									   : theDefaultColor;
				}
		} // end 4

		// 5. Sets the new color...
		if (newColor) {
				var c = null;
				// 5.1 ... with DOM compatible browsers except Opera
				if (domDetect) {
						for (c = 0; c < rowCellsCnt; c++) {
								theCells[c].setAttribute('bgcolor', newColor, 0);
						} // end for
				}
				// 5.2 ... with other browsers
				else {
						for (c = 0; c < rowCellsCnt; c++) {
								theCells[c].style.backgroundColor = newColor;
						}
				}
		} // end 5

		return true;
} // end of the 'setPointer()' function

/**
 * Checks/unchecks all tables
 *
 * @param   string   the form name
 * @param   boolean  whether to check or to uncheck the element
 *
 * @return  boolean  always true
 */
function setCheckboxes_fnc (sForm, sElm, nElm, bValue) 
{

	for (var i = 0; i < nElm; i++)	 
	{

		var s_fake = sElm + "[" + i + "]";
    
		document[sForm][s_fake].checked = bValue;

	}

	return true;

}

function cxAll_fnc (sForm, sElm, sElmRef, nElm)
{

	var sFake = sElm;

	if (document[sForm][sFake].checked == true)
	{

		setCheckboxes_fnc (sForm, sElmRef, nElm, true);

	}
	else
	{
		
		setCheckboxes_fnc (sForm, sElmRef, nElm, false);

	}

}

function confirm_action(vs_dialog, vs_href) 
{

	if (confirm (vs_dialog)) 
	{

		document.location.href = vs_href;

	}
}

/**
 * Confirm Camera Action
 */
function confirm_Camera_Action ( sDialog, sForm ) 
{

	if ( confirm ( sDialog ) ) 
	{

		return true ;

	}
	else
	{

		return false ;

	}

}

/**
 * Text Counter
 *
 * @creator Asep Andria I.W., ST. <asep.andria@toserbayogya.com>
 */
function countTextArea_fnc (sField, nMaxLimit) 
{
	
	/**
	 * Char Count
	 */
	var nCharCount = sField.value.length;        

	/**
	 * Trim the Extra Text
	 */
	if (nCharCount > nMaxLimit) 
	{ 

		sField.value = sField.value.substring(0, nMaxLimit);

	}

}

/**
 * Open Window
 *
 * @creator Asep Andria I.W., ST. <asep.andria@toserbayogya.com>
 */
function open_window (sUrl, sName, s_prop) 
{

	if (!(s_prop)) 
	{
	
		s_prop = 'scrollbars=yes,resizable=yes,left=0,top=0,width=600,height=400'

	}

	window.open(sUrl, sName, s_prop)

}

/**
 * Copy To Parent
 *
 * @creator Asep Andria I.W., ST. <asep.andria@toserbayogya.com>
 */
function copy_to_parent (s_elm, s_val) 
{
  
	eval('window.opener.frm1.' + s_elm + ".value = '" + s_val + "'");

}

function SmsCountKeyUp(maxChar)
{
    var msg  = document.forms.frm1.message;
    var left = document.forms.frm1.charNumberLeftOutput;
    var smsLenLeft = maxChar  - msg.value.length;
    if (smsLenLeft >= 0) 
    {
	left.value = smsLenLeft;
    } 
    else 
    {
	var msgMaxLen = maxChar;
	left.value = 0;
	msg.value = msg.value.substring(0, msgMaxLen);
    }
}

function SmsCountKeyDown(maxChar)
{
    var msg  = document.forms.frm1.message;
    var left = document.forms.frm1.charNumberLeftOutput;
    var smsLenLeft = maxChar  - msg.value.length;
    if (smsLenLeft >= 0) 
    {
	left.value = smsLenLeft;
    } 
    else 
    {
	var msgMaxLen = maxChar;
	left.value = 0; 
	msg.value = msg.value.substring(0, msgMaxLen);
    }
}

/**
 * Create HTML Text Box Property
 *
 * @creator Asep Andria I.W., ST. <asep.andria@toserbayogya.com>
 */
function JShtmlTextBox(sName, sType, sValue, nSize, nLength, sClass, bDisabled, sOption) {

	switch (sType) {

		case "password" : 
			sType = "password";
		break;

		default :
			sType = "text";

	}

	sReturn = 
		'<input type="'+sType+'" name="'+sName+'" value="'+sValue+'" size="'+nSize+'" maxlength="'+nLength+'" class="'+sClass+'" '+(bDisabled?'disabled="disabled" ':'')+(sOption?' '+sOption+' ':'')+' autocomplete="on"/>';

	return sReturn;

}

/**
 * Create JavaScript HTML Select Property
 *
 * @creator Asep Andria I.W., ST. <asep.andria@toserbayogya.com>
 */
function JShtmlSelect(sName, aValue, sSelected, sOption) {

	var sValue = 
		"<select name=\""+sName+"\" "+sOption+">";

	for (var i=0; i<aValue[0].length; i++) {
		
		if (aValue[0][i]==sSelected) {

			sValue += 
				"<option value=\""+aValue[0][i]+"\" selected=\"selected\">"+aValue[1][i]+"</option>";
		
		}
		else	{

			sValue += 
				"<option value=\""+aValue[0][i]+"\">"+aValue[1][i]+"</option>";

		}

	}

	sValue +=	
		"</select>";
	
	return sValue;

}

function setTemplate_fnc ()
{		    

	sellength = frm1.smstemplate.length;
	
	for (i = 0; i < sellength; i++)
	{

		if (frm1.smstemplate.options[i].selected == true)
		{

			frm1.message.value = frm1.smstemplate.options[i].value;

		}

	}

}

/**
 * Minimal String Length
 */
function ValidLength ( item, len ) 
{

   return ( item.length >= len ) ;

} 

/**
 * Show Error
 */
function error ( s_err, o_elm, b_focus, b_select ) 
{

   if ( errfound ) return ;

   alert ( s_err ) ;

   if ( b_focus ) o_elm.focus () ;
	 if ( b_select ) o_elm.select () ;

   errfound = true ;

}

/**
 * Trim String
 */
function trim_str ( s )
{

	var slen = (""+s).length ;

	for ( var i = 0 ; i < slen && s.charAt(i) == " " ; i++ ) ;
	for ( var n = slen - 1 ; n > i && s.charAt(n) == " " ; n-- ) ;
	return s.substring(i,n+1) ;

}

