var DOM = document.getElementById ? true : false;
var ie = document.all ? true : false;
var nn4 = document.layers ? true : false;
var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]
var FFextraHeight=parseFloat(getFFVersion)>=0.1? 16 : 0 //extra height in px to add to iframe in FireFox 1.0+ browsers
var cookieExpDate = "Wednesday, 09-Nov-10 23:12:40 GMT";
var openSectionImgSrc = "images/btn_plus.gif";
var closeSectionImgSrc = "images/btn_minus.gif";

var $ = function (id) { return document.getElementById(id); };
var $$ = function (element, name) { return element.getElementsByTagName(name); };

function resizePopup() {
	if (ie)
	{	
		window.resizeTo(800,document.body.scrollHeight+40); 
	} else {
		window.resizeTo(800,document.body.offsetHeight+51);
	}
}

function openWin(url,name,w,h,scroll,status) {
        var sc;
        if (scroll) sc="0"; else sc="yes";
        showToolbar = '0';
		if (status) st="1"; else st="0";
        
		return window.open( url,
                name,
                "WIDTH="+w+",HEIGHT="+h+",STATUS="+st+",TOOLBAR="+showToolbar+",SCROLLBARS="+sc+",RESIZABLE=yes");
}

//getting element
function getElement(name) {
	if (ie) { return document.all[name]; }
	 else if(DOM){ return document.getElementById(name); }
		  else { return document.name; }
}


function storeCaret (textEl)
{
        if (navigator.appName.indexOf("Microsoft")==-1) return;
        if (textEl.createTextRange) textEl.caretPos =
                document.selection.createRange().duplicate();
        
}
function insertAtCaret (textEl, text)
{
        if (navigator.appName.indexOf("Microsoft")==-1) {
                textEl.value+=text;
                return;
        }
        if (textEl.createTextRange && textEl.caretPos)
        {
                var caretPos = textEl.caretPos;
                caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
        }
        else
                textEl.value  += text;
}
function selectionAtCaret(textEl) {
        if (navigator.appName.indexOf("Microsoft")==-1)
                return '';
        if (textEl.createTextRange && textEl.caretPos)
			return textEl.caretPos.text;
		return '';		
}


// submit form with specified action & method
function submit_form(action, method, target) {

	// find form
	for (i=0; i<document.forms.length; i++)
		if (document.forms[i].elements['__VIEWSTATE'])
			f = document.forms[i];
	
	// save form attributes
	f_action = f.action;
	f_method = f.method;
	f_target = f.target;

	// hide some form elements
	var special_elems = Array('__EVENTTARGET','__EVENTARGUMENT','__VIEWSTATE');
	for (i=0; i<special_elems.length; i++)
		f.elements[special_elems[i]].disabled = true;

	eval('f.action = action;');
	eval('if (method) f.method = method;');
	eval('if (target) f.target = target;');
	eval('f.submit();');

	for (i=0; i<special_elems.length; i++)
		f.elements[special_elems[i]].disabled = false;

	// restore form attributes
	f.action = f_action;
	f.method = f_method;
	f.target = f_target;




}


function setCookie(name, value, expires, path, domain, secure) {
	var curCookie = name + "=" + escape(value) +
	((expires) ? "; expires=" + expires : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
	document.cookie = curCookie;
}



function getCookie(name) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
		begin = dc.indexOf(prefix);
		if (begin != 0) return null;
	} else
		begin += 2;
		var end = document.cookie.indexOf(";", begin);
		if (end == -1)
			end = dc.length;
		return unescape(dc.substring(begin + prefix.length, end));
}


function deleteCookie(name,path,domain) { 
   if (getCookie(name)) document.cookie = name + "=" + 
      ( (path) ? ";path=" + path : "") + 
      ( (domain) ? ";domain=" + domain : "") + 
      ";expires=Thu, 01-Jan-70 00:00:01 GMT"; 
} 


function SectionVisibility(sectionName, doInvert, defaultState){
	sectionState = getCookie(sectionName);
	//debug alert
	//alert(sectionName + " : State_in_cookie["+sectionState+"], DoCloseOpenAction:["+doInvert+"], DefaultState:["+defaultState+"]");
	if (((sectionState == "opened")&&(!doInvert))||((sectionState == "closed")&&(doInvert))||((defaultState=="opened")&&(sectionState==null)&&(!doInvert))||((defaultState!="opened")&&(sectionState==null)&&(doInvert))) {
		openSectionBox(sectionName,doInvert); 
		if (((sectionState == "closed")&&(doInvert))){
			resizeCaller();
		}
	} else {
		closeSectionBox(sectionName,doInvert); 
	}
}

function openSectionBox(sectionName, doSetCookie){
	var SectionBox = getElement(sectionName);
	SectionBox.style.display = "";
	//
	var SectionBoxImgBtn = getElement(sectionName + "_img");
	SectionBoxImgBtn.src = closeSectionImgSrc;
	//
	if (doSetCookie)
		setCookie(sectionName,'opened',cookieExpDate);
}

function closeSectionBox(sectionName, doSetCookie){
	var SectionBox = getElement(sectionName);
	SectionBox.style.display = "none";
	//
	var SectionBoxImgBtn = getElement(sectionName + "_img");
	SectionBoxImgBtn.src = openSectionImgSrc;
	//
	if (doSetCookie)
		setCookie(sectionName,'closed',cookieExpDate);
}

function alreadyInArray (elem, array) {
	for (i=0;i<array.length ;i++ )
	{
		if (elem==array[i]) return true;
	}
	return false;
}


function getElementsByAttribute(attrN,attrV,multi){
    attrV=attrV.replace(/\|/g,'\\|').replace(/\[/g,'\\[').replace(/\(/g,'\\(').replace(/\+/g,'\\+').replace(/\./g,'\\.').replace(/\*/g,'\\*').replace(/\?/g,'\\?').replace(/\//g,'\\/');
    var
        multi=typeof multi!='undefined'?
            multi:
            false,
        cIterate=typeof document.all!='undefined'?
            document.all:
            document.getElementsByTagName('*'),
        aResponse=[],
        re=new RegExp(multi?
            '\\b'+attrV+'\\b':
            '^'+attrV+'$'),
        i=0,
        elm;
    while((elm=cIterate.item(i++))){
        if(re.test(elm.getAttribute(attrN)||''))
            aResponse[aResponse.length]=elm;
    }
    return aResponse;
}

function getFirstElementByAttribute(attrN,attrV,multi){
	var elementsArray = getElementsByAttribute(attrN,attrV,multi);
	return (elementsArray.length>0)?elementsArray[0]:null;
}


function selectAllByContainerId(id,status){
	if(DOM){ 
		container = document.getElementById(id);
		if(container){
			fitems = container.getElementsByTagName("INPUT");
			for(var i=0; i<fitems.length; i++){
				if(fitems.item(i).type == "checkbox"){
					fitems.item(i).checked = status;
				}
			}
		}
	}
}

/*
 ***********************************************
 Inactivity warning
*/

function showInactivityWarning(msecs){
	try {
		window.scrollTo(0,0);
		if (msecs) {
			var curDate = new Date();
			curDate.setMilliseconds(curDate.getMilliseconds() - msecs);	
			var timeContainer = getElement("InactivityTime");
			if(timeContainer){
				timeContainer.innerHTML = curDate.getHours() + ":" + curDate.getMinutes() + ":" + curDate.getSeconds();
			}
		}
		getElement("inactivityWarning").style.display = '';
	} catch (e) {}
}


/**
 *  Show/Hide elements
 */
 
 this.show = function showElement(element) {
    element.style.display = '';
 }
 
 this.hide = function hideElement(element) {
    element.style.display = 'none';
 }
 
 this.toggle = function toggleElement(element) {
    var currentDisplay = element.style.display;
    var newDisplay = (currentDisplay == 'none') ? '' : 'none';
    element.style.display = newDisplay;
 }
 
 function changeElementById(id, func) {
    var element = document.getElementById(id);
    if(element) {
        func(element);
    }
 }
 
 function toggleElementById(id) {
    changeElementById(id, toggle);
 }
 
 function hideElementById(id) {
    changeElementById(id, hide);
 }
 
 function showElementById(id) {
    changeElementById(id, show);
 }
 
 function changeInnerElements(id, tag, func) {
    var container = document.getElementById(id);
    if(container) {
        var elements = container.getElementsByTagName(tag);
        for(i = 0; i < elements.length; i++) {
            func(elements.item(i));
        }    
    }
 }
 
 function toggleInnerElements(id, tag) {
    changeInnerElements(id, tag, toggle)
 }
 
 function showInnerElements(id, tag) {
    changeInnerElements(id, tag, show);
 }
 
 function hideInnerElements(id, tag) {
    changeInnerElements(id, tag, hide);
 }
 
