// create Global CCG object
if(typeof CCG === "undefined" || !CCG) {
/*     	console.log("creating CCG namespace/object"); */     
	var CCG = {};
}

/********
 * Omniture Class
 *********/
CCG.omni ={
        omniTrackLink : function(sectionName, linkName) {
            var s=s_gi(s_account);
            s.linkTrackVars= 'prop15,eVar15,pageName,prop3,prop4,prop6,prop20,evar3,evar4,evar6,evar20';
            s.prop15=s.eVar15=linkName;
            s.tl(this, 'o', sectionName);
        }       
}

// handy urlEncoder 
function urlEncode(inStr) {
	inStr = new String(inStr);
	outStr=' '; //not '' for a NS bug!
	for (i=0; i < inStr.length; i++) {
		aChar=inStr.substring (i, i+1);
		switch(aChar){
case '%': outStr += "%25"; break; case ',': outStr += "%2C"; break;
case '/': outStr += "%2F"; break; case ':': outStr += "%3A"; break;
case '~': outStr += "%7E"; break; case '!': outStr += "%21"; break;
case '"': outStr += "%22"; break; case '#': outStr += "%23"; break;
case '$': outStr += "%24"; break; case "'": outStr += "%27"; break;
case '`': outStr += "%60"; break; case '^': outStr += "%5E"; break;
case '&': outStr += "%26"; break; case '(': outStr += "%28"; break;
case ')': outStr += "%29"; break; case '+': outStr += "%2B"; break;
case '{': outStr += "%7B"; break; case '|': outStr += "%7C"; break;
case '}': outStr += "%7D"; break; case ';': outStr += "%3B"; break;
case '<': outStr += "%3C"; break; case '=': outStr += "%3D"; break;
case '>': outStr += "%3E"; break; case '?': outStr += "%3F"; break;
case '[': outStr += "%5B"; break; case '\\': outStr += "%5C"; break;
case ']': outStr += "%5D"; break; case ' ': outStr += "+"; break;
default: outStr += aChar;
		}
}
return outStr.substring(1, outStr.length);
}


// allows a search with radio buttons. this function is CCG specific, other network includes have diff site values
function multiSiteSearchSubmit(form) {
	qry = urlEncode(form.query.value);
	if (qry=="") { alert('Please type in your search query.'); return; } // check for empty strings 
		redir = "";
	if (form.domain[0].checked) { // assumes global WebSearch is listed first
		redir = "http://seach.cheatscodesguides.com/web?query=" + qry;
	} else if (form.domain[1].checked) { // assumes site search is second
		redir = "http://search.cheatscodesguides.com/product?query=" + qry;
	}
	gotoval = redir;
	if (gotoval != "") { document.location=gotoval; }
	return false;
}

function indexPageSearchSubmit(form){
	qry = urlEncode(form.query.value);
	if (qry=="") { alert('Please type in your search query.'); return; } // check for empty strings 
	redir = "/product?query=" + qry;
	gotoval = redir;
	if (gotoval != "") { document.location=gotoval; }
	return false;
}

// onclick linktracker that uses ata
function ccg_trackclick(aid) {
	var now      = new Date();
	var random   = now.getTime();
	var ref 	 = "&r=" + escape(document.location);
		ref      = ref.split('/').join('%2F');
		ref      = ref.split('.').join('%2E');
		ref      = ref.split('%').join('$');		
	var origin = document.location.toString().substring(7); /* convert location to string, trim http:// */
		origin = origin.substring(0,origin.indexOf('/')); /* pull subdomain only */
		aid = aid + "-" + origin;
	var lnk      = "&p=http://www.ignlinktrack.com/" + aid;
		lnk      = lnk.split('/').join('%2F');
		lnk      = lnk.split('.').join('%2E');
		lnk      = lnk.split('%').join('$');
        i = new Image();
        i.src  = "http://atax.cheatscodesguides.com/network=cheatscodesguides&size=1x1" + lnk + ref + "&name=ATAtracker?"+ random + "\" height=\"1\" width=\"1\" style=\"position: absolute; visibility: hidden";
}

function trim(TRIM_VALUE){
	if(TRIM_VALUE.length < 1){ return""; }
	TRIM_VALUE = RTrim(TRIM_VALUE);
    TRIM_VALUE = LTrim(TRIM_VALUE);
    if(TRIM_VALUE==""){
		return "";
	}else{
    	return TRIM_VALUE;
    }
}

function RTrim(VALUE){
	var w_space = String.fromCharCode(32);
	var v_length = VALUE.length;
	var strTemp = "";
	if(v_length < 0){ return""; }
	var iTemp = v_length -1;
    while(iTemp > -1){
    	if(VALUE.charAt(iTemp) == w_space){}else{
        	strTemp = VALUE.substring(0,iTemp +1);
        	break;
		}
        iTemp = iTemp-1;
	}
	return strTemp;
}

function LTrim(VALUE){
	var w_space = String.fromCharCode(32);
	if(v_length < 1){ return""; }
	var v_length = VALUE.length;
    var strTemp = "";
    var iTemp = 0;
    while(iTemp < v_length){
		if(VALUE.charAt(iTemp) == w_space){} else{
        	strTemp = VALUE.substring(iTemp,v_length);
            break;
		}
        iTemp = iTemp + 1;
	}
    return strTemp;
} 

function checkBeforeSubmit() {        
	if (trim(document.searchForm.query.value) == "" || trim(document.searchForm.query.value) == "Game or Entertainment"){
		alert ("Search query is empty.");
    	document.searchForm.query.value = "";
        document.searchForm.query.focus();
        return false;
	}
    return true;
}

function submitButtonClicked() {
	if (checkBeforeSubmit()) {
    	document.searchForm.submit();
    }
}

// added to cacth the error by including a GPM include, we can't get the alerts from the ign cookie anyway, so return false
function checkWatch(){
	return false;
}

//function to decode html entities
function htmlDecode(input){
  var e = document.createElement('div');
  e.innerHTML = input;
  return e.childNodes[0].nodeValue;
}

//function to return proper string for display in autocomplete
//code dropdown
function getAutocompleteText(text){
	switch(text){
		case "Xbox 360":return "X360";break;
		case "PlayStation 3":return "PS3";break;
		case "Nintendo Wii":return "Wii";break;
		case "PlayStation Portable":return "PSP";break;
		case "Nintendo DS":return "DS";break;
		case "Nintendo 64":return "N64";break;
		case "PlayStation 2":return "PS2";break;
		case "TVSeries":return "TV Series";break;
		case "TVSeason":return "TV Season";break;
		case "TVEpisode":return "TV Episode";break;
		case "Nintendo DS":return "DS";break;
		case "StarCharacter":return "Star Character";break;
		case "umd":return "UMD";break;
		case "": return " "; break;
		default: return text;
	}
}

jQuery(document).ready(function() {
			
	jQuery("#searchTextBox").autocomplete(
		'http://search-api.ign.com/solr/ign.media.object/select/?wt=json&json.wrf=?&qt=dismax&fq=type_id:11+AND+cheatID:[1 TO *]', {
			dataType: "jsonp",
			width: 376,
			selectFirst: false,
			extraParams: {rows: 5, df: "title"},
			minChars: 1,
			parse: function(data) {
				var blah = jQuery.map(data.response.docs, function(document) {
					var plat;
					if(typeof document.platformName!="undefined"){
						plat = getAutocompleteText(document.platformName[0]);
					}
					else {
						plat = " ";
					}
					var obj;
					if(typeof document.objectType!="undefined"){
						obj = getAutocompleteText(document.objectType[0]);
					}
					else {
						obj = " ";
					}
					var objurl;
					if(typeof document.urlDisplayName!="undefined"){
						if(document.urlDisplayName[0]!=""){
							objurl = document.urlDisplayName[0];
						}
						else {
							objurl = " ";
						}
					}
					else {
						objurl = " ";
					}
					var queryItem = {
						title: htmlDecode(document.title[0]),
						platform: plat,
						object: obj,
						url:objurl
					};
					return { data: queryItem,
						value: 'yo',
						result: document.title[0]
					}
				});
				return blah;
			},
			formatItem: function(doc,row) {
				doc.item = "search_autocomplete_0"+row;+"_lnk";
				return "<div class='ac_itemTitle'>"+doc.title+"</div><div class='ac_itemInfo'>"+doc.platform+"</div>";			
			}
	}).result(function(event,doc){
		CCG.omni.omniTrackLink('header_autocomplete', doc.item);
		var p = doc.platform;
		p = p.toLowerCase();
		var platUrl = p.replace(" ", "-");
		location.href = "http://www.cheatscodesguides.com/"+platUrl+"-cheats/"+doc.url;

	});
});
