//-----------------------------------------------------------------------
// Copyright (C) Ektron Inc. All rights reserved.
//-----------------------------------------------------------------------
// ajax.js
// Ektron Ajax Framework.
// Resource for Search, Poll, Listsummary, Collection, Metadatalist

function IAjax(){
}
IAjax.ValidateKey=function(item,control){
    if (item.keyCode==13){
        __LoadSearchResult(IAjax.getArguements(),'control='+control+'&__ecmcurrentpage=1');
        return false;
    }
}
IAjax.DisplayError=function(message, context) {
    alert('An unhandled exception has occurred:\n' + message);
}
IAjax.DisplayResult=function(result, context) {
    this.QueryString=function(key){
	    var value = null;
	    for (var i=0;i<this.QueryString.keys.length;i++)
	    {
		    if (this.QueryString.keys[i]==key)
		    {
			    value = this.QueryString.values[i];
			    break;
		    }
	    }
	    return value;
    };
    this.QueryString.keys = new Array();
    this.QueryString.values = new Array();
    this.ParseQueryString=function(args){
	    var query = args;
	    var pairs = query.split("&");
    	
	    for (var i=0;i<pairs.length;i++)
	    {
		    var pos = pairs[i].indexOf('=');
		    if (pos >= 0)
		    {
			    var argname = unescape(pairs[i].substring(0,pos));
			    var value = unescape(pairs[i].substring(pos+1));
			    this.QueryString.keys[this.QueryString.keys.length] = argname;
			    this.QueryString.values[this.QueryString.values.length] = value;		
		    }
	    }
    };
    this.ParseQueryString(context);
    document.getElementById(this.QueryString("control")).innerHTML=result;
    try{
        if(document.getElementById("__EkAjaxHidden$"+this.QueryString("control"))!=null){
            document.getElementById("__EkAjaxHidden$"+this.QueryString("control")).value=result;
            if(IAjax.IsIE()){
                window.location.replace((window.location.href).replace(window.location.hash,"")+"#"+this.QueryString("control"))
                IAjax.CacheHtml(this.QueryString("control"));
            }
        }
    }catch(e){}
}
IAjax.getArguements=function(){
    return(IAjax.serializeForm());
}
IAjax.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];
        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)
        {
        }
    }
    return query_string;
}
IAjax.ResetValueOnBackButton=function(){
    IAjax.LoadHtml();
}
IAjax.GetKeyWords=function(){
    var val="";
    try{
        if(document.getElementById("ecmBasicKeywords")!=null){
        val=document.getElementById("ecmBasicKeywords").value;
        }
    }
    catch(e)
    {
    }
    return val;
}
IAjax.SetKeyWords=function(val){
    try{
        if(document.getElementById("ecmBasicKeywords")!=null && val!=""){
        document.getElementById("ecmBasicKeywords").value=val;
        }
    }
    catch(e)
    {
    }
}
IAjax.GetCookie=function(cookiename){
    var cookieval="-1";
    try{
        var cookiestring=""+document.cookie;
        var index1=cookiestring.indexOf(cookiename);
        if (!(index1==-1 || cookiename=="")){
            var index2=cookiestring.indexOf(';',index1);
            if (index2==-1) index2=cookiestring.length; 
            cookieval= unescape(cookiestring.substring(index1+cookiename.length+1,index2));
        }
    }
    catch(e)
    {
    }
    return cookieval;
}
IAjax.CacheHtml=function(control){
    if(IAjax.IsIE()){
        try{
            var oPersist=document.getElementById("__EkAjaxHidden$"+control);
            oPersist.setAttribute(control+"data",oPersist.value);
            oPersist.setAttribute(control+"date",(new Date()).getTime());
            oPersist.setAttribute(control+"text",IAjax.GetKeyWords());
            
            oPersist.save(control+"xml");
        }
        catch(e)
        {
        }
    }
    else{
        try{
            var element = document.forms[0].elements;
            var len = element.length;
            for (var i=0; i<len; i++) {
                var item = element[i];
                if(item.type=="hidden" && item.name.indexOf("__EkAjaxHidden$")!=-1){
                    if(document.getElementById(item.name.substring(15,item.name.length)).innerHTML!=""){
                        document.getElementById(item.name).value=document.getElementById(item.name.substring(15,item.name.length)).innerHTML;
                    }
                }
            }
        }
        catch(e)
        {
        }
    }
}
IAjax.LoadHtml=function(){
    if(IAjax.IsIE()){
        try{
            var element = document.forms[0].elements;
            var len = element.length;
            for (var i=0; i<len; i++) {
                var item = element[i];
                if(item.type=="hidden" && item.name.indexOf("__EkAjaxHidden$")!=-1){
                var oPersist=document.getElementById(item.name);
                oPersist.load(item.name.substring(15,item.name.length)+"xml");
                oPersist.value=oPersist.getAttribute(item.name.substring(15,item.name.length)+"data");
                var minute=((new Date()).getTime()-oPersist.getAttribute(item.name.substring(15,item.name.length)+"date"))/60000;
                    if(window.location.hash!="" && minute<=20 && oPersist.value!="null" && oPersist.value!=null && oPersist.value!=""){
                        IAjax.SetKeyWords(oPersist.getAttribute(item.name.substring(15,item.name.length)+"text"));
                        document.getElementById(item.name.substring(15,item.name.length)).innerHTML=oPersist.value;
                    }
                }
            }
        }
        catch(e)
        {
        }
    }
    else{
        try{
            var element = document.forms[0].elements;
            var len = element.length;
            for (var i=0; i<len; i++) {
                var item = element[i];
                if(item.type=="hidden" && item.name.indexOf("__EkAjaxHidden$")!=-1){
                    if(document.getElementById(item.name).value!=""){
                        document.getElementById(item.name.substring(15,item.name.length)).innerHTML=document.getElementById(item.name).value;
                    }
                }
            }
        }
        catch(e)
        {
        }
    }
}
IAjax.IsIE=function(){
    var ua = window.navigator.userAgent.toLowerCase();
	return((ua.indexOf('msie') > -1) && (!(ua.indexOf('opera') > -1)));
}
IAjax.addLoadEvent=function (func) {
    var _currentloadevent = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    }else{
        window.onload = function() {
          if (_currentloadevent) {
            _currentloadevent();
          }
          func();
        }
    }
};
IAjax.addLoadEvent(IAjax.ResetValueOnBackButton);