/*====================================================================================================
Global Javascript - used by the majority of forms in the application
====================================================================================================*/
window.onbeforeunload = checkWindowUnload;
var isDirty = false;
var currentView;
var ctrlFlg=false;
var ctrlFlgIE=true;
var altFlg=false;
var yesToStartEdit; 
var msgDisplay=0;
var noRequired=true;

function testpresence()
{
    alert('What - don\'t you trust me?  I\'m still here!');
}

function toogleToolTip(strDisplay, strValueToDisplay) {
    document.getElementById('divToolTip').style.position = 'absolute';
    document.getElementById('divToolTip').style.left = window.event.clientX + 6;
    document.getElementById('divToolTip').style.top = window.event.clientY + 6;
    document.getElementById('divToolTip').style.display = strDisplay;
    document.getElementById('divToolTip').innerText = strValueToDisplay;
    if (strValueToDisplay == '')
        document.getElementById('divToolTip').style.display = 'none';
}

function pagePreview() {
    var pageID = document.getElementById('pageID').value;
    var previewURL = document.getElementById('previewURL').value;
    $.ajax({
        type: "POST",
        url: "../ajax/page_preview_click.aspx?id=" + pageID + "&amp;dt=" + Date(),
        success: function(publicationID) {
            var linkURL;
            linkURL = previewURL + '?pxid=' + publicationID;
            window.open(linkURL);
        }
    });
}


function blogPostPreview() {
    var pageID = document.getElementById('pageID').value;
    var previewURL = document.getElementById('previewURL').value;
    $.ajax({
        type: "POST",
        url: "../ajax/page_preview_click.aspx?id=" + pageID + "&source=post&amp;dt=" + Date(),
        success: function(publicationID) {
            var linkURL;
            linkURL = previewURL + '?pxid=' + publicationID;
            window.open(linkURL);
        }
    });
}


function getPublishDetails() {
    $("#divPublishDetails").dialog({
        autoOpen: true,
        modal: true,
        height: 200,
        width: 360,
        resizable: true,
        title: "Publish",
        buttons: { "OK": function() { document.getElementById('_div_comment').value = document.getElementById('div_comment').value; document.getElementById('_div_publish_begin').value = document.getElementById('div_publish_begin').value; doCommand("web:web_page_publication_save"); }, 'Cancel': function() {$(this).dialog('close');}  }
    });
}

function getBlogPostPublishDetails() {
    $("#divPublishDetails").dialog({
        autoOpen: true,
        modal: true,
        height: 200,
        width: 360,
        resizable: true,
        title: "Publish",
        buttons: { "OK": function() { document.getElementById('_div_comment').value = document.getElementById('div_comment').value; document.getElementById('_div_publish_begin').value = document.getElementById('div_publish_begin').value; doCommand("web:web_blog_post_publication_save"); }, 'Cancel': function() { $(this).dialog('close'); } }
    });
}

function navFocus() {
	var el = document.getElementById('lstView');
	if (arguments.length > 0) {
		if (arguments[0] != '') {
			el.value = arguments[0];
			currentView = arguments[0];
		}
	}

	if (el) {
		el.focus();
	}
	
}

function chkValid(fOK){

    for (var i=0; i<document.form1.elements.length; i++)
	{	
	
	    if (document.form1.elements[i].attributes['required'] != undefined) {

			var iReq=document.form1.elements[i].attributes['required'].value;
			var sMsg;
			
			switch(iReq)
			{
				case "1":
				//	alert(document.form1.elements[i].type);
					if (document.form1.elements[i].type == "select-one")
					{ // alert(document.form1.elements[i][document.form1.elements[i].selectedIndex].text);
						if(document.form1.elements[i].value == '' || document.form1.elements[i][document.form1.elements[i].selectedIndex].text == "Select One")
						{
							sMsg = document.form1.elements[i].attributes['invalidMsg'].value;
							alert (sMsg);
							fOK=0;
							document.form1.elements[i].focus();
							break;
						}
					}
					else if (document.form1.elements[i].value == '')
					{
						sMsg = document.form1.elements[i].attributes['invalidMsg'].value;
						alert (sMsg);
						fOK=0;
						document.form1.elements[i].focus();
						break;
					}
			}
		}
		if (!fOK){break;}	
	}
return fOK;
}

function doCommand(s) {

	var Opera = (navigator.userAgent.indexOf("Opera")!=-1);
	var MSIE = (navigator.appVersion.indexOf("MSIE")!=-1);
	var Moz = (navigator.userAgent.indexOf("Mozilla/5")!=-1);
	var el = document.getElementById('__mfcCommand');
	var f = document.getElementById('form1');
	var isSave = false;
	var isDelete = false;
	var fOK = true;
	//determine if 'save' is a part of the command...  if so, ignore isDirty variable	
	if (s.split('save').length > 1) {isSave = true}
	if (s.split('delete').length > 1) {isDelete = true}
	//if (s == 'undo') {isDirty = false;}
	if (s.split('undo').length > 1) {isDirty = false;}
	
	if (arguments.length > 1) {
		for (var a=1; a < arguments.length; a++) {
		    var elName = '__mfcArgument' + a;
            var elArg = document.getElementById(elName);
		    if (elArg)
		    {
		        elArg.value = arguments[a];
		    }
		}
	}
	
	if (s == 'View' | s == 'view') {		
		var tab = arguments[1];		
		if ((tab.toString()).length > 0) {			
			if (tab < 10000) {
				changeView(tab,1); 
				fOK = false;
			} else {
				fOK = false;
			}
		}
	}
	if (isDelete) {
		fOK = window.confirm('Are you sure you wish to delete this record?');
	}
	
	if (isSave) {
	    
		if (self.doValidate) {
			fOK = doValidate();
		} else { 
			fOK = true;
		}
		if (fOK) { isDirty = false }
		
		////////////////
		fOK = chkValid(fOK);
	
	}

	/// fOK = chkValid(fOK);
	if (fOK) {

        showWaiting();
        
        //showDialogBg('commandBg'); 
        //showPanel('commandWait');

//		if (arguments.length > 1) {
//			for (var a=1; a < arguments.length; a++) {
//				s = s + ',' + arguments[a];
//			}
//		}

		el.value = s;
	
		f.submit();
	}
	
}

function setCommand(s) {

	var Opera = (navigator.userAgent.indexOf("Opera")!=-1);
	var MSIE = (navigator.appVersion.indexOf("MSIE")!=-1);
	var Moz = (navigator.userAgent.indexOf("Mozilla/5")!=-1);
	var el = document.getElementById('__mfcCommand');
	var f = document.getElementById('form1');
	var isSave = false;
	var isDelete = false;
	var fOK = true;
	
	if (s.split('save').length > 1) {isSave = true}
	if (s.split('delete').length > 1) {isDelete = true}
	if (s.split('undo').length > 1) {isDirty = false;}
	
	if (arguments.length > 1) {
		for (var a=1; a < arguments.length; a++) {
		    var elName = '__mfcArgument' + a;
            var elArg = document.getElementById(elName);
		    if (elArg)
		    {
		        elArg.value = arguments[a];
		    }
		}
	}
	
	if (s == 'View' | s == 'view') {		
		var tab = arguments[1];		
		if ((tab.toString()).length > 0) {			
			if (tab < 10000) {
				changeView(tab,1); 
				fOK = false;
			} else {
				fOK = false;
			}
		}
	}
	if (isDelete) {
		fOK = window.confirm('Are you sure you wish to delete this record?');
	}
	
	if (isSave) {
	    
		if (self.doValidate) {
			fOK = doValidate();
		} else { 
			fOK = true;
		}
		if (fOK) { isDirty = false }
		
		fOK = chkValid(fOK);
	
	}

	if (fOK) {

        showWaiting();
		el.value = s;
	
	}
	
	return fOK;
	
}
/*
function showDialogWait() {

    $("<div style='text-align: center'></div>")
		.html("<img src='/images/waiting.gif'  />")
		.dialog({
			autoOpen: true,
			modal: true,
			height: 75,
			width: 100,
			resizable: false,
            closeOnEscape: false,
            open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); },
			title: "Please Wait"
		});
		
}
*/
function showDialog(sHtml) {

    $("<div style='text-align: left; '></div>")
		.html(sHtml)
		.dialog({
			autoOpen: true,
			modal: true,
			height: 225,
			width: 400,
			resizable: true,
			title: "Error",
			buttons: { "OK": function() { $(this).dialog("close"); } }
		});


}

//Function for changing bgColor of TextBox, DropDownBox, TextArea etc.
//-------------------------------------------------------------------

function startEdit(e,a) {

	var key;			
	flg=false;	
	
	// If condition for changing color of dropdown list in FireFox browser
	
	if(navigator.userAgent.indexOf("Mozilla/5")!=-1)
	{
		a.style.backgroundColor = "yellow";
		isDirty = true;
	}else
	{
	}
	
	if(window.event) 
	{			
		//alert("IE");	
		key=event.keyCode;		
		ctrlFlg=false;			
		altFlg=false;
		
		if(key==7 || key==10 || key==11 || key==13 || key==17 || key==20 || key==21)
		{
			ctrlFlg=true;
		}			
	}
	else if(e.which) 
	{
		// netscape		
		key = e.which; 		
		ctrlFlg = e.ctrlKey;	
		altFlg = e.altKey;
		
		if(ctrlFlg==true && (key==118 || key==86) || (key==120 || key==88))
		{
			ctrlFlg = false;
			//alert(ctrlFlg);
		}		
	}
	else {
		// no event, so pass through
		return true;
	}
	
		
	if(altFlg==false && ctrlFlg==false)
	{		
		a.style.backgroundColor = "yellow";	
		isDirty = true;	
	}else
	{
		
	}
	

}



function KeyCheck(e)
{

	var KeyID = (window.event) ? event.keyCode : e.keyCode;
	
	
	var el = event.srcElement;
	
	if (el.onkeypress) {
		var sFunc = el.onkeypress.toString();
		var i = sFunc.indexOf('startEdit');
		
		if (i != -1) {
			//alert('Editable');
			yesToStartEdit=true;
		} 
		else 
		{
		    //alert('Not Editable');
		    yesToStartEdit = false;		
		}
	} else {
		//alert('Not Editable outer');
		yesToStartEdit=false;
	}

	
	if(window.event.ctrlKey)
	{
		ctrlFlgIE=true;
	}else if(window.event.altKey)
	{
		altFlg=true;	
	}
	else
	{
		ctrlFlgIE=false;
		altFlg=false;
	}
	
	key=KeyID;
    
	if(ctrlFlgIE==true && ((key==118 || key==86) || (key==120 || key==88)))
	{
		//alert("x or v");		
		ctrlFlgIE = false;		
	}else
	{
		//alert("not x or v");
		ctrlFlgIE = true;			
	}
  
	if(altFlg==false && ctrlFlgIE==false && yesToStartEdit==true)
	{		
		//alert("change color");
		fld=document.getElementById(event.srcElement.id);			
		fld.style.backgroundColor = "yellow";
		isDirty = true;				
	}
	
   
}

document.onkeyup = KeyCheck;


//-------------------------------------------------------------------

function kill_navigation_notification()
{
	noRequired = false;
}

//Function for arranging footer in all browser
//-------------------------------------------------------------------
function chkBrowser(){			
	
	var Opera = (navigator.userAgent.indexOf("Opera")!=-1);
	var MSIE = (navigator.appVersion.indexOf("MSIE")!=-1);
	var Moz = (navigator.userAgent.indexOf("Mozilla/5")!=-1);
	var myframe = document.getElementById("panMain");
	//alert(navigator.appVersion.indexOf("Opera"));
	//alert(MSIE);
	//alert(Moz);
		
	if (Moz)
	{
		myframe.style.height="100%";					
		myframe.style.width="100%";					
	}
	if (Opera) 
	{	
		myframe.style.height=window.innerHeight;
		myframe.style.width="100%";	
	}

}

//-------------------------------------------------------------------

function checkWindowUnload() {
    if (isDirty && msgDisplay==0) {
	        
		if(noRequired==false)
		{
			//alert('no required');
			noRequired=true;
		}else
		{
			var msg = "You have not saved your changes.";
			msgDisplay=1;
			return msg;
		}
	}else
	{
	}
} 

function changeView(x,move)
{		
	var sTab = new String(x);
	location.href = changeArgs('tab', sTab)
}

function changeArgs(sArgList, sValueList) {

	var sURL = document.URL;
	var sWithout = sURL;
	
	var arrA = sArgList.split(',');
	var arrV = sValueList.split(',');
	
	for (var n=0; n < arrA.length; n++ ) {

		sArg = arrA[n];
		sValue = arrV[n];
		
		//first look for the argument preceded by a ?
		var i = sURL.indexOf('?' + sArg + '=');
		//if not found, look for it preceded by a &
		if (i == -1) { 	i = sURL.indexOf('&' + sArg + '=');	}

		if (i != -1) {
			//if either is found, get the leftmost part of the string
			var sLeft = sURL.substring(0, i);
			var x = i + sArg.length + 2
			//now get the rightmost part of the string (after the equal sign ie: "sArg=")
			var sRight = sURL.substring(x, sURL.length);
			
			//see if there are any more arguments following
			var y = sRight.indexOf('&');
			if (y == -1) {
				//if no additional arguments, then the url WITHOUT the specified parameter is the left portion (sLeft)
				sWithout = sLeft;
			} else {
				if (sLeft.indexOf('?') == -1) { 
					sLeft = sLeft + '?'; 
				} else {
					sLeft = sLeft + '&';
				}
				sWithout = sLeft + sRight.substring(y+1,sRight.length);
			}
		
		} 
		if (sWithout.indexOf('?') != -1) {
			sURL = sWithout + '&' + sArg + '=' + sValue;
		} else {
			sURL = sWithout + '?' + sArg + '=' + sValue;
		}
		
		sWithout = sURL;

	}
	
	return sURL;
}



//function for use CTRL + TAB key into textArea
function CheckTab(el) {
  // Run only in IE
  // and if tab key is pressed
  // and if the control key is pressed
  if ((document.all) && (9==event.keyCode) && (event.ctrlKey)) {
    // Cache the selection
    el.selection=document.selection.createRange(); 
    setTimeout("ProcessTab('" + el.id + "')",0)
  }
}

function ProcessTab(id) {
  // Insert tab character in place of cached selection
  document.all[id].selection.text=String.fromCharCode(9)
  // Set the focus
  document.all[id].focus()
}

/*===================================================================
Javascript needed to support the drag-n-drop panel
Code sample from http://www.brainjar.com/dhtml/drag/default.asp

 Do not remove this notice.

 Copyright 2001 by Mike Hall.
 See http://www.brainjar.com for terms of use.
===================================================================*/

// Determine browser and version.

function Browser() {

  var ua, s, i;

  this.isIE    = false;
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as NS 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}

var browser = new Browser();

// Global object to hold drag information.

var dragObj = new Object();
dragObj.zIndex = 0;

function dragStart(event, id) {

  var el;
  var x, y;

  // If an element id was given, find it. Otherwise use the element being
  // clicked on.

  if (id)
    dragObj.elNode = document.getElementById(id);
  else {
    if (browser.isIE)
      dragObj.elNode = window.event.srcElement;
    if (browser.isNS)
      dragObj.elNode = event.target;

    // If this is a text node, use its parent element.

    if (dragObj.elNode.nodeType == 3)
      dragObj.elNode = dragObj.elNode.parentNode;
  }

  // Get cursor position with respect to the page.

  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

  // Save starting positions of cursor and element.

  dragObj.cursorStartX = x;
  dragObj.cursorStartY = y;
  dragObj.elStartLeft  = parseInt(dragObj.elNode.style.left, 10);
  dragObj.elStartTop   = parseInt(dragObj.elNode.style.top,  10);

  if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
  if (isNaN(dragObj.elStartTop))  dragObj.elStartTop  = 0;

  // Update element's z-index.

  //dragObj.elNode.style.zIndex = ++dragObj.zIndex;

  // Capture mousemove and mouseup events on the page.

  if (browser.isIE) {
    document.attachEvent("onmousemove", dragGo);
    document.attachEvent("onmouseup",   dragStop);
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS) {
    document.addEventListener("mousemove", dragGo,   true);
    document.addEventListener("mouseup",   dragStop, true);
    event.preventDefault();
  }
}

function dragGo(event) {

  var x, y;

  // Get cursor position with respect to the page.

  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

  // Move drag element by the same amount the cursor has moved.

  dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
  dragObj.elNode.style.top  = (dragObj.elStartTop  + y - dragObj.cursorStartY) + "px";

   
  if (browser.isIE) {
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS)
    event.preventDefault();
}

function dragStop(event) {

  // Stop capturing mousemove and mouseup events.

  if (browser.isIE) {
    document.detachEvent("onmousemove", dragGo);
    document.detachEvent("onmouseup",   dragStop);
  }
  if (browser.isNS) {
    document.removeEventListener("mousemove", dragGo,   true);
    document.removeEventListener("mouseup",   dragStop, true);
  }
}

function hidePanel(event,id) {

    var elHide;
    var elCommand;
    
    if (id)
        elHide = document.getElementById(id);
    else {
        if (browser.isIE) 
            elCommand = window.event.srcElement;
        
        if (browser.isNS)
          elCommand = event.target;
          
        elHide = elCommand.parentNode;
    }

    elHide.style.display = 'none';
    
}

//function showPanel(event,id) {

//    var elHide;
//    var elCommand;
//    
//    if (id)
//        elHide = document.getElementById(id);
//    else {
//        if (browser.isIE) 
//            elCommand = window.event.srcElement;
//        
//        if (browser.isNS)
//          elCommand = event.target;
//          
//        elHide = elCommand.parentNode;
//    }

//    elHide.style.display = 'inline';
// 
//}

function showPanel(id) {

    var elCenter;
    var elCommand;
    
    var iClientHeight = f_clientHeight();
    var iClientWidth = f_clientWidth();
        
    if (id)
        elCenter = document.getElementById(id);
        
    if (elCenter)
    {
        elCenter.style.display = "inline";
        var iElementWidth = elCenter.offsetWidth;
        var iElementLeft = (iClientWidth / 2) - (iElementWidth / 2)

        var iElementHeight = elCenter.offsetHeight;
        var iElementTop = ((iClientHeight / 2) - (iElementHeight / 2)) + f_scrollTop();

        elCenter.style.left = iElementLeft + "px";
        elCenter.style.top = iElementTop + "px";
        
        if (showWaiting) {showWaiting();}
    }
    
}

function showDialogBg(id) {

    var elBg;
    
    if (id)
        elBg = document.getElementById(id);
        
    elBg.style.display = "inline";        
}

function hideDialogBg(id) {

    var elBg;
    
    if (id)
        elBg = document.getElementById(id);
        
    elBg.style.display = "none";        
}


/*===================================================================
Functions to retrieve client window height / width / position
from http://www.softcomplex.com/docs/get_window_size_and_scrollbar_position.html
===================================================================*/
function f_clientWidth() {
	return f_filterResults (
		window.innerWidth ? window.innerWidth : 0,
		document.documentElement ? document.documentElement.clientWidth : 0,
		document.body ? document.body.clientWidth : 0
	);
}
function f_clientHeight() {
	return f_filterResults (
		window.innerHeight ? window.innerHeight : 0,
		document.documentElement ? document.documentElement.clientHeight : 0,
		document.body ? document.body.clientHeight : 0
	);
}
function f_scrollLeft() {
	return f_filterResults (
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0
	);
}
function f_scrollTop() {
	return f_filterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}
function f_filterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}

/*====================================================================================================
Generic Date Functions
====================================================================================================*/

function checkDateField(objName)
{
    var datefield = objName;
    if (checkDate(datefield.value) == false)
    {
        datefield.focus();
        datefield.select();
        alert("You have entered an invalid date.\r\n\The date must be in mm/dd/yyyy format, a valid date, and no earlier than today.\r\n\Please try again.");
        return false;
    }
    else
    {
        return true;
    }
}

function checkDate(strDate) 
{
    var strDatestyle = "US"; //United States date style
    //var strDatestyle = "EU";  //European date style
    var strDateArray;
    var strDay;
    var strMonth;
    var strYear;
    var intday;
    var intMonth;
    var intYear;
    var booFound = false;
    var strSeparatorArray = new Array("-"," ","/",".");
    var intElementNr;
    var err = 0;
    var strMonthArray = new Array(12);
    strMonthArray[0] = "Jan";
    strMonthArray[1] = "Feb";
    strMonthArray[2] = "Mar";
    strMonthArray[3] = "Apr";
    strMonthArray[4] = "May";
    strMonthArray[5] = "Jun";
    strMonthArray[6] = "Jul";
    strMonthArray[7] = "Aug";
    strMonthArray[8] = "Sep";
    strMonthArray[9] = "Oct";
    strMonthArray[10] = "Nov";
    strMonthArray[11] = "Dec";

    var vDesh = "-";
    var vSpace = " ";
    var vSlash = "/";
    var vDot = ".";

    if (strDate.indexOf(vDesh) == -1 && strDate.indexOf(vSpace) == -1 && strDate.indexOf(vSlash) == -1 && strDate.indexOf(vDot) == -1 && strDate.length > 0) 
    {
        return false;
    }

    if (strDate.length < 1) 
    {
        return true;
    }

    for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) 
    {
        if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) 
        {
            strDateArray = strDate.split(strSeparatorArray[intElementNr]);
            
            if (strDateArray.length != 3) 
            {
                err = 1;
                return false;
            }
            else 
            {
                strDay = strDateArray[0];
                strMonth = strDateArray[1];
                strYear = strDateArray[2];
            }
            
            booFound = true;
        }
    }

    if (booFound == false) 
    {
        if (strDate.length > 5) 
        {
            strDay = strDate.substr(0, 2);
            strMonth = strDate.substr(2, 2);
            strYear = strDate.substr(4);
        }
    }

    if (IsNumeric(strDay) == false || IsNumeric(strMonth) == false || IsNumeric(strYear) == false || strDay.length > 2 || strMonth.length > 2 || strYear.length > 4)
    {        
        return false;
    }
    
    if (strYear.length == 2) 
    {
        strYear = '20' + strYear;
    }

    // US style
    if (strDatestyle == "US") 
    {
        strTemp = strDay;
        strDay = strMonth;
        strMonth = strTemp;
    }

    intday = parseInt(strDay, 10);

    if (isNaN(intday)) 
    {
        err = 2;
        return false;
    }

    intMonth = parseInt(strMonth, 10);
    
    if (isNaN(intMonth)) 
    {          
        for (var i = 0;i < 12;i++)
        {
            if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase())
            {
                intMonth = i+1;
                strMonth = strMonthArray[i];
                i = 12;
            }
        }

        if (isNaN(intMonth)) 
        {
            err = 3;
            return false;
        }
    }

    intYear = parseInt(strYear, 10);
    if (isNaN(intYear)) 
    {
        err = 4;
        return false;
    }
    
    if (intMonth > 12 || intMonth <1) 
    {
        err = 5;
        return false;
    }

    if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) 
    {
        err = 6;
        return false;
    }

    if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday <1)) 
    {
        err = 7;
        return false;
    }

    if (intMonth == 2) 
    {
        if (intday < 1) 
        {
            err = 8;
            return false;
        }

        if (LeapYear(intYear) == true) 
        {
            if (intday > 29) 
            {
                err = 9;
                return false;
            }
        }
        else 
        {
            if (intday > 28) 
            {
                err = 10;
                return false;
            }
        }
    }        
}

function LeapYear(intYear) 
{
    if (intYear % 100 == 0) 
    {
      if (intYear % 400 == 0) { return true; }
    }
    else 
    {
      if ((intYear % 4) == 0) { return true;}
    }        
    return false;
}


/*====================================================================================================
Generic Ajax Functions
====================================================================================================*/

var xmlHttp;

function getXmlHttpObject() {
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        return new XMLHttpRequest();
    }
    if (window.ActiveXObject) {
        // code for IE6, IE5
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    alert("Your browser does not support AJAX!");
    return null;
}

function stateChanged(element) {
    if (xmlHttp.readyState == 4) {
        document.getElementById(element).innerHTML = xmlHttp.responseText;
    }
}

function ajaxGetOptionList(mod, vw, find, element) {

    if (find.length < 3) {

        document.getElementById(element).options.length = 0;

    }
    else {

        xmlHttp = getXmlHttpObject();
        var url = "/raw.aspx?alt=1&mod=" + mod + "&vw=" + vw + "&find=" + find;

        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState == 4) {
                var el = document.getElementById(element);
                var xmlDoc = xmlHttp.responseXML.documentElement;

                if (el) {
                    if (xmlDoc) {
                        el.options.length = 0;

                        //var optionCount = xmlDoc.selectNodes("//result").length;
                        
                        //For Firefox browser                        
                        var optionCount = xmlDoc.getElementsByTagName("result").length;
                        
                        for (var i = 0; i < optionCount; i++) {
                            var n = xmlDoc.getElementsByTagName("result")[i]
                            addOption(el, n.attributes[0].value, n.attributes[1].value);
                        }
                        if (!el.options.length == 0) {
                            el.options[0].selected = true;
                        }
                        if (optionCount > 5) {
                            el.size = 5;
                        } else if (optionCount < 1) {
                            el.size = 1;
                        } else {
                            el.size = optionCount;
                        }

                    }
                }
            }
        }
        xmlHttp.open("GET", url, true);
        xmlHttp.send(null);

    }


}

function ajaxGetOptionListFixed(mod, vw, find, element, size) {

    if (find.length < 3) {

        document.getElementById(element).options.length = 0;

    }
    else {

        xmlHttp = getXmlHttpObject();
        var url = "/raw.aspx?alt=1&mod=" + mod + "&vw=" + vw + "&find=" + find;

        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState == 4) {
                var el = document.getElementById(element);
                var xmlDoc = xmlHttp.responseXML.documentElement;

                if (el) {
                    if (xmlDoc) {
                        el.options.length = 0;

                        //var optionCount = xmlDoc.selectNodes("//result").length;
                        
                        //For Firefox browser                        
                        var optionCount = xmlDoc.getElementsByTagName("result").length;
                        
                        for (var i = 0; i < optionCount; i++) {
                            var n = xmlDoc.getElementsByTagName("result")[i]
                            addOption(el, n.attributes[0].value, n.attributes[1].value);
                        }
                        if (!el.options.length == 0) {
                            el.options[0].selected = true;
                        }
                        
                        el.size = size;

                    }
                }
            }
        }
        xmlHttp.open("GET", url, true);
        xmlHttp.send(null);

    }


}

function addOption(el, value, text) {
    var optn = document.createElement("OPTION");
    optn.value = value;
    optn.text = text;
    el.options.add(optn);
}


//function isWholeNumber(inputStr)
//{
//    str = inputStr.toString();
//    for(var i=0; i < str.length; i++)
//    {            
//        var curValue = str.charAt(i);                
//        if(curValue < 0 || curValue < 9)
//        {
//          return false;        
//        }
//    }
//    return true;
//}


function IsNumeric(sText) 
{
    var ValidChars = "0123456789.";
    var IsNumber = true;
    var Char;


    for (i = 0; i < sText.length && IsNumber == true; i++) 
    {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) 
        {
            IsNumber = false;
        }
    }
    return IsNumber;
}

function isWholeNumber(sText) 
{
    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;
    
    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}



// Credit Card Validation Javascript
// copyright 12th May 2003, by Stephen Chapman, Felgall Pty Ltd

// You have permission to copy and use this javascript provided that
// the content of the script is not changed in any way.


    function cardval(s) {
        // remove non-numerics
        var v = "0123456789";
        var w = "";
        for (i = 0; i < s.length; i++) {
            x = s.charAt(i);
            if (v.indexOf(x, 0) != -1)
                w += x;
        }
        // validate number
        j = w.length / 2;
        if (j < 6.5 || j > 8 || j == 7) return false;
        k = Math.floor(j);
        m = Math.ceil(j) - k;
        c = 0;
        for (i = 0; i < k; i++) {
            a = w.charAt(i * 2 + m) * 2;
            c += a > 9 ? Math.floor(a / 10 + a % 10) : a;
        }
        for (i = 0; i < k + m; i++) c += w.charAt(i * 2 + 1 - m) * 1;
        return (c % 10 == 0);
    }


    function ValidateEmail(str) 
    {

        var at = "@"
        var dot = "."
        var lat = str.indexOf(at)
        var lstr = str.length
        var ldot = str.indexOf(dot)
        
        if (str.indexOf(at) == -1) 
        {
            alert("Email address entered is not valid, please try again.")
            return false
        }

        if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) 
        {
            alert("Email address entered is not valid, please try again.")
            return false
        }

        if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) 
        {
            alert("Email address entered is not valid, please try again.")
            return false
        }

        if (str.indexOf(at, (lat + 1)) != -1) 
        {
            alert("Email address entered is not valid, please try again.")
            return false
        }

        if (str.substring(lat - 1, lat) == dot || str.substring(lat + 1, lat + 2) == dot) 
        {
            alert("Email address entered is not valid, please try again.")
            return false
        }

        if (str.indexOf(dot, (lat + 2)) == -1) 
        {
            alert("Email address entered is not valid, please try again.")
            return false
        }

        if (str.indexOf(" ") != -1) 
        {
            alert("Email address entered is not valid, please try again.")
            return false
        }

        return true
    }

    function ValidateEmailWithoutMessage(str) {

        var at = "@"
        var dot = "."
        var lat = str.indexOf(at)
        var lstr = str.length
        var ldot = str.indexOf(dot)

        if (str.indexOf(at) == -1){            
            return false
        }

        if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) {        
            return false
        }

        if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) {            
            return false
        }

        if (str.indexOf(at, (lat + 1)) != -1) {            
            return false
        }

        if (str.substring(lat - 1, lat) == dot || str.substring(lat + 1, lat + 2) == dot) {            
            return false
        }

        if (str.indexOf(dot, (lat + 2)) == -1) {            
            return false
        }

        if (str.indexOf(" ") != -1) {            
            return false
        }

        return true
    }
    

    function checkPassword(str) 
    {
        var strng = str;
        var error = "";
        if (strng == "") 
        {
            alert("Please Enter a password.");
            return false
        }

        var spaceChar = " ";
        var illegalChars = /[\W_]g/; // allow only letters and numbers
        var re = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{8,}$/;
        
        if (strng.length < 8) 
        {
            alert("The password must be at least 8 characters.");
            return false

        }
        else if (strng.indexOf(spaceChar) > -1)         
        {
            alert("The password must not contains any spaces at start or end.");
            return false
        }       
//        else if (illegalChars.test(strng)) 
//        {
//            alert("The password contains illegal characters.");
//            return false

//        }

        else if (!/[0-9]/.test(strng) || !/[a-z]/.test(strng) || !/[A-Z]/.test(strng))
        {
            alert("The password must contain at least one uppercase letter, one lowercase letter,and one numeral.");
            return false
        }

//        else if (!re.test(strng)) 
//        {
//            alert("The password must contain at least one uppercase letter, one lowercase letter,and one numeral.");
//            return false
//        }

        return true
    }


//    function IsalphaNumericValidate(alphanumericChar) 
//    {
//        if (trimSpace(alphanumericChar).length == 0 || alphanumericChar.search(/[^a-zA-Z0-9 ]/g) != -1) 
//        {
//            return false;
//        }

//        else 
//        {
//            return true;
//        }
    //    }

    function isAlphaNumeric(val) {
        if (val.match(/^[a-zA-Z0-9]+$/)) {
            return true;
        }
        else {
            return false;
        }
    }


    function DecimalNumberOnly(obj, decimalPlaces, allowNegative) {
        var temp = obj.value;

        // avoid changing things if already formatted correctly
        var reg0Str = '[0-9]*';
        if (decimalPlaces > 0) {
            reg0Str += '\\.?[0-9]{0,' + decimalPlaces + '}';
        } else if (decimalPlaces < 0) {
            reg0Str += '\\.?[0-9]*';
        }
        reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str;
        reg0Str = reg0Str + '$';
        var reg0 = new RegExp(reg0Str);
        if (reg0.test(temp)) return true;

        // first replace all non numbers
        var reg1Str = '[^0-9' + (decimalPlaces != 0 ? '.' : '') + (allowNegative ? '-' : '') + ']';
        var reg1 = new RegExp(reg1Str, 'g');
        temp = temp.replace(reg1, '');

        if (allowNegative) {
            // replace extra negative
            var hasNegative = temp.length > 0 && temp.charAt(0) == '-';
            var reg2 = /-/g;
            temp = temp.replace(reg2, '');
            if (hasNegative) temp = '-' + temp;
        }

        if (decimalPlaces != 0) {
            var reg3 = /\./g;
            var reg3Array = reg3.exec(temp);
            if (reg3Array != null) {
                // keep only first occurrence of .
                // and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0
                var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length);
                reg3Right = reg3Right.replace(reg3, '');
                reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
                temp = temp.substring(0, reg3Array.index) + '.' + reg3Right;
            }
        }

        obj.value = temp;
    }

    function blockNonNumbers(obj, e, allowDecimal, allowNegative) {
        var key;
        var isCtrl = false;
        var keychar;
        var reg;

        if (window.event) {
            key = e.keyCode;
            isCtrl = window.event.ctrlKey
        }
        else if (e.which) {
            key = e.which;
            isCtrl = e.ctrlKey;
        }

        if (isNaN(key)) return true;

        keychar = String.fromCharCode(key);

        // check for backspace or delete, or if Ctrl was pressed
        if (key == 8 || isCtrl) {
            return true;
        }

        reg = /\d/;
        var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
        var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;

        return isFirstN || isFirstD || reg.test(keychar);
    }
    


function CommaFormatted(amount) {

    var delimiter = ","; // replace comma if desired
    var a = amount.split('.', 2)
    var d = a[1];
    if (d == null) { d = '00' } //dhb 20111202 - bug fix - if nothing past decimal add 00
    var i = parseInt(a[0]);
    if (isNaN(i)) { return ''; }
    var minus = '';
    if (i < 0) { minus = '-'; }
    i = Math.abs(i);
    var n = new String(i);
    var a = [];
    while (n.length > 3) {
        var nn = n.substr(n.length - 3);
        a.unshift(nn);
        n = n.substr(0, n.length - 3);
    }
    if (n.length > 0) { a.unshift(n); }
    n = a.join(delimiter);
    if (d.length < 1) { amount = n; }
    else { amount = n + '.' + d; }
    amount = minus + amount;
    return amount;

}


function showWaiting(){
    $("#dialog-waiting").dialog('open');  
}

function hideWaiting(){
  $("#dialog-waiting").dialog('close');  
}
