   var groupsCount = 1;   
   
   var locale="english";
   
   var combinations;  
   var words=[];
   var wordlangs = {};
   var index=0; 
   
   
   var extensions = [".com",".net",".org",".biz",".info",".us",".co.uk",".ca",
					".fr",".de",".es",".ru",".io",".at",".asia",".name"];
   
   


   groupsChange = function(){ 
	var elem=null;
	this.group_data=[];
	this.group_word_placement_data=null;
	var groupElements=[];
	var wordsList=$("wordsList").childNodes; 
	for(var i=0;i<wordsList.length;i++){
		var div=wordsList[i];
		if(div.id&&div.id.match(/^group_/)!==null){
			elem=div;
			if(groupElements.length>0){
				this.group_data.push(groupElements);
			} 
			groupElements=[];
		}else{
			if(elem===null){
				div.style.paddingLeft="";
			}else{
				div.style.paddingLeft="20px";
			}
			if(div.id&&elem!==null){
			groupElements.push(div.id.replace(/^word_/,""));
			var _ed=this.groups_hash[(elem.id+"").replace(/^group_/,"")];
			if(_ed){
				var _ee=["first","middle","last"];
				for(var g=0;g<_ee.length;g++){
					var _f0=_ee[g];
					if(typeof _ed[_f0+"_word"]!=="undefined"&&_ed[_f0+"_word"]===true){
						this.group_word_placement_data=this.group_word_placement_data||{};
						this.group_word_placement_data[_f0]=this.group_word_placement_data[_f0]||[];
						this.group_word_placement_data[_f0].push((div.id+"").replace(/^word_/,""));
					}
				}
			}
		}
	  }
}
	if(groupElements.length>0){
		this.group_data.push(_e9);
	}
	redoResultsVisibility();
}

  lTrim = function(str){
        var re = /\s*((\S+\s*)*)/;
        return str.replace(re, "$1");
 }

/*create WordList recursively generates an array containing all possible combinations of
	a given words. 
	Initially, wordArray should be empty, strbase should equal "", and remainingchars
	should contain the user's input words array.*/   
	
	catchEvent = function(wordArray, strbase, remainingwords,groupsArr,isGroupAdded){
		
			var html;
			var wordsArray = [];
			var text$group = {};
			var bool = false;
			if (isGroupAdded == true) {
				if(groupsArr.length == 1){
					html = groupsArr[0];
					var htmlArray = html.childNodes;
					for(var i = 1;i <htmlArray.length;i++){						
						var innerHtmls = htmlArray[i];					
						for(var j = 0;j < innerHtmls.childNodes.length;j++){
							var wordsUpper = innerHtmls.childNodes[j];							
							var tdElem = wordsUpper.childNodes[0];
							var textWord = tdElem.innerHTML;
							wordsArray.push(textWord);
						}	
					}
																			
				} else {
					
					html = groupsArr;
					bool = true;
					for(var counter = 0; counter < html.length;counter++){
						var htmlArray = html[counter];		
						var keyid = htmlArray.id;	
													
						for(var i = 1;i <htmlArray.childNodes.length;i++){							
						var innerHtmls = htmlArray.childNodes[i];
						
							for(var j = 0;j < innerHtmls.childNodes.length;j++){
								
								var wordsUpper = innerHtmls.childNodes[j];
								
								var textWord = wordsUpper.childNodes[0].textContent;
								keyid = keyid +"_"+j;
								
								text$group[keyid] = textWord;
								wordsArray.push(textWord);
						}
					}
				  }				  
				}
				
				
		 }
		
			
			//-------------------------- For restricted words ------------------------------------//
			var twoRestricts = document.getElementById("_wrodsTwo");
			var threeRestricts = document.getElementById("_wrodsThree");
			if (twoRestricts.checked == true && threeRestricts.checked == true) {
				var twoWords = this.createWordListForTwo(remainingwords);
				if(isGroupAdded == true){
					twoWords = groupsWordListForTwo(remainingwords,wordsArray,text$group,bool);
				}
				
				var threeWords = this.createWordListForThree(remainingwords);
				if (isGroupAdded == true) {
					threeWords = this.groupsWordListForThree(remainingwords, wordsArray,text$group,bool);
				}
				return twoWords.concat(threeWords);
			}
			else 
				if (twoRestricts.checked == true) {
					//return this.createWordListForTwo(wordArray, strbase, remainingwords);
					if(isGroupAdded == true){
						return groupsWordListForTwo(remainingwords,wordsArray,text$group,bool);
					}
					return this.createWordListForTwo(remainingwords);
				}
				else 
					if (threeRestricts.checked == true) {
						//return this.createWordList(wordArray, strbase, remainingwords);
						if (isGroupAdded == true) {
							return this.groupsWordListForThree(remainingwords, wordsArray,text$group,bool);
						}
						else {
							return this.createWordListForThree(remainingwords);
						}	
					}
					else {
						alert("Please select restricted words count !");
						return [""];
					}
			
		//------------------------------------------------------------------------------------//
		
		
		
	}
	
	
	createWordList = function(wordArray, strbase, remainingwords) {  
		if(remainingwords.length == 1) { //base case: only one character remains, and can be arranged only one way
			wordArray[wordArray.length] = strbase + remainingwords[0]; //append one remaining character to string base
		} else { 
			for(var j = 0; j < remainingwords.length; j++) { 		
				currword = remainingwords[j]; //first character of remaining characters
				currword = lTrim(currword);			
				wordArray = createWordList(wordArray, strbase + remainingwords[j], remainingwords.slice(0, j).concat(remainingwords.slice(j+1, remainingwords.length))); //recursive call			
			}      
		}
		return wordArray; //returns the wordArray containing stbase plus all possible combinations of remainingchars
	}
	groupsWordListForTwo = function(remainingwords,groupedWords,json$arr,bool) {
		
		var wordArray = []; 
		var words = groupedWords;
			if(bool == true){
				for(var i=0; i<remainingwords.length;i++){			
					for (var k = 0; k < groupedWords.length; k++) {				
						if(groupedWords[k] && groupedWords[k] == remainingwords[i]){
							remainingwords[i] = "";
						}
					}				
				}
				
				var arr = [];
				for (var i = 0; i < remainingwords.length; i++) {							
					if (remainingwords[i] != "") {																	
							arr.push(remainingwords[i]);													
					}								
				}
				
				for(var k in json$arr){
					var elem1 = json$arr[k];
					for(var c in json$arr){
						var elem2 = json$arr[c];																	
							var firstKey = k.substring(k.indexOf("_")+1,k.indexOf("_")+2);
							var secondKey = c.substring(c.indexOf("_")+1,c.indexOf("_")+2);
							if(firstKey != secondKey){								
								wordArray.push(elem1 + elem2);															
							} 													
					 }
				}
				
				for(var k in json$arr){					
					var elem1 = json$arr[k];
					for(var i = 0;i < arr.length;i++){						
						var elem2 = arr[i];						
							wordArray.push(elem1 + elem2);
						    wordArray.push(elem2 + elem1);
						
					}
					
				}
				
					for(var l = 0;l < arr.length;l++){										
						for (var t = 0; t < arr.length; t++) {							
							if (l!=t) {
								var vals = arr[l] + arr[t];															
								wordArray.push(vals);								
							}																													
						}
					}
					
					
				
			} else {	
				for(var i=0; i<remainingwords.length;i++){			
					for (var k = 0; k < groupedWords.length; k++) {				
						if(groupedWords[k] && groupedWords[k] == remainingwords[i]){
							remainingwords[i] = "";
						}
					}				
				}
				
				var arr = [];
				for (var i = 0; i < remainingwords.length; i++) {							
					if (remainingwords[i] != "") {																	
							arr.push(remainingwords[i]);													
					}								
				}
				for(var j = 0;j < arr.length;j++){
					var elem2 = arr[j];
				  for(var i = 0;i < groupedWords.length;i++){
					var elem1 = groupedWords[i];																	
							wordArray.push(elem1 + elem2);
							wordArray.push(elem2 + elem1);
							
					}
				}
				
				for(var i = 0;i < arr.length;i++){
					for(var j = 0;j < arr.length;j++){
						if(i != j){
							var str = arr[i] + arr[j];
							wordArray.push(str);
						}
					}
				}
						
		}
		
		wordArray = this.addPrefixSuffix(wordArray);			
		wordArray = appendExtensions(wordArray);
		return wordArray; //returns the wordArray containing stbase plus all possible combinations of remainingchars
	}
	
	groupsWordListForThree = function(remainingwords,groupedWords,json$arr,bool) {
		
		
		var wordArray = []; 
		var words = groupedWords;
		
			if(bool == true){
				
				for(var i=0; i<remainingwords.length;i++){			
					for (var k = 0; k < groupedWords.length; k++) {				
						if(groupedWords[k] && groupedWords[k] == remainingwords[i]){
							remainingwords[i] = "";
						}
					}				
				}
				
				var arr = [];
				for (var i = 0; i < remainingwords.length; i++) {							
					if (remainingwords[i] != "") {																	
							arr.push(remainingwords[i]);													
					}								
				}
				
				for(k in json$arr){
					var elem1 = json$arr[k];					
					for(c in json$arr){						
						var elem2 = json$arr[c];
						var firstKey = k.substring(k.indexOf("_")+1,k.indexOf("_")+2);
						var secondKey = c.substring(c.indexOf("_")+1,c.indexOf("_")+2);
						if(firstKey != secondKey)
						for(x in json$arr){
							var elem3 = json$arr[x];
							var thirdKey = x.substring(x.indexOf("_")+1,x.indexOf("_")+2);
							if(firstKey != thirdKey && secondKey !=  thirdKey){
								
								wordArray.push(elem1 + elem2 + elem3);
								
							} 
						}
					}
				}
				
				for (k in json$arr){
					var elem1 = json$arr[k];
					for(c in json$arr){
						var elem2 = json$arr[c];
						var firstKey = k.substring(k.indexOf("_")+1,k.indexOf("_")+2);
						var secondKey = c.substring(c.indexOf("_")+1,c.indexOf("_")+2);
						for(var i = 0;i < arr.length;i++){
							var elem3 = arr[i];
							if(firstKey != secondKey){
								wordArray.push(elem1 + elem2 + elem3);
								wordArray.push(elem3 + elem2 + elem1);
								wordArray.push(elem1 + elem3 + elem2);
							/*	wordArray.push(elem1 + elem2 + elem3);
								wordArray.push(elem1 + elem2 + elem3);
								wordArray.push(elem1 + elem2 + elem3);*/
							}	
							
						}
					}
				}
				
				
				
			} else {
				for(var i=0; i<remainingwords.length;i++){			
					for (var k = 0; k < groupedWords.length; k++) {				
						if(groupedWords[k] && groupedWords[k] == remainingwords[i]){
							remainingwords[i] = "";
						}
					}				
				}
				
				var arr = [];
				for (var i = 0; i < remainingwords.length; i++) {							
					if (remainingwords[i] != "") {																	
							arr.push(remainingwords[i]);													
					}								
				}
				
		        var arrayLength = arr.length;
		        
		        for (var i = 0; i < groupedWords.length; i++) {
		            var elem1 = groupedWords[i];
		            for (var j = 0; j < arrayLength - 1; j++) {
		                var elem2 = arr[j];
		                for (var k = j + 1; k < arrayLength; k++) {
		                    var elem3 = arr[k];
		                    
		                    wordArray.push(elem1 + elem2 + elem3);
		                    wordArray.push(elem1 + elem3 + elem2);
		                    wordArray.push(elem3 + elem1 + elem2);
		                    wordArray.push(elem2 + elem3 + elem1);
		                    wordArray.push(elem3 + elem2 + elem1);
		                    wordArray.push(elem2 + elem1 + elem3);                    
		                }
		            }
		        }
				for(var i = 0;i < arr.length;i++){
					for(var j = 0;j < arr.length;j++){
						if(i != j)
							for(var k = 0;k < arr.length;k++){
								if(i != k && j != k){
									var str = arr[i] + arr[j] + arr[k];
									wordArray.push(str);
								}
							}
					}
				}				
		}
		wordArray = this.addPrefixSuffix(wordArray);
		wordArray = appendExtensions(wordArray);
		return wordArray; //returns the wordArray containing stbase plus all possible combinations of remainingchars
	}
	
	______createWordListForTwo = function(wordArray, strbase, remainingwords) {  
		if(remainingwords.length == 1) { //base case: only one character remains, and can be arranged only one way
			wordArray[wordArray.length] = strbase + remainingwords[0]; //append one remaining character to string base
		} else { 
			for(var j = 0; j < remainingwords.length; j++) { 		
				currword = remainingwords[j]; //first character of remaining characters
				currword = lTrim(currword);						
				wordArray = createWordList(wordArray, strbase, remainingwords.slice(0, j).concat(remainingwords.slice(j+1, remainingwords.length))); //recursive call
			}      
		}  
		return wordArray; //returns the wordArray containing stbase plus all possible combinations of remainingchars
	}

 
  addWords = function(particularword,wordlocale){      
	var locale = this.locale;
	if(wordlocale)
		locale = wordlocale;

	index=0;
	var wordsStr = particularword;
	if(!particularword)
		wordsStr = document.getElementById("inputNameId").value;	 
		
	wordsStr = wordsStr.toLowerCase();
	if(locale=="english")
	wordsStr = wordsStr.replace(/[^0-9a-z\-]/g," ");
	var newWords = wordsStr.split(" "); 
	//words = words.concat(newWords);
	
	
	var newArray = [];
	
	for(var j=0;j<newWords.length;j++){
		var aword = newWords[j];
		
		if(aword=="")
			continue;
		
		var translit = aword;
		if(locale!="english"){
			translitArray = transliterator.transliterate(aword, locale, 1);
			translit = translitArray[0];
		}
		
		if(!translit || translit=="")
			continue;
		
		var wordsString = "#"+words.join("#")+"#";
		if(wordsString.indexOf("#"+translit+"#")==-1){
			words.push(translit);
			wordlangs[translit]=locale;
			newArray.push(aword);
		}	
	}
	
	newWords = newArray;
	
	var tableElem = document.createElement("TABLE");
	tableElem.setAttribute("cellspacing", "0");
	tableElem.setAttribute("cellpadding", "1");
	var tbodyElem = document.createElement("TBODY");
	tableElem.vAlign="top";	
	var counter = 0;
	var availableParentList = document.getElementById("availableResultList");
	
	if(newWords.length==0)
		return;
	
	for(var i = 0; i < newWords.length; i++){
	
		var wordsListElem = document.getElementById("wordsList");
	 	var idGenere = newWords[i];
		var untranslated = idGenere;
		if(locale!="english"){
			translitArray = transliterator.transliterate(idGenere, locale, 1);
			idGenere = translitArray[0];
		}	
		//words.push(idGenere);
		//wordlangs[idGenere]=locale;
		var trElem = document.createElement("TR");
			trElem.id = idGenere+"_row";
		var tdElem = document.createElement("TD");
		var tdImageElem = document.createElement("TD");
		var tdLinkElem = document.createElement("TD");
		var wordElem = document.createElement("SPAN");
		var imageOne = document.createElement("IMG");
		var addImage = document.createElement("IMG");
			addImage.id = "imger"+idGenere;
			addImage.src = "http://img.aptdomain.name/images/add.gif";
			addImage.onclick = function(addImage,trElem){addItemToGroup(addImage,trElem);}
//-----------------------------------------------------------------------------------------------//		
		var spanElem = document.getElementById("spanchik");
		if(spanElem){
		      // spanElem.style.display = "none";
		//	spanElem.innerHTML = "";
			
		}
		else{
		var spanElem = document.createElement("SPAN");
			spanElem.id = "spanchik";
			spanElem.style.zIndex = "900";
			spanElem.style.width = "200px";
			spanElem.style.height = "200px";
			spanElem.style.border = "5px";
			spanElem.style.borderColor = "#B4B4B4";
			spanElem.style.border = "1px solid #F0F2D5";
			spanElem.style.backgroundColor = "#E8F4F8";
			spanElem.style.overflow = "auto";
			spanElem.style.display = "none";
			spanElem.style.position = "absolute";
			spanElem.style.top = "250px"
			spanElem.style.left = "640px"
			
			document.body.appendChild(spanElem);
		}
//-----------------------------------------------------------------------------------------------//	
		var groupsElem = document.getElementById("groupsSpanner");
		if(groupsElem){
			groupsElem.style.display = "none";
			groupsElem.innerHTML = "";
		}
		else{
		var groupsElem = document.createElement("SPAN");
			groupsElem.id = "spanchik";
			groupsElem.style.zIndex = "900";
			groupsElem.style.width = "200px";
			groupsElem.style.height = "200px";
			groupsElem.style.border = "5px";
			groupsElem.style.borderColor = "#B4B4B4";
			groupsElem.style.border = "1px solid #F0F2D5";
			groupsElem.style.backgroundColor = "#C2D9FF";
			//groupsElem.style.overflow = "auto";
			groupsElem.style.display = "none";
			groupsElem.style.position = "absolute";
			//groupsElem.style.top = "250px"
			//groupsElem.style.left = "540px"
			
			document.body.appendChild(groupsElem);
		}
//-----------------------------------------------------------------------------------------------//							
		//var imageTwo = document.createElement("IMG");
		var imageTwo = document.createElement("A");
			imageOne.src = "http://img.aptdomain.name/images/delete.png";
			imageOne.id = idGenere;					
			imageOne.onclick = function(imageOne){
				var _self = this;
				removeNames(availableParentList,wordsListElem, counter,_self)
				};
			imageTwo.style.cursor = "pointer";
			imageTwo.style.fontFamily = "Tahoma";
			imageTwo.style.fontSize = "12px";
			imageTwo.style.color = "#2B67A4";
			imageTwo.id = idGenere+"_1";	
			imageTwo.name = untranslated;	
			imageTwo.innerHTML = "Synonyms";
			//imageTwo.onclick = function(imageTwo){showDivContent(imageTwo,words, counter)};			
			//spanElem.onblur = function(){removeDivContent(availableParentList,wordsListElem, counter)};
			//spanElem.onmouseover = function(){
				//onmouseoutFor(availableParentList, wordsListElem, counter)
			//};
			
			//imageTwo.src = "images/MoreBold.png";
			tdImageElem.align="right";
			tdImageElem.width="100%";
			//tdImageElem.appendChild(addImage);
			tdImageElem.appendChild(imageOne);
			tdLinkElem.appendChild(imageTwo);
			
		
			tbodyElem.appendChild(trElem);
			trElem.appendChild(tdElem);
			trElem.appendChild(tdImageElem);
			trElem.appendChild(tdLinkElem);
			  
			
			wordElem.id="word_"+idGenere;
			
			wordElem.title=idGenere;
			
			langletter = locale.substring(0,2).toUpperCase();
			
			wordElem.innerHTML = "<div style='width: 150px; overflow-x: hidden;'>("+langletter+")&nbsp;"+untranslated+"</div>";//newWords[i];
			
			
			tdElem.appendChild(wordElem);     					
			tableElem.appendChild(tbodyElem);
			wordsListElem.appendChild(tableElem);
			
			imageTwo.href = "javascript: void 0";
			imageTwo.onclick = function(imageTwo){	
					var _self = this;					
				showDivContent(_self,words,counter);
			
			}
			
			
	} 
	var rlistElem = document.getElementById("availableResultList");
	//rlistElem.innerHTML="";
	addCombinations(words);    
	//startDragAndDrop();
	//testPrintWordList(createWordList(new Array(), "", words)); //calculate and then print all combinations of the letters provided
 }    
 
 addItemToGroup = function(target,trElem){
		var list = document.getElementById("wordsList");
		var objArray = list.childNodes;
		
		/*var closeDiv = document.createElement("DIV");
		var tableElem = document.createElement("TABLE");
		var imgElem = document.createElement("IMG");
			imgElem.src = "http://img.aptdomain.name/images/close1.png"
		closeDiv.appendChild(imgElem);*/
		
		var html = [];
		html.push("<div><table width='100%'><tr><td>Available Groups</td><td width='20px' align='right'><img onclick='closeGroupsPopUp();' src='images/close1.png'></img></td></tr></table> </div>")
		html.push("<hr/>");
		html = html.join("");
			
		var spanElem = document.createElement("SPAN");
			spanElem.id = "groupsSpanner";
			spanElem.style.zIndex = "900";
			spanElem.style.width = "250px";
			spanElem.style.height = "300px";
			spanElem.style.border = "5px";
			spanElem.style.borderColor = "#B4B4B4";
			spanElem.style.border = "1px solid #F0F2D5";
			spanElem.style.backgroundColor = "#E8F4F8";
			spanElem.style.overflow = "auto";
			spanElem.style.display = "none";
			spanElem.style.position = "absolute";
			spanElem.style.top = "250px";
			spanElem.style.left = "590px";
			spanElem.innerHTML = html;
			document.body.appendChild(spanElem);
			
			
			
			document.getElementById("groupsSpanner").style.display = "block";
		
		for (var i = 0; i < objArray.length; i++) {						
				if (objArray[i].id && objArray[i].id.indexOf("group") != -1) {
					spanElem.innerHTML += "<div style=\"cursor:pointer;color:red\" onclick='addItemToTheSelectedGroup("+target.target.id+","+i+")' id='innerG_'"+i+">" + objArray[i].firstChild.nodeValue +"</div>"; 
				}						
			}	
		
 }
 addItemToTheSelectedGroup = function(target,currGroupId){
 	
 	currGroupId = currGroupId;
	var innerElem = target;
	var imgElem = innerElem.parentNode;	
	var movableElem = innerElem.parentNode.parentNode;
	
	var parent = movableElem.parentNode;
	var groupContainer = document.getElementById("tablecho_"+currGroupId);
	var spaner = document.createElement("SPAN");
	spaner.innerHTML = movableElem.childNodes[0].textContent;
	
	var html = [];	
	
	if(groupContainer.childNodes.length > 0)
		for(var i = 0;i < groupContainer.childNodes.length;i++){
			if(groupContainer.childNodes[i].id.indexOf(movableElem.childNodes[0].textContent) != -1){
				alert("You have already added this item to the Group");
				document.getElementById("groupsSpanner").style.display = "none";
				return;				
			}
		}
	
	var tableElem = document.createElement("TABLE");
	tableElem.style.paddingBottom = "0px";
	tableElem.style.paddingTop = "0px";
	var emptyTrElem = document.createElement("TR");
	var contentTrElem = document.createElement("TR");
	contentTrElem.id = movableElem.childNodes[0].textContent+"_row";
	var emptyTdElem = document.createElement("TD");
	var fullTdElemText = document.createElement("TD");
	var fullTdElemImg = document.createElement("TD");
	
	emptyTrElem.appendChild(emptyTdElem);
	//tableElem.appendChild(emptyTrElem);
	emptyTrElem.appendChild(emptyTdElem);
	fullTdElemText.innerHTML = movableElem.childNodes[0].textContent;
	fullTdElemImg.appendChild(imgElem);
	fullTdElemImg.align = "right";
	fullTdElemImg.width = "100%";
	contentTrElem.appendChild(fullTdElemText);
	contentTrElem.appendChild(fullTdElemImg);
	tableElem.appendChild(contentTrElem);
	//groupContainer.appendChild(emptyTrElem);	
		groupContainer.appendChild(contentTrElem);
	
	
	//movableElem.style.display = "none";
	movableElem.parentNode.removeChild(movableElem);
	document.getElementById("groupsSpanner").style.display = "none";
 }

  addGroup = function(){
	var wordsListElem = document.getElementById("wordsList");
 			
	    var wordElem = document.createElement("DIV"); 
		var tableElem = document.createElement("TABLE");
		tableElem.id="tablecho_"+groupsCount;
		wordElem.style.height = "110px";  
		wordElem.id="group_"+groupsCount;
		wordElem.title="Group " + groupsCount + " : ";
		wordElem.className="group";
		wordElem.innerHTML = "Group " + groupsCount + " : ";     
					
		wordsListElem.appendChild(wordElem);
		wordElem.appendChild(tableElem);
		groupsCount++;
} 

  addCombinations = function(words){
  	var wordsList = document.getElementById("wordsList");
	var groupsParentContainer = wordsList.childNodes;
	var html = [];
	var isGroupAdded = false;
	for(var i = 0;i < groupsParentContainer.length;i++){
		if(groupsParentContainer[i].id && groupsParentContainer[i].id.indexOf("group") != -1){
			html.push(groupsParentContainer[i]);
			isGroupAdded = true;
		}	
	}
	
	combinations = this.catchEvent(new Array(), "", words,html,isGroupAdded);	 
	
	if(combinations.length>0){
		
		document.getElementById('myspan').innerHTML = '<img src="images/loading.gif">';
		
		var first = combinations[0];
		var urlsuffix=""
		
		/*if(locale!="english"){
			translitArray = transliterator.transliterate(first, locale, 1);
			first = translitArray[0];
			urlsuffix = "&locale="+locale;
		}*/
		var precise = "0";
		if(document.getElementById("_precise_search").checked)
			precise = "1";
		
		makeRequest('get.jsp', "?domainname="+first+"&action=combine"+urlsuffix+"&precise="+precise);
	}
	
}


appendDomainName = function(combName){
	
	var availableResultList = document.getElementById("availableResultList");
	 
	var nameElem = document.createElement("DIV"); 
		combName = escape(combName);
		if(combName.indexOf("%0A%0A%0A%09%0A%0A") != -1){
			combName = combName.substring(combName.indexOf("%0A%0A%0A%09%0A%0A")+18);	
		}
		if(combName.indexOf("%0A%0A") != -1){
			combName = combName.substring(0,combName.indexOf("%0A%0A"));
		}
		
		nameElem.id="word_"+combName;
		//nameElem.title=combName;
		nameElem.className = "wordDiv";
		var domainnametext = combName;
		
		//if(combName.length>21)
			//combName = combName.substring(0,19) + "...";
			

		domainnametext = domainnametext.replace(/ /g,"");
		domainnametext = escape(domainnametext);

		var kghmindr = domainnametext.indexOf("%09");

		if(kghmindr>=0){
			domainnametext = domainnametext.substring(kghmindr+3);
		}
		//domainnametext = unescape(domainnametext);	
		//	alert(domainnametext);
		combName = "<div style='width:190px; font-family:Verdana; font-size:14px'>"+combName+"</div>";
		
		//domainnametext = domainnametext.substring(domainnametext.indexOf(">")+1,domainnametext.indexOf("</"));
		
		var elemText = "<table width='100%'><tr><td title='"+domainnametext+"'>"+combName+"</td><td align='right'><input type='image' src='images/BuyIcon.png' onclick='javascript:buy(\""+domainnametext+"\")' /></td></tr></table>"

		nameElem.innerHTML = elemText;  		
		availableResultList.appendChild(nameElem);
	 	document.all.inputNameId.focus();
		
	
} 

    
//---------------------------------- Manipulation functions for Domain Names ---------------------------//
	removeNames = function(elemArray,elem, counter,imgElem){	
		//var target;
			//if(imgElem.target){
			//	target = imgElem.target;
			//} else if(imgElem.srcElement){
			//	target = imgElem.srcElement;
			//}
			
			//target = imgElem;
		var availableResultList = elemArray.childNodes;
		var wordsList = elem.childNodes[0].childNodes;
		var wordsListTbl = elem.childNodes[0].childNodes;
		var LENGTH_AV = availableResultList.length;
		var LENGTH_WR = wordsList.length;		
		var counter1 = LENGTH_AV;
		var deleteCounter = 0;
		var arr = [];
		
		
		
		for (var i = 0; i < LENGTH_AV; i++) {
		
			if (availableResultList[i] && availableResultList[i].nodeName != "#text") {				
				if (availableResultList[i].innerHTML.indexOf(imgElem.id) != -1) {
					/** TODO-Change to removeChild, currently having issues with implementation, ask Armen*/
					//elemArray.removeChild(elemArray.childNodes[i]);
					elemArray.childNodes[i].style.display = "none";
					
				}
			}									
		}
		
		for(var j = 0;j < words.length;j++){
			if(imgElem.id.indexOf(words[j]) != -1){
				words[j] = "";
				words.splice(j,1);
			}
		}
		
		if(document.getElementById(imgElem.id+"_row"))		
			document.getElementById(imgElem.id+"_row").style.display = "none";
	}
	
	showDivContent = function(word){
				
			/*var target;
			if(word.target){
				target = word.target;
			} else if(word.srcElement){
				target = word.srcElement;
			}*/
			
			var itemId = word.id;
			
			if(itemId.indexOf("_") != -1){
				itemId = itemId.substring(0,itemId.indexOf("_"));
			}
				/*document.getElementById(itemId+'_row').style.backgroundColor = "#C2D9FF";
				document.getElementById('word_'+itemId).style.color = "#0054A4";
				document.getElementById('word_'+itemId).style.fontWeight = "bold";*/
				document.getElementById('spanchik').style.top = getRealTop(word.id)+7;
				document.getElementById('spanchik').style.left = getRealLeft(word.id)+57;
			
			var wordlocale = wordlangs[itemId];
			document.getElementById("spanchik").style.display = "block";
			makeSynonimsRequest("get.jsp", "?domainname="+combinations[0]+"&action=getsynonyms&word="+ encodeURIComponent(encodeURIComponent(word.name))+"&locale="+wordlocale, wordlocale);
	}
	onmouseoutFor = function(){
		document.getElementById("spanchik").onmouseout = removeDivContent; 
	}
	removeDivContent = function(){
		
		if (document.getElementById("spanchik").style.display != "none") {			
			document.getElementById("spanchik").style.display = "none";
			//document.body.removeChild(document.getElementById("spanchik"));
		}	
		
	}
	
	getSelectedItem = function(arr,selected,wordlocale){
		
		//removeDivContent();
		
		arr = unescape(arr);
		var resultSet = eval('('+arr+')');
		var parentElem = document.getElementById("wordsList");		
		for(var i = 0;i < resultSet.length;i++){
			if(selected.id == resultSet[i]){
				var idGenere = resultSet[i];
				addWords(idGenere, wordlocale);
				return;
			}
		}
	}
	

	changeLocale = function(item){
		locale = item.value;
	}
/** ---------------------- Can be used -----------------------	
	addPrefix = function(wordArray){
		var selected = document.getElementsByName("preffer");		
		var bool = false;
		var arr = [];
		  for(var counter = 0; counter < selected.length;counter++){
		  	if (selected[counter].checked == true) {
				bool = true;
			}
		  }	
		  if (bool == true) {
		  	for (var i = 0; i < selected.length; i++) {
		  		if (selected[i].checked == true) {
		  			for (var j = 0; j < wordArray.length; j++) {
		  				var template = selected[i].value + wordArray[j];
		  				arr.push(template);
		  			}
		  		}		  		
		  	}
		  } else {
		  	arr = wordArray;
		  }
		return arr;
	}
	*/
/** ---------------------- Can be used -----------------------	
	addSuffix = function(wordArray){
		var selected = document.getElementsByName("suffer");		
		var bool = false;
		var arr = [];
		  for(var counter = 0; counter < selected.length;counter++){
		  	if (selected[counter].checked == true) {
				bool = true;
			}
		  }	
		  if (bool == true) {
		  	for (var i = 0; i < selected.length; i++) {
		  		if (selected[i].checked == true) {
		  			for (var j = 0; j < wordArray.length; j++) {
		  				var template = wordArray[j] + selected[i].value;
		  				arr.push(template);
		  			}
		  		}		  		
		  	}
		  } else {
		  	arr = wordArray;
		  }
		return arr;
	}
	*/
	addPrefixSuffix = function(wordArray){
		var selectedSuffer = document.getElementsByName("suffer");	
		var selectedPrefix = document.getElementsByName("preffer");	
		var boolPrefix = false;
		var boolSuffix = false;
		var bufferedArray = wordArray;
		var arrPref = [];
		var arrSuff = [];
		var arr = [];
		
		
		
		//-------------------------- checks for selected options(true/false) -------------//
		 for(var counter = 0; counter < selectedPrefix.length;counter++){
		  	if (selectedPrefix[counter].checked == true) {
				boolPrefix = true;
			}
		  }	
		 for(var counter = 0; counter < selectedSuffer.length;counter++){
		  	if (selectedSuffer[counter].checked == true) {
				boolSuffix = true;
			}
		  }
		//----------------------------------------------------------------------//  
		
		//-------------------------- Combines for Prefixes ---------------------//
		  if (boolPrefix == true) {
		  	for (var i = 0; i < selectedPrefix.length; i++) {
		  		if (selectedPrefix[i].checked == true) {
		  			for (var j = 0; j < wordArray.length; j++) {
		  				var template = selectedPrefix[i].value + wordArray[j];
		  				arrPref.push(template);
		  			}
		  		}		  		
		  	}
		  } 
		 //------------------------- Combines for Suffixes -----------------------------// 
		  if (boolSuffix == true) {
		  	for (var i = 0; i < selectedSuffer.length; i++) {
		  		if (selectedSuffer[i].checked == true) {
		  			for (var j = 0; j < wordArray.length; j++) {
		  				var template = wordArray[j] + selectedSuffer[i].value;
		  				arrSuff.push(template);
		  			}
		  		}		  		
		  	}
		  }
		 //-----------------------------------------------------------------------------//  
		  if(!boolSuffix && !boolPrefix){
		  	arr = wordArray;			
			return arr;
		  }
		  //----------------------------- Overall combining ----------------------------//
		  arr = arrSuff.concat(arrPref);
		  arr = arr.concat(bufferedArray);
		  //----------------------------------------------------------------------------//
		  
		  	 
		return arr;
	}
	
	generateWithOptions = function(){
		
		for (var i=0; i<activeRequests.length;i++){
			activeRequests[i].abort();
		}
		
		activeRequests = [];
		
		index=0;
		var availableResults = document.getElementById("availableResultList");		
		availableResults.innerHTML = "";	
		addCombinations(words);										
	}
	
	createWordListForTwo = function(remainingwords) {
		var wordArray = []; 

		for(var i=0; i<remainingwords.length;i++){
			for(var j=0;j<remainingwords.length;j++){
				if(i!=j){
					var str = remainingwords[i]+remainingwords[j];
					
					wordArray.push(str);
					
					if(document.getElementById("_hyphens").checked){
						wordArray.push(remainingwords[i]+"-"+remainingwords[j]);
					}
					
				}
			}
		}
		//wordArray = this.addPrefix(wordArray);
		//wordArray = this.addSuffix(wordArray);
		wordArray = this.addPrefixSuffix(wordArray);
		wordArray = appendExtensions(wordArray);	
				
		for(var l = 0;l < wordArray.length;l++){
			if(document.getElementById("word_"+wordArray[l])){
				wordArray[l] = "";
			}
		}

		var resultArr = [];
		for(var l = 0;l < wordArray.length;l++){
			if(wordArray[l] != ""){
				resultArr.push(wordArray[l]);
			}
		}
		
		return resultArr; //returns the wordArray containing stbase plus all possible combinations of remainingchars
	}
	
	createWordListForThree = function(remainingwords) {
		var wordArray = []; 

		for(var i=0; i<remainingwords.length;i++){
			for(var j=0;j<remainingwords.length;j++){
				if(i!=j)
				for(var k=0;k<remainingwords.length;k++){
					if(j!=k && i!=k){
						var str = remainingwords[i]+remainingwords[j]+remainingwords[k];
						wordArray.push(str);
						
						if(document.getElementById("_hyphens").checked){
						wordArray.push(remainingwords[i]+"-"+remainingwords[j]+"-"+remainingwords[k]);
					}
					}
				}
			}
		}
		//wordArray = this.addPrefix(wordArray);
		//wordArray = this.addSuffix(wordArray);
		wordArray = this.addPrefixSuffix(wordArray);
		wordArray = appendExtensions(wordArray);
		
		for(var l = 0;l < wordArray.length;l++){
			if(document.getElementById("word_"+wordArray[l])){
				wordArray[l] = "";
			}
			
		}
		
		var resultArr = [];
		for(var l = 0;l < wordArray.length;l++){
			if(wordArray[l] != ""){
				resultArr.push(wordArray[l]);
			}
		}

		return resultArr; //returns the wordArray containing stbase plus all possible combinations of remainingchars
	}
	
	
//-----------------------latest additions for demo-----------------------	
	
	submitWords = function(e){
		
   		//if(e){
		//	e = e;
		//} else {
		//	e = window.event;
		//}
		
		var keycode	
		/*if(e.which){
			keycode = e.which;
		} else {
			keycode = e.keyCode;
		}*/

		if (e.keyCode){						
			keycode = e.keyCode;			
		} else
			return false;


		if(keycode == 13) {
		   document.all.addName.focus();			
		   addWords();	
		}
	}
	
	validFocus = function(e)
	{
		a = document.merkkilomake.elements[e]
		a.focus();
	}
	
	loadExtensions = function(obj){
		
		document.getElementById("inputNameId").value="";
		
		var html=[];
		
		html.push("<table  class=\"main\">");
		
		for(var i=0;i<extensions.length;i++){
			
			var checked="";
			
			if(extensions[i]==".com"){
				checked="checked='checked'";
			}
		
		if(i%4==0)
			html.push("<tr>");
		
		
		html.push("<td><input onclick=\"generateWithOptions();\" type=\"checkbox\" "+checked+" name=\"extensions\" value=\""+extensions[i]+"\" id=\"_"+extensions[i]+"_extension\"/></td>");
		html.push("<td class='fonter'><div style='width: 23px;'>"+extensions[i]+"</div></td>");
		
		if((i+1)%4==0 || i==extensions.length)
			html.push("</tr>");			
		}
		
		html.push("</table>");
		
		obj.innerHTML=html.join("\r\n");
								
						
		
	}
	
	
	buy = function(domainnametext){						
		window.open("buy.jsp?buydomain="+domainnametext);
	}
	
	appendExtensions = function(wordArray){
		
		var newWordArray = [];
		var extensions = document.getElementsByName("extensions");
		
		for(var i=0; i<wordArray.length;i++){
			var str = wordArray[i];			
			for(var c=0;c<extensions.length;c++){
				if(extensions[c].checked){
					newWordArray.push(str+extensions[c].value);
				}
			}
		}
		return newWordArray;
	}
	
	closeGroupsPopUp = function(){
		var obj = document.getElementById("groupsSpanner");
		obj.style.display = "none";
	}
	
	resetNames = function(){
		
		for (var i=0; i<activeRequests.length;i++){
			activeRequests[i].abort();
		}
		activeRequests = [];
		
		document.getElementById('myspan').innerHTML = "";
		
		var wordlist = document.getElementById("wordsList");
		var availableResults = document.getElementById("availableResultList");
		wordlist.innerHTML = "";
		availableResults.innerHTML = "";
		document.getElementById("inputNameId").value="";
		words = [];
		index = 0;
		
	}
	
	
	
	
	/*Element positions*/
	
	
	function getRealLeft(el){
xPos = document.getElementById(el).offsetLeft;
tempEl = document.getElementById(el).offsetParent;
while (tempEl != null) {
xPos += tempEl.offsetLeft;
tempEl = tempEl.offsetParent;
}
return xPos;
}

function getRealTop(el){
yPos = document.getElementById(el).offsetTop;
tempEl = document.getElementById(el).offsetParent;
while (tempEl != null) {
yPos += tempEl.offsetTop;
tempEl = tempEl.offsetParent;
}
return yPos;
}

function dispTruePos(isID){
trueX = getRealLeft(isID);
trueY = getRealTop(isID);
//alert('True Xpos is: '+trueX+'\nTrue Ypos is: '+trueY)
}

function resetQuickSearch(){
	
	for (var i=0; i<quickRequests.length;i++){
		quickRequests[i].abort();
	}
	quickRequests = [];
	quickchecks = [];
	
	//debugger;
	
	var tableElem = document.getElementById("results");
	var tbodyElem;
	for(var i=0;i<tableElem.childNodes.length; i++){
		var child = tableElem.childNodes[i];
		if(child.nodeName == "TBODY"){
			tbodyElem=child;
			break;
		}
	}
	
	var firstTr;
	
	for(var j=0;j<tbodyElem.childNodes.length;j++){
		var child = tbodyElem.childNodes[j];
		if(child.nodeName == "TR"){
			firstTr = child.cloneNode(true);
			break;
		}
	}
	
	tbodyElem.innerHTML="";
	tbodyElem.appendChild(firstTr);
	
	document.getElementById("domainnamefield").value="";
}
 
