﻿// JScript File
// Powed by Goodspeed
// 2006-10-8

/* ---- String --- */ 
String.IsNullOrEmpty = function(value){
	if(typeof(value) == "string" && value != null && value.length > 0)
	{
		return true;
	}
	return false;
};
String.Format = function(format){
	if(typeof(format) == "string" && arguments.length >= 2)
	{
		for(var i = 0;i< arguments.length - 1;i++)
		{
			var value = arguments[i+1];
			format = format.replace("{"+i+"}",value);
		}
	}
	return format;
};
String.prototype.Trim= function(){return this.replace(/(^\s*)|(\s*$)/g, "");};
String.prototype.TrimEnd= function(){return this.replace(/(\s*$)/g, "");};
String.prototype.TrimStart= function(){return this.replace(/(^\s*)/g, "");};

/* ---- Random --- */ 
function Random(){}
Random.prototype.Next = function(minValue,maxValue){var now=new Date();var number = now.getSeconds();number=parseInt(Math.random(number)*(maxValue-minValue+1))+minValue;return number;};

/* ---- Path --- */ 
function Path(){}
Path.GetExtension = function(path){
    var i = path.lastIndexOf(".");
    return (i > -1)?path.substring(i+1):"";
};

/* ---- StringBuilder --- */ 
function StringBuilder(){this._array = new Array();}
StringBuilder.prototype.Append = function(value){
	if(value){this._array.push(value.toString());}
};
StringBuilder.prototype.AppendFormat = function(value){
	if(value)
	{
		if(typeof(value) == "string" && arguments.length >= 2)
		{
			for(var i = 0;i< arguments.length - 1;i++)
			{
				value = value.replace("{"+i+"}",arguments[i+1]);
			}
		}
		this._array.push(value.toString());
	}
};
StringBuilder.prototype.toString = function (){return this._array.join("");};

/* ---- UrlHelper --- */ 
function UrlHelper(url)
{
    if(UrlHelper.arguments.length == 1)
    {
        this.Url = url;
    }else{
        this.Url = document.location.href;
    }
    
    var url = "^";
    var r = new RegExp(url +"([a-z]+?):\/\/","ig");
    if(r.test(this.Url) == true)
    {
        this.Scheme = RegExp.$1;

        url += RegExp.$1 + "://";
        r = new RegExp(url + "([\\w|\\.]+)(:\\d+)*/","ig");
        if(r.test(this.Url) == true)
        {
            this.Domain = RegExp.$1;
            this.Port = RegExp.$2;
            
            url += this.Domain + this.Port;
            this.SiteRoot = url.replace("^","");
            
            r = new RegExp(url + "(/[\\w|\\/]+)*(/[\\w|\\.]+)(:?\\?)*","g");
            if(r.test(this.Url) == true)
            {
                this.FileName = RegExp.$2;
                this.LocalPath = RegExp.$1 + RegExp.$2;
            }
        }
    }
}

UrlHelper.Current = new UrlHelper();

/* ---- EventUtil --- */ 
var EventUtil = new Object;
EventUtil.addEventHandler = function (oTarget, sEventType, fnHandler) {
    if (oTarget.addEventListener) {
        oTarget.addEventListener(sEventType, fnHandler, false);
    } else if (oTarget.attachEvent) {
        oTarget.attachEvent("on" + sEventType, fnHandler);
    } else {
        oTarget["on" + sEventType] = fnHandler;
    }
};
        
EventUtil.removeEventHandler = function (oTarget, sEventType, fnHandler) {
    if (oTarget.removeEventListener) {
        oTarget.removeEventListener(sEventType, fnHandler, false);
    } else if (oTarget.detachEvent) {
        oTarget.detachEvent("on" + sEventType, fnHandler);
    } else { 
        oTarget["on" + sEventType] = null;
    }
};

EventUtil.formatEvent = function (oEvent) {
    if (oEvent.srcElement) {
        oEvent.charCode = (oEvent.type == "keypress") ? oEvent.keyCode : 0;
        oEvent.eventPhase = 2;
        oEvent.isChar = (oEvent.charCode > 0);
        oEvent.pageX = oEvent.clientX + document.body.scrollLeft;
        oEvent.pageY = oEvent.clientY + document.body.scrollTop;
        oEvent.preventDefault = function () {
            this.returnValue = false;
        };

        if (oEvent.type == "mouseout") {
            oEvent.relatedTarget = oEvent.toElement;
        } else if (oEvent.type == "mouseover") {
            oEvent.relatedTarget = oEvent.fromElement;
        }

        oEvent.stopPropagation = function () {
            this.cancelBubble = true;
        };

        oEvent.target = oEvent.srcElement;
        oEvent.time = (new Date).getTime();
    }
    return oEvent;
};

EventUtil.getEvent = function() {
    if (window.event) {
        return this.formatEvent(window.event);
    } else {
        return EventUtil.getEvent.caller.arguments[0];
    }
};
