
//Functions for Testing Countdown Timer
function cdtime(container, yyyy,mm,dd,hh,mn,ss){
	if (!document.getElementById || !document.getElementById(container)) return
	this.container=document.getElementById(container)
	this.currentTime=new Date()
	this.targetdate=new Date(yyyy,mm,dd,hh,mn,ss)
	this.timesup=false
	this.timewarning = false
	this.updateTime()
}

cdtime.prototype.updateTime=function(){
	var thisobj=this
	this.currentTime.setSeconds(this.currentTime.getSeconds()+1)
	setTimeout(function(){thisobj.updateTime()}, 1000) //update time every second
}

cdtime.prototype.displaycountdown=function(baseunit, functionref){
	this.baseunit=baseunit
	this.formatresults=functionref
	this.showresults()
}

cdtime.prototype.showresults=function(){
	var thisobj=this

	var timediff=(this.targetdate-this.currentTime)/1000 //difference btw target date and current date, in seconds
	if (timediff<0){ //if time is up
		this.timesup=true
		this.container.innerHTML=this.formatresults()
		return
	}
	else if (timediff >= 59 && timediff <= 60 ) {
		this.timewarning=true
	}


	var oneMinute=60 //minute unit in seconds
	var oneHour=60*60 //hour unit in seconds
	var oneDay=60*60*24 //day unit in seconds
	var dayfield=Math.floor(timediff/oneDay)
	var hourfield=Math.floor((timediff-dayfield*oneDay)/oneHour)
	var minutefield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour)/oneMinute)
	var secondfield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour-minutefield*oneMinute))
	if (this.baseunit=="hours"){ //if base unit is hours, set "hourfield" to be topmost level
		hourfield=dayfield*24+hourfield
		dayfield="n/a"
	}
	else if (this.baseunit=="minutes"){ //if base unit is minutes, set "minutefield" to be topmost level
		minutefield=dayfield*24*60+hourfield*60+minutefield
		dayfield=hourfield="n/a"
	}
	else if (this.baseunit=="seconds"){ //if base unit is seconds, set "secondfield" to be topmost level
		var secondfield=timediff
		dayfield=hourfield=minutefield="n/a"
	}

	this.container.innerHTML="<img src=\"/master/images/timer.jpg\" />" + this.formatresults(dayfield, hourfield, minutefield, secondfield) ;
	setTimeout(function(){thisobj.showresults()}, 1000) //update results every second
}

/////CUSTOM FORMAT OUTPUT FUNCTIONS BELOW//////////////////////////////

//Create your own custom format function to pass into cdtime.displaycountdown()
//Use arguments[0] to access "Days" left
//Use arguments[1] to access "Hours" left
//Use arguments[2] to access "Minutes" left
//Use arguments[3] to access "Seconds" left

//The values of these arguments may change depending on the "baseunit" parameter of cdtime.displaycountdown()
//For example, if "baseunit" is set to "hours", arguments[0] becomes meaningless and contains "n/a"
//For example, if "baseunit" is set to "minutes", arguments[0] and arguments[1] become meaningless etc


function formatresults(){
	if (this.timesup==false){//if target date/time not yet met
		var displaystring=arguments[0]+" days "+arguments[1]+" hrs "+arguments[2]+" min "+arguments[3]+ " remaining";
	}
	else{ //else if target date/time met
		var displaystring="Future date is here!"
	}
	return displaystring
}

function formatresults2(){
	if (this.timesup==false){ //if target date/time not yet met
		var displaystring="<span class='lcdstyle'>"+arguments[0]+" <sup>days</sup> "+arguments[1]+" <sup>hrs</sup> "+arguments[2]+" <sup>min</sup> "+arguments[3]+" <sup>sec</sup></span> Remaining"
		if (this.timewarning == true) {
			
			$.modal("<div id='basi3cModalContent' >\
	<h2>Time Limit Warning</h2>\
    <table width='323' border='0'>\
      <tr>\
        <td width='80'><img src='/master/images/large_warning.jpg' alt='Warning'  /></td>\
        <td width='190'><h5>Warning, <blink><strong>less than 1 minute</strong></blink> remaining in the test!  </h5>\
          <h5>&nbsp;</h5>\
          <h5>Please Complete the questions as soon as possible. </h5>\
          <p>NOTE: Your questions will be automatically submitted when the time runs out.</p></td>\
      </tr>\
    </table>\
    <p align='center'>\
      <form name='ModalForm1'>\
	  <input type='submit' name='Modal1' id='Modal1' value='Close Window'  class='simplemodal-close'/>\
    </form></p>\
</div>",{close: true});

			this.timewarning = false
			
		}
	}
	else{ //else if target date/time met
		var displaystring="" //Don't display any text
		
		if ( document.getElementById('Modal1') != null) {
			document.ModalForm1.Modal1.click();
		}
		$.modal("<div id='basi4cModalContent' >\
	<h2>Time Limit Expired</h2>\
    <table width='323' border='0'>\
      <tr>\
        <td width='80'><img src='/master/images/large_warning.jpg' alt='Warning'  /></td>\
        <td width='190'><h5>The time limit has expired.  </h5>\
          <h5>&nbsp;</h5>\
          <h5>Click OK to have your current answers submitted. </h5>\
          </td>\
      </tr>\
    </table>\
    <p align='center'>\
      <input type='submit' name='Modal0' id='Modal0' value='Submit Answers Now >>'  class='simplemodal-close'  onclick='javascript:document.mainquestions.submit();'/>\
    </p>\
</div>",{close: false});
		

	}
	return displaystring
}


//Returns Date/Time from Now +- secondds added
//Works for addition or subtraction...
function NowPlusSeconds(seconds) {
  	sdate = new Date();
 	// add the number of days as milleseconds
 	var odate = new Date(sdate.getTime() + (seconds * 1000));

	// return value as array...
  	return [ odate.getFullYear(), odate.getMonth(), odate.getDate(), odate.getHours(), odate.getMinutes(), odate.getSeconds()   ]
}





//====================================================================================
// SIMPLE MODAL JS

/*
 * SimpleModal 1.2 - jQuery Plugin
 * http://www.ericmmartin.com/projects/simplemodal/
 * Copyright (c) 2008 Eric Martin
 * Dual licensed under the MIT and GPL licenses
 * Revision: $Id: jquery.simplemodal.js 166 2008-12-04 16:54:04Z emartin24 $
 */
(function($){var ie6=$.browser.msie&&parseInt($.browser.version)==6&&!window['XMLHttpRequest'],ieQuirks=$.browser.msie&&!$.boxModel,w=[];$.modal=function(data,options){return $.modal.impl.init(data,options);};$.modal.close=function(){$.modal.impl.close();};$.fn.modal=function(options){return $.modal.impl.init(this,options);};$.modal.defaults={iframe:true,opacity:50,overlayId:'simplemodal-overlay',overlayCss:{},containerId:'simplemodal-container',containerCss:{},dataCss:{},zIndex:1000,close:true,closeHTML:'<a class="modalCloseImg" title="Close"></a>',closeClass:'simplemodal-close',position:null,persist:false,onOpen:null,onShow:null,onClose:null};$.modal.impl={opts:null,dialog:{},init:function(data,options){if(this.dialog.data){return false;}this.opts=$.extend({},$.modal.defaults,options);this.zIndex=this.opts.zIndex;this.occb=false;if(typeof data=='object'){data=data instanceof jQuery?data:$(data);if(data.parent().parent().size()>0){this.dialog.parentNode=data.parent();if(!this.opts.persist){this.dialog.orig=data.clone(true);}}}else if(typeof data=='string'||typeof data=='number'){data=$('<div/>').html(data);}else{alert('SimpleModal Error: Unsupported data type: '+typeof data);return false;}this.dialog.data=data.addClass('simplemodal-data').css(this.opts.dataCss);data=null;this.create();this.open();if($.isFunction(this.opts.onShow)){this.opts.onShow.apply(this,[this.dialog]);}return this;},create:function(){w=this.getDimensions();if(this.opts.iframe||ie6){this.dialog.iframe=$('<iframe src="javascript:false;"/>').css($.extend(this.opts.iframeCss,{display:'none',opacity:0,position:'fixed',height:w[0],width:w[1],zIndex:this.opts.zIndex,top:0,left:0})).appendTo('body');}this.dialog.overlay=$('<div/>').attr('id',this.opts.overlayId).addClass('simplemodal-overlay').css($.extend(this.opts.overlayCss,{display:'none',opacity:this.opts.opacity/100,height:w[0],width:w[1],position:'fixed',left:0,top:0,zIndex:this.opts.zIndex+1})).appendTo('body');this.dialog.container=$('<div/>').attr('id',this.opts.containerId).addClass('simplemodal-container').css($.extend(this.opts.containerCss,{display:'none',position:'fixed',zIndex:this.opts.zIndex+2})).append(this.opts.close?$(this.opts.closeHTML).addClass(this.opts.closeClass):'').appendTo('body');this.setPosition();if(ie6||ieQuirks){this.fixIE();}this.dialog.container.append(this.dialog.data.hide());},bindEvents:function(){var self=this;$('.'+this.opts.closeClass).bind('click.simplemodal',function(e){e.preventDefault();self.close();});$(window).bind('resize.simplemodal',function(){w=self.getDimensions();self.setPosition();if(!ie6){self.dialog.iframe.css({height:w[0],width:w[1]});self.dialog.overlay.css({height:w[0],width:w[1]});}});},unbindEvents:function(){$('.'+this.opts.closeClass).unbind('click.simplemodal');$(window).unbind('resize.simplemodal');},fixIE:function(){$.each([this.dialog.iframe,this.dialog.overlay,this.dialog.container],function(i,el){var s=el[0].style;s.position='absolute';if(i<2){s.setExpression('height','document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + "px"');s.setExpression('width','jQuery.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"');}else{s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');}});},getDimensions:function(){var el=$(window);var h=$.browser.opera&&$.browser.version>'9.5'&&$.fn.jquery<='1.2.6'?document.documentElement['clientHeight']:el.height();return[h,el.width()];},setPosition:function(){var top=0,left=0,hCenter=(w[0]/2)-(this.dialog.container.height()/2),vCenter=(w[1]/2)-(this.dialog.container.width()/2);if(this.opts.position&&this.opts.position.constructor==Array){top+=this.opts.position[0]||hCenter;left+=this.opts.position[1]||vCenter;}else{top+=hCenter;left+=vCenter;}this.dialog.container.css({left:left,top:top});},open:function(){if(this.dialog.iframe){this.dialog.iframe.show();}if($.isFunction(this.opts.onOpen)){this.opts.onOpen.apply(this,[this.dialog]);}else{this.dialog.overlay.show();this.dialog.container.show();this.dialog.data.show();}this.bindEvents();},close:function(){if(!this.dialog.data){return false;}if($.isFunction(this.opts.onClose)&&!this.occb){this.occb=true;this.opts.onClose.apply(this,[this.dialog]);}else{if(this.dialog.parentNode){if(this.opts.persist){this.dialog.data.hide().appendTo(this.dialog.parentNode);}else{this.dialog.data.remove();this.dialog.orig.appendTo(this.dialog.parentNode);}}else{this.dialog.data.remove();}this.dialog.container.remove();this.dialog.overlay.remove();if(this.dialog.iframe){this.dialog.iframe.remove();}this.dialog={};}this.unbindEvents();}};})(jQuery);

/*
 * SimpleModal Basic Modal Dialog
 * http://www.ericmmartin.com/projects/simplemodal/
 * http://code.google.com/p/simplemodal/
 *
 * Copyright (c) 2008 Eric Martin - http://ericmmartin.com
 *
 * Licensed under the MIT license:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Revision: $Id: basic.js 164 2008-12-02 23:31:54Z emartin24 $
 *
 */

$(document).ready(function () {
	/*$('#basicModal input.basic, #basicModal a.basic').click(function (e) {
		e.preventDefault();
		$('#basicModalContent').modal();
	});*/
	
	/*$('a#warning1').click(function (e) {
		e.preventDefault();
		$.modal("<div id='basi3cModalContent' >\
	<h2>Time Limit Warning</h2>\
    <table width='323' border='0'>\
      <tr>\
        <td width='80'><img src='/master/images/large_warning.jpg' alt='Warning'  /></td>\
        <td width='190'><h5>Warning, <blink><strong>less than 1 minute</strong></blink> remaining in the test!  </h5>\
          <h5>&nbsp;</h5>\
          <h5>Please Complete the questions as soon as possible. </h5>\
          <p>NOTE: Your questions will be automatically submitted when the time runs out.</p></td>\
      </tr>\
    </table>\
    <p align='center'>\
      <input type='submit' name='Modal1' id='Modal1' value='Close Window'  class='simplemodal-close'/>\
    </p>\
</div>",{close: true});
	});
	
	$('a#warning0').click(function (e) {
		e.preventDefault();
		$.modal("<div id='basi3cModalContent' >\
	<h2>Time Limit Warning</h2>\
    <table width='323' border='0'>\
      <tr>\
        <td width='80'><img src='/master/images/large_warning.jpg' alt='Warning'  /></td>\
        <td width='190'><h5>Warning, <blink><strong>less than 1 minute</strong></blink> remaining in the test!  </h5>\
          <h5>&nbsp;</h5>\
          <h5>Please Complete the questions as soon as possible. </h5>\
          <p>NOTE: Your questions will be automatically submitted when the time runs out.</p></td>\
      </tr>\
    </table>\
    <p align='center'>\
      <input type='submit' name='Modal1' id='Modal1' value='Close Window'  class='simplemodal-close'/>\
    </p>\
</div>",{close: true});
	});
	*/
});

//====================================================================================
// END OF SIMPLE MODAL JS

