String.prototype.format=function()
{
	var toReturn=this;for(var i=0;i<arguments.length;i++)
	{
		var regex=new RegExp("\\{"+i+"\\}","g");toReturn=toReturn.replace(regex,arguments[i]);
	}
	return toReturn;
};

String.format=function()
{
	var pattern=arguments[0];var params=[];
	for(var i=1;i<arguments.length;i++) 
	{
		params[i - 1] = arguments[i];
	}
	return pattern.format(params);
};

var EkCookie=
{
	setCookie:function(name,value)
	{
		if(name.length<1)
		{
			return;	
		}
		if(0<value.length)
		{
			document.cookie=""+name+"="+value;
		}else{
			document.cookie=name+"=";
		}
	}
	,getCookie:function(name)
	{
		var value="";
		var index=0;
		var oDoc=document;
		if(oDoc.cookie)
		{
			index=oDoc.cookie.indexOf(name+"=");
		}
		else 
		{
			index=-1;
		}
		if(index<0)
		{
		value="";
		}
		else
		{
			var countbegin=(oDoc.cookie.indexOf("=",index)+1);
			if(0<countbegin)
			{
				var countend=oDoc.cookie.indexOf(";",countbegin);
				if(countend<0)
				{
					countend=oDoc.cookie.length;
				}
				value=oDoc.cookie.substring(countbegin,countend);
			}
			else
			{
				value="";
			}
		}
		return value;
	}
	,deleteCookie:function(name)
	{
		document.cookie=name+"=";
	}
};

var EkSearchResult=
{
	keys:Array(),values:Array(),parseContextData:function(query)
	{
		var keys = [];
		var values = [];
		var pairs = query.split("&");
		for(var i=0;i<pairs.length;i++)
		{
			var pos=pairs[i].indexOf('=');
			if(pos>=0)
			{
				var argname=decodeURIComponent(pairs[i].substring(0,pos));
				var value=decodeURIComponent(pairs[i].substring(pos + 1));
				this.keys[this.keys.length]=argname;
				this.values[this.values.length]=value;
			}
		}
	}
	,getKeyValue:function(key)
	{
		var value=null;
		for(var i=0;i<this.keys.length;i++)
		{
			if(this.keys[i]==key)
			{
				value=this.values[i];break;
			}
		}
		return value;
	}
	,displayResult:function(result,context)
	{
		EkSearchResult.parseContextData(context);
		EkCookie.setCookie('contextparams',context);
		if (document.getElementById('ecmsearchpage')!==null)
		{
			EkCookie.setCookie('pageparams',document.getElementById('ecmsearchpage').value);
		}
		if (document.getElementById(EkSearchResult.getKeyValue("control"))!==null)
		{
			document.getElementById(EkSearchResult.getKeyValue("control")).innerHTML=result;	
		}
		try
		{
			if(document.getElementById("__EkAjaxHidden$"+EkSearchResult.getKeyValue("control"))!==null)
			{
				document.getElementById("__EkAjaxHidden$"+EkSearchResult.getKeyValue("control")).value=result;
			}
		}
		catch(e)
		{}
	}
	,displayError:function(message,context)
	{
		alert('An unhandled exception has occurred:\n'+message);
	}
};

var EkSearch=
{
	imagepath:'images',searchInit:function()
	{
		var searchType=document.getElementById('ecmsearchmode');
		EkSearch.showSearchOps(searchType.value);
		EkSearch.addMeta('init');
		if(EkCookie.getCookie('searchcookie')!==null || EkCookie.getCookie('searchcookie')!=='')
		{
			_backbuttonaction=true;
		}
	}
	,showSearchOps:function(value)
	{
		if(value=='normal')
		{
			if (document.getElementById('advancedTerms')!==null) {document.getElementById('advancedTerms').style.display="none";}
			if (document.getElementById('advancedTermsAnchor')!==null) {document.getElementById('advancedTermsAnchor').className="";}
			if (document.getElementById('basicTerms')!==null) {document.getElementById('basicTerms').style.display="block";}
			if (document.getElementById('basicTermsAnchor')!==null) {document.getElementById('basicTermsAnchor').className="selected";}
		}
		else
		{
			if (document.getElementById('advancedTerms')!==null) {document.getElementById('advancedTerms').style.display="block";}
			if (document.getElementById('advancedTermsAnchor')!==null) {document.getElementById('advancedTermsAnchor').className="selected";}
			if (document.getElementById('basicTerms')!==null) {document.getElementById('basicTerms').style.display="none";}
			if (document.getElementById('basicTermsAnchor')!==null) {document.getElementById('basicTermsAnchor').className="";}
		}
	}
	,searchBackButton:function()
	{
		if(_backbuttonaction)
		{
			var cookie_str=EkCookie.getCookie('searchcookie');
			if(cookie_str!==null && cookie_str!=='')
			{
				EkSearchResult.parseContextData(cookie_str);
				if(document.getElementById('ecmsearchpage').value==EkCookie.getCookie('pageparams'))
				{
					if (document.getElementById('ecmBasicKeywords') !== null)
					{
						var basicText = EkSearchResult.getKeyValue('ecmBasicKeywords');var newCookie1 = EkCookie.getCookie('SearchTextCookie');EkSearchResult.parseContextData(newCookie1);
						var mode = EkSearchResult.getKeyValue('searchmode');
						if (mode == "advanced") 
						{
							var searchStr = EkSearchResult.getKeyValue('searchtext');
							document.getElementById('ecmBasicKeywords').value = searchStr;
						}
						else
						{
							document.getElementById('ecmBasicKeywords').value = basicText;
						}
					} 
					__LoadSearchResult(cookie_str,EkCookie.getCookie('contextparams'));
				}
				else
				{
					EkSearch.clrCookie();
				}
			}
		}
	}	
	,serializeForm:function()
	{
		var element=document.forms[0].elements;
		var len=element.length;
		var query_string="";
		this.AddFormField=function(name,value)
			{
				if(query_string.length>0)
				{
					query_string+="&";
				}
				query_string+=encodeURIComponent(name)+"="+encodeURIComponent(value);
			};
		for(var i=0;i<len;i++)
		{
			var item=element[i];
			if(typeof(item.name)!='undefined')
			{
				if((item.name.indexOf('ecm')!=-1)||(item.name.indexOf('selLang')!=-1)||(item.name.indexOf('EVENTTARGET')!=-1)||(item.name.indexOf('EVENTARGUMENT')!=-1))
				{
					try
					{
						switch(item.type)
						{
							case'text':
							case'password':
							case'hidden':
							case'textarea':
								this.AddFormField(item.name,item.value);
								break;
							case'select-one':
								if(item.selectedIndex>=0)
								{
									this.AddFormField(item.name,item.options[item.selectedIndex].value);
								}
								break;
							case'select-multiple':
								for(var j=0;j<item.options.length;j++)
								{
									if(item.options[j].selected)
									{
										this.AddFormField(item.name,item.options[j].value);
									}
								}
								break;
							case'checkbox':
							case'radio':
								if(item.checked)
								{
									this.AddFormField(item.name,item.value);
								}
								break;
						}
					}
					catch(e)
					{}
				}
			}
		}
		EkSearch.clrCookie();
		EkCookie.setCookie('searchcookie',query_string);
		return query_string;
	}
	,getArguements:function()
	{
		return this.serializeForm();
	}
	,validateKey:function(item,control)
	{
		if(item.keyCode==13)
		{
			__LoadSearchResult(EkSearch.getArguements(),'control='+control+'&__ecmcurrentpage=1');
			return false;
		}
	}
	,getKeyWords:function()
	{
		var val="";
		try
		{
			if(document.getElementById("ecmBasicKeywords")!==null)
			{
				val=document.getElementById("ecmBasicKeywords").value;
			}
		}
		catch(e)
		{}
		return val;
	}
	,setKeyWords:function(val)
	{
		try
		{
			if(document.getElementById("ecmBasicKeywords")!==null &&val!=="")
			{
				document.getElementById("ecmBasicKeywords").value=val;
			}
		}
		catch(e)
		{}
	}
	,addLoadEvent:function(func)
	{
		var _currentloadevent=window.onload;
		if(typeof window.onload!='function')
		{
			window.onload=func;
		}
		else
		{
			window.onload=function()
			{
				if(_currentloadevent)
				{
					_currentloadevent();
				}
				func();
			};
		}
	}
	,togDisp:function(e,name)
	{
		stopB(e);
		var elems=document.getElementsByName(name);
		for(var i=0;i<elems.length;i++)
		{
			var obj=elems[i];
			var dp="";
			if(obj.style.display==="")
			{
				dp="none";
			}
			obj.style.display=dp;
		}
		return false;
	}
	,stopB:function(e)
	{
		if(!e){e=window.event;}
		e.cancelBubble=true;
	}
	,checkDateFormat : function(selectId)
	{
		var elem = document.getElementById(selectId);
		var currentSel = elem.options[elem.selectedIndex].value;
		var parentElem = elem.parentNode;
		if(typeof(parentElem) != 'undefined')
		{
			for (var dEl=0; dEl<parentElem.childNodes.length; dEl++)
			{
				if (parentElem.childNodes[dEl].nodeName=="INPUT")
				{
					if(currentSel ==  "@datecreatedB" || currentSel ==  "@datecreatedA" || currentSel ==  "@datemodifiedB" || currentSel ==  "@datemodifiedA")
					{
						if(parentElem.childNodes[dEl].value === ""){parentElem.childNodes[dEl].value = "YYYY/MM/DD";}
					}else{
						if(parentElem.childNodes[dEl].value !== ""){parentElem.childNodes[dEl].value = "";} 
					}
				}
			}
		}
	}
	,clearMeta : function(inputId)
	{
		if (document.getElementById(inputId) === null) {return;}
		var firstInput = document.getElementById(inputId);
		firstInput.value = '';
	}
	,removeMeta : function(metaId)
	{
		var parentElem = document.getElementById('parentForFilters');
		var metaElem;
		if(typeof(parentElem) != 'undefined')
		{
			var divCount = 0;
			for (var i=0; i<parentElem.childNodes.length; i++)
			{
				if (parentElem.childNodes[i].nodeName=="DIV")
				{
					++divCount;
				}
			}
			if(divCount == 1)
			{
				metaElem = document.getElementById(metaId);
				if(typeof(metaElem) != 'undefined')
				{
					for (var dEl=0; dEl<metaElem.childNodes.length; dEl++)
					{
						if (metaElem.childNodes[dEl].nodeName=="INPUT")
						{
							metaElem.childNodes[dEl].value = "";
						}
					}
				}
			}else{
				metaElem = document.getElementById(metaId);
				if(typeof(metaElem) != 'undefined')
				{
					parentElem = metaElem.parentNode;
					if(typeof(parentElem) != 'undefined')
					{
						parentElem.removeChild(metaElem);
					}
				}
			}
		}
	}
	,addMeta:function(init)
	{
		if (document.getElementById('parentForFilters') === null) {return;}
		var parentElem=document.getElementById('parentForFilters');
		if(typeof(parentElem)!='undefined')
		{
			if (document.getElementById('parentForFiltersError') !== null)
			{
				parentElem.removeChild(parentElem.firstChild);
			}
			
			var eLI=document.createElement("li");
			var randomnumber=Math.floor(Math.random()*1000);	
			eLI.setAttribute("id","li_Meta"+randomnumber);
			var metaLI = '<select name="ecm_MT{0}" id="ecm_M{0}" class="addRemoveMeta" onchange="EkSearch.checkDateFormat(\'ecm_M{0}\');">';
			metaLI=metaLI+'<option id="datecreatedB" value="@datecreatedB">Created Before</option>';
			metaLI=metaLI+'<option id="datecreatedA" value="@datecreatedA">Created After</option>';
			metaLI=metaLI+'<option id="datemodifiedB" value="@datemodifiedB">Modified Before</option>';
			metaLI=metaLI+'<option id="datemodifiedA" value="@datemodifiedA">Modified After</option>';
			metaLI=metaLI+'<option selected="selected" id="author" value="@docauthor">Author</option>';
			metaLI=metaLI+'<option id="cmssize" value="@cmssize">File Size</option>';
			metaLI=metaLI+'</select>';
			metaLI=metaLI+'<input name="ecm_MV{0}" id="ecm_MV{0}" type="text" value="" />';
			
			var ulChildNodes = parentElem.childNodes;
			if (ulChildNodes.length > 0)
			{
				metaLI=metaLI+'<a href="#" title="Remove" class="removeMeta" onclick="EkSearch.removeMeta(\'li_Meta{0}\');return false">Remove</a>';
			}
			else
			{
				metaLI=metaLI+'<a href="#" title="Remove" class="removeMeta" onclick="EkSearch.clearMeta(\'ecm_MV{0}\');return false">Remove</a>';
			}
			
			eLI.innerHTML=metaLI.format(randomnumber,EkSearch.imagepath);
			parentElem.appendChild(eLI);
		}
	}
	,changeSearchType:function(controlArgs)
	{
		var searchType=document.getElementById('ecmSearchForTypes');
		searchType.value=document.forms[0].searchScope.options[document.forms[0].searchScope.selectedIndex].value;
		__LoadSearchResult(EkSearch.getArguements(),"control="+controlArgs+"&__ecmcurrentpage=1");
	}
	
	,doAdvanced:function(type)
	{
		EkSearch.clrCookie();
		var searchType=document.getElementById('ecmsearchmode');
		searchType.value=type;
		EkSearch.showSearchOps(type);
	}
	,doBasic:function(type)
	{
		EkSearch.clrCookie();
		var searchType=document.getElementById('ecmsearchmode');
		searchType.value=type;
		EkSearch.showSearchOps(type);
	}
	,clrCookie:function()
	{
		EkCookie.deleteCookie('pageparams','');
		EkCookie.deleteCookie('searchcookie','');
		EkCookie.deleteCookie('contextparams','');
	}
};
EkSearch.addLoadEvent(SetSearchTypesFromDropDown);
EkSearch.addLoadEvent(EkSearch.searchInit);
EkSearch.addLoadEvent(EkSearch.searchBackButton);

function EkMarkPostOnEnter(item,keys)
{
	if(item.keyCode==13)
	{
		MarkPostBack();
	}
	return true;
}
function ShowLoadingMessage(tagName){
	if(tagName)
	{
		var dvResult=document.getElementById(tagName);
		if (dvResult!==null) {dvResult.innerHTML="<p>Loading...</p>";}
	}
}

function SetSearchTypesFromDropDown() {
    if (EkCookie.getCookie('searchcookie')!==null || EkCookie.getCookie('searchcookie')!=='') {
        var SearchCookie = EkCookie.getCookie('searchcookie')
        arrSearchCookieNameValuePairs = SearchCookie.split("&");
        var newSearchCookieValue = "";
        for (i=0;i<arrSearchCookieNameValuePairs.length;i++) {
            var arrNameValuePair = arrSearchCookieNameValuePairs[i].split("=");
            if (arrNameValuePair[0] == "ecmSearchForTypes") {
            	var searchType=document.getElementById('ecmSearchForTypes');
		        searchType.value=document.forms[0].searchScope.options[document.forms[0].searchScope.selectedIndex].value;
                arrSearchCookieNameValuePairs[i] = "ecmSearchForTypes=" + searchType.value;
            }
            if (newSearchCookieValue.length > 0) {
                newSearchCookieValue += "&" + arrSearchCookieNameValuePairs[i];
              }
            else {
                newSearchCookieValue += arrSearchCookieNameValuePairs[i];
            }
        }
        EkCookie.setCookie("searchcookie", newSearchCookieValue);
    }
}
