 

function findElement(elementID) {
  var elem;
  if(document.getElementById) {// DOM
    elem = document.getElementById(elementID);
  } else if(document.all) { // old MSIE
      elem = document.all[elementID];
  } else if(document.layers) { // NN4
    elem = document.layers[elementID];
  } else {
  	elem = null;
  }
  return elem;
}
function findObj(elementID) {
  return findElement(elementID);
}
function showElement(elementID) {
	if(findElement(elementID)!=null) {findElement(elementID).style.display='block';}
}
function hideElement(elementID) {
	if(findElement(elementID)!=null) {findElement(elementID).style.display='none';}
}


function typePhoneNum(evt){
	var charCode = (evt.which) ? evt.which : event.keyCode; 
	if (charCode > 32 && (charCode < 46 || charCode > 57))	{return false;}
	else {return true;}
}
function typePositiveInteger(evt){
	var charCode = (evt.which) ? evt.which : event.keyCode; 
	if (charCode!=8 && charCode!=13 && charCode!=127 && (charCode < 48 || charCode > 57))	{return false;}
	else {return true;}
}

function getTotalFin(obj_prefix, container) {
	if (container=="undefined" || container==null || !findElement(container)) {container=document;} else {container=findElement(container);}
	var total_fin_val = 0;
	var spans = container.getElementsByTagName('SPAN');
	var inputs = container.getElementsByTagName('INPUT');
	var remove_checkboxes=new Array();
	//in noul tabel de cos avem mai multe spanuri, deci tre sa le luam in array doar pe cele bune...
	var goodspans = new Array();
	for (i=0; i<spans.length; i++) {
		if (spans[i].id.indexOf(obj_prefix)==0) {goodspans.push(spans[i]);}
	}
	
	for (i=0; i<inputs.length; i++) {
		if (inputs[i].type=='checkbox' && inputs[i].id.substring(0,12)=='remove_item_') {remove_checkboxes.push(inputs[i]);}
	}
	for (i=0; i<goodspans.length; i++) {
		if (remove_checkboxes[i].checked!=true ) {total_fin_val+=parseFloat(goodspans[i].innerHTML);}
	}
	
	
	return total_fin_val.toFixed(2);
}

function getDiscountAmmount(price, discount) {
	var nAmmount = (-1)*parseFloat(price)*parseFloat(discount)/100;	
	return nAmmount;	
}

function getActualPrice(price, discount) {
	var nAmmount = parseFloat(price)-parseFloat(price)*parseFloat(discount)/100;	
	return nAmmount;	
}


function generateACode(nrchars) {
	var possible_characters = "abcdefghijklmnopqrstuvwxyz1234567890";
		
	var maxValue = 35;
	var string = "";
	for (i=0; i<nrchars; i++) {
		retValue = Math.round(Math.random()*(maxValue-1));
		string = String.concat(string, possible_characters.substr(retValue,1));
	}
	return string;		
}


//
function checkIfContentLoaded(cVarName,elementID,url,pars) {
	var cVarValue = eval(cVarName);	
	if(cVarValue=="yes" && elementContainerID==null) {getElementContent(elementID,url,pars);}	
}
function getElementContent(elementID,url,pars) {
  var xhr = createXMLHttpRequest();
  findElement(elementID).innerHTML = '<img src="http://www.psi-stingator.ro/_images/spacer.gif" border="0" class="loader" />';
  xhr.onreadystatechange = function() {  	
    if (xhr.readyState==4) { // Request finished
	  findElement(elementID).innerHTML = '';
      if (xhr.status==200) {
	  	var str_inner_html = findElement(elementID).innerHTML;
        str_inner_html += xhr.responseText;	
		str_inner_html = removeCRLF(str_inner_html);
		str_inner_html = replaceWideWithBasicASCII(str_inner_html);
		findElement(elementID).innerHTML = str_inner_html;
      } else {
        alert("Message returned, but with error status.");
      }
    }
  }
  xhr.open("get", url+'&'+pars, true);
  xhr.send(null);
}
function createXMLHttpRequest() {
  try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
  try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
  try { return new XMLHttpRequest(); } catch(e) {}
  alert("XMLHttpRequest not supported");
  return null;
}

function removeCRLF(str) {	
	if (BrowserDetect.browser=="Explorer") {
			}
	return str;
}


function replaceWideWithBasicASCII(str) { 
		str=str.replace(/／/gi, "/");
		str=str.replace(/﹡/gi, "*");
		//str=str.replace(/”/gi, "\"");
		//str=str.replace(/΄/gi, "'");
		str=str.replace(/％/gi, "%");
		str=str.replace(/＆/gi, "&");
		str=str.replace(/＋/gi, "+");
		str=str.replace(/＼/gi, "\\");
		str=str.replace(/＄/gi, "$");
		str=str.replace(/＜/gi, "<");
		str=str.replace(/＞/gi, ">");
		str=str.replace(/＝/gi, "=");
		str=str.replace(/？/gi, "?");
		str=str.replace(/＃/gi, "#");
		str=str.replace(/？/gi, "?");	
		str=str.replace(/＂/gi, "”");	
		str=str.replace(/＇/gi, "΄");
	return str;
}

function getImgSrcInfo(obj_src,hover_str) {		
	var img_name = obj_src.substring(obj_src.lastIndexOf("/")+1,obj_src.length);
	var img_ext = img_name.substring(img_name.lastIndexOf(".")+1,img_name.length);
	var img_ext_RegExp=new RegExp("\."+img_ext, "gi");
	var obj_src_base = obj_src.replace(img_ext_RegExp,"");
	var hover_str_RegExp=new RegExp(hover_str, "gi");
	obj_src_base = obj_src_base.replace(hover_str_RegExp,"");	
	var ret=new Array(obj_src_base,img_ext);
	return ret;
}
function buttonImageSwap(event,obj,hover_str) {
	if (hover_str=='undefined' || hover_str==null) {var hover_str = '_hover';}
	var obj_src = obj.src;	
	var orig_src = obj_src;
	var new_src = orig_src;
	var old_filter = obj.style.filter;
	var filter_RegExp = new RegExp("src=[\"\']+(.*\.png)[\"\']+", "i");
	var obj_src_info = getImgSrcInfo(obj_src,hover_str);
	if (event.type=='mouseover') {
		new_src = obj_src_info[0] + hover_str+'.' + obj_src_info[1];
	} else {
		new_src = obj_src_info[0] + '.' + obj_src_info[1];
	}
	
	if (BrowserDetect.browser=="Explorer" && BrowserDetect.version>4.5 && BrowserDetect.version<7) {
		if (obj_src_info[1]=="png" || old_filter.match(filter_RegExp)) {
				var obj_src = RegExp.$1;
				var obj_src_info = getImgSrcInfo(obj_src,hover_str);			   
			    if (event.type=='mouseover') {
					new_filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+obj_src_info[0] + hover_str + '.' + obj_src_info[1]+'",sizingMethod="crop")';
				} else {
					new_filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+obj_src_info[0] + '.' + obj_src_info[1]+'",sizingMethod="crop")';
				}
				
				return new Array(orig_src,new_filter);
					
		} else {
			obj.src = obj_src_info[0];
			return new Array(new_src,old_filter);
		}		
	} else {
		return new Array(new_src,'');
	}	
}
//
function loadPngImg(img_obj) {
	var badIE = (BrowserDetect.browser=="Explorer" && BrowserDetect.version>=5.5 && BrowserDetect.version<7);

	if (findElement(img_obj)) {
		var img = findElement(img_obj);
		if (badIE && img.src.match(/\.png$/i) != null) {
			var src = img.src;
			img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')";
			img.src="../_images/spacer.gif";
			img.style.width = img.width + "px";
			img.style.height = img.height + "px";
		}
	}
}



// sterge elementele DOM dintr-un obiect DOM
function lr_empty_var(id) {
    o = document.getElementById(id);
    if (o!=null && o!='undefined') {
        if (o.childNodes.length > 0) {
            while(o.childNodes.length>0)
                o.removeChild(o.childNodes[o.childNodes.length-1]);
        }
    }
}
function lr_trim(text, type, expr) {
    pattern = "";
    token = '\\s';
    if (expr!="") token = expr;
    l = expr.length;
    if (l > 0) {
        escaped = '[;/?:@&=+$,](){}.-';
        tmp = token.split('');
        for(i=0;i<tmp.length;i++)
            if (escaped.indexOf(tmp[i]) > -1)
                tmp[i] = '\\'+tmp[i];
        token = tmp.join('');
        if (l > 1) token = '(' + token + ')';
    }

    switch(type) {
        case "r":
            pattern = token + '+$';
        break;
        case "l":
            pattern = '^' + token + '+';
        break;
        default:
            pattern = '^' + token + '+|' + token + '+$';
        break;
    }
    regexp = new RegExp(pattern, "gi");
    return text.replace(regexp, '');
}



var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{

			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();



// seteaza pentru selectorul specificat, elementul cu valoarea specificata
function lr_set_selected(uid, v) {
    o = document.getElementById(uid);
    for(var i=0;i<o.options.length;i++) if (o.options[i].value==v) o.options[i].selected = true;
}

// seteaza pentru colectia de radiobutoane specificata pe cel selectat
function radio_set_selected(formName, radioName, selValue) {
  		var collection;
  		collection = document.forms[formName].elements[radioName];
  		for (i=0;i<collection.length;i++) {
    		if (collection[i].value == selValue) return(collection[i].checked = "true");
  		}
}



function SetAllCheckBoxes(FormName, FieldName, CheckValue)
{
	if(!document.forms[FormName])
		return;
	var objCheckBoxes = document.forms[FormName].elements[FieldName];
	if(!objCheckBoxes)
		return;
	var countCheckBoxes = objCheckBoxes.length;
	if(!countCheckBoxes)
		objCheckBoxes.checked = CheckValue;
	else
		// set the check value for all check boxes
		for(var i = 0; i < countCheckBoxes; i++)
			objCheckBoxes[i].checked = CheckValue;
}


function checkUncheckAll(theElement) {
     var theForm = theElement.form, z = 0;
	 for(z=0; z<theForm.length;z++){
      if(theForm[z].type == 'checkbox' && theForm[z].name != 'checkall'){
	  theForm[z].checked = theElement.checked;
	  }
     }
}
