var MILLIS_IN_DAY = 86400000; // 24 * 60 * 60 * 1000

function getFormValues(form) {
    var values = new Array();
    for (i = 0; i < form.elements.length; i++) {
        var element = form.elements[i];
        values[element.name] = element.value;
    }
    return values;
}

function isFormValueChanged(form, values) {
    for (i = 0; i < form.elements.length; i++) {
        var element = form.elements[i];
        if (values[element.name] != element.value) {
            return true;
        }
    }
    return false;
}

function trimSpaces(str) {
    return str.replace(/^\s+|\s+$/g, '');
}

function searchWordFocus(obj, focus) {
    var className = null;
    switch ($(obj).attr('name')) {
    case 'search_word2':
        className = 'search_word_bg2';
        break;
    case 'search_word3':
        className = 'search_word_bg3';
        break;
    case 'search_word':
        className = 'search_word_bg';
        break;
    }
    if (focus) {
        $(obj).removeClass(className);
    } else if (trimSpaces($(obj).val()) == '') {
        $(obj).addClass(className);
    } else {
        $(obj).removeClass(className);
    }
}

function validate(form, requireKeyword2) {
    /* TRIM EXTRA SPACES */
    for (i = 0; i < form.elements.length; i++) {
        var e = form.elements[i];
        if (e.type == 'text' || e.type == 'textarea') {
            e.value = trimSpaces(e.value);
        }
    }

    var input = null;

    var hasSearchWord2 = false;
    var hasSearchWord3 = false;

    var from = null;
    var to = null;
    var from2 = null;
    var to2 = null;

    var charCount = 0;//文字数
    var wordCount = 0;//単語数
    
    var msg = '';

    input = form.elements['search_word'];
    if (input != null) {
        if (input.value == '') {
            alert(message['search_word']);
            input.focus();
            return false;
        }
        if (input.value.length > 0) {
            // 一文字禁止語チェック
            if (prohibitionWord(input.value)) {
                alert(message['prohibition_word']);
                input.focus();
                return false;
            }
            wordCount += countWord(input.value);
            charCount += input.value.length;
            msg += '\n' + keywords_big['search_word'];
        }
    }

    input = form.elements['search_word2'];
    if (input != null) {
        if (input.value == '') {
            if (requireKeyword2) {
	            alert(message['search_word2']);
	            input.focus();
	            return false;
	        }
        } else {
	        // 一文字禁止語チェック
	        if (prohibitionWord(input.value)) {
	            alert(message['prohibition_word']);
	            input.focus();
	            return false;
	        }

            hasSearchWord2 = true;

	        wordCount += countWord(input.value);
	        charCount += input.value.length;
	        msg += '\n' + keywords_big['search_word2'];
	    }
    }

    input = form.elements['search_word3'];
    if (input != null) {
        if (input.value != '') {
            if (prohibitionWord(input.value)) {
                alert(message['prohibition_word']);
                input.focus();
                return false;
            }
            if (!hasSearchWord2) {
                alert(message['search_word2']);
                form.elements['search_word2'].focus();
                return false;
            }

            hasSearchWord3 = true;

            wordCount += countWord(input.value);
            charCount += input.value.length;
            msg += '\n' + keywords_big['search_word3'];
        }
    }

    input = form.elements['from'];
    if (input != null) {
        if (input.value == '') {
            alert(message['from']);
            input.focus();
            return false;
        }
        from = input.value;
    }

    input = form.elements['to'];
    if (input != null) {
        if (input.value == '') {
            alert(message['to']);
            input.focus();
            return false;
        }
        to = input.value;
    }

    input = form.elements['domain'];
    if (input != null) {
        if (input.value == 'no_2ch') {
            alert(message['no_2ch']);
            input.focus();
            return false;
        }
    }

    input = form.elements['from2'];
    if (input != null) {
        if (input.value == '') {
            alert(message['from2']);
            input.focus();
            return false;
        }
        from2 = input.value;
    }

    input = form.elements['to2'];
    if (input != null) {
        if (input.value == '') {
            alert(message['to2']);
            input.focus();
            return false;
        }
        to2 = input.value;
    }

    input = form.elements['domain2'];
    if (input != null) {
        if (input.value == 'no_2ch') {
            alert(message['no_2ch']);
            input.focus();
            return false;
        }
    }

    input = form.elements['and_key'];
    if (input != null) {
        if (input.value.length > 0) {
            wordCount += countWord(input.value);
            charCount += input.value.length;
            msg += '\n' + keywords_big['and_key'];
        }
    }

    input = form.elements['or_key'];
    if (input != null) {
        if (input.value.length > 0) {
            wordCount += countWord(input.value);
            charCount += input.value.length;
            msg += '\n' + keywords_big['or_key'];
        }
    }

    input = form.elements['ng_key'];
    if (input != null) {
        if (input.value.length > 0) {
            wordCount += countWord(input.value);
            charCount += input.value.length;
            msg += '\n' + keywords_big['ng_key'];
        }
    }

    input = form.elements['and_key2'];
    if (input != null) {
        if (input.value.length > 0) {
            if (!hasSearchWord2) {
                alert(message['search_word2']);
                form.elements['search_word2'].focus();
                return false;
            }

            wordCount += countWord(input.value);
            charCount += input.value.length;
            msg += '\n' + keywords_big['and_key2'];
        }
    }

    input = form.elements['or_key2'];
    if (input != null) {
        if (input.value.length > 0) {
            if (!hasSearchWord2) {
                alert(message['search_word2']);
                form.elements['search_word2'].focus();
                return false;
            }

            wordCount += countWord(input.value);
            charCount += input.value.length;
            msg += '\n' + keywords_big['or_key2'];
        }
    }

    input = form.elements['ng_key2'];
    if (input != null) {
        if (input.value.length > 0) {
            if (!hasSearchWord2) {
                alert(message['search_word2']);
                form.elements['search_word2'].focus();
                return false;
            }

            wordCount += countWord(input.value);
            charCount += input.value.length;
            msg += '\n' + keywords_big['ng_key2'];
        }
    }
    
    input = form.elements['and_key3'];
    if (input != null) {
        if (input.value.length > 0) {
            if (!hasSearchWord3) {
                alert(message['search_word3']);
                form.elements['search_word3'].focus();
                return false;
            }

            wordCount += countWord(input.value);
            charCount += input.value.length;
            msg += '\n' + keywords_big['and_key3'];
        }
    }

    input = form.elements['or_key3'];
    if (input != null) {
        if (input.value.length > 0) {
            if (!hasSearchWord3) {
                alert(message['search_word3']);
                form.elements['search_word3'].focus();
                return false;
            }

            wordCount += countWord(input.value);
            charCount += input.value.length;
            msg += '\n' + keywords_big['or_key3'];
        }
    }

    input = form.elements['ng_key3'];
    if (input != null) {
        if (input.value.length > 0) {
            if (!hasSearchWord3) {
                alert(message['search_word3']);
                form.elements['search_word3'].focus();
                return false;
            }

            wordCount += countWord(input.value);
            charCount += input.value.length;
            msg += '\n' + keywords_big['ng_key3'];
        }
    }
    
    if (wordCount > 150) {
        alert(message['over_count_word']);
        input.focus();
        return false;
    }
    if (charCount > 1000) {
        alert(keywords_big['message'] + msg);
        return false;
    }
    
    if(allow6month == '1') {
		if(mode == '' || mode == 'trend' || mode == 'total') {
		    if (dayDiff(from, to) > 184) {
		        alert(message['date_range_big4']);
		        return false;
		    }
		} else {
		    if (dayDiff(from, to) > 92) {
		        alert(message['date_range_big3']);
		        return false;
		    }
		}
	} else {
		if (dayDiff(from, to) > 92) {
			alert(message['date_range_big3']);
			return false;
		}
	}
	
    if (from2 != null) {
    	if(allow6month == '1') {
		    if(mode == '' || mode == 'trend' || mode == 'total') {
		        if (dayDiff(from2, to2) > 184) {
		            alert(message['date_range_big4']);
		            return false;
		        }
		    } else {
		        if (dayDiff(from2, to2) > 92) {
		            alert(message['date_range_big3']);
		            return false;
		        }
		    }
		} else {
		 	if (dayDiff(from2, to2) > 92) {
		 		alert(message['date_range_big3']);
		 		return false;
		 	}
		}
    }

    if (dayDiff(from, to) > 30) {
        return confirm(message['date_range_big']);
    }

    if (from2 != null) {
        if (dayDiff(from2, to2) > 30) {
            return confirm(message['date_range_big2']);
        }
    }

    return true;
}

function dayDiff(date1 , date2) {
    date1 = stringToDate(date1);
    date2 = stringToDate(date2);

    dateDiff = date2 - date1;
    days = Math.floor(dateDiff / MILLIS_IN_DAY) + 1;

    return days;   
}

function stringToDate(dateStr) {
    var dt = dateStr.split('-');     
    return new Date(dt[0], dt[1] - 1, dt[2], 0, 0, 0, 0);
}

function padZeros(str, n) {
	var s = '' + str;
	for (i = 0; s.length < n; i++) {
		s = '0' + s;
	}
	return s;
}

function dateToString(date) {
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    var day = date.getDate();
    return padZeros(year, 4) + '-' + padZeros(month, 2) + '-' + padZeros(day, 2);
}

function addDays(dt, days) {
    if (null == dt) {
        return null;
    }
    
    return new Date(dt.getTime() + days * MILLIS_IN_DAY);
}

function getPeriod(date, interval, offset) {
    if (typeof offset != 'undefined' && offset != 0) {
        date = addDays(date, offset);
    }
    var from = dateToString(date);
    var to = dateToString(addDays(date, (interval - 1)));
    return {from: from, to: to};
}

function blockUI() {
    jQuery.blockUI({  
            message: $('img#searchingBox'),  
            css: {  
                top:  ($(window).height() - 131) /2 + 'px', 
                left: ($(window).width() - 262) /2 + 'px', 
                width: '262px' ,
                border:'0px' 
            },
            overlayCSS: { backgroundColor: '#F0FFF0' } 
        }); 
}

function submitForm(form, requireKeyword2) {
    if (typeof requireKeyword2 == 'undefined') {
        requireKeyword2 = false;
    }

    if (!validate(form, requireKeyword2)) {
        return false;
    }

	blockUI();

    return true;
}

// 一文字禁止語チェック
function prohibitionWord(key){
//  regExp = "[a-z]|[A-Z]|[0-9]|[０-９]|[一二三四五六七八九零壱弐参]|[あ-ん]|[が-ご]|[ざ-ぞ]|[だ-ど]|[ば-ぼ]|[ぱ-ぽ]|[ア-ン]|[ガ-ゴ]|[ザ-ゾ]|[ダ-ド]|[バ-ボ]|[パ-ポ]|[\\(\\)\\[\\]\\+\\-\\*/\\\\~#\\\"_（）［］「」【】『』”＋－ー＊／－￥￣～＃＿]";
    regExp = "[a-z]|[A-Z]|[0-9]|[０-９]"
            + "|[一二三四五六七八九零壱弐参]|[あ-ん]|[が-ご]|[ざ-ぞ]|[だ-ど]|[ば-ぼ]"
            + "|[ぱ-ぽ]|[ア-ン]|[ガ-ゴ]|[ザ-ゾ]|[ダ-ド]|[バ-ボ]|[パ-ポ]"
            + "|[\\(\\)\\[\\]\\+\\-\\*/\\\\~#\\\"_（）［］「」【】『』”＋－ー＊／－￥￣～＃＿]"

    ary = key.split(/\s/);  
    for(i=0; i<ary.length; i++){
        if (ary[i].length == 1 && ary[i].match(regExp)){
            return true;
        }
    }
    return false;
}

// 単語数チェック
function countWord(key){
    ary = key.split(/\s/);  
    return ary.length;
}

// 検索キーワード保存
function submitKeywordRegist() {
    var form = document.getElementById('form');
    var regist_name = form.elements['regist_name'];

    if (regist_name.value == ''){
        return false;
    }
    jQuery(document).keyup(search_cancel);
    document.getElementById('form').action = "keywordList.do?method=regist";
    document.getElementById('form').submit();
}

function submitFormKeyword(form) {
    if (!validateKeyword(form)) {
        return false;
    }

	blockUI();

    return true;
}

function validateKeyword(form) {
    /* TRIM EXTRA SPACES */
    for (i = 0; i < form.elements.length; i++) {
        var e = form.elements[i];
        if (e.type == 'text' || e.type == 'textarea') {
            e.value = trimSpaces(e.value);
        }
    }

    var input = null;

    var from = null;
    var to = null;

    var charCount = 0;//文字数
    var wordCount = 0;//単語数
    
    var msg = '';

    var inputSearchword = form.elements['search_word'];
    var inputSearchword2 = form.elements['search_word2'];
    var inputSearchword3 = form.elements['search_word3'];
    var inputAnd = form.elements['and_key'];
    var inputAnd2 = form.elements['and_key2'];
    var inputAnd3 = form.elements['and_key3'];
    var inputOr = form.elements['or_key'];
    var inputOr2 = form.elements['or_key2'];
    var inputOr3 = form.elements['or_key3'];
    var inputNot = form.elements['ng_key'];
    var inputNot2 = form.elements['ng_key2'];
    var inputNot3 = form.elements['ng_key3'];

    if ((inputSearchword == null && inputSearchword2 == null && inputSearchword3 == null)
    	|| (inputSearchword.value == '' && inputSearchword2.value == '' && inputSearchword3.value == '')) {
		alert(message['search_word']);
		inputSearchword.focus();
		return false;
	}

    if (inputSearchword != null) {
        if (inputSearchword.value.length > 0) {
            // 一文字禁止語チェック
            if (prohibitionWord(inputSearchword.value)) {
                alert(message['prohibition_word']);
                inputSearchword.focus();
                return false;
            }
            wordCount += countWord(inputSearchword.value);
            charCount += inputSearchword.value.length;
            msg += '\n' + keywords_big['search_word'];
        }
    }

    if (inputSearchword2 != null) {
        if (inputSearchword2.value.length > 0) {
	        // 一文字禁止語チェック
	        if (prohibitionWord(inputSearchword2.value)) {
	            alert(message['prohibition_word']);
	            inputSearchword2.focus();
	            return false;
	        }
	        wordCount += countWord(inputSearchword2.value);
	        charCount += inputSearchword2.value.length;
	        msg += '\n' + keywords_big['search_word2'];
	    }
    }

    if (inputSearchword3 != null) {
        if (inputSearchword3.value.length > 0) {
	        // 一文字禁止語チェック
            if (prohibitionWord(inputSearchword3.value)) {
                alert(message['prohibition_word']);
                inputSearchword3.focus();
                return false;
            }
            wordCount += countWord(inputSearchword3.value);
            charCount += inputSearchword3.value.length;
            msg += '\n' + keywords_big['search_word3'];
        }
    }

    input = form.elements['from'];
    if (input != null) {
        if (input.value == '') {
            alert(message['from']);
            input.focus();
            return false;
        }
        from = input.value;
    }

    input = form.elements['to'];
    if (input != null) {
        if (input.value == '') {
            alert(message['to']);
            input.focus();
            return false;
        }
        to = input.value;
    }

    input = form.elements['domain'];
    if (input != null) {
        if (input.value == 'no_2ch') {
            alert(message['no_2ch']);
            input.focus();
            return false;
        }
    }

    if (inputAnd != null) {
        if (inputAnd.value.length > 0) {
        	/* if(inputSearchword.value == '') {
        		alert(message['search_word']);
        		inputSearchword.focus();
        		return false; 
        	}*/
            wordCount += countWord(inputAnd.value);
            charCount += inputAnd.value.length;
            msg += '\n' + keywords_big['and_key'];
        }
    }

    if (inputOr != null) {
        if (inputOr.value.length > 0) {
           /*  if(inputSearchword.value == '') {
        		alert(message['search_word']);
        		inputSearchword.focus();
        		return false; 
        	} */
            wordCount += countWord(inputOr.value);
            charCount += inputOr.value.length;
            msg += '\n' + keywords_big['or_key'];
        }
    }

    if (inputNot != null) {
        if (inputNot.value.length > 0) {
           /* 	if(inputSearchword.value == '') {
        		alert(message['search_word']);
        		inputSearchword.focus();
        		return false; 
        	} */
            wordCount += countWord(inputNot.value);
            charCount += inputNot.value.length;
            msg += '\n' + keywords_big['ng_key'];
        }
    }

    if (inputAnd2 != null) {
        if (inputAnd2.value.length > 0) {
          /*  if(inputSearchword2.value == '') {
                alert(message['search_word2']);
                inputSearchword2.focus();
                return false;
            } */ 

            wordCount += countWord(inputAnd2.value);
            charCount += inputAnd2.value.length;
            msg += '\n' + keywords_big['and_key2'];
        }
    }

    if (inputOr2 != null) {
        if (inputOr2.value.length > 0) {
           /*   if(inputSearchword2.value == '') {
                alert(message['search_word2']);
                inputSearchword2.focus();
                return false;
            }*/

            wordCount += countWord(inputOr2.value);
            charCount += inputOr2.value.length;
            msg += '\n' + keywords_big['or_key2'];
        }
    }

    if (inputNot2 != null) {
        if (inputNot2.value.length > 0) {
           /*   if(inputSearchword2.value == '') {
                alert(message['search_word2']);
                inputSearchword2.focus();
                return false;
            }*/

            wordCount += countWord(inputNot2.value);
            charCount += inputNot2.value.length;
            msg += '\n' + keywords_big['ng_key2'];
        }
    }
    
    if (inputAnd3 != null) {
        if (inputAnd3.value.length > 0) {
           /*  if(inputSearchword3.value == '') {
                alert(message['search_word3']);
                inputSearchword3.focus();
                return false;
            } */

            wordCount += countWord(inputAnd3.value);
            charCount += inputAnd3.value.length;
            msg += '\n' + keywords_big['and_key3'];
        }
    }

    if (inputOr3 != null) {
        if (inputOr3.value.length > 0) {
           /*  if(inputSearchword3.value == '') {
                alert(message['search_word3']);
                inputSearchword3.focus();
                return false;
            } */

            wordCount += countWord(inputOr3.value);
            charCount += inputOr3.value.length;
            msg += '\n' + keywords_big['or_key3'];
        }
    }

    if (inputNot3 != null) {
        if (inputNot3.value.length > 0) {
          /*   if(inputSearchword3.value == '') {
                alert(message['search_word3']);
                inputSearchword3.focus();
                return false;
            }*/ 

            wordCount += countWord(inputNot3.value);
            charCount += inputNot3.value.length;
            msg += '\n' + keywords_big['ng_key3'];
        }
    }
    
    if (wordCount > 150) {
        alert(message['over_count_word']);
        input.focus();
        return false;
    }
    if (charCount > 1000) {
        alert(keywords_big['message'] + msg);
        return false;
    }
    
    if(allow6month == '1') {
		if(mode == '' || mode =='trend' || mode == 'total') {
		    if (dayDiff(from, to) > 184) {
		        alert(message['date_range_big4']);
		        return false;
		    }
		} else {
		    if (dayDiff(from, to) > 92) {
		        alert(message['date_range_big3']);
		        return false;
		    }
		}
	} else {
	    if (dayDiff(from, to) > 92) {
	        alert(message['date_range_big3']);
	        return false;
	    }
	}
    if (dayDiff(from, to) > 31) {
        return confirm(message['date_range_big']);
    }
 
	if (inputSearchword.value == '' && inputAnd.value == '' && inputOr.value == '' && inputNot.value == '') {
		if (inputSearchword2.value == '' && inputAnd2.value == '' && inputOr2.value == '' && inputNot2.value == '') {
			inputSearchword.value = inputSearchword3.value;
			inputAnd.value = inputAnd3.value;
			inputOr.value = inputOr3.value;
			inputNot.value = inputNot3.value;
			inputAnd3.value = '';
			inputOr3.value = '';
			inputNot3.value = '';
			inputSearchword3.value = '';
		} else {
     		inputSearchword.value = inputSearchword2.value;
			inputAnd.value = inputAnd2.value;
			inputOr.value = inputOr2.value;
			inputNot.value = inputNot2.value;
	     	if (inputSearchword3.value == '' && inputAnd3.value == '' && inputOr3.value == '' && inputNot3.value == '') {
	    		inputSearchword2.value = '';
				inputAnd2.value = '';
				inputOr2.value = '';
				inputNot2.value = '';
    		} else {
	    		inputSearchword2.value = inputSearchword3.value;
				inputAnd2.value = inputAnd3.value;
				inputOr2.value = inputOr3.value;
				inputNot2.value = inputNot3.value;
	    		inputSearchword3.value = '';
				inputAnd3.value = '';
				inputOr3.value = '';
				inputNot3.value = '';
	    	}
		}
	} else {
		if(inputSearchword2.value == '' && inputAnd2.value == '' && inputOr2.value == '' && inputNot2.value == '') {
    		if (inputSearchword3.value != '' || inputAnd3.value != '' || inputOr3.value != '' || inputNot3.value != '') {
    			inputSearchword2.value = inputSearchword3.value;
				inputAnd2.value = inputAnd3.value;
				inputOr2.value = inputOr3.value;
				inputNot2.value = inputNot3.value;
    			inputSearchword3.value = '';
				inputAnd3.value = '';
				inputOr3.value = '';
				inputNot3.value = '';
			}
		}
	}

    return true;
}