﻿function doPopup(theURL, theWinName, theLeft, theTop, theWidth, theHeight, theresize, thescrollbars, thestatusbar, themenu, thetools, thelocationbar, thedirs){
	// EXAMPLE doPopup('popup.asp', 'popwin', 10, 10, 500, 300, 'no', 'no', 'yes', 'no', 'no', 'no', 'no')
	// USE theLeft AND theTop = -1 FOR AUTO-CENTER

	if (theLeft == -1 && theTop == -1){
		theLeft = (screen.width - theWidth) / 2;
		theTop = (screen.height - theHeight) / 2;
	}
	var paramstr;
	paramstr = "width=" + theWidth + "px,height=" + theHeight + "px,left=" + theLeft + "px,top=" + theTop + "px,resizable=" + theresize + ",scrollbars=" + thescrollbars + ",status=" + thestatusbar + ",menubar=" + themenu + ",toolbar=" + thetools + ",location=" + thelocationbar + ",directories=" + thedirs;
	window.open(theURL, theWinName, paramstr);
}



function EnlargeImage(theImg, theAlt){
	theURL = "../Assets/EnlargeImage.asp?theImg=" + theImg + "&theAlt=" + theAlt
	theWidth = 400;
	theHeight = 400;
	theLeft = (screen.width - theWidth) / 2;
	theTop = (screen.height - theHeight) / 2;
	window.open(theURL, 'enlarge', "width=" + theWidth + "px,height=" + theHeight + "px,left=" + theLeft + "px,top=" + theTop + "px,resizable=yes,scrollbars=no,statusbar=no,menubar=no,personalbar=no,toolbar=no,locationbar=no,directories=no");
}

function alertModal(theMessage,isError, wdt, hgt, pageRequested){
	var myObject = new Object();
	var lft, tp;
	lft = (screen.width - wdt) / 2;
	tp = (screen.height - hgt) / 2;
	myObject.bodys = theMessage;

	if (isError=="ERROR"){
		win = window.showModalDialog("assets/modalError.asp", myObject, "dialogWidth:" + wdt + "px; dialogHeight:"+ hgt +"px; dialogLeft:" + lft + "px; dialogTop:" + tp + "px; help:0;status:0;scroll:0;resizable:0");
	}
	else if (isError=="TERMS"){
		win = window.showModalDialog("assets/modalTerms.asp", myObject, "dialogWidth:" + wdt + "px; dialogHeight:"+ hgt +"px; dialogLeft:" + lft + "px; dialogTop:" + tp + "px; help:0; status:0 ");
	}
	else{
		win = window.showModalDialog("assets/modalInfo.asp", myObject, "dialogWidth:" + wdt + "px; dialogHeight:" + hgt + "px; dialogLeft:" + lft + "px; dialogTop:" + tp + "px; help:0; status:0 ");
	}
}


var nsstyle='display:""'
if (document.layers)
var scrolldoc=document.scroll1.document.scroll2

function up(){
	if (!document.layers) return
	if (scrolldoc.top<0)
	scrolldoc.top+=10
	temp2=setTimeout("up()",50)
}

function down(){
	if (!document.layers) return
	if (scrolldoc.top-150>=scrolldoc.document.height*-1)
	scrolldoc.top-=10
	temp=setTimeout("down()",50)
}

function clearup(){
	if (window.temp2)
	clearInterval(temp2)
}

function cleardown(){
	if (window.temp)
	clearInterval(temp)
}

function goToPage(thePage, showPageFrom, showPageTo, listPage){
	if (eval(thePage) > eval(showPageTo)){
		document.forms.mainForm.iBlockCurrent.value = eval(document.forms.mainForm.iBlockCurrent.value) + 1
	}
	if (eval(thePage) < eval(showPageFrom)){
		document.forms.mainForm.iBlockCurrent.value = eval(document.forms.mainForm.iBlockCurrent.value) - 1
	}
	document.forms.mainForm.action = listPage;
	document.forms.mainForm.iPageCurrent.value = thePage;
	document.forms.mainForm.submit();
}

function goToBlock(theBlock, thePage, listPage){
	document.forms.mainForm.action = listPage;
	document.forms.mainForm.iPageCurrent.value = thePage;
	document.forms.mainForm.iBlockCurrent.value = theBlock;
	document.forms.mainForm.submit();
}

function goToView(theArea, theRecord){
	document.forms.mainForm.action = theArea + "&a=" + theRecord;
	document.forms.mainForm.submit();
}


function goToBack(theArea){
	document.forms.mainForm.action = theArea;
	document.forms.mainForm.submit();
}

function changeSorting(newSorting, theArea){
	document.forms.mainForm.sorting.value = newSorting;
	document.forms.mainForm.action = theArea;
	document.forms.mainForm.submit();
}

function isDate(strDate,DateFormat){
	 DateFormat=DateFormat.toLowerCase()

	 if (DateFormat=='dd/mm/yyyy'){var DatePattern = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;}
	 else if (DateFormat=='mm/dd/yyyy'){var DatePattern = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;}
	 else if (DateFormat=='yyyy/mm/dd'){var DatePattern = /^(\d{2}|\d{4})(\/|-)(\d{1,2})\2(\d{1,2})$/;}

	 var matchArray = strDate.match(DatePattern);
	 if (matchArray == null) return false;

	 if (DateFormat=='dd/mm/yyyy'){var day = matchArray[1];var month = matchArray[3];var year = matchArray[4];}
	 else if (DateFormat=='mm/dd/yyyy'){var day = matchArray[3];var month = matchArray[1];var year = matchArray[4];}
	 else if (DateFormat=='yyyy/mm/dd'){var day = matchArray[4];var month = matchArray[3];var year = matchArray[1];}
	 else{return false;}

	 if (month < 1 || month > 12) return false;
	 if (day < 1 || day > 31) return false;
	 if (year < 1900) return false;
	 if ((month == 4 || month == 6 || month==9 || month == 11) && day == 31) return false;
	 if (day>=29 && month == 2 && parseInt(year) % 4 !== 0) {return false;}
	 if (day>=30 && month == 2 && parseInt(year) % 4 == 0) {return false;}
	 return true;
}

function isInteger(theData){ return (theData.search(/^\d+$/) != -1); }

function isEmpty(s){ return ((s == null) || (s.length == 0) || s=="");}

function isMail(sString){
	var emailEXP = /^[a-z_0-9\.]+@[a-z_0-9\-\_\.]+\.[a-z]{2,3}$/i
	if (!sString.match(emailEXP)){
		return false;
	}
	else{
		return true;
	}
}

function isDecimal(theData){ return (theData.search(/\d*\.\d+/) != -1); }

function isChecked(theData){
	var len, found
	len = theData.length;
	found = true
	for(var i=0;i<len;i++){
		if (theData[i].checked) found=false;
	}
	return found;
}

function hasMaxLength(theString, theLen){
	if (theString.length > theLen) {
		return false
	}
	else {
		return true
	}
}

function RepositionLayer(ReferenceObject, ObjectToMove, OffsetX, OffsetY){
	var RefObj, MoveObj
	var RefObjLeftPos, RefObjTopPos
	RefObj = document.getElementById(ReferenceObject);
	MoveObj = document.getElementById(ObjectToMove);
	
	RefObjLeftPos = findPosX(RefObj);
	RefObjTopPos = findPosY(RefObj);

	MoveObj.style.left = (RefObjLeftPos + OffsetX);
	MoveObj.style.top = (RefObjTopPos + OffsetY);
	MoveObj.style.visibility = "visible";
}

function findPosX(obj){
	var curleft = 0;
	if (obj.offsetParent){
		while (obj.offsetParent){
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj){
	var curtop = 0;
	if (obj.offsetParent){
		while (obj.offsetParent){
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function SwapImage(ImageId,NewSrc){
	document.getElementById(ImageId).src = NewSrc;
}

function ChangeOpacity(opacity, id) { 
    var object = document.getElementById(id).style; 
    object.opacity = (opacity / 100); 
    object.MozOpacity = (opacity / 100); 
    object.KhtmlOpacity = (opacity / 100); 
    object.filter = "alpha(opacity=" + opacity + ")"; 
}

function getFlashMovieObject(movieName){
	if (window.document[movieName]){
		return window.document[movieName];
	}
	
	if (navigator.appName.indexOf("Microsoft Internet")==-1){
		if (document.embeds && document.embeds[movieName])
		return document.embeds[movieName]; 
	}
	else{
		return document.getElementById(movieName);
	}
}

function DisplayInfo(id, img) {
	//var H = parseInt(document.getElementById(id).offsetHeight);
	if(document.getElementById(id).style.display=='block'){
	    document.getElementById(id).style.display = 'none';

	    SwapImage(img, "Assets/Images/ArrowDown.gif");

	    //movediv(id,'bottom',H,10);
	}
	else {
		document.getElementById(id).style.display='block';
		SwapImage(img,"Assets/Images/ArrowUp.gif");
		//opacity(id,0,100,500);
		//movediv(id,'top',10,H);
    }
}
/*
function movediv(id,dir,amt,togo) {  
  var elem = document.getElementById(id)
  elem.style.top = togo+"px";
  var currentPos, ready, newPos;
  if (elem) { 
    the_interval = window.setInterval(function () { 
      currentPos = parseInt(elem.style.top); 
	  
      ready = (dir == 'top' && currentPos > amt) ? true : (dir == 'bottom' && currentPos < amt) ? true : false; 
	  
      if (ready) { 
        newPos = (dir == 'top') ? currentPos - 2 : currentPos + 2; 
        if (document.layers) { 
          elem.style.top = newPos; 
        } else { 
          elem.style.top = newPos + "px"; 
        } 
      } else { 
        window.clearInterval(the_interval);
      } 
    },1); 
  }   
}
*/
function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 300);
    var timer = 0;
    //determine the direction for the blending, if start and end are the same nothing happens
    changeOpac(opacStart,id);
	if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}

function Transparency(id){
	var object = document.getElementById(id).style;
	object.opacity = 0;
    object.MozOpacity = 0;
    object.KhtmlOpacity = 0;
    object.filter = "alpha(opacity=" + 0 + ")";
}

function SwapBgImage(Id){	
	var theObj = Id.parentNode.parentNode;
	if(! theObj.className){
		var theObj = Id.parentNode.parentNode.parentNode;
	}
	var theClass = theObj.className;
	
	if(theClass == "TopMenuText"){
		theObj.className = "TopMenuTextActive";
	} else {
		theObj.className = "TopMenuText";
	}	
}

function topMenuChangeImage(imgId, hover) {
    if (!hover) {
        img = "Assets/Images/" + String(imgId) + ".jpg";
    } else {
        img = "Assets/Images/" + String(imgId) + String(hover) + ".jpg";
    }
    SwapImage(imgId, img);
}

function findParentNode(parentName, childObj) {
    var testObj = childObj.parentNode;
    var count = 1;
    while(testObj.getAttribute('name') != parentName) {
        alert('My name is ' + testObj.getAttribute('name') + '. Let\'s try moving up one level to see what we get.');
        testObj = testObj.parentNode;
        count++;
    }
    // now you have the object you are looking for - do something with it
    alert('Finally found ' + testObj.getAttribute('name') + ' after going up ' + count + ' level(s) through the DOM tree');
}

function DisplayObject(id,imgId,imgOrig,imgRepl,allTabsArray){
	imgPath = "Assets/Images/";
	if(allTabsArray){
		for(i=0;i<allTabsArray.length;i+=2){
			document.getElementById(allTabsArray[i]).style.display='none';
			var theimgId = String(allTabsArray[i+1]);
			document.getElementById(theimgId).src = imgPath+imgOrig;
		}
	}
	if(document.getElementById(id).style.display=='block'){
		document.getElementById(id).style.display='none';
		if(imgId){
			SwapImage(imgId,imgPath+imgOrig);
		}		
	}else{
		document.getElementById(id).style.display='block';
		if(imgId){
			SwapImage(imgId,imgPath+imgRepl);
		}
	}
}

function ShowHideArrayElements(TabData, elementToShow) {
    var i;
    for (i = 0; i < TabData.length; i += 2) {
        if (TabData[i] == elementToShow) {
            document.getElementById(TabData[i]).style.display = "block";
            document.getElementById(TabData[i + 1]).style.display = "block";
        }
        else {
            document.getElementById(TabData[i]).style.display = "none";
            document.getElementById(TabData[i + 1]).style.display = "none";
        }
    }
}

/* --------------: MediaBox Custom: Start :-------------- */
function MediaBox(objShow, objRef, extraOffset) {
    MediaBoxPrepare(objShow, objRef, extraOffset);     
    document.getElementById(objShow).style.display = 'block';
    hideSelects("hidden");
}

function MediaBoxPrepare(objShow, objRef, extraOffset) {
    var scroll = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
    var theOffset = 0;
    setObjHeighteqHTML(objShow);
    setObjWidtheqHTML(objShow);
    if (extraOffset) {
        theOffset += parseInt(extraOffset);
    }
    if (document.getElementById(objRef)) {
        theOffset += parseInt(findPosY(document.getElementById(objRef)));
    }
    document.getElementById(objShow).getElementsByTagName("table")[0].style.marginTop = theOffset + "px";
    document.getElementById(objShow).style.zIndex = 1000;
}

function MediaboxClose(objShow) {
	document.getElementById(objShow).style.display='none';	
	hideSelects("visible");
}

function setObjHeighteqHTML(changeObj) {
	document.getElementById(changeObj).style.height = getDocHeight()+"px"
}

function setObjWidtheqHTML(changeObj) {
    document.getElementById(changeObj).style.width = getDocWidth() + "px";
}


function getDocHeight() {
    var D = document;
    return Math.max(
		Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
		Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
		Math.max(D.body.clientHeight, D.documentElement.clientHeight)
	);
}
function getDocWidth() {
    var D = document;
    return Math.max(
		Math.max(D.body.scrollWidth, D.documentElement.scrollWidth),
		Math.max(D.body.offsetWidth, D.documentElement.offsetWidth),
		Math.max(D.body.clientWidth, D.documentElement.clientWidth)
	);
}

function hideSelects(action) {
    //documentation for this script at http://www.shawnolson.net/a/1198/hide-select-menus-javascript.html
    //possible values for action are 'hidden' and 'visible'
    if (action != 'visible') { action = 'hidden'; }
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { //test for MSIE x.x;
        var ieversion = new Number(RegExp.$1) // capture x.x portion and store as a number
        if (ieversion >= 6 && ieversion < 7) {
            for (var S = 0; S < document.forms.length; S++) {
                for (var R = 0; R < document.forms[S].length; R++) {
                    if (document.forms[S].elements[R].options) {
                        document.forms[S].elements[R].style.visibility = action;
                    }
                }
            }
        }
    }
}

/* --------------: MediaBox Custom: End :-------------- */

/* --------------: Custom Validation functions: Start :--------------- */
function DateInFuture(source, arguments) {
    var currentTime = new Date();
    var boolResult=false;
    var theDate=document.getElementById(theOutDate).value;
    var theHour = parseInt(document.getElementById(theOutHour).value) / 100;
    var theMinute = document.getElementById(theOutMinute).value;
    var dateRegex=/^((((0?[1-9])|([12][0-9])|(3[01]))\/((0?[13578])|(1[02])))|(((0?[1-9])|([12][0-9])|(30))\/((0?[469])|11))|(((0?[1-9])|([12][0-9]))\/0?2))\/20[0-9]{2}$/;
    if (theDate.match(dateRegex)) {
        var dateArray=theDate.split("/");
        if (theHour>=0 && theHour<24){
            if (theMinute==0 ||theMinute==15||theMinute==30||theMinute==45){
                var finalDate = new Date();
                finalDate.setFullYear(dateArray[2], dateArray[1], dateArray[0]);
                finalDate.setHours(theHour,theMinute,0,0);
                if (finalDate>currentTime){
                    boolResult=true;
                }
            }
        }
    }
    arguments.IsValid = boolResult;
}

function DatesMatch(source, arguments) {
    var finalOutDate = null;
    var finalInDate = null;
    var currentTime = new Date();
    var boolResult = false;
    var getOutDate = document.getElementById(theOutDate).value;
    var getOutHour = parseInt(document.getElementById(theOutHour).value) / 100;
    var getOutMinute = document.getElementById(theOutMinute).value;
    var getInDate = document.getElementById(theInDate).value;
    var getInHour = parseInt(document.getElementById(theInHour).value) / 100;
    var getInMinute = document.getElementById(theInMinute).value;
    var dateRegex = /^((((0?[1-9])|([12][0-9])|(3[01]))\/((0?[13578])|(1[02])))|(((0?[1-9])|([12][0-9])|(30))\/((0?[469])|11))|(((0?[1-9])|([12][0-9]))\/0?2))\/20[0-9]{2}$/;
    //Parse the outDate and outTime to see if they have valid data, and create a datetime object from that
    if (getOutDate.match(dateRegex)) {
        var dateOutArray = getOutDate.split("/");
        if (getOutHour >= 0 && getOutHour < 24) {
            if (getOutMinute == 0 || getOutMinute == 15 || getOutMinute == 30 || getOutMinute == 45) {
                finalOutDate = new Date();
                finalOutDate.setFullYear(dateOutArray[2], dateOutArray[1], dateOutArray[0]);
                finalOutDate.setHours(getOutHour, getOutMinute, 0, 0);
            }
        }
    }
    //Parse the inDate and outTime to see if they have valid data, and create a datetime object from that
    if (getInDate.match(dateRegex)) {
        var dateInArray = getInDate.split("/");
        if (getInHour >= 0 && getInHour < 24) {
            if (getInMinute == 0 || getInMinute == 15 || getInMinute == 30 || getInMinute == 45) {
                finalInDate = new Date();
                finalInDate.setFullYear(dateInArray[2], dateInArray[1], dateInArray[0]);
                finalInDate.setHours(getInHour, getInMinute, 0, 0);
            }
        }
    }
    //If both datetime objects have been created, compare them. The outDateTime must be before the inDateTime
    if (finalOutDate && finalInDate) {
        if (finalOutDate < finalInDate) {
            boolResult = true;
        }
    }
    arguments.IsValid = boolResult;
}

function NoHtmlComments(source, arguments) {
    arguments.IsValid = !arguments.Value.match(/<\s*?[^>]+\s*?>/);
}      

/* --------------: Custom Validation functions: End :--------------- */

/* 
 * Cross-browser event handling, by Scott Andrew
 */
function addEvent(element, eventType, lamdaFunction, useCapture) {
    if (element.addEventListener) {
        element.addEventListener(eventType, lamdaFunction, useCapture);
        return true;
    } else if (element.attachEvent) {
        var r = element.attachEvent('on' + eventType, lamdaFunction);
        return r;
    } else {
        return false;
    }
}

/* 
 * Kills an event's propagation and default action
 */
function knackerEvent(eventObject) {
    if (eventObject && eventObject.stopPropagation) {
        eventObject.stopPropagation();
    }
    if (window.event && window.event.cancelBubble ) {
        window.event.cancelBubble = true;
    }
    
    if (eventObject && eventObject.preventDefault) {
        eventObject.preventDefault();
    }
    if (window.event) {
        window.event.returnValue = false;
    }
}

/* 
 * Safari doesn't support canceling events in the standard way, so we must
 * hard-code a return of false for it to work.
 */
function cancelEventSafari() {
    return false;        
}

/* 
 * Cross-browser style extraction, from the JavaScript & DHTML Cookbook
 * <http://www.oreillynet.com/pub/a/javascript/excerpt/JSDHTMLCkbk_chap5/index5.html>
 */
function getElementStyle(elementID, CssStyleProperty) {
    var element = document.getElementById(elementID);
    if (element.currentStyle) {
        return element.currentStyle[toCamelCase(CssStyleProperty)];
    } else if (window.getComputedStyle) {
        var compStyle = window.getComputedStyle(element, '');
        return compStyle.getPropertyValue(CssStyleProperty);
    } else {
        return '';
    }
}

/* 
 * CamelCases CSS property names. Useful in conjunction with 'getElementStyle()'
 * From <http://dhtmlkitchen.com/learn/js/setstyle/index4.jsp>
 */
function toCamelCase(CssProperty) {
    var stringArray = CssProperty.toLowerCase().split('-');
    if (stringArray.length == 1) {
        return stringArray[0];
    }
    var ret = (CssProperty.indexOf("-") == 0)
              ? stringArray[0].charAt(0).toUpperCase() + stringArray[0].substring(1)
              : stringArray[0];
    for (var i = 1; i < stringArray.length; i++) {
        var s = stringArray[i];
        ret += s.charAt(0).toUpperCase() + s.substring(1);
    }
    return ret;
}

/*
 * Disables all 'test' links, that point to the href '#', by Ross Shannon
 */
function disableTestLinks() {
  var pageLinks = document.getElementsByTagName('a');
  for (var i=0; i<pageLinks.length; i++) {
    if (pageLinks[i].href.match(/[^#]#$/)) {
      addEvent(pageLinks[i], 'click', knackerEvent, false);
    }
  }
}

/* 
 * Cookie functions
 */
function createCookie(name, value, days) {
    var expires = '';
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));
        var expires = '; expires=' + date.toGMTString();
    }
    document.cookie = name + '=' + value + expires + '; path=/';
}

function readCookie(name) {
    var cookieCrumbs = document.cookie.split(';');
    var nameToFind = name + '=';
    for (var i = 0; i < cookieCrumbs.length; i++) {
        var crumb = cookieCrumbs[i];
        while (crumb.charAt(0) == ' ') {
            crumb = crumb.substring(1, crumb.length); /* delete spaces */
        }
        if (crumb.indexOf(nameToFind) == 0) {
            return crumb.substring(nameToFind.length, crumb.length);
        }
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, '', -1);
}
