function pngFix() {
    var arVersion = navigator.appVersion.split("MSIE")
    var version = parseFloat(arVersion[1])

    /*if ((version >= 5.5) && (document.body.filters)) {
        for (var i = 0; i < document.images.length; i++) {
            var img = document.images[i]
            var imgName = img.src.toUpperCase()
            if (imgName.substring(imgName.length - 3, imgName.length) == "PNG") {
                var imgID = (img.id) ? "id='" + img.id + "' " : ""
                var imgClass = (img.className) ? "class='" + img.className + "' " : ""
                var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
                var imgStyle = "display:inline-block;" + img.style.cssText
                if (img.align == "left") imgStyle = "float:left;" + imgStyle
                if (img.align == "right") imgStyle = "float:right;" + imgStyle
                if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
                var strNewHTML = "<span " + imgID + imgClass + imgTitle
	         + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px; " + imgStyle + ";"
	         + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
	         + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
                img.outerHTML = strNewHTML
                i = i - 1
            }
        }
    }*/
}

//new hotel code **************************************************
//*****************************************************************
var SBZDates = {
    "drex": new RegExp(/^\s*(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2})\s*[\d+\:]*\s*[AP]{0,1}M{0,1}\s*$/)
	, "isDate": function(d, bInt) {
	    //expects date string must be in yyyy/mm/dd format or yyyy-mm-dd will allow but ignore timestamps or anything resempling a timestamp
	    var rslt = this.drex.test(d), max = 31, r = false;
	    if (rslt) {
	        rslt = this.drex.exec(d);
	        if (parseInt(rslt[2]) > 12) { return false; }
	        max = (parseInt(rslt[2]) == 9 || parseInt(rslt[2]) == 4 || parseInt(rslt[2]) == 6 || parseInt(rslt[2]) == 11) ? 30 : 31;
	        if (parseInt(rslt[2]) == 2) {
	            max = parseInt(rslt[1]) % 4 > 0 ? 28 : 29;
	        }
	        if (parseInt(rslt[3]) > max) { return false; }
	        d = rslt[1] + '' + rslt[2] + '' + rslt[3];
	        r = (parseInt(d) > 19700101 && parseInt(d) < 99991231);
	        return bInt ? parseInt(d) : r;
	    }
	    return r;
	}
	, "compare": function(ds1, ds2) {
	    //return days from date string 1 to date string 2
	    var r = null;
	    r = this.isDate(ds2, true) - this.isDate(ds1, true);
	    return r;
	}
	, "flip": function(d) {
	    //flips date format dd/mm/yyyy to yyyy/mm/dd
	    var drex = new RegExp(/^\s{0,}(\d{1,2})\/(\d{1,2})\/(\d{4})\s{0,}$/), rslt = drex.test(d);
	    if (rslt) {
	        rslt = drex.exec(d);
	        return rslt[3] + '/' + rslt[2] + '/' + rslt[1];
	    }
	    return false;
	}
	, "backflip": function(d) {
	    //flips date format yyyy/mm/dd to dd/mm/yyyy
	    var rslt = this.drex.test(d);
	    if (rslt) {
	        rslt = this.drex.exec(d);
	        return rslt[3] + '/' + rslt[2] + '/' + rslt[1];
	    }
	    return false;
	}
	, "formatOptionDate": function(str) {
	    //converts the ENTA date option format to AUS date str
	    var d = new Date(str);
	    return this.DateToAUS(d);
	}
	, "nextDate": function(str) {
	    //returns the next date string expects AUS date str
	    var d = new Date(this.flip(str));
	    d.setDate(d.getDate() + 1);
	    return this.DateToAUS(d);
	}
	, "nextNoFlip": function(str) {
	    //returns the next date string expects AUS date str
	    var d = new Date(str);
	    d.setDate(d.getDate() + 1);
	    return this.DateStr(d);
	}
	, DateToAUS: function(d) {
	    /*var myDay = d.getDate();
	    var myMonth = d.getMonth() + 1;
	    var myYear = d.getFullYear();

	    if (myDay.length == 1) { myDay = "0" + myDay };
	    if (myMonth.length == 1) { myMonth = "0" + myMonth };
	    return = myDay + "/" + myMonth + "/" + myYear;*/
	    
	    return d.getDate() + '/' + (d.getMonth() + 1) + '/' + d.getFullYear();
	}
	, DateStr: function(d) {
	    return d.getFullYear() + '/' + (d.getMonth() + 1) + '/' + d.getDate();
	}
	, "msDay": 86400000
}

function dateDiff(dIn,dOut) {
    var dateIn = new Date(normalizeDate(dIn));
    var dateOut = new Date(normalizeDate(dOut));

    //Remove time so to have both dates with equal time
    dateIn = dateIn.setHours(10);
    dateOut = dateOut.setHours(10);
    
    var one_day = 1000 * 60 * 60 * 24;
    var daysCount = parseInt((dateOut - dateIn) / one_day);

    return daysCount;
}

function normalizeDate(myDate) {
    var myDateArray
    if (myDate.indexOf("/") > -1) {
        myDateArray = myDate.split("/") 
    } else if (myDate.indexOf("-") > -1) {
        myDateArray = myDate.split("-") 
    }
     
    var partOne = myDateArray[0];
    var partTwo = myDateArray[1];
    var partThree = myDateArray[2];

    //add 0 in front of the number
    if (partOne.length == 1) { partOne = "0" + partOne };
    if (partTwo.length == 1) { partTwo = "0" + partTwo };
    if (partThree.length == 1) { partThree = "0" + partThree };

    return partOne + "/" + partTwo + "/" + partThree;
}

//*****************************************************************
//*****************************************************************

/**
* Used to swap images with their corresponding 'over' state. 
* Adds '-<state>' to the src path if specified.
* Otherwise, removes string between last occurence of '-' & '.'
* Usage: use with onmouseover/onmouseout events. 
*		onmouseover="modImageState(this, 'over');"
*		onmouseout="modImageState(this, '');"
*/
function modImageState(img, state) {
	var src = img.src;
	var newSrc, ext;
	var extPos, modStr;
	
	extPos = src.lastIndexOf(".");
	ext = src.slice(extPos, src.length);
	if (state != "") {
		newSrc = src.slice(0, extPos);
		newSrc = newSrc + "-" + state + ext;			
	} else {
		newSrc = src.slice(0, src.lastIndexOf("-"));
		newSrc = newSrc + ext; 
	}
	img.src = newSrc;
}

function MM_findObj(n, d) { //v4.01
    var p, i, x;
    if (!d) d = document;
    
	if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); return x;
}

/* Thanks to Scott Andrew */
function addEvent(obj, evType, fn){
    if (obj.addEventListener) {
        obj.addEventListener(evType, fn, true);
        return true;
    } else if (obj.attachEvent) {
        var r = obj.attachEvent("on"+evType, fn);
        return r;
    } else {
	    return false;
    }
}

function detachEvent(obj, evType, fn)	{
    if (obj.removeEventListener) {
        obj.removeEventListener(evType, fn, true);
        return true;
    } else if (obj.detachEvent) {
        var r = obj.detachEvent("on"+evType, fn);
        return r;
    } else {
	    return false;
    }
}

function formatCurrency(sVal, symbol)	{
	var num;
	var result = null;
	sVal = sVal + '';

	if (sVal.length > 0 && !isNaN(sVal))	{
		num = parseFloat(sVal);
		result = num.toFixed(2);
		result = symbol + addCommas(result);
	}
	return result;
}

function addCommas(nStr)	{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function unformatCurrency(cVal, symbol, text)	{
	var sVal = cVal.replace(symbol,"");
	
	sVal = sVal.replace(",","");
	sVal = sVal.replace(text, "");
	return trim(sVal);
}

// Removes leading whitespaces
function LTrim(value) {
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// Removes ending whitespaces
function RTrim( value ) {
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// Removes leading and ending whitespaces
function trim( value ) {
	
	return LTrim(RTrim(value));
	
}

function padZero(sVal, iLen)	{
	var arrTemp;
	sVal = sVal + '';
	if (sVal.length < iLen)	{
		arrTemp = new Array(iLen - sVal.length + 1);
		return arrTemp.join('0') + sVal;
	}
	return sVal;
}

function getObj(strTagname)	{
	return (document.createElement(strTagname));
}

function getObjIE(strTagname, strName)	{
	return (document.createElement('<'+strTagname+' name="'+strName+'">'));
}

function createObj(strTagname, strName)	{
	var objTemp;
	
    //alert(BrowserDetect.browser);
	
//	if (BrowserDetect.browser == "Explorer")	{
//		objTemp = getObjIE(strTagname, strName);
//	}
//	else	{
		objTemp = getObj(strTagname);
		objTemp.name = strName;
//	}
	
	return objTemp;
}

function OpenWindow (sUrl, sName, iConfig, sFeatures)	{
	var newWin;

	if (sFeatures == null || sFeatures == "")	{
		switch (iConfig)	{
			case 1:
				sFeatures = "scrollbars=yes,width=600,height=450";
				break;
			case 2:
				sFeatures = "scrollbars=yes,width=600,height=450";
				break;
		}
	}
	newWin = window.open(sUrl, sName, sFeatures);
}

function findIDUpwards(e, s)	{
	var re = new RegExp(s);
	var obj = e;

	while (obj != null)	{
		if (obj.id.match(re))	{
			return obj;
		}
		obj = obj.parentNode;
	}
	return null;
}

var eDiv = null;

function ClearHoverText() {
    var divHover = MM_findObj("HoverText");

    if (divHover) {
        divHover.style.display = "none";
    }
}

addEvent(window, "scroll", ClearHoverText);

function ShowHoverText(e, sID) {
    var divHover = MM_findObj(sID);
    var tempX, tempY;

    if (document.all) { // grab the x-y pos.s if browser is IE
        tempX = event.clientX + document.documentElement.scrollLeft + 10;
        tempY = event.clientY + document.documentElement.scrollTop + 6;
    } else {  // grab the x-y pos.s if browser is NS
        tempX = e.pageX + 15;
        tempY = e.pageY + 20;
    }
    // catch possible negative values in NS4
    if (tempX < 0) { tempX = 0 }
    if (tempY < 0) { tempY = 0 }

    if (divHover) {
        if (eDiv == null) {
            eDiv = document.createElement("div");
            eDiv.id = "HoverText";
            eDiv.className = "HoverText";
            document.body.appendChild(eDiv);
        }
        eDiv.innerHTML = divHover.innerHTML;
        eDiv.style.top = tempY + "px";
        eDiv.style.left = tempX + "px";
        if (eDiv.style.display != "block") {
            eDiv.style.display = "block";
        }
    }

    return true
}

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;
}
