/******* GLOBALS [BEGIN] *******/
var is_opera = /opera\/9/i.test(navigator.userAgent);
var is_gecko = /gecko/i.test(navigator.userAgent);
var is_ie    = /MSIE/.test(navigator.userAgent);

var exclude_array=['type_5', 'reg_sex', 'reg_rel', 'reg_year', 'reg_mon', 'reg_day', 'reg_searching', 'from_age', 'to_age'];
/******* GLOBALS [END] *******/

function openDiv(id){
	document.getElementById(id).className='open';
}
function closeDiv(id){
	document.getElementById(id).className='close';
}

function $(id){
	return document.getElementById(id);
}

function $E(tagName){
	return document.createElement(tagName);
}

function $R(url){
	document.location = url;
}

function in_array(needle, haystack){
	for(var i=0; i<haystack.length; i++){
		if(haystack[i] == needle){
			return true;
		}
	}
	return false;
}

function show_image(fileName, txt){
	$('pixImg').src=fileName;
	$('pixTxt').innerHTML=txt;
	pixPopup.showMovable();
}

function checkBoxConteroller(checkbox){
	for(i=0; i<checkbox.form.elements.length; i++){
		if(checkbox.form.elements[i].type == "checkbox"){
			checkbox.form.elements[i].checked = checkbox.checked;
		}
	}
}

var Try = new Object({
	these: function() {
		var returnValue;
		for (var i = 0; i < arguments.length; i++) {
			var lambda = arguments[i];
			try {
				returnValue = lambda();
				break;
			} catch (e) {}
		}
		return returnValue;
	}
});

function insertNodeText(node, text, position){
	var textNode = document.createTextNode(text);
	if(!position){
		node.appendChild(textNode);
	}
	else if(position == -1){
		var newElement = node.cloneNode(true);
		removeChilds(node);
		node.appendChild(textNode);
		for(i=0;i<newElement.childNodes.length;i++){
			node.appendChild(newElement.childNodes[i]);
		}
	}
	else if(position == 1){
		removeChilds(node);
		node.appendChild(textNode);
	}
	else{
		return false;
	}

	return node;
}

//function blockScreen(excludeArray){
//	var blocker = document.getElementById("blocker");
//	var selectElements = document.getElementsByTagName("select");
//	if (is_ie){
//		for(i=0; i<selectElements.length; i++){
//			if(!in_array(selectElements[i].id, excludeArray)){
//				selectElements[i].style.visibility = "hidden";
//			}
//		}
//		blocker.style.height = document.body.scrollHeight + "px";
//	}
//	else{
//		blocker.style.height = (window.innerHeight + window.scrollMaxY) + "px";
//	}
//	blocker.style.display = "block";
//}
//
//function unblockScreen(excludeArray){
//	var blocker = document.getElementById("blocker");
//	var selectElements = document.getElementsByTagName("select");
//	if (is_ie){
//		for(i=0; i<selectElements.length; i++){
//			if(!in_array(selectElements[i].id, excludeArray)){
//				selectElements[i].style.visibility = "visible";
//			}
//		}
//	}
//	blocker.style.display = "none";
//}

function formSubmit(formAction, formObj){
	formObj.action = formAction;
	formObj.submit();
}

function confirmSubmit(confirmQuestion, formAction, formObj){
	if(confirm(confirmQuestion)){
		formSubmit(formAction, formObj);
	}
}

function removeChilds(node){
	var child = new Array();
	for(i=0;i<node.childNodes.length;i++){
		child[i] = node.childNodes[i];
	}
	for(var i=0;i<child.length;i++){
		node.removeChild(child[i]);
	}
	return node;
}

function enterListener(DOMEvent) {
	if(is_ie){
		if(window.event && window.event.keyCode == 13){
			window.event.srcElement.form.submit();
		}
	}
	else{
		if(DOMEvent && DOMEvent.keyCode == 13){
			DOMEvent.target.form.submit();
		}
	}
}

function getSelectValue(selObject){
	for(i=0;i<selObject.options.length;i++){
		if(selObject.options[i].selected == true){
			return selObject.options[i].value;
		}
	}
}

function getFormElement (formObj, elementName) {
	var collObjects = formObj.elements;
	for (i=0; i<collObjects.length; i++) {
      if (collObjects[i].name == elementName) {
         return collObjects[i];
      }
   }
   return false;
}

function trim(str){
	return str.replace(/^\s+/, '').replace(/\s+$/, '');
}

function checkSearchBoxes(e){
	if(is_ie){
		var srcElement = window.event.srcElement;
	}
	else{
		var srcElement = e.currentTarget;
	}

	var checkboxes = Array();
	var all_checkbox;
	var j=0;
	for(var i=0; i<srcElement.parentNode.childNodes.length; i++){
		if(srcElement.parentNode.childNodes[i].nodeName.match(/INPUT/ig) && srcElement.parentNode.childNodes[i].type=="checkbox"){
			checkboxes[j] = srcElement.parentNode.childNodes[i];
			if(checkboxes[j].name.match(/.*?_all/ig)){
				all_checkbox = j;
			}
			j++;
		}
	}

	if(srcElement.name.match(/.*?_all/ig)){
		if(srcElement.checked == true){
			for(i=0; i<checkboxes.length; i++){
				if(i == all_checkbox){
					continue;
				}
				checkboxes[i].checked = false;
			}
			return;
		}
	}

	var flag=0;
	for(i=0; i<checkboxes.length; i++){
		if(i == all_checkbox){
			continue;
		}

		if(!checkboxes[i].checked){
			flag = 1;
			break
		}
	}
	if(flag == 1){
		flag = 0;
		for(i=0; i<checkboxes.length; i++){
			if(i == all_checkbox){
				continue;
			}

			if(checkboxes[i].checked){
				flag = 1;
				break
			}
		}
		if(flag == 1){
			checkboxes[all_checkbox].checked = false;
		}
		else{
			checkboxes[all_checkbox].checked = true;
		}
	}
	else{
		checkboxes[all_checkbox].checked = true;
		for(i=0; i<checkboxes.length; i++){
			if(i == all_checkbox){
				checkboxes[i].checked = true;
			}
			else{
				checkboxes[i].checked = false;
			}
		}
	}
}

function setCookie ( name, value, exp_y, exp_m, exp_d, path, domain, secure )
{
	if(getCookie(name)){
		deleteCookie(name);
	}
	var cookie_string = name + "=" + escape ( value );
	if ( exp_y ){
		var expires = new Date ( exp_y, exp_m, exp_d );
		cookie_string += "; expires=" + expires.toGMTString();
	}
	if ( path ){
		cookie_string += "; path=" + escape ( path );
	}
	if ( domain ){
		cookie_string += "; domain=" + escape ( domain );
	}
	if ( secure ){
		cookie_string += "; secure";
	}
	document.cookie = cookie_string;
}

function deleteCookie ( cookie_name )
{
	var cookie_date = new Date ( );  // current date & time
	cookie_date.setTime ( cookie_date.getTime() - 1 );
	document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}

function getCookie ( cookie_name )
{
	var results = document.cookie.match ( cookie_name + '=(.*?)(;|$)' );

	if ( results )
	return ( unescape ( results[1] ) );
	else
	return null;
}

function set_cookie( name, value, expires, path, domain, secure )
{
	var today = new Date();
	today.setTime( today.getTime() );

	if ( expires )
	{
		expires = expires * 1000 * 60 * 60 * 1; // expires zham
	}
	var expires_date = new Date( today.getTime() + (expires) );

	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
	( ( path ) ? ";path=" + path : "" ) +
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}

function check_ages(msg){
	if($('from_age').value.valueOf()>$('to_age').value.valueOf()){
		alert(msg);
		return false;
	}
	return true;
}

function showElement(element){
	if(is_ie){
		element.style.display = "block";
	}
	else{
		if(element.tagName == 'TABLE'){
			element.style.display = "table";
		}
		else if(element.tagName == 'TR'){
			element.style.display = "table-row";
		}
		else if(element.tagName == 'TD'){
			element.style.display = "table-cell";
		}
		else{
			element.style.display = "block";
		}
	}
}

function hideElement(element){
	element.style.display = "none";
}

function advSearch(){
	var img = $('advSearchImgButton');
	var row = $('advSearchCell');
	if(row.style.display == "none"){
		showElement(row);
		img.src = "img/btn/close.gif";
	}
	else{
		hideElement(row);
		img.src = "img/btn/open.gif";
	}
}

function getChilds(selectElement, tBody, tplID, path, eventPath, postVars){
	var wgps = new gps();
	if(getSelectValue(selectElement)){
		wgps.setRequestEvent(function(){showElement($('loadingText'));});
		wgps.setBeforeLoadEvent(function(){hideElement($('loadingText'));});
	}
	wgps.getChilds(selectElement, path, eventPath, postVars, tBody, tplID, wgps.getChilds);
}

function stripChilds(parentElement, excludeArray){
	if(parentElement.hasChildNodes()){
		var rem_arr = new Array();
		for(var i=0; i<parentElement.childNodes.length; i++){
			if(!in_array(parentElement.childNodes[i].nodeName.toLowerCase(), excludeArray)){
				rem_arr[rem_arr.length] = parentElement.childNodes[i];
			}
		}
		for(i=0; i<rem_arr.length; i++){
			parentElement.removeChild(rem_arr[i]);
		}
		for(i=0; i<parentElement.childNodes.length; i++){
			stripChilds(parentElement.childNodes[i], excludeArray);
		}
	}
	return;
}

function chatPopup(path, name, popupWidth, popupHeight){
	var conf = new Object({
		width : popupWidth,
		height : popupHeight,
		screenX : (640 - popupWidth)/2,
		screenY : (480 - popupHeight)/2,
		top : (480 - popupHeight)/2,
		left : (640 - popupWidth)/2,
		toolbar : 'no',
		menubar : 'no',
		status : 'no',
		resizable : 'no'
	});

	if(screen){
		conf.screenY = (screen.availHeight - popupHeight)/2;
		conf.top = (screen.availHeight - popupHeight)/2;
		conf.screenX = (screen.availWidth - popupWidth)/2;
		conf.left = (screen.availWidth - popupWidth)/2;
	}

	if(screen.availWidth > 1800){
		conf.screenX = ((screen.availWidth/2) - popupWidth)/2;
		conf.left = ((screen.availWidth/2) - popupWidth)/2;
	}

	var confString = "";
	for(key in conf){
		confString += key+"="+conf[key]+",";
	}
	confString = confString.substr(0, confString.length-1);

	var newWindow = window.open(path, name, confString);
	if(!newWindow){
		alert(TEXT_POPUP_BLOCKED);
		return false;
	}
	return true;
}
function addError(msg){
	removeChilds($('errorTable'));
	var TR = $E('TR');
	var TD1 = $E('TD');
	var TD2 = $E('TD');
	TD1.className='error';
	insertNodeText(TD1,' ');
	TD2.style.textAlign='left';
	insertNodeText(TD2,msg);
	TR.appendChild(TD1);
	TR.appendChild(TD2);
	$('errorTable').appendChild(TR);
	errorPopup.showMovable();
}
function addInfo(msg){
	removeChilds($('infoTable'));
	var TR = $E('TR');
	var TD1 = $E('TD');
	var TD2 = $E('TD');
	TD1.className='info';
	insertNodeText(TD1,' ');
	TD2.style.textAlign='left';
	insertNodeText(TD2,msg);
	TR.appendChild(TD1);
	TR.appendChild(TD2);
	$('infoTable').appendChild(TR);
	infoPopup.showMovable();
}

function evalFlash(responseXML, ajax){
	var msg = unescape(responseXML.documentElement.firstChild.data).replace(/\+/g, " ");
	var isError=responseXML.documentElement.attributes.getNamedItem("is_error").value;
	if(isError==0){
		addInfo(msg);
	}
	else{
		addError(msg);
	}
	ajax.stopCheck();
}

function doFlash(hisId){
	var ajax = new xAjax("/viewprof/actions/action:doFlash");
	ajax.startCheck();
	ajax.addRequest("hisId="+hisId, evalFlash, ajax);
}

function formSubmitSpecial(form){
	var query = "/";
	
	var page, section;
	if((page = getFormElement(form, "page"))){
		query += page.value + "/";
	}
	if((section = getFormElement(form, "section"))){
		if(page.value != section.value){
			query += section.value + "/";
		}
	}
	
	for(var i=0;i<form.elements.length;i++){
		var elem = form.elements[i];
		var name = form.elements[i].name;
		var value = "";
		
		if(name == "page" || name == "section"){
			continue;
		}
		
		if(elem.nodeName.toLowerCase() == 'input'){
			if(elem.type.toLowerCase() == 'checkbox'){
				if(elem.checked){
					value = 1;
				}
				else{
					continue;
				}
			}
			if(elem.type.toLowerCase() == 'radio'){
				if(elem.checked){
					value = elem.value;
				}
				else{
					continue;
				}
			}
			else if(elem.type.toLowerCase() == 'text' ||
					elem.type.toLowerCase() == 'password' ||
					elem.type.toLowerCase() == 'hidden'){
				value = elem.value;
			}
		}
		else if(elem.nodeName.toLowerCase() == 'select'){
			value = getSelectValue(elem);
		}
		else if(elem.nodeName.toLowerCase() == 'textarea'){
			value = elem.value;
		}
		
		query += name + ':' + value + '/';
	}
	$R(query);
	return false;
}