Showing posts with label JAVA SCRIPT. Show all posts
Showing posts with label JAVA SCRIPT. Show all posts

Thursday, 5 February 2015

User Defined Menu IN YII -- election project we have used

To Make this first we need to change the layout main file. That is main.php

<?php /* @var $this Controller */

Yii::app()->clientScript->registerScriptFile(Yii::app()->request->baseUrl.'/js/fadeslideshow.js');
Yii::app()->clientScript->registerScriptFile(Yii::app()->request->baseUrl.'/js/jqueryslidemenu.js'); 
/* These are the Java Script files to be imported */
 ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="language" content="en" />

<!-- blueprint CSS framework -->
<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/screen.css" media="screen, projection" />
<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/print.css" media="print" />
<!--[if lt IE 8]>
<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/ie.css" media="screen, projection" />
<![endif]-->

<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/main.css" />
<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/form.css" />

<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/jqueryslidemenu.css" />  
<!-- This is only CSS we are using for Menu -->

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script type="text/javascript" src="js/fadeslideshow.js"></script>  <!-- The same script we are defining here -->
   

<title><?php echo CHtml::encode($this->pageTitle); ?></title>
</head>

<body>

<div class="container" id="page">

<div id="header">
<div id="logo"><img src="images/election.jpg"></img> <?php //echo CHtml::encode(Yii::app()->name); ?></div>
</div>

<div id="mainmenu"></div>

 <div id="myslidemenu" class="jqueryslidemenu"><!-- mainmenu --> 
<!-- This is the main Div to menu the below is the user defined menu -->

<?php $this->widget('zii.widgets.CMenu',array('activeCssClass'=>'current','encodeLabel' => false,
'items'=>array(
array('label'=>'&nbsp;&nbsp;Home&nbsp;&nbsp;','url'=>array('site/index')),
array('label'=>'&nbsp;EVM Second Randomzation&nbsp;', 'url'=>array(''), 'items'=>array(
array('label'=>'Ballot Units', 'url'=>array('evm/bu')),  /* Actions defined in application */
array('label'=>'Control Units',  'url'=>array('evm/cu')),
array('label'=>'Reserved',  'url'=>array('')),
array('label'=>'Freeze',  'url'=>array('')),
)),
array('label'=>'&nbsp;&nbsp;MOs Randomization&nbsp;&nbsp;', 'url'=>array(''), 'items'=>array(
array('label'=>'Initialization', 'url'=>array('mo/moinit')),
array('label'=>'Randomize MOs',  'url'=>array('mo/morand')),
array('label'=>'Show','url'=>array(''),'items'=>array(
array('label'=>'Alloted MOs',  'url'=>array('mo/moallot')),
array('label'=>'Reserved MOs',  'url'=>array('mo/moreserve')),
)),
array('label'=>'Freeze Data',  'url'=>array('mo/freeze')),
)),
array('label'=>'&nbsp;&nbsp;Polling Personnel Rand.&nbsp;&nbsp;', 'url'=>array(''), 'items'=>array(
array('label'=>'Team Formation', 'url'=>array(''),'items'=>array(
array('label'=>'Constituency Wise', 'url'=>array('/personnel/freeze')),
array('label'=>'Total', 'url'=>array('/personnel/freeze')),
array('label'=>'Consolidated', 'url'=>array('/personnel/freeze')),
array('label'=>'Reserved',  'url'=>array('/personnel/freeze')),
)),
array('label'=>'Third Randomization',  'url'=>array(''),'items'=>array(
array('label'=>'Constituency Wise', 'url'=>array('/personnel/constwise')),
array('label'=>'Total Randomization', 'url'=>array('/personnel/tot')),
array('label'=>'Show','url'=>array(''),'items'=>array(
array('label'=>'Constituency Wise',  'url'=>array('personnel/repfilter')),
array('label'=>'Total Rep',  'url'=>array('personnel/totrep')),
)),
array('label'=>'Freeze', 'url'=>array('/personnel/freeze')),
)),
)),

array('label'=>'Login', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest),
array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest)
),
)); ?>   /* End of User defined menu */

</div>  <!-- End of the css and js defined div -->

<br/><br/>
<?php if(isset($this->breadcrumbs)):?>
<?php $this->widget('zii.widgets.CBreadcrumbs', array(
'links'=>$this->breadcrumbs,
)); ?><!-- breadcrumbs -->
<?php endif?>
        <?php $this->renderPartial('//site/dialog'); ?>
<?php echo $content; ?>

<div class="clear"></div>

<div id="footer">
Copyright &copy; <?php echo date('Y'); ?> by NIC,Hyderabad.<br/>
All Rights Reserved.<br/>

</div><!-- footer -->

</div><!-- page -->

</body>
</html>

please check the highlighted colors and comments explaining the colored text. the JS and CSS files are defined below. The rest are same,

  jqueryslidemenu.css


.jqueryslidemenu{
font: bold 13px Arial,Helvetica,sans-serif;
background: #414141;
width: 100%;
}

.jqueryslidemenu ul{
margin: 0;
padding: 0;
list-style-type: none;
}

/*Top level list items*/
.jqueryslidemenu ul li{
position: relative;
display: inline;
float: left;
}

/*Top level menu link items style*/
.jqueryslidemenu ul li a{
display: block;
/* background: #414141; background of tabs (default state)*/
background: #69A8CD; 
font-weight:bold;
color: white;
padding: 8px 10px;
border: 1px solid #778;
color: #2d2b2b;
text-decoration: none;
}

* html .jqueryslidemenu ul li a{ /*IE6 hack to get sub menu links to behave correctly*/
display: inline-block;
}

.jqueryslidemenu ul li a:link, .jqueryslidemenu ul li a:visited{
color: white;
}

.jqueryslidemenu ul li a:hover{
background: lightyellow; /*tab link background during hover state*/
color: #69A8CD;
}

/*1st sub level menu*/
.jqueryslidemenu ul li ul{
position: absolute;
left: 0;
display: block;
visibility: hidden;
}

/*Sub level menu list items (undo style from Top level List Items)*/
.jqueryslidemenu ul li ul li{
display: list-item;
float: none;
}

/*All subsequent sub menu levels vertical offset after 1st level sub menu */
.jqueryslidemenu ul li ul li ul{
top: 0;
}

/* Sub level menu links style */
.jqueryslidemenu ul li ul li a{
font: bold 12px Verdana;
width: 160px; /*width of sub menus*/
padding: 5px;
margin: 0;
border-top-width: 0;
border-bottom: 1px solid gray;
}

.jqueryslidemenuz ul li ul li a:hover{ /*sub menus hover style*/
background: #eff9ff;
color: black;
}

/* ######### CSS classes applied to down and right arrow images  ######### */

.downarrowclass{
position: absolute;
top: 12px;
right: 7px;
}

.rightarrowclass{
position: absolute;
top: 6px;
right: 5px;
}

Copy the contents to the jqueryslidemenu.css file and paste the file in app_folder/css/ folder.



jqueryslidemenu.js


/*********************
//* jQuery Multi Level CSS Menu #2- By Dynamic Drive: http://www.dynamicdrive.com/
//* Last update: Nov 7th, 08': Limit # of queued animations to minmize animation stuttering
//* Menu avaiable at DD CSS Library: http://www.dynamicdrive.com/style/
*********************/

//Update: April 12th, 10: Fixed compat issue with jquery 1.4x

//Specify full URL to down and right arrow images (23 is padding-right to add to top level LIs with drop downs):
var arrowimages={down:['downarrowclass', 'images/down.gif', 23], right:['rightarrowclass', 'images/right.gif']}

var jqueryslidemenu={

animateduration: {over: 200, out: 100}, //duration of slide in/ out animation, in milliseconds

buildmenu:function(menuid, arrowsvar){
jQuery(document).ready(function($){
var $mainmenu=$("#"+menuid+">ul")
var $headers=$mainmenu.find("ul").parent()
$headers.each(function(i){
var $curobj=$(this)
var $subul=$(this).find('ul:eq(0)')
this._dimensions={w:this.offsetWidth, h:this.offsetHeight, subulw:$subul.outerWidth(), subulh:$subul.outerHeight()}
this.istopheader=$curobj.parents("ul").length==1? true : false
$subul.css({top:this.istopheader? this._dimensions.h+"px" : 0})
$curobj.children("a:eq(0)").css(this.istopheader? {paddingRight: arrowsvar.down[2]} : {}).append(
'<img src="'+ (this.istopheader? arrowsvar.down[1] : arrowsvar.right[1])
+'" class="' + (this.istopheader? arrowsvar.down[0] : arrowsvar.right[0])
+ '" style="border:0;" />'
)
$curobj.hover(
function(e){
var $targetul=$(this).children("ul:eq(0)")
this._offsets={left:$(this).offset().left, top:$(this).offset().top}
var menuleft=this.istopheader? 0 : this._dimensions.w
menuleft=(this._offsets.left+menuleft+this._dimensions.subulw>$(window).width())? (this.istopheader? -this._dimensions.subulw+this._dimensions.w : -this._dimensions.w) : menuleft
if ($targetul.queue().length<=1) //if 1 or less queued animations
$targetul.css({left:menuleft+"px", width:this._dimensions.subulw+'px'}).slideDown(jqueryslidemenu.animateduration.over)
},
function(e){
var $targetul=$(this).children("ul:eq(0)")
$targetul.slideUp(jqueryslidemenu.animateduration.out)
}
) //end hover
$curobj.click(function(){
$(this).children("ul:eq(0)").hide()
})
}) //end $headers.each()
$mainmenu.find("ul").css({display:'none', visibility:'visible'})
}) //end document.ready
}
}

//build menu with ID="myslidemenu" on page:

jqueryslidemenu.buildmenu("myslidemenu", arrowimages)

Copy the above contents to jqueryslidemenu.js file and save it in app_folder/js/ folder.

and last and final is "fadeslideshow.js"

fadeslideshow.js


/* Ultimate Fade-in slideshow (v2.4)
* Last updated: May 24th, 2010. This notice must stay intact for usage 
* Author: Dynamic Drive at http://www.dynamicdrive.com/
* Visit http://www.dynamicdrive.com/ for full source code
*/

//Oct 6th, 09' (v2.1): Adds option to randomize display order of images, via new option displaymode.randomize
//May 24th, 10' (v2.4): Adds new "peakaboo" option to "descreveal" setting. oninit and onslide event handlers added.

var fadeSlideShow_descpanel={
controls: [['x.png',7,7], ['restore.png',10,11], ['loading.gif',54,55]], //full URL and dimensions of close, restore, and loading images
fontStyle: 'normal 11px Verdana', //font style for text descriptions
slidespeed: 200 //speed of description panel animation (in millisec)
}

//No need to edit beyond here...

jQuery.noConflict()

function fadeSlideShow(settingarg){
this.setting=settingarg
settingarg=null
var setting=this.setting
setting.fadeduration=setting.fadeduration? parseInt(setting.fadeduration) : 500
setting.curimage=(setting.persist)? fadeSlideShow.routines.getCookie("gallery-"+setting.wrapperid) : 0
setting.curimage=setting.curimage || 0 //account for curimage being null if cookie is empty
setting.currentstep=0 //keep track of # of slides slideshow has gone through (applicable in displaymode='auto' only)
setting.totalsteps=setting.imagearray.length*(setting.displaymode.cycles>0? setting.displaymode.cycles : Infinity) //Total steps limit (applicable in displaymode='auto' only w/ cycles>0)
setting.fglayer=0, setting.bglayer=1 //index of active and background layer (switches after each change of slide)
setting.oninit=setting.oninit || function(){}
setting.onslide=setting.onslide || function(){}
if (setting.displaymode.randomize) //randomly shuffle order of images?
setting.imagearray.sort(function() {return 0.5 - Math.random()})
var preloadimages=[] //preload images
setting.longestdesc="" //get longest description of all slides. If no desciptions defined, variable contains ""
for (var i=0; i<setting.imagearray.length; i++){ //preload images
preloadimages[i]=new Image()
preloadimages[i].src=setting.imagearray[i][0]
if (setting.imagearray[i][3] && setting.imagearray[i][3].length>setting.longestdesc.length)
setting.longestdesc=setting.imagearray[i][3]
}
var closebutt=fadeSlideShow_descpanel.controls[0] //add close button to "desc" panel if descreveal="always"
setting.closebutton=(setting.descreveal=="always")? '<img class="close" src="'+closebutt[0]+'" style="float:right;cursor:hand;cursor:pointer;width:'+closebutt[1]+'px;height:'+closebutt[2]+'px;margin-left:2px" title="Hide Description" />' : ''
var slideshow=this
jQuery(document).ready(function($){ //fire on DOM ready
var setting=slideshow.setting
var fullhtml=fadeSlideShow.routines.getFullHTML(setting.imagearray) //get full HTML of entire slideshow
setting.$wrapperdiv=$('#'+setting.wrapperid).css({position:'relative', visibility:'visible', background:'black', overflow:'hidden', width:setting.dimensions[0], height:setting.dimensions[1]}).empty() //main slideshow DIV
if (setting.$wrapperdiv.length==0){ //if no wrapper DIV found
alert("Error: DIV with ID \""+setting.wrapperid+"\" not found on page.")
return
}
setting.$gallerylayers=$('<div class="gallerylayer"></div><div class="gallerylayer"></div>') //two stacked DIVs to display the actual slide 
.css({position:'absolute', left:0, top:0, width:'100%', height:'100%', background:'black'})
.appendTo(setting.$wrapperdiv)
var $loadingimg=$('<img src="'+fadeSlideShow_descpanel.controls[2][0]+'" style="position:absolute;width:'+fadeSlideShow_descpanel.controls[2][1]+';height:'+fadeSlideShow_descpanel.controls[2][2]+'" />')
.css({left:setting.dimensions[0]/2-fadeSlideShow_descpanel.controls[2][1]/2, top:setting.dimensions[1]/2-fadeSlideShow_descpanel.controls[2][2]}) //center loading gif
.appendTo(setting.$wrapperdiv)
var $curimage=setting.$gallerylayers.html(fullhtml).find('img').hide().eq(setting.curimage) //prefill both layers with entire slideshow content, hide all images, and return current image
if (setting.longestdesc!="" && setting.descreveal!="none"){ //if at least one slide contains a description (versus feature is enabled but no descriptions defined) and descreveal not explicitly disabled
fadeSlideShow.routines.adddescpanel($, setting)
if (setting.descreveal=="always"){ //position desc panel so it's visible to begin with
setting.$descpanel.css({top:setting.dimensions[1]-setting.panelheight})
setting.$descinner.click(function(e){ //asign click behavior to "close" icon
if (e.target.className=="close"){
slideshow.showhidedescpanel('hide')
}
})
setting.$restorebutton.click(function(e){ //asign click behavior to "restore" icon
slideshow.showhidedescpanel('show')
$(this).css({visibility:'hidden'})
})
}
else if (setting.descreveal=="ondemand"){ //display desc panel on demand (mouseover)
setting.$wrapperdiv.bind('mouseenter', function(){slideshow.showhidedescpanel('show')})
setting.$wrapperdiv.bind('mouseleave', function(){slideshow.showhidedescpanel('hide')})
}
}
setting.$wrapperdiv.bind('mouseenter', function(){setting.ismouseover=true}) //pause slideshow mouseover
setting.$wrapperdiv.bind('mouseleave', function(){setting.ismouseover=false})
if ($curimage.get(0).complete){ //accounf for IE not firing image.onload
$loadingimg.hide()
slideshow.paginateinit($)
slideshow.showslide(setting.curimage)
}
else{ //initialize slideshow when first image has fully loaded
$loadingimg.hide()
slideshow.paginateinit($)
$curimage.bind('load', function(){slideshow.showslide(setting.curimage)})
}
setting.oninit.call(slideshow) //trigger oninit() event
$(window).bind('unload', function(){ //clean up and persist
if (slideshow.setting.persist) //remember last shown image's index
fadeSlideShow.routines.setCookie("gallery-"+setting.wrapperid, setting.curimage)
jQuery.each(slideshow.setting, function(k){
if (slideshow.setting[k] instanceof Array){
for (var i=0; i<slideshow.setting[k].length; i++){
if (slideshow.setting[k][i].tagName=="DIV") //catches 2 gallerylayer divs, gallerystatus div
slideshow.setting[k][i].innerHTML=null
slideshow.setting[k][i]=null
}
}
})
slideshow=slideshow.setting=null
})
})
}

fadeSlideShow.prototype={

navigate:function(keyword){
var setting=this.setting
clearTimeout(setting.playtimer)
if (setting.displaymode.type=="auto"){ //in auto mode
setting.displaymode.type="manual" //switch to "manual" mode when nav buttons are clicked on
setting.displaymode.wraparound=true //set wraparound option to true
}
if (!isNaN(parseInt(keyword))){ //go to specific slide?
this.showslide(parseInt(keyword))
}
else if (/(prev)|(next)/i.test(keyword)){ //go back or forth inside slide?
this.showslide(keyword.toLowerCase())
}
},

showslide:function(keyword){
var slideshow=this
var setting=slideshow.setting
if (setting.displaymode.type=="auto" && setting.ismouseover && setting.currentstep<=setting.totalsteps){ //if slideshow in autoplay mode and mouse is over it, pause it
setting.playtimer=setTimeout(function(){slideshow.showslide('next')}, setting.displaymode.pause)
return
}
var totalimages=setting.imagearray.length
var imgindex=(keyword=="next")? (setting.curimage<totalimages-1? setting.curimage+1 : 0)
: (keyword=="prev")? (setting.curimage>0? setting.curimage-1 : totalimages-1)
: Math.min(keyword, totalimages-1)
var $slideimage=setting.$gallerylayers.eq(setting.bglayer).find('img').hide().eq(imgindex).show() //hide all images except current one
var imgdimensions=[$slideimage.width(), $slideimage.height()] //center align image
$slideimage.css({marginLeft: (imgdimensions[0]>0 && imgdimensions[0]<setting.dimensions[0])? setting.dimensions[0]/2-imgdimensions[0]/2 : 0})
$slideimage.css({marginTop: (imgdimensions[1]>0 && imgdimensions[1]<setting.dimensions[1])? setting.dimensions[1]/2-imgdimensions[1]/2 : 0})
if (setting.descreveal=="peekaboo" && setting.longestdesc!=""){ //if descreveal is set to "peekaboo", make sure description panel is hidden before next slide is shown
clearTimeout(setting.hidedesctimer) //clear hide desc panel timer
slideshow.showhidedescpanel('hide', 0) //and hide it immediately
}
setting.$gallerylayers.eq(setting.bglayer).css({zIndex:1000, opacity:0}) //background layer becomes foreground
.stop().css({opacity:0}).animate({opacity:1}, setting.fadeduration, function(){ //Callback function after fade animation is complete:
clearTimeout(setting.playtimer)
try{
setting.onslide.call(slideshow, setting.$gallerylayers.eq(setting.fglayer).get(0), setting.curimage)
}catch(e){
alert("Fade In Slideshow error: An error has occured somwhere in your code attached to the \"onslide\" event: "+e)
}
if (setting.descreveal=="peekaboo" && setting.longestdesc!=""){
slideshow.showhidedescpanel('show')
setting.hidedesctimer=setTimeout(function(){slideshow.showhidedescpanel('hide')}, setting.displaymode.pause-fadeSlideShow_descpanel.slidespeed)
}
setting.currentstep+=1
if (setting.displaymode.type=="auto"){
if (setting.currentstep<=setting.totalsteps || setting.displaymode.cycles==0)
setting.playtimer=setTimeout(function(){slideshow.showslide('next')}, setting.displaymode.pause)
}
}) //end callback function
setting.$gallerylayers.eq(setting.fglayer).css({zIndex:999}) //foreground layer becomes background
setting.fglayer=setting.bglayer
setting.bglayer=(setting.bglayer==0)? 1 : 0
setting.curimage=imgindex
if (setting.$descpanel){
setting.$descpanel.css({visibility:(setting.imagearray[imgindex][3])? 'visible' : 'hidden'})
if (setting.imagearray[imgindex][3]) //if this slide contains a description
setting.$descinner.empty().html(setting.closebutton + setting.imagearray[imgindex][3])
}
if (setting.displaymode.type=="manual" && !setting.displaymode.wraparound){
this.paginatecontrol()
}
if (setting.$status) //if status container defined
setting.$status.html(setting.curimage+1 + "/" + totalimages)
},

showhidedescpanel:function(state, animateduration){
var setting=this.setting
var endpoint=(state=="show")? setting.dimensions[1]-setting.panelheight : this.setting.dimensions[1]
setting.$descpanel.stop().animate({top:endpoint}, (typeof animateduration!="undefined"? animateduration : fadeSlideShow_descpanel.slidespeed), function(){
if (setting.descreveal=="always" && state=="hide")
setting.$restorebutton.css({visibility:'visible'}) //show restore button
})
},

paginateinit:function($){
var slideshow=this
var setting=this.setting
if (setting.togglerid){ //if toggler div defined
setting.$togglerdiv=$("#"+setting.togglerid)
setting.$prev=setting.$togglerdiv.find('.prev').data('action', 'prev')
setting.$next=setting.$togglerdiv.find('.next').data('action', 'next')
setting.$prev.add(setting.$next).click(function(e){ //assign click behavior to prev and next controls
var $target=$(this)
slideshow.navigate($target.data('action'))
e.preventDefault()
})
setting.$status=setting.$togglerdiv.find('.status')
}
},

paginatecontrol:function(){
var setting=this.setting
setting.$prev.css({opacity:(setting.curimage==0)? 0.4 : 1}).data('action', (setting.curimage==0)? 'none' : 'prev')
setting.$next.css({opacity:(setting.curimage==setting.imagearray.length-1)? 0.4 : 1}).data('action', (setting.curimage==setting.imagearray.length-1)? 'none' : 'next')
if (document.documentMode==8){ //in IE8 standards mode, apply opacity to inner image of link
setting.$prev.find('img:eq(0)').css({opacity:(setting.curimage==0)? 0.4 : 1})
setting.$next.find('img:eq(0)').css({opacity:(setting.curimage==setting.imagearray.length-1)? 0.4 : 1})
}
}


}

fadeSlideShow.routines={

getSlideHTML:function(imgelement){
var layerHTML=(imgelement[1])? '<a href="'+imgelement[1]+'" target="'+imgelement[2]+'">\n' : '' //hyperlink slide?
layerHTML+='<img src="'+imgelement[0]+'" style="border-width:0;" />\n'
layerHTML+=(imgelement[1])? '</a>\n' : ''
return layerHTML //return HTML for this layer
},

getFullHTML:function(imagearray){
var preloadhtml=''
for (var i=0; i<imagearray.length; i++)
preloadhtml+=this.getSlideHTML(imagearray[i])
return preloadhtml
},

adddescpanel:function($, setting){
setting.$descpanel=$('<div class="fadeslidedescdiv"></div>')
.css({position:'absolute', visibility:'hidden', width:'100%', left:0, top:setting.dimensions[1], font:fadeSlideShow_descpanel.fontStyle, zIndex:'1001'})
.appendTo(setting.$wrapperdiv)
$('<div class="descpanelbg"></div><div class="descpanelfg"></div>') //create inner nav panel DIVs
.css({position:'absolute', left:0, top:0, width:setting.$descpanel.width()-8, padding:'4px'})
.eq(0).css({background:'black', opacity:0.7}).end() //"descpanelbg" div
.eq(1).css({color:'white'}).html(setting.closebutton + setting.longestdesc).end() //"descpanelfg" div
.appendTo(setting.$descpanel)
setting.$descinner=setting.$descpanel.find('div.descpanelfg')
setting.panelheight=setting.$descinner.outerHeight()
setting.$descpanel.css({height:setting.panelheight}).find('div').css({height:'100%'})
if (setting.descreveal=="always"){ //create restore button
setting.$restorebutton=$('<img class="restore" title="Restore Description" src="' + fadeSlideShow_descpanel.controls[1][0] +'" style="position:absolute;visibility:hidden;right:0;bottom:0;z-index:1002;width:'+fadeSlideShow_descpanel.controls[1][1]+'px;height:'+fadeSlideShow_descpanel.controls[1][2]+'px;cursor:pointer;cursor:hand" />')
.appendTo(setting.$wrapperdiv)


}
},


getCookie:function(Name){ 
var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
if (document.cookie.match(re)) //if cookie found
return document.cookie.match(re)[0].split("=")[1] //return its value
return null
},

setCookie:function(name, value){
document.cookie = name+"=" + value + ";path=/"
}
}

Copy the contents to fadeslideshow.js file and save in app_folder/js/ folder. now define user defined menu

Thursday, 18 December 2014

Replace space in Java Script

var course = “The Style And CSS”;
var rep_course = course.replace(/ /g, “-“); //replace all space with -

Jquery:: add table row, remove table row

<script type=”text/javascript”>
function addRowTable()
{
$(“#myTable > tbody”).append(“<tr><td>row content</td></tr>”);
}
function removeRowTable(rowId)
{
if(confirm(“Are you sure to delete this item?”)){
$(“#”+rowId).remove();
}
}
</script>
<table id=”myTable”>
<thead><th>head1</th></thead>
<tbody></tbody>
</table>
<input type=”button” name=”addtolist” value=”Add To List” onclick=”addRowTable()”>

Code for displaying dynamic Date and Time in HTML

<div width="235" height="40">
<font face="Arial, Verdana, Sans Serif"  color="#191970" style="font-size:12.3px; font-weight:bold"><b>
<span id="clock">
<SCRIPT LANGUAGE="JavaScript">
var dayarray=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
var montharray=new Array("January","February","March","April","May","June","July","August","September","October","November","December")
function getthedate()
{
var mydate=new Date()
var year=mydate.getYear()
if (year < 1000)
year+=1900
var day=mydate.getDay()
var month=mydate.getMonth()
var daym=mydate.getDate()
if (daym<10)
daym="0"+daym
var hours=mydate.getHours()
var minutes=mydate.getMinutes()
var seconds=mydate.getSeconds()
var dn="AM"
if (hours>=12)
dn="PM"
if (hours>12){
hours=hours-12
}
{
 d = new Date();
 Time24H = new Date();
 Time24H.setTime(d.getTime() + (d.getTimezoneOffset()*60000) + 3600000);
 InternetTime = Math.round((Time24H.getHours()*60+Time24H.getMinutes()) / 1.44);
 if (InternetTime < 10) InternetTime = '00'+InternetTime;
 else if (InternetTime < 100) InternetTime = '0'+InternetTime;
}
if (hours==0)
hours=12
if (minutes<=9)
minutes="0"+minutes
if (seconds<=9)
seconds="0"+seconds
var cdate=dayarray[day]+", "+montharray[month]+" "+daym+" "+year+" | "+hours+":"+minutes+":"+seconds+" "+dn+""
if (document.all)
document.all.clock.innerHTML=cdate
else if (document.getElementById)
document.getElementById("clock").innerHTML=cdate
else
document.write(cdate)
}
if (!document.all&&!document.getElementById)
getthedate()
function goforit(){
if (document.all||document.getElementById)
setInterval("getthedate()",1000)
}
window.onload=goforit
</script></span>
</div>

Some JAVA SCRIPT Validations

// ************************************************************************* function chkfld(fld_value,str) { fld_value=trim(fld_value); if (!(isblank(fld_value,str) && isalpha(fld_value,str)) ) { return false } else { return true } } // ************************************************************************* // ************************************************************************* function range_chk (name, value, min, max) { value=trim(value); if(isNaN(value)) { alert (name + " must be Number"); return false; }else { if (parseInt(value,10) < min || parseInt(value,10) > max) { alert (name+" must be between "+min+" and "+max); return false; } } // end of else return true; } // ************************************************************************* // ************************************************************************* function setfocus(frm_no, fld_no) { document.forms[frm_no].elements[fld_no].focus(); } // ************************************************************************* // ************************************************************************* function isDecimals(fieldValue,fieldName) { fieldValue=trim(fieldValue); decallowed = 2; // how many decimals are allowed? if (fieldValue != "" && isNaN(fieldValue)) { alert("Error! Enter a valid number in "+fieldName); return false; }else{ if (fieldValue.indexOf('.') == -1) fieldValue += "."; dectext = fieldValue.substring(fieldValue.indexOf('.')+1, fieldValue.length); if (dectext.length > decallowed) { alert ("Please enter a number with up to " + decallowed + " decimal places for "+fieldName); return false; }else{ return true; } } } // ************************************************************************* // ************************************************************************* function ispositive_default (fld,fld_value, df_val) { fld_value=trim(fld_value); if (fld_value.length == 0) { fld.value = df_val; return true; } if ( isNaN(fld_value) || parseInt(fld_value,10) < 0) { alert ('Error! You have entered a negative number'); return false; } else return true; } // ************************************************************************* // ************************************************************************* function ispositive (fld_value,name) { fld_value=trim(fld_value); if ( isNaN(fld_value) || parseInt(fld_value,10) < 0) { alert (name + ' cannot be a negative number'); return false; } else return true; } // ************************************************************************* // ************************************************************************* function isblank (fld_val, fld_name) { fld_val=trim(fld_val); if(fld_val.length > 0 ) return true; else { alert (fld_name+" cannot be Blank"); return false; } } // ************************************************************************* // ************************************************************************* function gonext() { if( window.event.keyCode == 13) window.event.keyCode=9; return; } // ************************************************************************* // ************************************************************************* function isalpha (fld_value,name) { fld_value=trim(fld_value); var stdstr = 'abcdefghijklmnopqrstuvwxyz0123456789 ().-/,'; var i =0; var ch , ch_lwr ; for ( i=0; i < fld_value.length; i++) { ch = fld_value.substring(i,i+1); ch_lwr = ch.toLowerCase(); if (stdstr.indexOf(ch_lwr) < 0) { alert( "Enter a valid string in "+ name); return false; } } return true; } // ************************************************************************* // ************************************************************************* function isvalidstr (fld_value,name) { fld_value=trim(fld_value); var stdstr = 'abcdefghijklmnopqrstuvwxyz ().-/'; var i =0; var ch , ch_lwr ; for ( i=0; i < fld_value.length; i++) { ch = fld_value.substring(i,i+1); ch_lwr = ch.toLowerCase(); if (stdstr.indexOf(ch_lwr) < 0) { alert( "Enter a valid string in "+ name); return false; } } return true; } // ************************************************************************* // ************************************************************************* function isnumber(fld_value,name) { fld_value=trim(fld_value); if (isNaN(fld_value)) { alert('Please enter numbers only in '+ name); return false; } else return true; } // end of function // ************************************************************************* // ************************************************************************* function isnumber2(name,fld_value) { fld_value=trim(fld_value); if (isNaN(fld_value)) { alert('Please enter numbers only for '+ name); return false; } else return true; } // end of function // ************************************************************************* // ************************************************************************* function iswholenumber(name,fld_value) { fld_value=trim(fld_value); if ( isNaN(fld_value) || fld_value.indexOf('.') >= 0 ) { alert('Please enter numbers only with out decimals for '+ name); return false; } else return true; } // end of function // ************************************************************************* // ************************************************************************* //To check if a date is between two dates function isWithinDates(name,act_date,from_date,to_date) { if(!dateCheck(act_date,'%dd/%mm/%yyyy') || !dateCheck(from_date,'%dd/%mm/%yyyy') || !dateCheck(to_date,'%dd/%mm/%yyyy')) { return false; }else{ //Actual Date var actdt=parseInt(act_date.substring(0,2),10); var actmth=parseInt(act_date.substring(3,5),10); var actyr =parseInt(act_date.substring(6,10),10); //From Date var fdt=parseInt(from_date.substring(0,2),10); var fmth=parseInt(from_date.substring(3,5),10); var fyr =parseInt(from_date.substring(6,10),10); //To Date var tdt=parseInt(to_date.substring(0,2),10); var tmth=parseInt(to_date.substring(3,5),10); var tyr =parseInt(to_date.substring(6,10),10); var d1 = new Date(actyr,actmth-1,actdt); var d2 = new Date(fyr,fmth-1,fdt); var d3 = new Date(tyr,tmth-1,tdt); if (d1 >= d2 && d1 <= d3) { return true; }else{ alert(name+' must be between '+from_date+' and '+to_date); return false; } } } // ************************************************************************* // ************************************************************************* // Left Trim a string function lTrim(str) { while (str.substring(0,1) == ' ') {str = st.substring(1, str.length);} return str; } // ************************************************************************* // ************************************************************************* // Right Trim a string function rTrim(str) { while (str.substring(str.length-1, str.length) == ' ') {str = str.substring(0,str.length-1);} return str; } // ************************************************************************* // ************************************************************************* // Both Left and Right Trim a string function trim(str) { while (str.substring(0,1) == ' ') {str = str.substring(1, str.length);} while (str.substring(str.length-1, str.length) == ' ') {str = str.substring(0,str.length-1);} return str; } // ************************************************************************* // ************************************************************************* // Blink any element with is elementID var g_blinkTime = 1000; var g_blinkCounter = 0; function blinkElement(elementId) { if ( (g_blinkCounter % 2) == 0 ) { if ( document.getElementById ) { document.getElementById(elementId).style.visibility = 'visible'; } // IE 4... else if ( document.all ) { document.all[elementId].style.visibility = 'visible'; } // NS 4... else if ( document.layers ) { document.layers[elementId].visibility = 'visible'; } } else { if ( document.getElementById ) { document.getElementById(elementId).style.visibility = 'hidden'; } // IE 4... else if ( document.all ) { document.all[elementId].style.visibility = 'hidden'; } // NS 4... else if ( document.layers ) { document.layers[elementId].visibility = 'hidden'; } } if ( g_blinkCounter < 1 ) { g_blinkCounter++; } else { g_blinkCounter-- } window.setTimeout('blinkElement(\"' + elementId + '\")', g_blinkTime); } // ************************************************************************* // ************************************************************************* // Date validation /* Here's the list of tokens we support: m (or M) : month number, one or two digits. mm (or MM) : month number, strictly two digits (i.e. April is 04). d (or D) : day number, one or two digits. dd (or DD) : day number, strictly two digits. y (or Y) : year, two or four digits. yy (or YY) : year, strictly two digits. yyyy (or YYYY) : year, strictly four digits. mon : abbreviated month name (April is apr, Apr, APR, etc.) Mon : abbreviated month name, mixed-case (i.e. April is Apr only). MON : abbreviated month name, all upper-case (i.e. April is APR only). mon_strict : abbreviated month name, all lower-case (i.e. April is apr only). month : full month name (April is april, April, APRIL, etc.) Month : full month name, mixed-case (i.e. April only). MONTH: full month name, all upper-case (i.e. APRIL only). month_strict : full month name, all lower-case (i.e. april only). h (or H) : hour, one or two digits. hh (or HH) : hour, strictly two digits. min (or MIN): minutes, one or two digits. mins (or MINS) : minutes, strictly two digits. s (or S) : seconds, one or two digits. ss (or SS) : seconds, strictly two digits. ampm (or AMPM) : am/pm setting. Valid values to match this token are am, pm, AM, PM, a.m., p.m., A.M., P.M. */ // Be careful with this pattern. Longer tokens should be placed before shorter // tokens to disambiguate them. For example, parsing "mon_strict" should // result in one token "mon_strict" and not two tokens "mon" and a literal // "_strict". var tokPat=new RegExp("^month_strict|month|Month|MONTH|yyyy|YYYY|mins|MINS|mon_strict|ampm|AMPM|mon|Mon|MON|min|MIN|dd|DD|mm|MM|yy|YY|hh|HH|ss|SS|m|M|d|D|y|Y|h|H|s|S"); // lowerMonArr is used to map months to their numeric values. var lowerMonArr={jan:1, feb:2, mar:3, apr:4, may:5, jun:6, jul:7, aug:8, sep:9, oct:10, nov:11, dec:12} // monPatArr contains regular expressions used for matching abbreviated months // in a date string. var monPatArr=new Array(); monPatArr['mon_strict']=new RegExp(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/); monPatArr['Mon']=new RegExp(/Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec/); monPatArr['MON']=new RegExp(/JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC/); monPatArr['mon']=new RegExp("jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec",'i'); // monthPatArr contains regular expressions used for matching full months // in a date string. var monthPatArr=new Array(); monthPatArr['month']=new RegExp(/^january|february|march|april|may|june|july|august|september|october|november|december/i); monthPatArr['Month']=new RegExp(/^January|February|March|April|May|June|July|August|September|October|November|December/); monthPatArr['MONTH']=new RegExp(/^JANUARY|FEBRUARY|MARCH|APRIL|MAY|JUNE|JULY|AUGUST|SEPTEMBER|OCTOBER|NOVEMBER|DECEMBER/); monthPatArr['month_strict']=new RegExp(/^january|february|march|april|may|june|july|august|september|october|november|december/); // cutoffYear is the cut-off for assigning "19" or "20" as century. Any // two-digit year >= cutoffYear will get a century of "19", and everything // else gets a century of "20". var cutoffYear=50; // FormatToken is a datatype we use for storing extracted tokens from the // format string. function FormatToken (token, type) { this.token=token; this.type=type; } function parseFormatString (formatStr) { var tokArr=new Array; var tokInd=0; var strInd=0; var foundTok=0; while (strInd < formatStr.length) { if (formatStr.charAt(strInd)=="%" && (matchArray=formatStr.substr(strInd+1).match(tokPat)) != null) { strInd+=matchArray[0].length+1; tokArr[tokInd++]=new FormatToken(matchArray[0],"symbolic"); } else { // No token matched current position, so current character should // be saved as a required literal. if (tokInd>0 && tokArr[tokInd-1].type=="literal") { // Literal tokens can be combined.Just add to the last token. tokArr[tokInd-1].token+=formatStr.charAt(strInd++); } else { tokArr[tokInd++]=new FormatToken(formatStr.charAt(strInd++), "literal"); } } } return tokArr; } /* buildDate does all the real work.It takes a date string and format string, tries to match the two up, and returns a Date object (with the supplied date string value).If a date string doesn't contain all the fields that a Date object contains (for example, a date string with just the month), all unprovided fields are defaulted to those characteristics of the current date. Time fields that aren't provided default to 0.Thus, a date string like "3/30/2000" in "%mm/%dd/%yyyy" format results in a Date object for that date at midnight.formatStr is a free-form string that indicates special tokens via the % character.Here are some examples that will return a Date object: buildDate('3/30/2000','%mm/%dd/%y') // March 30, 2000 buildDate('March 30, 2000','%Mon %d, %y') // Same as above. buildDate('Here is the date: 30-3-00','Here is the date: %dd-%m-%yy') If the format string does not match the string provided, an error message (i.e. String object) is returned.Thus, to see if buildDate succeeded, the caller can use the "typeof" command on the return value.For example, here's the dateCheck function, which returns true if a given date is valid,and false otherwise (and reports an error in the false case): function dateCheck(dateStr,formatStr) { alert ("in datecheck js file"); var myObj=buildDate(dateStr,formatStr); if (typeof myObj=="object") { // We got a Date object, so good. return true; } else { // We got an error string. alert(myObj); return false; } } */ function buildDate(dateStr,formatStr) { // parse the format string first. var tokArr=parseFormatString(formatStr); var strInd=0; var tokInd=0; var intMonth; var intDay; var intYear; var intHour; var intMin; var intSec; var ampm=""; var strOffset; // Create a date object with the current date so that if the user only // gives a month or day string, we can still return a valid date. var curdate=new Date(); intMonth=curdate.getMonth()+1; intDay=curdate.getDate(); intYear=curdate.getFullYear(); // Default time to midnight, so that if given just date info, we return // a Date object for that date at midnight. intHour=0; intMin=0; intSec=0; // Walk across dateStr, matching the parsed formatStr until we find a // mismatch or succeed. while (strInd < dateStr.length && tokInd < tokArr.length) { // Start with the easy case of matching a literal. if (tokArr[tokInd].type=="literal") { if (dateStr.indexOf(tokArr[tokInd].token,strInd)==strInd) { // The current position in the string does match the format // pattern. strInd+=tokArr[tokInd++].token.length; continue; } else { // ACK! There was a mismatch; return error. //return "\"" + dateStr + "\" does not conform to the expected format: " + formatStr; return "\"" + dateStr + "\" must be entered in the format "+formatStr.replace(/%/g,"").toUpperCase(); } } // If we get here, we're matching to a symbolic token. switch (tokArr[tokInd].token) { case 'm': case 'M': case 'd': case 'D': case 'h': case 'H': case 'min': case 'MIN': case 's': case 'S': // Extract one or two characters from the date-time string and if // it's a number, save it as the month, day, hour, or minute, as // appropriate. curChar=dateStr.charAt(strInd); nextChar=dateStr.charAt(strInd+1); matchArr=dateStr.substr(strInd).match(/^\d{1,2}/); if (matchArr==null) { // First character isn't a number; there's a mismatch between // the pattern and date string, so return error. switch (tokArr[tokInd].token.toLowerCase()) { case 'd': var unit="day"; break; case 'm': var unit="month"; break; case 'h': var unit="hour"; break; case 'min': var unit="minute"; break; case 's': var unit="second"; break; } return "Bad " + unit + " \"" + curChar + "\" or \"" + curChar + nextChar + "\"."; } strOffset=matchArr[0].length; switch (tokArr[tokInd].token.toLowerCase()) { case 'd': intDay=parseInt(matchArr[0],10); break; case 'm': intMonth=parseInt(matchArr[0],10); break; case 'h': intHour=parseInt(matchArr[0],10); break; case 'min': intMin=parseInt(matchArr[0],10); break; case 's': intSec=parseInt(matchArr[0],10); break; } break; case 'mm': case 'MM': case 'dd': case 'DD': case 'hh': case 'HH': case 'mins': case 'MINS': case 'ss': case 'SS': // Extract two characters from the date string and if it's a // number, save it as the month, day, or hour, as appropriate. strOffset=2; matchArr=dateStr.substr(strInd).match(/^\d{2}/); if (matchArr==null) { // The two characters aren't a number; there's a mismatch // between the pattern and date string, so return an error // message. switch (tokArr[tokInd].token.toLowerCase()) { case 'dd': var unit="day"; break; case 'mm': var unit="month"; break; case 'hh': var unit="hour"; break; case 'mins': var unit="minute"; break; case 'ss': var unit="second"; break; } return "Bad " + unit + " \"" + dateStr.substr(strInd,2) + "\"."; } switch (tokArr[tokInd].token.toLowerCase()) { case 'dd': intDay=parseInt(matchArr[0],10); break; case 'mm': intMonth=parseInt(matchArr[0],10); break; case 'hh': intHour=parseInt(matchArr[0],10); break; case 'mins': intMin=parseInt(matchArr[0],10); break; case 'ss': intSec=parseInt(matchArr[0],10); break; } break; case 'y': case 'Y': // Extract two or four characters from the date string and if it's // a number, save it as the year.Convert two-digit years to four // digit years by assigning a century of '19' if the year is >= // cutoffYear, and '20' otherwise. if (dateStr.substr(strInd,4).search(/\d{4}/) != -1) { // Four digit year. intYear=parseInt(dateStr.substr(strInd,4),10); strOffset=4; } else { if (dateStr.substr(strInd,2).search(/\d{2}/) != -1) { // Two digit year. intYear=parseInt(dateStr.substr(strInd,2),10); if (intYear>=cutoffYear) { intYear+=1900; } else { intYear+=2000; } strOffset=2; } else { // Bad year; return error. return "Bad year \"" + dateStr.substr(strInd,2) + "\". Must be two or four digits."; } } break; case 'yy': case 'YY': // Extract two characters from the date string and if it's a // number, save it as the year.Convert two-digit years to four // digit years by assigning a century of '19' if the year is >= // cutoffYear, and '20' otherwise. if (dateStr.substr(strInd,2).search(/\d{2}/) != -1) { // Two digit year. intYear=parseInt(dateStr.substr(strInd,2),10); if (intYear>=cutoffYear) { intYear+=1900; } else { intYear+=2000; } strOffset=2; } else { // Bad year; return error return "Bad year \"" + dateStr.substr(strInd,2) + "\". Must be two digits."; } break; case 'yyyy': case 'YYYY': // Extract four characters from the date string and if it's a // number, save it as the year. if (dateStr.substr(strInd,4).search(/\d{4}/) != -1) { // Four digit year. intYear=parseInt(dateStr.substr(strInd,4),10); strOffset=4; } else { // Bad year; return error. return "Bad year \"" + dateStr.substr(strInd,4) + "\". Must be four digits."; } break; case 'mon': case 'Mon': case 'MON': case 'mon_strict': // Extract three characters from dateStr and parse them as // lower-case, mixed-case, or upper-case abbreviated months, // as appropriate. monPat=monPatArr[tokArr[tokInd].token]; if (dateStr.substr(strInd,3).search(monPat) != -1) { intMonth=lowerMonArr[dateStr.substr(strInd,3).toLowerCase()]; } else { // Bad month, return error. switch (tokArr[tokInd].token) { case 'mon_strict': caseStat="lower-case"; break; case 'Mon': caseStat="mixed-case"; break; case 'MON': caseStat="upper-case"; break; case 'mon': caseStat="between Jan and Dec"; break; } return "Bad month \"" + dateStr.substr(strInd,3) + "\". Must be " + caseStat + "."; } strOffset=3; break; case 'month': case 'Month': case 'MONTH': case 'month_strict': // Extract a full month name at strInd from dateStr if possible. monPat=monthPatArr[tokArr[tokInd].token]; matchArray=dateStr.substr(strInd).match(monPat); if (matchArray==null) { // Bad month, return error. return "Can't find a month beginning at \"" + dateStr.substr(strInd) + "\"."; } // It's a good month. intMonth=lowerMonArr[matchArray[0].substr(0,3).toLowerCase()]; strOffset=matchArray[0].length; break; case 'ampm': case 'AMPM': matchArr=dateStr.substr(strInd).match(/^(am|pm|AM|PM|a\.m\.|p\.m\.|A\.M\.|P\.M\.)/); if (matchArr==null) { // There's no am/pm in the string.Return error msg. return "Missing am/pm designation."; } // Store am/pm value for later (as just am or pm, to make things // easier later). if (matchArr[0].substr(0,1).toLowerCase() == "a") { // This is am. ampm = "am"; } else { ampm = "pm"; } strOffset = matchArr[0].length; break; } strInd += strOffset; tokInd++; } if (tokInd != tokArr.length || strInd != dateStr.length) { /* We got through the whole date string or format string, but there's more data in the other, so there's a mismatch. */ //return "\"" + dateStr + "\" is either missing desired information or has more information than the expected format: " + formatStr; return "\"" + dateStr + "\" must be entered in the format "+formatStr.replace(/%/g,"").toUpperCase(); } // Make sure all components are in the right ranges. if (intMonth < 1 || intMonth > 12) { return "Month must be between 1 and 12."; } if (intDay < 1 || intDay > 31) { return "Day must be between 1 and 31."; } // Make sure user doesn't put 31 for a month that only has 30 days if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && intDay == 31) { return "Month "+intMonth+" doesn't have 31 days!"; } // Check for February date validity (including leap years) if (intMonth == 2) { // figure out if "year" is a leap year; don't forget that // century years are only leap years if divisible by 400 var isleap=(intYear%4==0 && (intYear%100!=0 || intYear%400==0)); if (intDay > 29 || (intDay == 29 && !isleap)) { return "February " + intYear + " doesn't have " + intDay + " days!"; } } // Check that if am/pm is not provided, hours are between 0 and 23. if (ampm == "") { if (intHour < 0 || intHour > 23) { return "Hour must be between 0 and 23 for military time."; } } else { // non-military time, so make sure it's between 1 and 12. if (intHour < 1|| intHour > 12) { return "Hour must be between 1 and 12 for standard time."; } } // If user specified amor pm, convert intHour to military. if (ampm=="am" && intHour==12) { intHour=0; } if (ampm=="pm" && intHour < 12) { intHour += 12; } if (intMin < 0 || intMin > 59) { return "Minute must be between 0 and 59."; } if (intSec < 0 || intSec > 59) { return "Second must be between 0 and 59."; } return new Date(intYear,intMonth-1,intDay,intHour,intMin,intSec); } function dateCheck(dateStr,formatStr) { var myObj = buildDate(dateStr,formatStr); if (typeof myObj == "object") { // We got a Date object, so good. return true; } else { // We got an error string. alert(myObj); return false; } } // *************************************************************************