
function QueryStringToObject(sQueryString)
{
	var oResult = {};
	var aQueryString = sQueryString.split("&");
	for(i=0;i<aQueryString.length;i++){
		var sKeyValue = aQueryString[i];
		var aKeyValue = sQueryString.split("=");
		oResult[aKeyValue[0]]=aKeyValue[1];
	}
}

function BeginsWith(sTarget,sFind)
{
    if( sTarget.toLowerCase().indexOf(sFind.toLowerCase()) == 0 )
        return true;
    return false;
}

function GetParam(Name)
{
	var NewName = Name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var Pattern = "[\\?&]"+NewName+"=([^&#]*)";
	var RegEx = new RegExp(Pattern);
	var Results = RegEx.exec(window.location.href);
	if(Results==null)
		return "";
	else
		return Results[1];
}



/*******************************************************************/
if(!Array.indexOf){
	Array.prototype.indexOf = function(obj){
		for(var i=0; i<this.length; i++){
			if(this[i]==obj){
				return i;
			}
		}
		return -1;
	}
}

/*******************************************************************/

function ObjectToQueryString(Obj,Url){
	var Result = "";
	var Count = 0;
	for( o in Obj ){
		if( Count > 0 )
			Result += "&";
		else if( Url )
			Result += "?";
		Result += o + "=" + Obj[o];
		Count++;
	}
	return Result;
}



/*******************************************************************/
function Debug(arr){
	var output = "";
	var len = arr.length;
	var last = len-1;
	for( var i=0; i < len ; i++ ){
		output += arr[i];
		
		if( i % 2 == 0 )
		output += ": ";
		
		else if( i != last )
		output += " | ";
	}
	alert(output);
}

      
function Dump(obj, name, indent) {
	depth = 10;
	MAX_DUMP_DEPTH = 10;
	if (depth > MAX_DUMP_DEPTH) {
	return indent + name + ": <Maximum Depth Reached>\n";
	}
	if (typeof obj == "object"){
		var child = null;
		var output = indent + name + "\n";
		indent += "\t";
		for (var item in obj)
		{
			try {
				child = obj[item];
			} catch (e) {
				child = "<Unable to Evaluate>";
			}

			if (typeof child == "object"){
				output += dumpObj(child, item, indent, depth + 1);
			} else {
				output += indent + item + ": " + child + "\n";
			}
		}
		return output;
	} else {
		return obj;
	}
}

/*******************************************************************/
function ToSlug(text)
{
	from = [];
	to = [];
	
from.push('^');
	to.push('');
	from.push('|');
	to.push('');
	from.push('ß');
	to.push('ss');
	from.push('!');
	to.push('');
	from.push('á');
	to.push('a');
	from.push('à');
	to.push('a');
	from.push('À');
	to.push('A');
	from.push('Á');
	to.push('A');
	from.push('â');
	to.push('a');
	from.push('Â');
	to.push('A');
	from.push('Ä');
	to.push('A');
	from.push('ä');
	to.push('ae');
	from.push('Æ');
	to.push('AE');
	from.push('æ');
	to.push('ae');
	from.push('å');
	to.push('a');
	from.push('Ã');
	to.push('A');
	from.push('Œ');
	to.push('CE');
	from.push('œ');
	to.push('ce');
	from.push('Ç');
	to.push('C');
	from.push('ç');
	to.push('c');
	from.push('é');
	to.push('e');
	from.push('è');
	to.push('e');
	from.push('É');
	to.push('E');
	from.push('È');
	to.push('E');
	from.push('ê');
	to.push('e');
	from.push('Ê');
	to.push('E');
	from.push('€');
	to.push('E');
	from.push('ë');
	to.push('e');
	from.push('Ë');
	to.push('E');
	from.push('í');
	to.push('i');
	from.push('ì');
	to.push('i');
	from.push('Í');
	to.push('I');
	from.push('Ì');
	to.push('I');
	from.push('î');
	to.push('i');
	from.push('ï');
	to.push('i');
	from.push('Î');
	to.push('I');
	from.push('Ï');
	to.push('I');
	from.push('Ñ');
	to.push('N');
	from.push('ñ');
	to.push('n');
	from.push('ó');
	to.push('o');
	from.push('ò');
	to.push('o');
	from.push('Ó');
	to.push('O');
	from.push('Ò');
	to.push('O');
	from.push('ô');
	to.push('o');
	from.push('Ô');
	to.push('O');
	from.push('Ö');
	to.push('O');
	from.push('ö');
	to.push('o');
	from.push('ú');
	to.push('u');
	from.push('ù');
	to.push('u');
	from.push('Ú');
	to.push('U');
	from.push('Ù');
	to.push('U');
	from.push('û');
	to.push('u');
	from.push('Û');
	to.push('U');
	from.push('Ü');
	to.push('U');
	from.push('ü');
	to.push('u');
	from.push('ÿ');
	to.push('y');
	
	for(var i=0; i<from.length; i++){
		re = eval('/'+from[i]+'/g');
		text = text.replace(re,to[i]);
	}
	
	text = text.replace(/[^a-zA-Z0-9]+/g,'-');
	text = text.replace(/[-]+/g,'-');
	text = TrimStart(text,'-');
	text = TrimEnd(text,'-');
	
	return text.toLowerCase();
}

/*******************************************************************/
function ToCamel(str){
	str = ToSlug(str); // START
	arr = str.split('-');
	for(var i=0; i < arr.length; i++){
		arr[i] = Capitalize(arr[i]);	
	}
	return arr.join('');
}

/*******************************************************************/
function Capitalize(str)
{
    return str.charAt(0).toUpperCase() + str.slice(1);
}


/*******************************************************************/
function LTrim(str){
	str = str.replace(/^[\t\s\n\r]+/g,""); // START
	return str;
}

/*******************************************************************/
function RTrim(str){
	str = str.replace(/[\t\s\n\r]+$/g,""); // END
	return str;
}

/*******************************************************************/
function Trim(str){
	str = str.replace(/^[\t\s\n\r]+/g,""); // START
	str = str.replace(/[\t\s\n\r]+$/g,""); // END
	return str;
}

// GetFlashVideo('flashcontent','myVideo','DefaultVideo.flv',240,160){
function GetFlashVideo(target,player,name,src,w,h,autoplay){
	var content="";
	var fla = new SWFObject("/flash/"+player, name, w, h, "8", "#000000");
	fla.addVariable("video", "/videos/"+src);
	fla.addVariable("autoplay", autoplay);
	fla.addVariable("skin", "/flash/DefaultSkin.swf");
	fla.addVariable("seek", "2");
	fla.write(target);
}

function StartsWith(str,fnd,sensitive)
{
	sense = Default(sensitive,0);
	if(sense)
		re = eval("/^"+fnd+"/g");
	else
		re = eval("/^"+fnd+"/gi");
	return (str.match(re)==fnd);
}

function EndsWith(str,fnd,sensitive)
{
	sense = Default(sensitive,0);
	if(sense)
		re = eval("/"+fnd+"$/g");
	else
		re = eval("/"+fnd+"$/gi");
	return (str.match(re)==fnd);
}

function TrimStart(str,fnd,sensitive)
{
	sense = Default(sensitive,0);
	if(sense)
		re = eval("/^"+fnd+"/g");
	else
		re = eval("/^"+fnd+"/gi");
	return str.replace(re,'');
}

function TrimEnd(str,fnd,sensitive)
{
	sense = Default(sensitive,0);
	if(sense)
		re = eval("/"+fnd+"$/g");
	else
		re = eval("/"+fnd+"$/gi");
	return str.replace(re,'');
}

function Format(sString){
    for(i = 1; i < arguments.length; i++){
        sString = sString.replace('{' + (i - 1) + '}', arguments[i]);
    }
    return sString;
}


function IsNullOrEmpty(val,def)
{
	if( typeof(val) == 'undefined' )
		return true;
		
	if( val == '' )
		return true;
		
	return false;
}

function Default(val,def)
{
	return (!IsNullOrEmpty(val))? val : def ;
}
