/*
#########################################################################################
##Author      : Torsten Heinze 
##Version     : 1.0
##Created     : 03/07/03
##Updated     : 03/07/03
##Description : JavaScript Library for Common Tasks
##Requires    : -
#########################################################################################
*/

//parse querystring and return args object
//e.g. if (args.DocID) DocID = (args.DocID);
function parseQueryString(sURL) {
	var args = new Object();
	
	if(!sURL) sURL=window.location.search;

 	//flexweb variable eliminations would cause "hash" cut off
 	var re = new RegExp("\\[\\#\\]","ig");
	sURL = sURL.replace(re, "[|]");
	
	//look for a hash and if so, remove
	var p=sURL.indexOf("#");
	if(p>-1) sURL=sURL.substring(0,p);

	// Get Query String
	var p=sURL.indexOf("?");
	var query = sURL.substring(p+1); 

	//alert(sURL+":"+query);
	
	// Split query at the comma
	var pairs = query.split("&"); 
	
	// Begin loop through the querystring
	for(var i = 0; i < pairs.length; i++) {

		// Look for "name=value"
		var pos = pairs[i].indexOf('='); 
		// if not found, skip to next
		if (pos == -1) continue; 
		// Extract the name
		var argname = pairs[i].substring(0,pos); 
		
		// Extract the value
		var value = pairs[i].substring(pos+1); 
		// Store as a property
		args[argname] = unescape(value); 
	}
	return args; // Return the Object
}

//perform a document search
function doFind(){
   if(document.body.createTextRange){
		var rng=document.body.createTextRange();
   }else{
		var rng=document.createRange();
   }
   
   var args=new Array();
   args["txtRange"]=rng;
   args["flexWin"] =window;
	 
   flexDialog(410,120,"../_js/flexFind.htm",args,doFind_CallBack,null);
}

function doFind_CallBack(retValue,objEl){
	
}

//string functions:
function Trim(str) { 
	str = str + "";
	return RTrim(LTrim(str))
}

function LTrim(str) { 
	str = str + "";
	while (str.substring(0,1)==" ") str = str.substring(1);
	return str;
}

function RTrim(str){ 
	str = str + "";
	while (str.substring(str.length-1)==" ") str = str.substring(0,str.length-1);
	return str;
}

function Right(str,i) {
	str = str + "";
	return str.substring(str.length-i,str.length);
}

function Chr(charcode) { 
	return String.fromCharCode(charcode);
}

function IsEmpty(value) { 
	return (SE(value==""));
}

function IsNumeric(value) { 
	return (!isNaN(value*1));
}

function IsEven(i) { 
	return ((i % 2)==0);
}

// standard empty
function SE(value) { 
	return (((value=="") || ((value+"")=="undefined") || (value+""=="null"||typeof(value)=="null")) ? "" : value);
}

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 InitCap(s){
	if((!s)||s=="") return;
	s=s.toUpperCase(); if(s.length>1) s=s.substring(0,1)+s.substring(1).toLowerCase();
	return s;
}

function InitCapPhrase(s){
	if((!s)||s=="") return;
	var d="$|$"
	var a=s.split(" ");s=a.join(" "+d);
	var a=s.split("#");s=a.join("#"+d);
	var a=s.split("-");s=a.join("-"+d);
	var a=s.split(",");s=a.join(","+d);
	var a=s.split(".");s=a.join("."+d);
	var a=s.split("'");s=a.join("'"+d);
	var a=s.split("\"");s=a.join("\""+d);
	var a=s.split(d); for(var i=0;i<a.length;i++){a[i]=InitCap(a[i])};s=a.join("");
	return s 
}


function doFormatCSSText(sCSSText){
  	var re = new RegExp(";(\\r\\n)+?","ig");
	sCSSText=sCSSText.replace(re,";");
  	var re = new RegExp(";(\\s)+?","ig");
	sCSSText=sCSSText.replace(re,";");

	//style name to lowercase
	var aCSSText=sCSSText.split(";");
	for(var i=0;i<aCSSText.length;i++){
		var sLine=aCSSText[i];
		var p=sLine.indexOf(":");
		if(p>-1){
			var sValue=sLine.substr(p+1);
			if(sValue.indexOf("rgb(")>-1) sValue=RGBToHexFormat(sValue)
			aCSSText[i]=sLine.substr(0,p).toLowerCase()+":"+sValue;
		}
	}
	
	aCSSText=aCSSText.sort();
	sCSSText=aCSSText.join(";")+";";
	var re = new RegExp("^;","ig");
	sCSSText=sCSSText.replace(re,"");
	var re = new RegExp(";","ig");
	sCSSText=sCSSText.replace(re,";\r\n");
	return sCSSText;
}
