var generalVars=new Object();

var pageVars;

var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var clientVer = parseInt(navigator.appVersion); // Get browser version
var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));

function collectElements(container, condition, recursive, collection)
{
	if (!collection)
		collection=new Array();
	if (!condition)
		condition="1";
	var elements;
	elements = container.childNodes; //get all sub elements under the container

	for (var i=0; i<elements.length; i++)
	{ //scan through the sub elements
		theElement=elements[i];
		if (theElement.nodeType==1 && eval(condition)) //if the element has a defined "langText" attribute
			collection.push(theElement);
		else if (recursive && theElement.hasChildNodes()) //if the element has sub nodes
			collectElements(theElement, condition, collection); //call to iterate over the sub nodes
	}
	return collection;
}

function fillPageVars()
{
	if (pageVars)
		delete pageVars;
	pageVars=(document.location.hash.length>1) ? document.location.hash.substring(1).split('&') : new Array(0);
	for (var i=0; i<pageVars.length; i++)
	{
		var tempArray=pageVars[i].split('=');
		pageVars[tempArray[0]]=decodeURIComponent(tempArray[1]);
		delete tempArray;
	}
}

function escapeRegExp(inText)
{
	var matcher=new RegExp('\\\\|\\||\\(|\\)|\\[|\\{|\\^|\\$|\\*|\\+|\\?|\\.', 'gi');
	var result;
	var outText='';
	var lastMatch=0;
	while (result=matcher.exec(inText))
	{
		outText+=inText.substring(lastMatch, result.index);
		outText+='\\' + result[0];
		lastMatch=result.index+1;
	}
	delete matcher;
	outText+=inText.substr(lastMatch);
	return outText;
}

function strReplace(theText, fromArray, toArray, dontEscape)
{
	var expression='';
	var replacementArray=new Object();
	var maxToIndex=toArray.length-1;
	for (var i=0; fromArray.length; i++)
	{
		expression+='|' + ((dontEscape)?fromArray[i]:escapeRegExp(fromArray[i]));
		replacementArray[fromArray[i]]=toArray[Math.min(i, maxToIndex)];
	}
	expression=expression.substr(1);
	var matcher=new RegExp(expression, "gi");
	var result;
	var outText='';
	var lastMatch=0;
	while (result=matcher.exec(theText))
	{
		outText+=theText.substring(lastMatch, result.index);
		outText+=replacementArray[result[0]];
		lastMatch=result.index+1;
	}
	delete matcher;
	delete replacementArray;
	outText+=theText.substr(lastMatch);
	return outText;	
}

function strCount(mainStr, searchStr, dontEscape)
{
	var occurance=0;
	if (!dontEscape)
		searchStr=escapeRegExp(searchStr);
	var matcher=new RegExp(searchStr, "gi");
	while (matcher.exec(mainStr))
		occurance++;
	delete matcher;
	return occurance;
}

function LBtoBR(theText)
{
	theText=theText.replace(/(\r|\n)/g,"<br>");
	return theText;
}

function BRtoLB(theText)
{
	theText=theText.replace(/(<br>|<br \/>)/gi, "\n");
	return theText;
}

function checkRequiredFormElements(theForm)
{
	var result=true;
	for(var i=0; (result && (i<theForm.elements.length)); i++)
	{
		if (theForm.elements[i].getAttribute("reqLen"))
			result=result && (theForm.elements[i].value.length>=parseInt(theForm.elements[i].getAttribute("reqLen")))
	}
	if (!result)
	{
		if (visualParams["infoBox"])
			visualParams["infoBox"].show(generalVars["invalidInfoMsg"]);
		else
			alert(generalVars["invalidInfoMsg"]);
	}
	return result;
}

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 reset_form(form_no)
	{
        var i = 0
        for( i = 0; i < document.forms[form_no].length; i++)
        {
        				if( (document.forms[form_no].elements[i].name != 'date_to_day') && (document.forms[form_no].elements[i].name != 'date_to_month') && (document.forms[form_no].elements[i].name != 'date_to_year') )
        				{
                	if ( document.forms[form_no].elements[i].type == "select-one" )
                			document.forms[form_no].elements[i].selectedIndex = 0
                	else if ( document.forms[form_no].elements[i].type == "text" || document.forms[form_no].elements[i].type == "textarea" )
                  	  document.forms[form_no].elements[i].value = "";
                	else if ( document.forms[form_no].elements[i].type == "select-multiple" )
                  	  document.forms[form_no].elements[i].selectedIndex = -1
        				}

        }//for
	}
	
function PopUpLinkWidthHeight(hyperlink,width,height)
{
	var now = new Date();
	window.open( hyperlink,now.getSeconds(),"left=200,top=200,height="+height+",width="+width+",status=no,toolbar=no,menubar=no,location=no,resizable=no");
    return false;
}

function Get_Content_Show_Hide(address,element)
{
 if(document.getElementById(element).style.display=='none')
 {
    document.getElementById(element).style.display='block';
    aV.AJAX.loadContent(address, element);
 }
 else
 {
  document.getElementById(element).style.display='none';
 }
}

function Open_Close_Div(id)
{
	var theDiv = document.getElementById(id);
	if(theDiv.style.display=='block')
	{
		theDiv.style.display='none';
	}
	else if(theDiv.style.display=='none')
	{
		theDiv.style.display='block';
	}
}

function Expand_Collapse_All_Divs(action)
{
	var arrayOfDivs = document.getElementsByTagName('div');
	var howMany = arrayOfDivs.length - 1;
	for (var i=0; i < howMany; i++) 
	{
		var thisDiv = arrayOfDivs[i];
		if(action=='expand')
		{
		 if(thisDiv.style.display=='none')
			{
				thisDiv.style.display='block';
			}
		}
		else if(action=='collapse')
		{
		 if(thisDiv.style.display=='block')
			{
				thisDiv.style.display='none';
			}
		}
	}
}

function validRequired(formField,fieldLabel)
{
 var result = true;

 if (formField.value == "")
 {
  alert('Please enter a value for the "' + fieldLabel +'" field.');
  formField.focus();
  result = false;
 }
 return result;
}

function regexEmailValidate(fieldId){
	var result = false;
	var regex = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/;
	var address = document.getElementById(fieldId).value;
	if(regex.test(address))
		result = true;
	return result;
}
function setWarning(error_div,warning_text){
	var err_element = document.getElementById(error_div);
	err_element.innerHTML = "<span style='color:red'>"+warning_text+"</span>";
}
function hideWarning(error_div){
	document.getElementById(error_div).innerHTML="";
}

function validEmail(formField,fieldLabel,required)
{
 var result = true;
 if (required && !validRequired(formField,fieldLabel))
 {
  result = false;
 }
  return result;
}

function validateForm(theForm)
{
	if (!validRequired(theForm.email,"E-Mail",true))
  return false;
}

	function stripslashes(str) 
	{
		str=str.replace(/\\'/g,'\'');
		str=str.replace(/\\"/g,'"');
		str=str.replace(/\\\\/g,'\\');
		str=str.replace(/\\0/g,'\0');
		str=str.replace(/\\n/g,'\n');
		return str;
	}
	function rawurlencode (str) 
	{
    // http://kevin.vanzonneveld.net
    // +   original by: Brett Zamir (http://brett-zamir.me)
 
    var hexStr = function (dec) {
        return '%' + dec.toString(16).toUpperCase();
    };
 
    var ret = '',
            unreserved = /[\w.~-]/; // A-Za-z0-9_.~-
    str = (str+'').toString();
 
    for (var i = 0, dl = str.length; i < dl; i++) {
        var ch = str.charAt(i);
        if (unreserved.test(ch)) {
            ret += ch;
        }
        else {
            var code = str.charCodeAt(i);
            // Reserved assumed to be in UTF-8, as in PHP
            if (code < 128) { // 1 byte
                ret += hexStr(code);
            }
            else if (code >= 128 && code < 2048) { // 2 bytes
                ret += hexStr((code >> 6) | 0xC0);
                ret += hexStr((code & 0x3F) | 0x80);
            }
            else if (code >= 2048 && code < 65536) { // 3 bytes
                ret += hexStr((code >> 12) | 0xE0);
                ret += hexStr(((code >> 6) & 0x3F) | 0x80);
                ret += hexStr((code & 0x3F) | 0x80);
            }
            else if (code >= 65536) { // 4 bytes
                ret += hexStr((code >> 18) | 0xF0);
                ret += hexStr(((code >> 12) & 0x3F) | 0x80);
                ret += hexStr(((code >> 6) & 0x3F) | 0x80);
                ret += hexStr((code & 0x3F) | 0x80);
            }
        }
    }
    return ret;
	}		
	
	function toggleRename(obj,name,rename)
	{
		if(obj.firstChild.nodeValue == rename)
			obj.firstChild.nodeValue = name;
		else
			obj.firstChild.nodeValue = rename;
	}
	
	function findMaxIndex(value,field_type)
	{
		if(!field_type)
			field_type = "text";
		var text_fields = [];
		var index_array = [];
		var input_fields = document.getElementsByTagName("input");
		for(var i = 0; i<input_fields.length; i++)
		{
			if(input_fields[i].type == field_type)
			{
				if (input_fields[i]['id'].search(value)>=0)
				{
					text_fields.push(input_fields[i]);
					splitted = input_fields[i]['id'].split("_");
					index_array.push(splitted[splitted.length-1]);
				}
			}
		}
		if(index_array.length)
			max_index = Math.max.apply(Math,index_array);
		else
			max_index = -1;
		return ++max_index;
	}
	
	function removeOption(parent_node,element_to_remove)
	{
		remove_element = document.getElementById(element_to_remove);
		if(element_to_remove.search('_0')>0)
			alert("You can't remove this element");
		else
			document.getElementById(parent_node).removeChild(remove_element);
	}
	
	function toggleView(element_id)
	{
		var element = document.getElementById(element_id);
		if(element.style.display=="none")
			element.style.display="block"
		else
			element.style.display="none";
	}
	
	// @format (hex|rgb|null) : Format to return, default is integer
	function randomColor(format, type)
	{
		var rint = Math.round(0xffffff * Math.random());
		switch(format)
		{
			case 'hex':
				if(type == "light")
				{
					var colors = ["E6C1DD","DECEDA","C497BA","FAA7E7","FCCCF1","FAA5C1","DE92AC","D1B4BE","CCCCCC","C3AED1","D9B3F2","C1AFCC","AE93BF","AAB0F2","C5C7DB","818BF7","8990D6","89B9D6","B1CEE0","B6EFFA","84E2F5","6AE4FC","97FCDE97FCDE","99E0CB","84E8CA","A1F7DD","8DE39E","A9E38D","A1ED7B","ADC965","D8F590","B6D95D","ACC470","F2E096","FCE483","FAECB4","D9C780","F7D960","FFE657","E8D779","F5EFCB","CCBE6E","E3DEBF","FAC698","EDC8A8","D6BDA7","FAAF6E","FFD5B0","FF8E78","FACAC0","EBA091","FF7575","FACFCF","A5E6AF","BEF7C7","DAF7DE","DFF2E2","FCD9FC","EDDDED","DBAFDB"];
					var index = parseInt(Math.random()*60);
					return "#"+colors[index];
				}
				return ('#0' + rint.toString(16)).replace(/^#0([0-9a-f]{6})$/i, '#$1');
				break;
			case 'rgb':
				return 'rgb(' + (rint >> 16) + ',' + (rint >> 8 & 255) + ',' + (rint & 255) + ')';
				break;
			default:
				return rint;
				break;
		}
	}
	
	function setUrlParam(params, separator)
	{
		var url_params = [];
		for(var one_param in params)
		{
			if(!params.hasOwnProperty(one_param))
				continue;
			if(params[one_param])
				url_params.push(one_param+"="+params[one_param]);
		}
		if ((window.location.href).search(separator)>0) {
			splitted_href = (window.location.href).split(separator);
			splitted_href[splitted_href.length - 1] = url_params.join("&");
			window.location.href = splitted_href.join(separator);
		} else {
			window.location.href += separator+url_params.join("&");
		}
	}
	
	function getUrlParams(params, separator)
	{
		var param_return = {};
		if (window.location.href.search(separator) > 0)
		{
			var parts = (window.location.href).split(separator);
			var query_parts = parts[parts.length - 1].split("&");
			for (var one_query_part in query_parts)
			{
				if(!query_parts.hasOwnProperty(one_query_part))
					continue;
				var one_query_part_params = query_parts[one_query_part].split("=");
				var query_part_param = one_query_part_params[0];
				var query_part_value = one_query_part_params[1];
				if(params.length)
					for (var one_param in params)
					{
						if(!params.hasOwnProperty(one_param))
							continue;
						if(query_part_param == params[one_param])
						{
							param_return[query_part_param] = query_part_value;
							break;
						}
					}
				else
				{
					param_return[query_part_param] = query_part_value;
				}
			}
		}
		return param_return;
	}
	
	function tagger(txtarea, tag)
	{
		if ((clientVer >= 4) && is_ie && is_win)
		{
			var theSelection = document.selection.createRange().text; // Get text selection
			if (theSelection)
			{
				if(tag=="hot_news")
					document.selection.createRange().text = "[<a href=\"one_news.php?type=hot_news&id=" + escape(s2) + "\">" + s2 + "</a>]";
				else if(tag=="pubmed")
					document.selection.createRange().text = "(Pubmed id:<a pubmed href=\"http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=pubmed&cmd=Retrieve&dopt=AbstractPlus&list_uids=" + s2 +"&query_hl=1&itool=pubmed_docsum\">"+ s2 +"</a>)";
				else if(tag=="trials")
					document.selection.createRange().text = "<a href=\"" + s2 + "\">trials</a>";
				else if(tag=="reports")
							document.selection.createRange().text = "<a href=\"" + s2 + "\">company report</a>";

				theSelection = "";
				return;
			}
		}
		else if (txtarea.selectionEnd && ((txtarea.selectionEnd - txtarea.selectionStart) > 0))
		{
			var selLength = txtarea.textLength;
			var selStart = txtarea.selectionStart;
			var selEnd = txtarea.selectionEnd;
			if (selEnd == 1 || selEnd == 2)
				selEnd = selLength;

			var s1 = (txtarea.value).substring(0,selStart);
			var s2 = (txtarea.value).substring(selStart, selEnd)
			var s3 = (txtarea.value).substring(selEnd, selLength);
			if(tag=="hot_news")
				txtarea.value = s1 + "[<a href=\"one_news.php?type=hot_news&id=" + escape(s2) + "\">" + s2 + "</a>]" + s3;
			else if(tag=="pubmed")
				txtarea.value = s1 + "(Pubmed id:<a pubmed href=\"http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=pubmed&cmd=Retrieve&dopt=AbstractPlus&list_uids=" + escape(s2) +"&query_hl=1&itool=pubmed_docsum\">"+ s2 +"</a>)" + s3;
			else if(tag=="trials")
				txtarea.value = s1 + "<a href=\"" + s2 + "\">trials</a>" + s3;
			else if(tag=="reports")
				txtarea.value = s1 + "<a href=\"" + s2 + "\">company report</a>" + s3;
			return;
		}
	}
	
	function fixElementsWidth(tag, width, container)
	{
		container = container?document.getElementById(container):document;
		var elements = container.getElementsByTagName(tag);
		for(var i=0;i<elements.length; i++)
			if(elements[i].clientWidth>width)
				elements[i].style.width = width+"px";
	}
	
	function Security_Question()
	{
		var options =
		[
			function(pretext)
			{
				var x1 = Math.ceil(Math.random()*11);
				var x2 = Math.ceil(Math.random()*11);
				var x3 = Math.ceil(Math.random()*11);
				var answer = prompt(pretext+"("+x1+" X "+x2+")"+" + "+x3+" = ?","");
				return answer==(x1*x2)+x3?true:false;
			},
			function(pretext)
			{
				var names = ["mehmet","yasemin","ilter"];
				var answer = prompt(pretext+"Enter the name of a person from the developer team: ", "");
				return answer && names.indexOf(answer.toLowerCase())>-1?true:false;
			},
			function (pretext)
			{
				var capitals = [
					{country: "Turkey", capital: "Ankara"},
					{country: "Italy", capital: "Rome"},
					{country: "Canada", capital: "Ottowa"},
					{country: "Japan", capital: "Tokyo"},
					{country: "Russia", capital: "Moscow"},
					{country: "France", capital: "Paris"},
					{country: "Germany", capital: "Berlin"},
					{country: "Greece", capital: "Athens"},
					{country: "Spain", capital: "Madrid"}
				];
				var index = Math.floor(Math.random()*capitals.length);
				var answer = prompt(pretext+"What is the capital city of " + capitals[index].country+"?", "");
				return answer && answer.match(new RegExp("^"+capitals[index].capital+"$","i"))?true:false;
			}
		];
		var index = Math.floor(Math.random()*options.length);
		return options[index]("Please answer the question below to proceed.\n\n");
	}

