﻿function fnGetDomObjectWithingArea(sAreaId, sObjectIdSuffix) {
    var oWrapperArea = document.getElementById(sAreaId);
    var nObjectIdSuffixLength = sObjectIdSuffix.length;
    var sTmp;
    if (oWrapperArea) {
        var oInputs = oWrapperArea.getElementsByTagName('input');
        for (var i = 0; i < oInputs.length; i++) {
            sTmp = oInputs[i].id;
            if (Right(String(sTmp), nObjectIdSuffixLength) == sObjectIdSuffix) {
                return oInputs[i];
            }
        }
        var oSelects = oWrapperArea.getElementsByTagName('select');
        for (var i = 0; i < oSelects.length; i++) {
            sTmp = oSelects[i].id;
            if (Right(String(sTmp), nObjectIdSuffixLength) == sObjectIdSuffix) {
                return oSelects[i];
            }
        }
        var oInputs = oWrapperArea.getElementsByTagName('textarea');
        for (var i = 0; i < oInputs.length; i++) {
            sTmp = oInputs[i].id;
            if (Right(String(sTmp), nObjectIdSuffixLength) == sObjectIdSuffix) {
                return oInputs[i];
            }
        }
    }

    return null;
}

function Right(str, n) {
    if (n <= 0) {
        return "";
    } else {
        if (n > String(str).length) {
            return str;
        } else {
            var iLen = String(str).length;
            return String(str).substring(iLen, iLen - n);
        }
    }
}

// BEGIN - TRMS
//Used for Top Right Menu Slider
function fireEvent(obj, evt) {

    var fireOnThis = obj;
    if (document.createEvent) {
        var evObj = document.createEvent('MouseEvents');
        evObj.initEvent(evt, true, false);
        fireOnThis.dispatchEvent(evObj);
    } else if (document.createEventObject) {
        fireOnThis.fireEvent('on' + evt);
    }
}

function doFire(obj, evt) {
    fireEvent(document.getElementById(obj), evt);
}
// END - TRMS

/* FOCUS ON ERROR CONTROL -----------------------------------------*/
var ErrorInputBoxObject;
function focusOnControl(oControl) {
    if (ErrorInputBoxObject) {
        ErrorInputBoxObject.className = 'InputBoxCorrect';
    }
    ErrorInputBoxObject = oControl;
    oControl.focus();
    oControl.className = 'InputBoxError';
}

/* HASH TABLE ------------------------------------------------------*/
function Hash() {
    for (var i = 0; i < arguments.length; i++)
        for (n in arguments[i])
        if (arguments[i].hasOwnProperty(n))
        this[n] = arguments[i][n];
}

// Hash.version = 1.00; // Original version
// Hash.version = 1.01; // Added ability to initialize in the constructor
// Hash.version = 1.02; // Fixed document bug that showed a non-working example (thanks mareks)
// Hash.version = 1.03; // Removed returning this from the constructor (thanks em-dash)
Hash.version = 1.04; // Missed some 'var' declarations (thanks Twey)

Hash.prototype = new Object();

Hash.prototype.keys = function() {
    var rv = [];
    for (var n in this)
        if (this.hasOwnProperty(n))
        rv.push(n);
    return rv;
}

Hash.prototype.length = function() {
    return this.keys().length; //()
}

Hash.prototype.values = function() {
    var rv = [];
    for (var n in this)
        if (this.hasOwnProperty(n))
        rv.push(this[n]);
    return rv;
}

Hash.prototype.slice = function() {
    var rv = [];
    for (var i = 0; i < arguments.length; i++)
        rv.push(
            (this.hasOwnProperty(arguments[i]))
                ? this[arguments[i]]
                : undefined
        );
    return rv;
}

Hash.prototype.concat = function() {
    for (var i = 0; i < arguments.length; i++)
        for (var n in arguments[i])
        if (arguments[i].hasOwnProperty(n))
        this[n] = arguments[i][n];
    return this;
}

/* STRUCT CONSTRUCTOR ----------------------------------------------*/
function makeStruct(names) {
    var names = names.split(' ');
    var count = names.length;
    function constructor() {
        for (var i = 0; i < count; i++) {
            this[names[i]] = arguments[i];
        }
    }
    return constructor;
}

/* SELECT OPTION FUNCTIONS ----------------------------------------------*/
function addOption(obj, text, value, selected) {
    if (obj != null && obj.options != null) {
        obj.options[obj.options.length] = new Option(text, value, false, selected);
    }
    return false;
}
function removeSelectedOptions(selectObjectId) {
    var oSelect;
    oSelect = document.getElementById(selectObjectId);
    if (oSelect) {
        for (var i = (oSelect.options.length - 1); i >= 0; i--) {
            var o = oSelect.options[i];
            if (o.selected) {
                oSelect.options[i] = null;
            }
        }
        oSelect.selectedIndex = -1;
    }
    return false;
}
function removeAllOptions(selectObjectId) {
    var oSelect;
    oSelect = document.getElementById(selectObjectId);
    if (oSelect) {
        for (var i = (oSelect.options.length - 1); i >= 0; i--) {
            oSelect.options[i] = null;
        }
        oSelect.selectedIndex = -1;
    }
    return false;
}

/* CURRENCY FUNCTIONS ------------------------------------------------------------*/
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;
}

/* CLIP CYNDICATE FUNCTIONS ------------------------------------------------------*/
function showClip(sCategoryId, sClipId) {
    if (sCategoryId == '0' || sClipId == '0') {
        return false;
    }
	
	var str = '';
    str = str + '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="cs_player" width="320" height="303">';
    str = str + '<param name="movie" value="http://eplayer.clipsyndicate.com/cs_api/get_swf/3/&wpid=0&page_count=5&windows=1&va_id=' + sClipId + '&show_title=0&cpt=1&auto_start=1&auto_next=1" ></param>';
    str = str + '<param name="allowfullscreen" value="true">';
	str = str + '<param name="allowscriptaccess" value="always">';
    str = str + '<embed src="http://eplayer.clipsyndicate.com/cs_api/get_swf/3/&wpid=0&page_count=5&windows=1&va_id=' + sClipId + '&show_title=0&cpt=1&auto_start=1&auto_next=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="303"></embed>';
    str = str + '</object>';
	
	/*
    var str = '';
    str = str + '<object width="320" height="303">';
    str = str + '<param name="movie" value="http://eplayer.clipsyndicate.com/cs_api/get_swf/2/&csEnv=p&autostart=true&wpid=0&va_id=' + sClipId + '" ></param>';
    str = str + '<param name="allowfullscreen" value="true"></param>';
    str = str + '<embed src="http://eplayer.clipsyndicate.com/cs_api/get_swf/2/&csEnv=p&autostart=true&wpid=0&va_id=' + sClipId + '" type="application/x-shockwave-flash" allowfullscreen="true" width="320" height="303"></embed>';
    str = str + '</object>';
	*/
    var oClipSyndicate = document.getElementById('oClipSyndicate');
    if (oClipSyndicate) {
        oClipSyndicate.innerHTML = str;
    }
    return true;
}

/* UPDATE ITEMS IN BASKET ------------------------------------------------------*/
function fnUpdateItemsInBasket(nItemsInBasket) {
    var odvNumberOfItemsInBasket = document.getElementById('dvNumberOfItemsInBasket');
    //alert(odvNumberOfItemsInBasket);
    if (odvNumberOfItemsInBasket) {
        odvNumberOfItemsInBasket.innerHTML = nItemsInBasket;
    }
}

/* WINDOW OPEN ------------------------------------------------------*/
function create_window(page, width, height) {
    if (document.all)
        var xMax = screen.width, yMax = screen.height;
    else
        if (document.layers)
        var xMax = window.outerWidth, yMax = window.outerHeight;
    else
        var xMax = 640, yMax = 480;

    var xOffset = (xMax - width) / 2, yOffset = (yMax - height) / 2;

    var win1 = window.open(page, 'win', ',scrollbars=yes,toolbar=no,menubar=no,status=no,resizable=yes,directories=no,width=' + width + ',height=' + height + ',screenX=' + xOffset + ',screenY=' + yOffset + ',top=' + yOffset + ',left=' + xOffset + ',resizable=no');
    var win1 = win1.focus();
}

/* FIND ELEMENT POTITION ------------------------------------------------------*/
function findTop(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        curtop = obj.offsetTop
        while (obj = obj.offsetParent) {
            curtop += obj.offsetTop
        }
    }
    return curtop;
}
function findLeft(obj) {
    var curleft = 0;
    if (obj.offsetParent) {
        curleft = obj.offsetLeft
        while (obj = obj.offsetParent) {
            curleft += obj.offsetLeft
        }
    }
    return curleft;
}

/* DISABLE AREA HTML CONTROLS --------------------------------------------------*/
function fnDisableDomObjectsWithingArea(sAreaId) {
    var oWrapperArea = document.getElementById(sAreaId);
    if (oWrapperArea) {
        var oInputs = oWrapperArea.getElementsByTagName('input');
        for (var i = 0; i < oInputs.length; i++) {
            oInputs[i].disabled = true;
        }
        var oSelects = oWrapperArea.getElementsByTagName('select');
        for (var i = 0; i < oSelects.length; i++) {
            oSelects[i].disabled = true;
        }
        var oInputs = oWrapperArea.getElementsByTagName('textarea');
        for (var i = 0; i < oInputs.length; i++) {
            oInputs[i].disabled = true;
        }
    }
}

/* VALIDATE DATE  -------------------------------------------------*/
// Declaring valid date character, minimum year and maximum year
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 isDate(dtStr) {
    var daysInMonth = DaysArray(12)
    var pos1 = dtStr.indexOf(dtCh)
    var pos2 = dtStr.indexOf(dtCh, pos1 + 1)
    //mm/dd/yyyy
    /*
    var strMonth = dtStr.substring(0, pos1)
    var strDay = dtStr.substring(pos1 + 1, pos2)
    var strYear = dtStr.substring(pos2 + 1)
    */
    //dd/MM/yyyy
    var strDay = dtStr.substring(0, pos1)
    var strMonth = dtStr.substring(pos1 + 1, pos2)
    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 (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 || isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
        return false
    }
    return true
}
/* DATEADD --------------------------------------------------------*/
Date.prototype.add = function(sInterval, iNum) {
    var dTemp = this;
    if (!sInterval || iNum == 0) return dTemp;
    switch (sInterval.toLowerCase()) {
        case "ms":
            dTemp.setMilliseconds(dTemp.getMilliseconds() + iNum);
            break;
        case "s":
            dTemp.setSeconds(dTemp.getSeconds() + iNum);
            break;
        case "mi":
            dTemp.setMinutes(dTemp.getMinutes() + iNum);
            break;
        case "h":
            dTemp.setHours(dTemp.getHours() + iNum);
            break;
        case "d":
            dTemp.setDate(dTemp.getDate() + iNum);
            break;
        case "mo":
            dTemp.setMonth(dTemp.getMonth() + iNum);
            break;
        case "y":
            dTemp.setFullYear(dTemp.getFullYear() + iNum);
            break;
    }
    return dTemp;
}

/* VALID EMAIL ----------------------------------------------------*/
function isMail(str) {
    var at = "@"
    var dot = "."
    var lat = str.indexOf(at)
    var lstr = str.length
    var ldot = str.indexOf(dot)
    if (str.indexOf(at) == -1) {
        return false;
    }
    if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) {
        return false;
    }
    if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) {
        return false;
    }
    if (str.indexOf(at, (lat + 1)) != -1) {
        return false;
    }
    if (str.substring(lat - 1, lat) == dot || str.substring(lat + 1, lat + 2) == dot) {
        return false;
    }
    if (str.indexOf(dot, (lat + 2)) == -1) {
        return false;
    }
    if (str.indexOf(" ") != -1) {
        return false;
    }
    return true;
}

/* INCREASE DECREASE FONT SIZE ----------------------------------------------------*/
var nMetabolh = 0;
function increaseDecreaseFont(metaboli) {
    if ((nMetabolh + metaboli) > 4 || (nMetabolh + metaboli) < -4) {
        return;
    }
    var oContent = document.getElementById('content');
    if (!oContent) {
        return;
    }

    if (metaboli == 0) {
        //increaseDecreaseFontToTags(oContent, 'h1', -nMetabolh);
        //increaseDecreaseFontToTags(oContent, 'h2', -nMetabolh);
        //increaseDecreaseFontToTags(oContent, 'h3', -nMetabolh);
        increaseDecreaseFontToTags(oContent, 'li', -nMetabolh);
        increaseDecreaseFontToTags(oContent, 'td', -nMetabolh);
		increaseDecreaseFontToTags(oContent, 'div', -nMetabolh);
        increaseDecreaseFontToTags(oContent, 'snap', -nMetabolh);
        increaseDecreaseFontToTags(oContent, 'p', -nMetabolh);
		increaseDecreaseFontToTags(oContent, 'a', -nMetabolh);
        nMetabolh = 0;
    } else {
        //increaseDecreaseFontToTags(oContent, 'h1', metaboli);
        //increaseDecreaseFontToTags(oContent, 'h2', metaboli);
        //increaseDecreaseFontToTags(oContent, 'h3', metaboli);
        increaseDecreaseFontToTags(oContent, 'li', metaboli);
        increaseDecreaseFontToTags(oContent, 'td', metaboli);
		increaseDecreaseFontToTags(oContent, 'div', metaboli);
        increaseDecreaseFontToTags(oContent, 'snap', metaboli);
		increaseDecreaseFontToTags(oContent, 'p', metaboli);
        increaseDecreaseFontToTags(oContent, 'a', metaboli);
        nMetabolh = nMetabolh + metaboli;
    }
}

function increaseDecreaseFontToTags(oToCheck, tagName, metaboli) {
    var oChildes = oToCheck.getElementsByTagName(tagName);
    for (n = 0; n < oChildes.length; n++) {
        if (oChildes[n].style) {
            if (oChildes[n].style.fontSize) {
                var size = parseInt(oChildes[n].style.fontSize.replace("px", ""));
            } else {
                var size = 12;
            }
            oChildes[n].style.fontSize = size + metaboli + 'px';
        }
    }
}