﻿// JScript File

//Declarations
var mobjHTTPRequestObject;
var mobjResponseTarget;

//###############################
//# Validate Date (dd/mm/yyyy)  #
//###############################
var dtCh= " ";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function mfIsDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strDay=dtStr.substring(0,pos1)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear

	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		return false
	}
	//if (strMonth.length<1 || month<1 || month>12){		
	//	return false
	//}
        if (!(
           strMonth.toLowerCase() == 'jan' || 
           strMonth.toLowerCase() == 'feb' || 
           strMonth.toLowerCase() == 'mar' || 
           strMonth.toLowerCase() == 'apr' || 
           strMonth.toLowerCase() == 'may' || 
           strMonth.toLowerCase() == 'jun' || 
           strMonth.toLowerCase() == 'jul' || 
           strMonth.toLowerCase() == 'aug' || 
           strMonth.toLowerCase() == 'sep' || 
           strMonth.toLowerCase() == 'oct' || 
           strMonth.toLowerCase() == 'nov' || 
           strMonth.toLowerCase() == 'dec'))
        {
          return false;
        }
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month])
        {
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear)
        {
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1)
        {
		return false
	}
	if ((dtStr.substring(1,2) != ' ' && dtStr.substring(2,3) != ' ') || (dtStr.substring(5,6) != ' ' && dtStr.substring(6,7) != ' '))
	{
	  return false;
	}	
  return true
}

function mfIsTime(dtStr)
{	
    
	if (!(
	dtStr.charAt(0) == "0" ||
	dtStr.charAt(0) == "1" ||
	dtStr.charAt(0) == "2" ||
	dtStr.charAt(0) == "3" ||
	dtStr.charAt(0) == "4" ||
	dtStr.charAt(0) == "5" ||
	dtStr.charAt(0) == "6" ||
	dtStr.charAt(0) == "7" ||
	dtStr.charAt(0) == "8" ||
	dtStr.charAt(0) == "9" 
	))
	{
	 return false
	}
	
	if (!(
    dtStr.charAt(1) == "0" ||
	dtStr.charAt(1) == "1" ||
	dtStr.charAt(1) == "2" ||
	dtStr.charAt(1) == "3" ||
	dtStr.charAt(1) == "4" ||
	dtStr.charAt(1) == "5" ||
	dtStr.charAt(1) == "6" ||
	dtStr.charAt(1) == "7" ||
	dtStr.charAt(1) == "8" ||
	dtStr.charAt(1) == "9" 
	))
	{
	 return false
	}
	if (!(
	dtStr.charAt(3) == "0" ||
	dtStr.charAt(3) == "1" ||
	dtStr.charAt(3) == "2" ||
	dtStr.charAt(3) == "3" ||
	dtStr.charAt(3) == "4" ||
	dtStr.charAt(3) == "5" ||
	dtStr.charAt(3) == "6" ||
	dtStr.charAt(3) == "7" ||
	dtStr.charAt(3) == "8" ||
	dtStr.charAt(3) == "9" 
	))
	{
	 return false
	}
	if (!(
    dtStr.charAt(4) == "0" ||
	dtStr.charAt(4) == "1" ||
	dtStr.charAt(4) == "2" ||
	dtStr.charAt(4) == "3" ||
	dtStr.charAt(4) == "4" ||
	dtStr.charAt(4) == "5" ||
	dtStr.charAt(4) == "6" ||
	dtStr.charAt(4) == "7" ||
	dtStr.charAt(4) == "8" ||
	dtStr.charAt(4) == "9" 
	))
	{
	 return false
	}	
	if (!(dtStr.charAt(2) == ':'))
	{
	 return false
	}

  return true
  
}


function mfDateFocus(pobjTextBox)
{
  if (pobjTextBox.value == 'dd/mm/yyyy')
  {
    pobjTextBox.value = '';
    pobjTextBox.style.color = 'black';
  }    
}

function mfDateBlur(pobjTextBox)
{
  if (pobjTextBox.value == '')
  {
    pobjTextBox.value = 'dd/mm/yyyy';
    pobjTextBox.style.color = 'lightgrey';
  }    
}


//###############################
//# Validate Int                #
//###############################
function mfValidateInt(e)
{
  var objField;
  var intKeyCode;
  var blnKeyOk = false;

  //Get a reference to the field that triggered this event and the keycode if there is one
  if (window.navigator.appName.toLowerCase().indexOf('internet explorer') != -1)  
  {
    objField = event.srcElement;    
    intKeyCode = event.keyCode;
  }
  else  
  {
    objField = e.target;
    intKeyCode = e.keyCode;
  }

  if ((intKeyCode >= 48 && intKeyCode <= 57) ||
      (intKeyCode >= 96 && intKeyCode <= 105) ||
      (intKeyCode == 109) || //Keypad -
      (intKeyCode == 8) ||
      (intKeyCode == 37) ||
      (intKeyCode == 39) ||
      (intKeyCode == 9) ||
      (intKeyCode == 16) ||
      (intKeyCode == 32) ||
      (intKeyCode == 46) ||
      (intKeyCode == 0) ||
      (intKeyCode == 187) ||
      (intKeyCode == 189))
      blnKeyOk = true;
  
  if (! blnKeyOk)
  {
  
    //If the field contains an invalid value cancel the event
    if (window.navigator.appName.toLowerCase().indexOf('internet explorer') != -1)  
      event.returnValue=false;
    else  
      e.preventDefault();    
  }
  
  //if the field still contains an invalid tel no clear it
  if (isNaN(mfReplaceString(mfReplaceString(objField.value, ' ', ''), '+', '')))
    objField.value = '';
}

//###############################
//# Validate Int                #
//###############################
function mfValidateDouble(e)
{
  var objField;
  var intKeyCode;
  var blnKeyOk = false;

  //Get a reference to the field that triggered this event and the keycode if there is one
  if (window.navigator.appName.toLowerCase().indexOf('internet explorer') != -1)  
  {
    objField = event.srcElement;    
    intKeyCode = event.keyCode;
  }
  else  
  {
    objField = e.target;
    intKeyCode = e.keyCode;
  }

  if ((intKeyCode >= 48 && intKeyCode <= 57) ||
      (intKeyCode >= 96 && intKeyCode <= 105) ||
      (intKeyCode == 109) || //Keypad -
      (intKeyCode == 110) || //Keypad . 
      (intKeyCode == 8) ||
      (intKeyCode == 37) ||
      (intKeyCode == 39) ||
      (intKeyCode == 9) ||
      (intKeyCode == 16) ||
      (intKeyCode == 32) ||
      (intKeyCode == 46) ||
      (intKeyCode == 0) ||
      (intKeyCode == 187) ||
      (intKeyCode == 190) ||
      (intKeyCode == 189))
      blnKeyOk = true;
    
  //Just check that this key is not a subsequent .
  if (intKeyCode == 190 && objField.value.indexOf('.') != -1)
    blnKeyOk = false;
    
  if (! blnKeyOk)
  {  
    //If the field contains an invalid value cancel the event
    if (window.navigator.appName.toLowerCase().indexOf('internet explorer') != -1)  
      event.returnValue=false;
    else  
      e.preventDefault();    
  }
  
  //if the field still contains an invalid tel no clear it  
  if (isNaN(mfReplaceString(mfReplaceString(mfReplaceString(objField.value, ' ', ''), '+', ''), '-', '')))
  {
    objField.value = '';
  }
}

//###############################
//# Validate Email              #
//###############################
function mfValidateEmail(pobjField)
{  
  if ( pobjField.value.length == 0 ||
       pobjField.value.substring(0,1) == '@' || 
       pobjField.value.indexOf('.') == -1 || 
       pobjField.value.indexOf('@') == -1 ||
       (pobjField.value.toLowerCase().indexOf('.co.uk') == -1 &&
        pobjField.value.toLowerCase().indexOf('.com') == -1 &&
        pobjField.value.toLowerCase().indexOf('.net') == -1 &&
        pobjField.value.toLowerCase().indexOf('.mobi') == -1 &&
        pobjField.value.toLowerCase().indexOf('.org.uk') == -1 &&
        pobjField.value.toLowerCase().indexOf('.biz') == -1 &&
        pobjField.value.toLowerCase().indexOf('.gov.uk') == -1 &&
        pobjField.value.toLowerCase().indexOf('.uk.com') == -1 &&       
        pobjField.value.toLowerCase().indexOf('.ae') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ai') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ar') == -1 &&
        pobjField.value.toLowerCase().indexOf('.arpa') == -1 &&
        pobjField.value.toLowerCase().indexOf('.at') == -1 &&
        pobjField.value.toLowerCase().indexOf('.au') == -1 &&
        pobjField.value.toLowerCase().indexOf('.be') == -1 &&
        pobjField.value.toLowerCase().indexOf('.bg') == -1 &&
        pobjField.value.toLowerCase().indexOf('.bh') == -1 &&
        pobjField.value.toLowerCase().indexOf('.bm') == -1 &&
        pobjField.value.toLowerCase().indexOf('.bo') == -1 &&
        pobjField.value.toLowerCase().indexOf('.br') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ca') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ch') == -1 &&
        pobjField.value.toLowerCase().indexOf('.cl') == -1 &&
        pobjField.value.toLowerCase().indexOf('.cn') == -1 &&
        pobjField.value.toLowerCase().indexOf('.co') == -1 &&
        pobjField.value.toLowerCase().indexOf('.com') == -1 &&
        pobjField.value.toLowerCase().indexOf('.cr') == -1 &&
        pobjField.value.toLowerCase().indexOf('.cy') == -1 &&
        pobjField.value.toLowerCase().indexOf('.cz') == -1 &&
        pobjField.value.toLowerCase().indexOf('.de') == -1 &&
        pobjField.value.toLowerCase().indexOf('.dk') == -1 &&
        pobjField.value.toLowerCase().indexOf('.do') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ec') == -1 &&
        pobjField.value.toLowerCase().indexOf('.edu') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ee') == -1 &&
        pobjField.value.toLowerCase().indexOf('.eg') == -1 &&
        pobjField.value.toLowerCase().indexOf('.es') == -1 &&
        pobjField.value.toLowerCase().indexOf('.fi') == -1 &&
        pobjField.value.toLowerCase().indexOf('.fj') == -1 &&
        pobjField.value.toLowerCase().indexOf('.fo') == -1 &&
        pobjField.value.toLowerCase().indexOf('.fr') == -1 &&
        pobjField.value.toLowerCase().indexOf('.gb') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ge') == -1 &&
        pobjField.value.toLowerCase().indexOf('.gl') == -1 &&
        pobjField.value.toLowerCase().indexOf('.gov') == -1 &&
        pobjField.value.toLowerCase().indexOf('.gr') == -1 &&
        pobjField.value.toLowerCase().indexOf('.gu') == -1 &&
        pobjField.value.toLowerCase().indexOf('.hk') == -1 &&
        pobjField.value.toLowerCase().indexOf('.hr') == -1 &&
        pobjField.value.toLowerCase().indexOf('.hu') == -1 &&
        pobjField.value.toLowerCase().indexOf('.id') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ie') == -1 &&
        pobjField.value.toLowerCase().indexOf('.il') == -1 &&
        pobjField.value.toLowerCase().indexOf('.in') == -1 &&
        pobjField.value.toLowerCase().indexOf('.int') == -1 &&
        pobjField.value.toLowerCase().indexOf('.is') == -1 &&
        pobjField.value.toLowerCase().indexOf('.it') == -1 &&
        pobjField.value.toLowerCase().indexOf('.jm') == -1 &&
        pobjField.value.toLowerCase().indexOf('.jo') == -1 &&
        pobjField.value.toLowerCase().indexOf('.jp') == -1 &&
        pobjField.value.toLowerCase().indexOf('.kr') == -1 &&
        pobjField.value.toLowerCase().indexOf('.kw') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ky') == -1 &&
        pobjField.value.toLowerCase().indexOf('.kz') == -1 &&
        pobjField.value.toLowerCase().indexOf('.lc') == -1 &&
        pobjField.value.toLowerCase().indexOf('.li') == -1 &&
        pobjField.value.toLowerCase().indexOf('.lt') == -1 &&
        pobjField.value.toLowerCase().indexOf('.lu') == -1 &&
        pobjField.value.toLowerCase().indexOf('.lv') == -1 &&
        pobjField.value.toLowerCase().indexOf('.mil') == -1 &&
        pobjField.value.toLowerCase().indexOf('.mo') == -1 &&
        pobjField.value.toLowerCase().indexOf('.mt') == -1 &&
        pobjField.value.toLowerCase().indexOf('.mx') == -1 &&
        pobjField.value.toLowerCase().indexOf('.my') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ni') == -1 &&
        pobjField.value.toLowerCase().indexOf('.nl') == -1 &&
        pobjField.value.toLowerCase().indexOf('.no') == -1 &&
        pobjField.value.toLowerCase().indexOf('.nz') == -1 &&
        pobjField.value.toLowerCase().indexOf('.org') == -1 &&
        pobjField.value.toLowerCase().indexOf('.pa') == -1 &&
        pobjField.value.toLowerCase().indexOf('.pe') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ph') == -1 &&
        pobjField.value.toLowerCase().indexOf('.pl') == -1 &&
        pobjField.value.toLowerCase().indexOf('.pt') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ro') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ru') == -1 &&
        pobjField.value.toLowerCase().indexOf('.se') == -1 &&
        pobjField.value.toLowerCase().indexOf('.sg') == -1 &&
        pobjField.value.toLowerCase().indexOf('.si') == -1 &&
        pobjField.value.toLowerCase().indexOf('.sk') == -1 &&
        pobjField.value.toLowerCase().indexOf('.su') == -1 &&
        pobjField.value.toLowerCase().indexOf('.th') == -1 &&
        pobjField.value.toLowerCase().indexOf('.tr') == -1 &&
        pobjField.value.toLowerCase().indexOf('.tt') == -1 &&
        pobjField.value.toLowerCase().indexOf('.tw') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ua') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ug') == -1 &&
        pobjField.value.toLowerCase().indexOf('.uk') == -1 &&
        pobjField.value.toLowerCase().indexOf('.us') == -1 &&
        pobjField.value.toLowerCase().indexOf('.uy') == -1 &&
        pobjField.value.toLowerCase().indexOf('.ve') == -1 &&
        pobjField.value.toLowerCase().indexOf('.za') == -1 &&
        pobjField.value.toLowerCase().indexOf('.zm') == -1))      
    return false;
  else
    return true;
}

//###############################
//# Validate TelNo              #
//###############################
function mfValidateTelNo(e)
{
  var objField;
  var intKeyCode;
  var blnKeyOk = false;

  //Get a reference to the field that triggered this event and the keycode if there is one
  if (window.navigator.appName.toLowerCase().indexOf('internet explorer') != -1)  
  {
    objField = event.srcElement;    
    intKeyCode = event.keyCode;
  }
  else  
  {
    objField = e.target;
    intKeyCode = e.keyCode;
  }
  
  if ((intKeyCode >= 48 && intKeyCode <= 57) ||
      (intKeyCode == 8) ||
      (intKeyCode == 37) ||
      (intKeyCode == 39) ||
      (intKeyCode == 9) ||
      (intKeyCode == 16) ||
      (intKeyCode == 32) ||
      (intKeyCode == 46) ||
      (intKeyCode == 0) ||
      (intKeyCode == 187))
      blnKeyOk = true;
  
  if (! blnKeyOk)
  {
  
    //If the field contains an invalid value cancel the event
    if (window.navigator.appName.toLowerCase().indexOf('internet explorer') != -1)  
      event.returnValue=false;
    else  
      e.preventDefault();    
  }
  
  //if the field still contains an invalid tel no clear it
  if (isNaN(mfReplaceString(mfReplaceString(objField.value, ' ', ''), '+', '')))
    objField.value = '';
}

//###############################
//# Replace String              #
//###############################
function mfReplaceString(pstrString, pstrSearchFor, pstrReplaceWith)
{
  var strString = pstrString;
  var intLoop= 0;

  if (pstrSearchFor != pstrReplaceWith)
  {
    while (strString.indexOf(pstrSearchFor) > -1 && intLoop < 1000)
    {
      strString = strString.replace(pstrSearchFor, pstrReplaceWith)
      intLoop ++;
    }
  }
  return strString;
}
//###############################
//# Pad Left                    #
//###############################
function mfPadLeft(pstrValue, pintNumChars, pstrPadChar)
{
  var intCharsRequired = pintNumChars - pstrValue.length;
  var intLoop;
    
  for (intLoop = 1; intLoop <= intCharsRequired; intLoop++)
  {
    pstrValue = pstrPadChar + pstrValue;
  }
  return pstrValue;
}

//###############################
//# Pad Right                   #
//###############################
function mfPadRight(pstrValue, pintNumChars, pstrPadChar)
{
  var intCharsRequired = pintNumChars - pstrValue.length;
  var intLoop;
    
  for (intLoop = 1; intLoop <= intCharsRequired; intLoop++)
  {
    pstrValue += pstrPadChar;
  }
  return pstrValue;
}

//###############################
//# Create HTTPRequest Object   #
//###############################
function ICB_CreateHTTPRequestObject()
{
  var xmlhttp=false;

  /*@cc_on @*/
  /*@if (@_jscript_version >= 5)
  // JScript gives us Conditional compilation, we can cope with old IE versions.
  // and security blocked creation of the objects.
   try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
   } catch (e) {
    try {
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
     xmlhttp = false;
    }
   }
  @end @*/
    
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
	  try {
		  xmlhttp = new XMLHttpRequest();		 
		  //xmlhttp.overrideMimeType('text/xml');
	  } catch (e) {
		  xmlhttp=false;
	  }
  }
  
  if (!xmlhttp && window.createRequest) {
	  try {
		  xmlhttp = window.createRequest();
	  } catch (e) {
		  xmlhttp=false;
	  }
  }
  
  //if (location.hostname.toLowerCase() == 'inks4students.co.uk') alert(!xmlhttp && window.createRequest);    
  //If we still have not been able to create an xmlhttprequest object try using our IFrame workaround
  if (!xmlhttp)
  {    
    xmlhttp = new IFrameHttpRequest();    
  } 
  return xmlhttp;  
}  


var kXHR_instances=0;
var kXHR_objs=[];


IFrameHttpRequest=function()
{
  var i=0;
  var url='';
  var responseText='';
  var iframe='';

  this.onreadystatechange=function(){return false;}

  this.open=function(method,url)
  {
    this.i=++kXHR_instances; // id number of this request
    this.url=url;    
    document.body.appendChild(document.createElement('<iframe id="kXHR_iframe_'+this.i+'" style="display:none" src="/"></iframe>'));
  }
  
  this.send=function(postdata)
  {
    //TODO: use the postdata    
    document.getElementById('kXHR_iframe_'+this.i).src=this.url;
    kXHR_objs[this.i]=this;
    setTimeout('IFrameHttpRequest_checkState('+this.i+',2)',2);
  }
  return true;
}

IFrameHttpRequest_checkState=function(inst,delay)
{
  var el=document.getElementById('kXHR_iframe_'+inst);

  if(el.readyState=='complete')
  {  
    var responseText=document.frames['kXHR_iframe_'+inst].document.body.innerHTML;
    kXHR_objs[inst].responseText=responseText;
    kXHR_objs[inst].readyState=4;
    kXHR_objs[inst].status=200;
    kXHR_objs[inst].onreadystatechange();
    el.parentNode.removeChild(el);
  }
  else
  {
    delay*=1.5;
    setTimeout('IFrameHttpRequest_checkState('+inst+','+delay+')',delay);
  }
}

 
function PlayMedia(pstrURL, pstrName)
{

  if (pstrURL != '')
  {
    var so = new SWFObject('/Scripts/mediaplayer/player.swf','mpl','210','20','9');
    so.addParam('allowscriptaccess','always');
    so.addParam('allowfullscreen','true');
    so.addParam('flashvars','&file=' + pstrURL + '&autostart=true');
    so.write('divMediaPlayer');


    var strPlaying =  '<div id="playing" style="background:url(/my%20images/master%20template/now-playing.jpg);  background-repeat:no-repeat; background-color:black; width:210px; height:15px">';
	strPlaying += '<span style="padding-left:23px; font-size:11px">Now Playing: ' + pstrName + '</span>';
	strPlaying += '</div>';


    document.getElementById('playing').innerHTML = strPlaying;
  }
  else
    alert('A sample file for this item is not currently available.  Please accept our apologies for this.\n\nIf you would like a sample for this item please contact us for further advice.');
}





