/* * * * * * * * * * * * * * *\
*                             *
*   (C) Kamran Layegh 2003    *
*      kamran@layegh.com      *
*                             *
\* * * * * * * * * * * * * * */

/*
toLocaleDateString
*/

/*
onclick='hndlMsCk()' onmousedown='hndlMsDn()' onmouseup='hndlMsUp()' onmouseenter='hndlMsIn()' onmouseleave='hndlMsOt()'
document.onmouseover = rollon;
window.event.srcElement.className == "Highlight";
*/

function ping(){
  alert("pong");
}
/* STRING CONSTANTS */
//var oneAtATime='Please finish with the highlighted item \nby clicking on Restore, Delete or Apply';
var oneAtATime="Please finish with the previous item\nbefore dealing with another cell.\n\nIf you do not wish to make any\nchanges to that item, you can\nclick on the 'Restore' button.";
var no2RowsSameDate1="Sorry, a row for ";
var no2RowsSameDate2="\nalready exists. You cannot have two\nseparate rows for the same date.";
var changeAllDatesPos="Forward All Dates ";
var changeAllDatesNeg="Put Back All Dates ";
var changeAllDatesZero="No Change";
var noRedirect="Sorry, for security reasons you may not use > and <";
/* CONSTANTS */
var NUM_BUTTONS=3;
var MS_DAY=86400000;
var MS_WEEK=86400000*7;
/* GLOBALS */
var oldHead=''; //DB table value
var oldDescrip=''; //DB table value
var oldDate=0; //number of milliseconds correspondig to the last
               //date before it was changed (used to Restore Date)

/* STATE VARS */
var sbLockedDiv=false; //false, or div_id of locked bigDiv
var dayWeek='neither';

//IMAGES
var logo;
var arwLftUp;
var arwLftDwn;
var arwRghtUp;
var arwRghtDwn;
var dyInactive;
var dyActive;
var wkInactive;
var wkActive;
var btn_newEnterySport;

function init(){
  /* cache images */
  logo=new Image();
  logo.src='SWLogo.jpg';
  arwLftUp=new Image();
  arwLftUp.src='arrowLftUp.jpg';
  arwLftDwn=new Image();
  arwLftDwn.src='arrowLftDwn.jpg';
  arwRghtUp=new Image();
  arwRghtUp.src='arrowRghtUp.jpg';
  arwRghtDwn=new Image();
  arwRghtDwn.src='arrowRghtDwn.jpg';
  dyInactive=new Image();
  dyInactive.src='dayInactive.jpg';
  dyActive=new Image();
  dyActive.src='dayActive.jpg';
  wkInactive=new Image();
  wkInactive.src='weekInactive.jpg';
  wkActive=new Image();
  wkActive.src='weekActive.jpg';
  btn_newEnterySport=new Image();
  btn_newEnterySport.src='btn_newEnterySport.gif';
  /* put images on page */
  var imgs=document.all.tags('img');
  for(var i=0; i<imgs.length; i++){
    var im=imgs[i];
    switch (im.id){
      case 'logo':
	      im.src=logo.src;
        break;
      case 'arwLft':
	      im.src=arwLftUp.src;
        break;
      case 'dy':
	      if(im.className=='datesAll'){
					im.src=dyActive.src;
					im.state=true;
				}
				else{
					im.src=dyInactive.src;
					im.state=false;
				}
        break;
      case 'wk':
	      if(im.className=='datesAll'){
					im.src=wkInactive.src;
					im.state=false;
				}
				else{
					im.src=wkActive.src;
					im.state=true;
				}
        break;
      case 'arwRgt':
        im.src=arwRghtUp.src;
        break;
      default:
        im.src=btn_newEnterySport.src;
        break;
    }
    if(im.className!='datesAll'&&im.className!='newEnterySport'&&im.className!='newEnterySoc')im.style.visibility='hidden';
  }
}

function dateExists(oDateTools){
  oDivs=document.all.tags('div');
  for(var i=0;i<oDivs.length;i++){
    //don't compare with today's date in dateTools on top-left of browser screen
    if(i==5)continue;
    if((oDivs[i].className=='dateTools')&&(oDivs[i]!=oDateTools)&&(oDivs[i].nDateMSecs==oDateTools.nDateMSecs))return true;
  }
	return false;
}

function hndlMsCk(){
  var elem=event.srcElement;
  switch(elem.id){
    case 'arwLft':
      if(elem.changeAll=='yes'){changeAllTxt.numWeeks--; dsiplayAdvance(changeAllTxt.numWeeks); break;	}
      else hndlArrowLftClick(elem);
      break;
    case 'arwRgt':
      if(elem.changeAll=='yes'){changeAllTxt.numWeeks++; dsiplayAdvance(changeAllTxt.numWeeks); break;	}
      else hndlArrowRghtClick(elem);
      break;
    case 'dy':
      hndlDyWkClick(elem);
      break;
    case 'wk':
      hndlDyWkClick(elem);
      break;
    case 'resetChangeAll':
      changeAllTxt.numWeeks='1';
      dsiplayAdvance(1);
      break;
    case 'applyChangeAll':
	    var nWks=MS_WEEK*changeAllTxt.numWeeks;
	    if(nWks!=0){
				var dateTemp=nWks;
				writeDB('updateAllDates',dateTemp,'','','','');
			}
      break;
    case 'delPrior':
      if(confirm("Please click on 'OK' if you wish to delete all the rows with\ndates prior to today. Ohterwise, please click on 'Cancel'"))
				writeDB('delPrior','','','','','');
      break;
    case 'delAll':
      if(confirm("Please click on 'OK' if you wish to delete ALL the rows in\nthe entire table. Ohterwise, please click on 'Cancel'"))
				writeDB('delAll','','','','','');
      break;
    default:{
      var clsNm=elem.className;
      if(clsNm=='sportHead'||clsNm=='sportDescrip'||clsNm=='socHead'||clsNm=='socDescrip')hndlHdDscpClck(elem);
      else if(clsNm=='day'||clsNm=='date'){
        if(sbLockedDiv!=false&&elem.parentElement!=sbLockedDiv)refuse();
      }
      //Reset button of Sport or Social sections
      else if(clsNm=='reset'){
        if(sbLockedDiv!=false)restoreTexts(elem);
        sbLockedDiv=false;
      }
      //Reset button in a date section
      else if(clsNm=='resetDate'||clsNm=='resetDateAll'){
        if(sbLockedDiv!=false){
          //restore date
          elem.parentElement.children[2].nDateMSecs=oldDate;
          changeTime('neither','',elem.parentElement.children[2]); //the 'neither' cuases changeTime() to just display
          sbLockedDiv=false;
        }
      }
      else if(clsNm=='deleteDate'){
//        if(sbLockedDiv!=false){
        var dateToDelete=elem.parentElement.children[0].innerText+' '+elem.parentElement.children[1].innerText;
        if(confirm("Please click on 'OK' to delete the entire row for\n"+dateToDelete+".\nOhterwise, please click on 'Cancel'")){
          var dateTemp=elem.parentElement.children[2].nDateMSecs;
          writeDB('deleteDate',dateTemp,'','','','');
        }
      }
      //update an existing date
      else if(clsNm=='applyDate'){
        if(sbLockedDiv!=false){
          var thisDateTools=elem.parentElement.children[2];
          if(!dateExists(thisDateTools)){
						var dateTemp=thisDateTools.nDateMSecs;
						writeDB('updateDate',dateTemp,'','','','');
					}
					else {
						var existentDate=elem.parentElement.children[0].innerText+' '+elem.parentElement.children[1].innerText;
						alert(no2RowsSameDate1+existentDate+no2RowsSameDate2);
					}
        }
			}
      //insert a new date
      else if(clsNm=='applyDateAll'){
				var thisDateTools=elem.parentElement.children[2];
				if(!dateExists(thisDateTools)){
					var dateTemp=thisDateTools.nDateMSecs;
					writeDB('insertDate',dateTemp,'','','',dateTemp);
				}
				else {
					var existentDate=elem.parentElement.children[0].innerText+' '+elem.parentElement.children[1].innerText;
					alert(no2RowsSameDate1+existentDate+no2RowsSameDate2);
				}
      }
      else if(clsNm=='deleteSport'||clsNm=='deleteSoc'){
          var dateTemp=elem.parentElement.parentElement.parentElement.children[0].children[0].children[2].nDateMSecs;
          var ordinalTemp=(elem.parentElement.children[0].id).substr(3);
          ordinalTemp=parseInt(ordinalTemp,10);
          writeDB(clsNm,dateTemp,'','',ordinalTemp,'');
      }
      else if(clsNm=='applySport'||clsNm=='applySoc'){
        if(sbLockedDiv!=false){
          //write sport Head and Descrip to DB
          var dateTemp=elem.parentElement.parentElement.parentElement.children[0].children[0].children[2].nDateMSecs;
          var newHeadDescrip=getTexts(elem.parentElement)
          var ordinalTemp=(elem.parentElement.children[0].id).substr(3);
          ordinalTemp=parseInt(ordinalTemp,10);
          var tempDoWhat=clsNm=='applySport'?'updateSport':'updateSoc';
          writeDB(tempDoWhat,dateTemp,newHeadDescrip[0],newHeadDescrip[1],ordinalTemp,'');
        }
      }
      else if(clsNm=='newEnterySport'||clsNm=='newEnterySoc'){
      	if(sbLockedDiv!=false)refuse();
      	else{
      		var dateTemp=elem.parentElement.parentElement.children[0].children[0].children[2].nDateMSecs;
      		if(elem.parentElement.parentElement.children[0].className='adminEditAllDates')dateTemp=elem.parentElement.parentElement.children[0].children[0].children[2].nDateMSecs;
      		var ordinalTemp=(elem.id).substr(7)
      		var doWhatTemp='insertSport';
      		if(clsNm=='newEnterySoc')doWhatTemp='insertSoc';
      		writeDB(doWhatTemp,dateTemp,'','',ordinalTemp,'');
      	}
      }
    }//default
  }//switch
}//hndlMsCk()

function hndlMsDn(){
  var srcElem=window.event.srcElement;
  if(srcElem.id=='arwLft')srcElem.src=arwLftDwn.src;
  if(srcElem.id=='arwRgt')srcElem.src=arwRghtDwn.src;
}
function hndlMsUp(){
  var srcElem=window.event.srcElement;
  if(srcElem.id=='arwLft')srcElem.src=arwLftUp.src;
  if(srcElem.id=='arwRgt')srcElem.src=arwRghtUp.src;
}
function porcMouseEnter(bigDiv){
  
  //status='*'+(bigDiv.children[0].id).substr(3)+'*'+(bigDiv.children[1].id).substr(3)+'*'; 
  
  if(sbLockedDiv==false){
    //change the appearance
    bigDiv.style.background='#006699';
    bigDiv.style.border='1px #ccff33 solid';
    var oBtns=bigDiv.all.tags('button');
    var nNumBtns=oBtns.length;
    for(var i=0;i<nNumBtns;i++)oBtns[i].style.visibility='visible';
    var oImgs=bigDiv.all.tags('img');
    var nNumImgs=oImgs.length;
    for(var i=0;i<nNumImgs;i++)oImgs[i].style.visibility='visible';
  }
}

function porcMouseLeave(bigDiv){
  if(sbLockedDiv==false){
    //restore appearance
    bigDiv.style.background='#003366';
    bigDiv.style.border='1px #003366 solid';
    var oBtns=bigDiv.all.tags('button');
    var nNumBtns=oBtns.length
    for(var i=0; i<nNumBtns; i++)oBtns[i].style.visibility='hidden';
    var oImgs=bigDiv.all.tags('img');
    var nNumImgs=oImgs.length;
    for(var i=0;i<nNumImgs;i++)oImgs[i].style.visibility='hidden';
  }
}

function hndlHdDscpClck(littleDiv){
  //no bigDiv is locked, or clicked on THE locked bigDiv
  if(sbLockedDiv==false||littleDiv.parentElement==sbLockedDiv){
    if(sbLockedDiv==false)saveTextAndId(littleDiv);
  }
  else{
    refuse();
  }
}
/*
function hndlDeleteClck(oBtnDelete){
}

function hndlSendClck(oBtnSend){
}
*/
function getTexts(bigDiv){
  var texts=new Array();
	texts[0]=bigDiv.children(0).innerText;
if(texts[0]=='-')texts[0]='';
  //translate char(13)+char(10) to a single "<br/>"
	texts[0]=translate(texts[0]);
	texts[1]=bigDiv.children(1).innerText;
	if(texts[1]=='-')texts[1]='';
  //translate char(13)+char(10) to a single "<br/>"
	texts[1]=translate(texts[1]);
  return texts;
}
function saveTextAndId(littleDiv){
  bigDiv=littleDiv.parentElement;
  //save id
  sbLockedDiv=bigDiv;
  //only sportHead present, save it
  if(bigDiv.children.length==NUM_BUTTONS+1&&bigDiv.children(0).className=='sportHead')oldHead=bigDiv.children(0).innerText;
  //only sportDescrip present, save it
  if(bigDiv.children.length==NUM_BUTTONS+1&&bigDiv.children(0).className=='sportDescrip')oldDescrip=bigDiv.children(0).innerText;
  //both sportHead and sportDescrip preset, save them
  if(bigDiv.children.length==NUM_BUTTONS+2){
    oldHead=bigDiv.children(0).innerText;
    oldDescrip=bigDiv.children(1).innerText;
  }
}
function restoreTexts(oBtnRestore){
  bigDiv=oBtnRestore.parentElement;
  //only sportHead present, restore it
  if(bigDiv.children.length==4&&bigDiv.children(0).className=='sportHead')bigDiv.children(0).innerText=oldHead;
  //only sportDescrip present, restore it
  if(bigDiv.children.length==4&&bigDiv.children(0).className=='sportDescrip')bigDiv.children(0).innerText=oldDescrip;
  //both sportHead and sportDescrip preset, restore them
  if(bigDiv.children.length==5){
    bigDiv.children(0).innerText=oldHead;
    bigDiv.children(1).innerText=oldDescrip;
  }
}
function hndlDyWkClick(oBtn){
  switch(oBtn.src){
    case dyInactive.src:
      oWkBtn=document.all(oBtn.sourceIndex+1);
      oWkBtn.src=wkInactive.src;
      oWkBtn.state=false;
      oBtn.src=dyActive.src;
      oBtn.state=true;
      break;
    case wkInactive.src:
      oDyBtn=document.all(oBtn.sourceIndex-1);
      oDyBtn.src=dyInactive.src;
      oDyBtn.state=false;
      oBtn.src=wkActive.src;
      oBtn.state=true;
      break;
  }
}

function hndlArrowLftClick(oArrowLft){
  var oDateTools=oArrowLft.parentElement;
  if(sbLockedDiv==false){
    sbLockedDiv=oDateTools;
    oldDate=oDateTools.nDateMSecs;
    var dayWeek='day';
    if((oDateTools.children[2]).state==true)dayWeek='week';
    changeTime('down',dayWeek,oDateTools);
  }
  else{
    if(oDateTools==sbLockedDiv){
    var dayWeek='day';
    if((oDateTools.children[2]).state==true)dayWeek='week';
    changeTime('down',dayWeek,oDateTools);
    }
    else{refuse();}
  }
}
function hndlArrowRghtClick(oArrowRght){
  var oDateTools=oArrowRght.parentElement;
  if(sbLockedDiv==false){
    sbLockedDiv=oDateTools;
    oldDate=oDateTools.nDateMSecs;
    var dayWeek='day';
    if((oDateTools.children[2]).state==true)dayWeek='week';
    changeTime('up',dayWeek,oDateTools);
  }
  else{
    if(oDateTools==sbLockedDiv){
    var dayWeek='day';
    if((oDateTools.children[2]).state==true)dayWeek='week';
      changeTime('up',dayWeek,oDateTools);
    }
    else{refuse();}
  }
}
function refuse(){
  alert(oneAtATime);
  sbLockedDiv.children(0).focus();
  sbLockedDiv.parentElement.scrollIntoView();
}
function changeTime(upDown,dayWeek,oDateTools){
  if(upDown=='neither'){
    var difference=0;
  }
  else if(upDown=='down'&&dayWeek=='day'){
    var difference=MS_DAY;
  }
  else if(upDown=='down'&&dayWeek=='week'){
    var difference=MS_WEEK;
  }
  else if(upDown=='up'&&dayWeek=='day'){
    var difference=-MS_DAY;
  }
  else if(upDown=='up'&&dayWeek=='week'){
    var difference=-MS_WEEK;
  }
  oDateTools.nDateMSecs-=difference;
  oDt=new Date(oDateTools.nDateMSecs);
  ((oDateTools.parentElement).children[0]).innerText=dayOfWk(oDt);
  ((oDateTools.parentElement).children[1]).innerText=oDt.toLocaleDateString();
}

function dayOfWk(oDt){
  switch (oDt.getDay()){
  case 0:
    return 'Sunday';
    break;
  case 1:
    return 'Monday';
    break;
  case 2:
    return 'Tuesday';
    break;
  case 3:
    return 'Wednesday';
    break;
  case 4:
    return 'Thursday';
    break;
  case 5:
    return 'Friday';
    break;
  case 6:
    return 'Saturday';
    break;
  }
}

function writeDB(doWhat,date,headNew,descripNew,ordinalNum,lastInsertedDate){
  //set hidden fields and submit
  theForm.isLoadingAfterWriteDB.value='true';
  theForm.frmDoWhat.value=doWhat;
  switch(doWhat){
    case 'deleteDate':
      theForm.frmDate.value=date/1000;
      break;
    case 'delPrior':
    case 'delAll':
      break;
    case 'updateDate':
      theForm.frmDate.value=oldDate/1000;
      theForm.frmDateNew.value=date/1000;
      break;
    case 'insertDate':
      theForm.frmDateNew.value=date/1000;
      theForm.frmLastInsertedDate.value=lastInsertedDate/1000;
      break;
    case 'updateAllDates':
      theForm.frmDate.value=date/1000;
      break;
    case 'updateSoc':
    case 'updateSport':
      theForm.frmDate.value=date/1000;
      theForm.frmHeadNew.value=headNew;
      theForm.frmDescripNew.value=descripNew;
      if(oldHead=='-')oldHead='';
      theForm.frmHeadOld.value=oldHead;
      if(oldDescrip=='-')oldDescrip='';
      theForm.frmDescripOld.value=oldDescrip;
      theForm.frmOrdinalNum.value=ordinalNum;
      break;
    case 'deleteSport':
    case 'deleteSoc':
    case 'insertSport':
    case 'insertSoc':
      theForm.frmDate.value=date/1000;
      theForm.frmOrdinalNum.value=ordinalNum;
//alert('theForm.frmDate.value: '+theForm.frmDate.value+'*');
      break;
  }
  theForm.submit();
}
function dsiplayAdvance(numWeeks){
	var strTemp=changeAllDatesZero;
	if(numWeeks>0){
		strTemp=changeAllDatesPos+numWeeks+' Week';
		if(numWeeks>1){
			strTemp=changeAllDatesPos+numWeeks+' Weeks';
		}
	}
	else if(numWeeks<0){
		strTemp=changeAllDatesNeg+(-numWeeks)+' Week';
		if(numWeeks<-1){
			strTemp=changeAllDatesNeg+(-numWeeks)+' Weeks';
		}
	}
	changeAllTxt.innerText=strTemp;
}

function translate(str){
  //delete codee for "<" and ">"
  str=str.replace(/&lt;|&gt;|&#0*60;|&#0*62;/gi,'');
  var transStr="";
  for(i=0;i<str.length;i++){
    var charCode=str.charCodeAt(i);
    switch (charCode){
      //linefeed + carriage return -> <br/>
      case 13:
        break;
      case 10:
        transStr+="<br/>";
        break;
      case 32:
        //translate spaces:
        //leave the FIRST space "breaking", translate 
        //the rest (if any) to non-breaking
        if((i!=0)&&(str.charCodeAt(i-1)==32))transStr+="&nbsp";
        else transStr+=str.charAt(i);
        break;
      //delete "<", and ">"
      case 60:
        alert(noRedirect);
        break;
      case 62:
        alert(noRedirect);
        break;
      case 38:
        transStr+="&amp;";
        break;
      case 34:
        transStr+="&quot;";
        break;
      case 39:
        transStr+="&#39;";
        break;
      default:
        transStr+=str.charAt(i);
    }
  }
  return transStr;
}
////////////////////////////////////////////////
function testFunc(obj){
	status=obj.id;
}
function testFunc_1(obj){
	status='';
}
////////////////////////////////////////////////

