function SC() {};

var SCClass=SC.prototype;

SC.init=function() {
	window.SC.version="1.0.0";
	window.__SC_browser_info=SC.getBrowserInfo();
	window.__SC_Errors=new Array();
	
	if (Array.prototype.push==undefined) 
		Array.prototype.push=function (x) {this[this.length]=x;}
};

String.prototype.trim=function(x,y) {
	if (this==null) return null;
	return LTrim(RTrim(this));
}

String.prototype.trimEnd=function(x,y) {
	if (this==null) return null;
	var re = /((\s*\S+)*)\s*/;
	return this.replace(re, "$1");	
}

String.prototype.trimStart=function(x,y) {
	if (this==null) return null;
	var re = /\s*((\S+\s*)*)/;
	return this.replace(re, "$1");
}

String.prototype.replaceWith=function(x,y) {
	var re = /\s*((\S+\s*)*)/;
	return this.replace(re, "$1");
}

String.prototype.contain=function(x) {
	if (this==null) return null;
	return this.indexOf(x)>=0;
}

String.prototype.compare=function(x,caseSensitive) {

	if (this==null) 
		return false;

	if (caseSensitive==null) 
		caseSensitive=true;
	
	if (caseSensitive)
		return this==x;
	else
		return this.toLowerCase()==x.toLowerCase();		
	
}

String.prototype.startWith=function(x) {
	if (this.substring(0,x.length)==x) 
		return true;
	return false;	
}

String.prototype.endWith=function(x) {
	if (this.substring(0,x.length)==x) 
		return true;
	return false;	
}

SC.getQueryParams=function(useIndex) {

	if (useIndex==null)
		useIndex=true;

	var query = window.location.search.substring(1);
	var parms = query.split('&');
	
	var qs=new Array();
	
	for (var i=0; i<parms.length; i++) {
		var pos = parms[i].indexOf('=');
		if (pos > 0) {
			var key = parms[i].substring(0,pos);
			var val = parms[i].substring(pos+1);
			
			if (useIndex==true)
				qs.push(new Array(key,val));
			else
				qs[key] = val;
		}
   }
   return qs;
}

SC.getQueryParam=function(x) {
	var qs=SC.getQueryParams();
	for (var i=0;i<qs.length;i++) {
		if (qs[i][0]==x) 
			return qs[i][1];
	}
	return null;
}

SC.getLastError=function() {
	if (__SC_Errors) {
		return __SC_Errors.pop();
	}
	return null;
}

SC.catchError=function(err) {
	if (__SC_Errors==null) {
		SC.init();
	};
	if (__SC_Errors) {
		return __SC_Errors.push(err);
	}
	return null;
}

SC.parseFloat=function(x) {
	
	if (x==null) 
		return null;

	if (x.startWith("$")) {
		x=x.substring(1);
	}
	var r=parseFloat(x);
	return (!isNaN(r)) ? r : null;
}


SC.F=function(x) {
	if ((__SC_browser_info!=undefined && __SC_browser_info.dom) || document.getElementById) 
		return document.getElementById(x);
	
	//not supported
		
	return null;	
}

SC.N=function(x,p) {
	if ((__SC_browser_info!=undefined && __SC_browser_info.dom) || document.getElementById) 
		if (p!=null && p.getElementsByTagName) {
			return p.getElementsByTagName(x);	
		} else {
			return document.getElementsByTagName(x);
		}
		
	//not supported
		
	return null;	
}

SC.getInputByName=function(x,tag,type) {
	if ((__SC_browser_info!=undefined && __SC_browser_info.dom) || document.getElementById) {
	
		var els=null;
	
		var tags=null;
	
		if (tag)
			tags=new Array(tag);
		else 
			tags=new Array("INPUT","SELECT","TEXTAREA","BUTTON");
		
		for (var j=0;j<tags.length;j++) {
				els=SC.N(tags[j]);
				for (var i=0,c=els.length;i<c;i++) {
					if (els[i].name==x && (tags[j]!="INPUT" || (tags[j]=="INPUT" && (type==null || els[i].type==type))))
						return els[i];
				};		
			}
	}
		
	return null;	
}

SC.getInputValue=function (x) {
	if (x!=null) {
		switch (x.tagName.toUpperCase()) {
			case "INPUT":	return x.value;	break;
			case "SELECT":	return x.options[x.selectedIndex].value; break;
			case "TEXTAREA":	return x.innerHTML;	break;
		}
	}
	return null;
}

SC.getInputValueByName=function(x,tag,type) {
	
	var el=SC.getInputByName(x,tag,type);
	
	if (el!=null) {
		return SC.getInputValue(el);
	}
				
	return null;
}

SC.getByClassName=function(x,tag,p,first) {
	
	var a = new Array();
	var els = SC.N(tag,p);
	var reg = new RegExp("(^|\\s)"+x+"(\\s|$)");
	for (var i = 0, j = 0, c = els.length; i < c; i++) {
		if ( reg.test(els[i].className) ) {
			a.push (els[i]);
			j++;
			if (first)
				break;
		}
	}
	
	return a;
}

SC.requireVersion = function (x) {
	return true;
}

SC.getBrowserInfo = function() {
	var a=new Array();

	var agt=navigator.userAgent.toLowerCase();
	
	var b;
	
	a.js=0;
	
	if (((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1))) 
    {
		a.browser="nav";
    };
    if ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1)) {
		a.browser="ie";
    }
	if ((agt.indexOf("aol 5") != -1)) {
		a.browser="aol";
	};
	if ((agt.indexOf("opera") != -1)) {
		a.browser="opera";
	}
	
	if ((agt.indexOf("safari") != -1)) {
		a.browser="safari";
	}
	
	a.version=parseInt(navigator.appVersion);
	a.subversion=parseFloat(navigator.appVersion);
	
	a.os="";
	a.gecko=(agt.indexOf('gecko') != -1);
	
	a.dom=document.getElementById ? true : false;
	a.agt=agt;
	
	return a;
}
SC.init();
